mediasfu-angular 1.0.2 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/README.md +686 -578
  2. package/dist/README.md +677 -578
  3. package/dist/fesm2022/mediasfu-angular.mjs +5551 -2944
  4. package/dist/fesm2022/mediasfu-angular.mjs.map +1 -1
  5. package/dist/lib/@types/types.d.ts +22 -1
  6. package/dist/lib/components/breakout-components/breakout-rooms-modal.component.d.ts +1 -0
  7. package/dist/lib/components/mediasfu-components/mediasfu-broadcast.component.d.ts +153 -61
  8. package/dist/lib/components/mediasfu-components/mediasfu-chat.component.d.ts +154 -66
  9. package/dist/lib/components/mediasfu-components/mediasfu-conference.component.d.ts +190 -76
  10. package/dist/lib/components/mediasfu-components/mediasfu-generic.component.d.ts +184 -70
  11. package/dist/lib/components/mediasfu-components/mediasfu-webinar.component.d.ts +192 -78
  12. package/dist/lib/components/menu-components/menu-modal/menu-modal.component.d.ts +6 -1
  13. package/dist/lib/components/menu-components/share-buttons-component/share-buttons-component.component.d.ts +5 -2
  14. package/dist/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.d.ts +4 -2
  15. package/dist/lib/components/misc-components/pre-join-page/pre-join-page.component.d.ts +71 -66
  16. package/dist/lib/components/misc-components/share-event-modal/share-event-modal.component.d.ts +5 -1
  17. package/dist/lib/consumers/connect-local-ips.service.d.ts +81 -0
  18. package/dist/lib/consumers/connect-send-transport-audio.service.d.ts +43 -11
  19. package/dist/lib/consumers/connect-send-transport-screen.service.d.ts +87 -46
  20. package/dist/lib/consumers/connect-send-transport-video.service.d.ts +89 -43
  21. package/dist/lib/consumers/connect-send-transport.service.d.ts +5 -1
  22. package/dist/lib/consumers/create-send-transport.service.d.ts +130 -40
  23. package/dist/lib/consumers/disconnect-send-transport-audio.service.d.ts +77 -40
  24. package/dist/lib/consumers/disconnect-send-transport-screen.service.d.ts +48 -14
  25. package/dist/lib/consumers/disconnect-send-transport-video.service.d.ts +81 -44
  26. package/dist/lib/consumers/get-piped-producers-alt.service.d.ts +5 -1
  27. package/dist/lib/consumers/receive-all-piped-transports.service.d.ts +5 -1
  28. package/dist/lib/consumers/resume-send-transport-audio.service.d.ts +54 -21
  29. package/dist/lib/consumers/stream-success-audio-switch.service.d.ts +124 -40
  30. package/dist/lib/consumers/trigger.service.d.ts +3 -0
  31. package/dist/lib/methods/exit-methods/confirm-exit.service.d.ts +5 -1
  32. package/dist/lib/methods/recording-methods/start-recording.service.d.ts +3 -0
  33. package/dist/lib/methods/recording-methods/stop-recording.service.d.ts +4 -1
  34. package/dist/lib/methods/recording-methods/update-recording.service.d.ts +3 -0
  35. package/dist/lib/methods/stream-methods/click-audio.service.d.ts +3 -0
  36. package/dist/lib/methods/utils/check-limits-and-make-request.service.d.ts +23 -0
  37. package/dist/lib/methods/utils/create-response-join-room.util.d.ts +33 -0
  38. package/dist/lib/methods/utils/create-room-on-media-sfu.service.d.ts +25 -0
  39. package/dist/lib/methods/utils/initial-values.util.d.ts +6 -0
  40. package/dist/lib/methods/utils/join-room-on-media-sfu.service.d.ts +52 -0
  41. package/dist/lib/methods/whiteboard-methods/capture-canvas-stream.service.d.ts +37 -20
  42. package/dist/lib/producers/producer-emits/join-local-room.service.d.ts +125 -0
  43. package/dist/lib/producers/socket-receive-methods/all-members-rest.service.d.ts +7 -2
  44. package/dist/lib/producers/socket-receive-methods/all-members.service.d.ts +7 -2
  45. package/dist/lib/producers/socket-receive-methods/disconnect-user-self.service.d.ts +5 -1
  46. package/dist/lib/sockets/socket-manager.service.d.ts +90 -0
  47. package/dist/public-api.d.ts +11 -1
  48. package/package.json +17 -20
  49. package/dist/esm2022/lib/@types/types.mjs +0 -2
  50. package/dist/esm2022/lib/components/background-components/background-modal/background-modal.component.mjs +0 -799
  51. package/dist/esm2022/lib/components/breakout-components/breakout-rooms-modal.component.mjs +0 -366
  52. package/dist/esm2022/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.mjs +0 -143
  53. package/dist/esm2022/lib/components/breakout-components/room-list/room-list.component.mjs +0 -40
  54. package/dist/esm2022/lib/components/co-host-components/co-host-modal/co-host-modal.component.mjs +0 -245
  55. package/dist/esm2022/lib/components/display-components/alert-component/alert.component.component.mjs +0 -79
  56. package/dist/esm2022/lib/components/display-components/audio-card/audio-card.component.mjs +0 -356
  57. package/dist/esm2022/lib/components/display-components/audio-grid/audio-grid.component.mjs +0 -80
  58. package/dist/esm2022/lib/components/display-components/card-video-display/card-video-display.component.mjs +0 -129
  59. package/dist/esm2022/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.mjs +0 -138
  60. package/dist/esm2022/lib/components/display-components/control-buttons-component/control-buttons-component.component.mjs +0 -231
  61. package/dist/esm2022/lib/components/display-components/control-buttons-component-touch/control-buttons-component-touch.component.mjs +0 -282
  62. package/dist/esm2022/lib/components/display-components/control-widgets/menu-participants-widget.component.mjs +0 -82
  63. package/dist/esm2022/lib/components/display-components/control-widgets/menu-record-widget.component.mjs +0 -65
  64. package/dist/esm2022/lib/components/display-components/control-widgets/menu-widget.component.mjs +0 -137
  65. package/dist/esm2022/lib/components/display-components/control-widgets/message-widget.component.mjs +0 -137
  66. package/dist/esm2022/lib/components/display-components/control-widgets/record-timer-widget.component.mjs +0 -51
  67. package/dist/esm2022/lib/components/display-components/control-widgets/screenshare-widget.component.mjs +0 -101
  68. package/dist/esm2022/lib/components/display-components/flexible-grid/flexible-grid.component.mjs +0 -151
  69. package/dist/esm2022/lib/components/display-components/flexible-video/flexible-video.component.mjs +0 -250
  70. package/dist/esm2022/lib/components/display-components/loading-modal/loading-modal.component.mjs +0 -102
  71. package/dist/esm2022/lib/components/display-components/main-aspect-component/main-aspect-component.component.mjs +0 -140
  72. package/dist/esm2022/lib/components/display-components/main-container-component/main-container-component.component.mjs +0 -131
  73. package/dist/esm2022/lib/components/display-components/main-grid-component/main-grid-component.component.mjs +0 -120
  74. package/dist/esm2022/lib/components/display-components/main-screen-component/main-screen-component.component.mjs +0 -201
  75. package/dist/esm2022/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.mjs +0 -115
  76. package/dist/esm2022/lib/components/display-components/mini-audio/mini-audio.component.mjs +0 -319
  77. package/dist/esm2022/lib/components/display-components/mini-card/mini-card.component.mjs +0 -161
  78. package/dist/esm2022/lib/components/display-components/mini-card-audio/mini-card-audio.component.mjs +0 -230
  79. package/dist/esm2022/lib/components/display-components/other-grid-component/other-grid-component.component.mjs +0 -126
  80. package/dist/esm2022/lib/components/display-components/pagination/pagination.component.mjs +0 -334
  81. package/dist/esm2022/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.mjs +0 -112
  82. package/dist/esm2022/lib/components/display-components/video-card/video-card.component.mjs +0 -392
  83. package/dist/esm2022/lib/components/display-settings-components/display-settings-modal.component.mjs +0 -106
  84. package/dist/esm2022/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.mjs +0 -199
  85. package/dist/esm2022/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.mjs +0 -132
  86. package/dist/esm2022/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.mjs +0 -220
  87. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-broadcast.component.mjs +0 -4238
  88. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-chat.component.mjs +0 -3754
  89. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-conference.component.mjs +0 -5071
  90. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-generic.component.mjs +0 -5380
  91. package/dist/esm2022/lib/components/mediasfu-components/mediasfu-webinar.component.mjs +0 -5068
  92. package/dist/esm2022/lib/components/menu-components/custom-buttons/custom-buttons.component.mjs +0 -83
  93. package/dist/esm2022/lib/components/menu-components/meeting-id-component/meeting-id-component.component.mjs +0 -27
  94. package/dist/esm2022/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.mjs +0 -27
  95. package/dist/esm2022/lib/components/menu-components/menu-modal/menu-modal.component.mjs +0 -125
  96. package/dist/esm2022/lib/components/menu-components/share-buttons-component/share-buttons-component.component.mjs +0 -106
  97. package/dist/esm2022/lib/components/message-components/message-panel/message-panel.component.mjs +0 -228
  98. package/dist/esm2022/lib/components/message-components/messages-modal/messages-modal.component.mjs +0 -277
  99. package/dist/esm2022/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.mjs +0 -130
  100. package/dist/esm2022/lib/components/misc-components/pre-join-page/pre-join-page.component.mjs +0 -343
  101. package/dist/esm2022/lib/components/misc-components/share-event-modal/share-event-modal.component.mjs +0 -127
  102. package/dist/esm2022/lib/components/misc-components/welcome-page/welcome-page.component.mjs +0 -241
  103. package/dist/esm2022/lib/components/participants-components/participant-list/participant-list.component.mjs +0 -82
  104. package/dist/esm2022/lib/components/participants-components/participant-list-item/participant-list-item.component.mjs +0 -139
  105. package/dist/esm2022/lib/components/participants-components/participant-list-others/participant-list-others.component.mjs +0 -40
  106. package/dist/esm2022/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.mjs +0 -60
  107. package/dist/esm2022/lib/components/participants-components/participants-modal/participants-modal.component.mjs +0 -124
  108. package/dist/esm2022/lib/components/polls-components/poll-modal/poll-modal.component.mjs +0 -201
  109. package/dist/esm2022/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.mjs +0 -92
  110. package/dist/esm2022/lib/components/recording-components/recording-modal/recording-modal.component.mjs +0 -133
  111. package/dist/esm2022/lib/components/recording-components/standard-panel-component/standard-panel-component.component.mjs +0 -90
  112. package/dist/esm2022/lib/components/requests-components/render-request-component/render-request-component.component.mjs +0 -81
  113. package/dist/esm2022/lib/components/requests-components/requests-modal/requests-modal.component.mjs +0 -147
  114. package/dist/esm2022/lib/components/screenboard-components/screenboard/screenboard.component.mjs +0 -627
  115. package/dist/esm2022/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.mjs +0 -391
  116. package/dist/esm2022/lib/components/waiting-components/waiting-room-modal.component.mjs +0 -201
  117. package/dist/esm2022/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.mjs +0 -286
  118. package/dist/esm2022/lib/components/whiteboard-components/whiteboard/whiteboard.component.mjs +0 -1833
  119. package/dist/esm2022/lib/consumers/add-videos-grid.service.mjs +0 -345
  120. package/dist/esm2022/lib/consumers/auto-adjust.service.mjs +0 -109
  121. package/dist/esm2022/lib/consumers/calculate-rows-and-columns.service.mjs +0 -60
  122. package/dist/esm2022/lib/consumers/change-vids.service.mjs +0 -551
  123. package/dist/esm2022/lib/consumers/check-grid.service.mjs +0 -93
  124. package/dist/esm2022/lib/consumers/check-permission.service.mjs +0 -105
  125. package/dist/esm2022/lib/consumers/check-screen-share.service.mjs +0 -106
  126. package/dist/esm2022/lib/consumers/close-and-resize.service.mjs +0 -331
  127. package/dist/esm2022/lib/consumers/compare-active-names.service.mjs +0 -106
  128. package/dist/esm2022/lib/consumers/compare-screen-states.service.mjs +0 -98
  129. package/dist/esm2022/lib/consumers/connect-ips.service.mjs +0 -154
  130. package/dist/esm2022/lib/consumers/connect-recv-transport.service.mjs +0 -146
  131. package/dist/esm2022/lib/consumers/connect-send-transport-audio.service.mjs +0 -84
  132. package/dist/esm2022/lib/consumers/connect-send-transport-screen.service.mjs +0 -102
  133. package/dist/esm2022/lib/consumers/connect-send-transport-video.service.mjs +0 -99
  134. package/dist/esm2022/lib/consumers/connect-send-transport.service.mjs +0 -140
  135. package/dist/esm2022/lib/consumers/consumer-resume.service.mjs +0 -368
  136. package/dist/esm2022/lib/consumers/control-media.service.mjs +0 -113
  137. package/dist/esm2022/lib/consumers/create-send-transport.service.mjs +0 -172
  138. package/dist/esm2022/lib/consumers/disconnect-send-transport-audio.service.mjs +0 -108
  139. package/dist/esm2022/lib/consumers/disconnect-send-transport-screen.service.mjs +0 -84
  140. package/dist/esm2022/lib/consumers/disconnect-send-transport-video.service.mjs +0 -101
  141. package/dist/esm2022/lib/consumers/disp-streams.service.mjs +0 -513
  142. package/dist/esm2022/lib/consumers/generate-page-content.service.mjs +0 -106
  143. package/dist/esm2022/lib/consumers/get-estimate.service.mjs +0 -120
  144. package/dist/esm2022/lib/consumers/get-piped-producers-alt.service.mjs +0 -82
  145. package/dist/esm2022/lib/consumers/get-producers-piped.service.mjs +0 -79
  146. package/dist/esm2022/lib/consumers/get-videos.service.mjs +0 -91
  147. package/dist/esm2022/lib/consumers/mix-streams.service.mjs +0 -95
  148. package/dist/esm2022/lib/consumers/on-screen-changes.service.mjs +0 -103
  149. package/dist/esm2022/lib/consumers/prepopulate-user-media.service.mjs +0 -541
  150. package/dist/esm2022/lib/consumers/process-consumer-transports-audio.service.mjs +0 -101
  151. package/dist/esm2022/lib/consumers/process-consumer-transports.service.mjs +0 -128
  152. package/dist/esm2022/lib/consumers/re-port.service.mjs +0 -114
  153. package/dist/esm2022/lib/consumers/re-update-inter.service.mjs +0 -239
  154. package/dist/esm2022/lib/consumers/readjust.service.mjs +0 -173
  155. package/dist/esm2022/lib/consumers/receive-all-piped-transports.service.mjs +0 -87
  156. package/dist/esm2022/lib/consumers/receive-room-messages.service.mjs +0 -69
  157. package/dist/esm2022/lib/consumers/reorder-streams.service.mjs +0 -239
  158. package/dist/esm2022/lib/consumers/request-screen-share.service.mjs +0 -101
  159. package/dist/esm2022/lib/consumers/resume-pause-audio-streams.service.mjs +0 -150
  160. package/dist/esm2022/lib/consumers/resume-pause-streams.service.mjs +0 -103
  161. package/dist/esm2022/lib/consumers/resume-send-transport-audio.service.mjs +0 -91
  162. package/dist/esm2022/lib/consumers/signal-new-consumer-transport.service.mjs +0 -136
  163. package/dist/esm2022/lib/consumers/socket-receive-methods/join-consume-room.service.mjs +0 -96
  164. package/dist/esm2022/lib/consumers/socket-receive-methods/new-pipe-producer.service.mjs +0 -100
  165. package/dist/esm2022/lib/consumers/socket-receive-methods/producer-closed.service.mjs +0 -78
  166. package/dist/esm2022/lib/consumers/start-share-screen.service.mjs +0 -120
  167. package/dist/esm2022/lib/consumers/stop-share-screen.service.mjs +0 -175
  168. package/dist/esm2022/lib/consumers/stream-success-audio-switch.service.mjs +0 -185
  169. package/dist/esm2022/lib/consumers/stream-success-audio.service.mjs +0 -210
  170. package/dist/esm2022/lib/consumers/stream-success-screen.service.mjs +0 -193
  171. package/dist/esm2022/lib/consumers/stream-success-video.service.mjs +0 -260
  172. package/dist/esm2022/lib/consumers/switch-user-audio.service.mjs +0 -120
  173. package/dist/esm2022/lib/consumers/switch-user-video-alt.service.mjs +0 -260
  174. package/dist/esm2022/lib/consumers/switch-user-video.service.mjs +0 -172
  175. package/dist/esm2022/lib/consumers/trigger.service.mjs +0 -210
  176. package/dist/esm2022/lib/consumers/update-mini-cards-grid.service.mjs +0 -135
  177. package/dist/esm2022/lib/consumers/update-participant-audio-decibels.service.mjs +0 -84
  178. package/dist/esm2022/lib/methods/background-methods/launch-background.service.mjs +0 -48
  179. package/dist/esm2022/lib/methods/breakout-room-methods/breakout-room-updated.service.mjs +0 -183
  180. package/dist/esm2022/lib/methods/breakout-room-methods/launch-breakout-rooms.service.mjs +0 -46
  181. package/dist/esm2022/lib/methods/co-host-methods/launch-co-host.service.mjs +0 -46
  182. package/dist/esm2022/lib/methods/co-host-methods/modify-co-host-settings.service.mjs +0 -104
  183. package/dist/esm2022/lib/methods/display-settings-methods/launch-display-settings.service.mjs +0 -46
  184. package/dist/esm2022/lib/methods/display-settings-methods/modify-display-settings.service.mjs +0 -194
  185. package/dist/esm2022/lib/methods/exit-methods/confirm-exit.service.mjs +0 -52
  186. package/dist/esm2022/lib/methods/exit-methods/launch-confirm-exit.service.mjs +0 -42
  187. package/dist/esm2022/lib/methods/media-settings-methods/launch-media-settings.service.mjs +0 -85
  188. package/dist/esm2022/lib/methods/menu-methods/launch-menu-modal.service.mjs +0 -44
  189. package/dist/esm2022/lib/methods/message-methods/launch-messages.service.mjs +0 -45
  190. package/dist/esm2022/lib/methods/message-methods/send-message.service.mjs +0 -143
  191. package/dist/esm2022/lib/methods/participants-methods/launch-participants.service.mjs +0 -47
  192. package/dist/esm2022/lib/methods/participants-methods/message-participants.service.mjs +0 -98
  193. package/dist/esm2022/lib/methods/participants-methods/mute-participants.service.mjs +0 -96
  194. package/dist/esm2022/lib/methods/participants-methods/remove-participants.service.mjs +0 -107
  195. package/dist/esm2022/lib/methods/polls-methods/handle-create-poll.service.mjs +0 -75
  196. package/dist/esm2022/lib/methods/polls-methods/handle-end-poll.service.mjs +0 -72
  197. package/dist/esm2022/lib/methods/polls-methods/handle-vote-poll.service.mjs +0 -83
  198. package/dist/esm2022/lib/methods/polls-methods/launch-poll.service.mjs +0 -43
  199. package/dist/esm2022/lib/methods/polls-methods/poll-updated.service.mjs +0 -95
  200. package/dist/esm2022/lib/methods/recording-methods/check-pause-state.service.mjs +0 -69
  201. package/dist/esm2022/lib/methods/recording-methods/check-resume-state.service.mjs +0 -56
  202. package/dist/esm2022/lib/methods/recording-methods/confirm-recording.service.mjs +0 -278
  203. package/dist/esm2022/lib/methods/recording-methods/launch-recording.service.mjs +0 -125
  204. package/dist/esm2022/lib/methods/recording-methods/record-pause-timer.service.mjs +0 -67
  205. package/dist/esm2022/lib/methods/recording-methods/record-resume-timer.service.mjs +0 -130
  206. package/dist/esm2022/lib/methods/recording-methods/record-start-timer.service.mjs +0 -134
  207. package/dist/esm2022/lib/methods/recording-methods/record-update-timer.service.mjs +0 -80
  208. package/dist/esm2022/lib/methods/recording-methods/start-recording.service.mjs +0 -197
  209. package/dist/esm2022/lib/methods/recording-methods/stop-recording.service.mjs +0 -112
  210. package/dist/esm2022/lib/methods/recording-methods/update-recording.service.mjs +0 -272
  211. package/dist/esm2022/lib/methods/requests-methods/launch-requests.service.mjs +0 -51
  212. package/dist/esm2022/lib/methods/requests-methods/respond-to-requests.service.mjs +0 -84
  213. package/dist/esm2022/lib/methods/settings-methods/launch-settings.service.mjs +0 -51
  214. package/dist/esm2022/lib/methods/settings-methods/modify-settings.service.mjs +0 -109
  215. package/dist/esm2022/lib/methods/stream-methods/click-audio.service.mjs +0 -275
  216. package/dist/esm2022/lib/methods/stream-methods/click-chat.service.mjs +0 -75
  217. package/dist/esm2022/lib/methods/stream-methods/click-screen-share.service.mjs +0 -178
  218. package/dist/esm2022/lib/methods/stream-methods/click-video.service.mjs +0 -271
  219. package/dist/esm2022/lib/methods/stream-methods/switch-audio.service.mjs +0 -80
  220. package/dist/esm2022/lib/methods/stream-methods/switch-video-alt.service.mjs +0 -116
  221. package/dist/esm2022/lib/methods/stream-methods/switch-video.service.mjs +0 -132
  222. package/dist/esm2022/lib/methods/utils/format-number.service.mjs +0 -57
  223. package/dist/esm2022/lib/methods/utils/generate-random-messages.service.mjs +0 -120
  224. package/dist/esm2022/lib/methods/utils/generate-random-participants.service.mjs +0 -126
  225. package/dist/esm2022/lib/methods/utils/generate-random-polls.service.mjs +0 -78
  226. package/dist/esm2022/lib/methods/utils/generate-random-request-list.service.mjs +0 -90
  227. package/dist/esm2022/lib/methods/utils/generate-random-waiting-room-list.service.mjs +0 -59
  228. package/dist/esm2022/lib/methods/utils/get-modal-position.util.mjs +0 -32
  229. package/dist/esm2022/lib/methods/utils/get-overlay-position.util.mjs +0 -31
  230. package/dist/esm2022/lib/methods/utils/initial-values.util.mjs +0 -379
  231. package/dist/esm2022/lib/methods/utils/meeting-timer/start-meeting-progress-timer.service.mjs +0 -96
  232. package/dist/esm2022/lib/methods/utils/mini-audio-player/mini-audio-player.component.mjs +0 -315
  233. package/dist/esm2022/lib/methods/utils/producer/a-params.service.mjs +0 -58
  234. package/dist/esm2022/lib/methods/utils/producer/h-params.service.mjs +0 -87
  235. package/dist/esm2022/lib/methods/utils/producer/screen-params.service.mjs +0 -61
  236. package/dist/esm2022/lib/methods/utils/producer/v-params.service.mjs +0 -87
  237. package/dist/esm2022/lib/methods/utils/producer/video-capture-constraints.service.mjs +0 -84
  238. package/dist/esm2022/lib/methods/utils/sleep.util.mjs +0 -17
  239. package/dist/esm2022/lib/methods/utils/sound-player.service.mjs +0 -63
  240. package/dist/esm2022/lib/methods/utils/validate-alphanumeric.service.mjs +0 -49
  241. package/dist/esm2022/lib/methods/waiting-methods/launch-waiting.service.mjs +0 -41
  242. package/dist/esm2022/lib/methods/waiting-methods/respond-to-waiting.service.mjs +0 -69
  243. package/dist/esm2022/lib/methods/whiteboard-methods/capture-canvas-stream.service.mjs +0 -98
  244. package/dist/esm2022/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.mjs +0 -44
  245. package/dist/esm2022/lib/producer-client/producer-client-emits/create-device-client.service.mjs +0 -74
  246. package/dist/esm2022/lib/producer-client/producer-client-emits/join-room-client.service.mjs +0 -96
  247. package/dist/esm2022/lib/producer-client/producer-client-emits/update-room-parameters-client.service.mjs +0 -276
  248. package/dist/esm2022/lib/producers/producer-emits/join-con-room.service.mjs +0 -152
  249. package/dist/esm2022/lib/producers/producer-emits/join-room.service.mjs +0 -152
  250. package/dist/esm2022/lib/producers/socket-receive-methods/all-members-rest.service.mjs +0 -228
  251. package/dist/esm2022/lib/producers/socket-receive-methods/all-members.service.mjs +0 -218
  252. package/dist/esm2022/lib/producers/socket-receive-methods/all-waiting-room-members.service.mjs +0 -57
  253. package/dist/esm2022/lib/producers/socket-receive-methods/ban-participant.service.mjs +0 -76
  254. package/dist/esm2022/lib/producers/socket-receive-methods/control-media-host.service.mjs +0 -183
  255. package/dist/esm2022/lib/producers/socket-receive-methods/disconnect-user-self.service.mjs +0 -50
  256. package/dist/esm2022/lib/producers/socket-receive-methods/disconnect.service.mjs +0 -64
  257. package/dist/esm2022/lib/producers/socket-receive-methods/get-domains.service.mjs +0 -78
  258. package/dist/esm2022/lib/producers/socket-receive-methods/host-request-response.service.mjs +0 -150
  259. package/dist/esm2022/lib/producers/socket-receive-methods/meeting-ended.service.mjs +0 -73
  260. package/dist/esm2022/lib/producers/socket-receive-methods/meeting-still-there.service.mjs +0 -47
  261. package/dist/esm2022/lib/producers/socket-receive-methods/meeting-time-remaining.service.mjs +0 -63
  262. package/dist/esm2022/lib/producers/socket-receive-methods/participant-requested.service.mjs +0 -63
  263. package/dist/esm2022/lib/producers/socket-receive-methods/person-joined.service.mjs +0 -54
  264. package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-closed.service.mjs +0 -129
  265. package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-paused.service.mjs +0 -152
  266. package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-resumed.service.mjs +0 -99
  267. package/dist/esm2022/lib/producers/socket-receive-methods/re-initiate-recording.service.mjs +0 -67
  268. package/dist/esm2022/lib/producers/socket-receive-methods/receive-message.service.mjs +0 -134
  269. package/dist/esm2022/lib/producers/socket-receive-methods/recording-notice.service.mjs +0 -233
  270. package/dist/esm2022/lib/producers/socket-receive-methods/room-record-params.service.mjs +0 -121
  271. package/dist/esm2022/lib/producers/socket-receive-methods/screen-producer-id.service.mjs +0 -86
  272. package/dist/esm2022/lib/producers/socket-receive-methods/start-records.service.mjs +0 -60
  273. package/dist/esm2022/lib/producers/socket-receive-methods/stopped-recording.service.mjs +0 -62
  274. package/dist/esm2022/lib/producers/socket-receive-methods/time-left-recording.service.mjs +0 -57
  275. package/dist/esm2022/lib/producers/socket-receive-methods/update-consuming-domains.service.mjs +0 -105
  276. package/dist/esm2022/lib/producers/socket-receive-methods/update-media-settings.service.mjs +0 -66
  277. package/dist/esm2022/lib/producers/socket-receive-methods/updated-co-host.service.mjs +0 -96
  278. package/dist/esm2022/lib/producers/socket-receive-methods/user-waiting.service.mjs +0 -52
  279. package/dist/esm2022/lib/sockets/socket-manager.service.mjs +0 -113
  280. package/dist/esm2022/mediasfu-angular.mjs +0 -5
  281. package/dist/esm2022/public-api.mjs +0 -187
@@ -1,98 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Compares the current screen states with the previous screen states and triggers actions based on changes.
5
- *
6
- * @param {CompareScreenStatesOptions} options - The options for comparing screen states.
7
- * @param {boolean} [options.restart=false] - Whether to restart the comparison process.
8
- * @param {CompareScreenStatesParameters} options.parameters - The parameters for the comparison.
9
- * @param {Function} options.parameters.getUpdatedAllParams - Function to get updated parameters.
10
- * @param {string} options.parameters.recordingDisplayType - The type of display being recorded.
11
- * @param {boolean} options.parameters.recordingVideoOptimized - Whether the recording is optimized for video.
12
- * @param {ScreenState[]} options.parameters.screenStates - The current screen states.
13
- * @param {ScreenState[]} options.parameters.prevScreenStates - The previous screen states.
14
- * @param {string[]} options.parameters.activeNames - The active names in the current context.
15
- * @param {Function} options.parameters.trigger - Function to trigger actions based on changes.
16
- *
17
- * @returns {Promise<void>} A promise that resolves when the comparison and any triggered actions are complete.
18
- *
19
- * @throws Will log an error message if an error occurs during the comparison process.
20
- *
21
- * @example
22
- * const options = {
23
- * restart: false,
24
- * parameters: {
25
- * getUpdatedAllParams: () => { /* Logic to get updated parameters *\/ },
26
- * recordingDisplayType: 'video',
27
- * recordingVideoOptimized: true,
28
- * screenStates: [{ state: 'active' }, { state: 'inactive' }],
29
- * prevScreenStates: [{ state: 'inactive' }, { state: 'active' }],
30
- * activeNames: ['Alice', 'Bob'],
31
- * trigger: async (data) => { /* Logic to handle the trigger *\/ },
32
- * },
33
- * };
34
- *
35
- * await compareScreenStatesService.compareScreenStates(options);
36
- * // If any screen state has changed, the trigger function will be called accordingly.
37
- */
38
- export class CompareScreenStates {
39
- /**
40
- * Compares the current screen states with the previous screen states and triggers actions based on changes.
41
- *
42
- * @param {Object} options - The options for comparing screen states.
43
- * @param {boolean} [options.restart=false] - Whether to restart the comparison process.
44
- * @param {CompareScreenStatesOptions} options.parameters - The parameters for the comparison.
45
- * @param {Function} options.parameters.getUpdatedAllParams - Function to get updated parameters.
46
- * @param {string} options.parameters.recordingDisplayType - The type of display being recorded.
47
- * @param {boolean} options.parameters.recordingVideoOptimized - Whether the recording is optimized for video.
48
- * @param {Array<ScreenState>} options.parameters.screenStates - The current screen states.
49
- * @param {Array<ScreenState>} options.parameters.prevScreenStates - The previous screen states.
50
- * @param {Array<string>} options.parameters.activeNames - The active names in the current context.
51
- * @param {Function} options.parameters.trigger - Function to trigger actions based on changes.
52
- *
53
- * @returns {Promise<void>} A promise that resolves when the comparison and any triggered actions are complete.
54
- *
55
- * @throws Will log an error message if an error occurs during the comparison process.
56
- */
57
- async compareScreenStates({ restart = false, parameters, }) {
58
- try {
59
- let { getUpdatedAllParams } = parameters;
60
- parameters = getUpdatedAllParams();
61
- let { recordingDisplayType, recordingVideoOptimized, screenStates, prevScreenStates, activeNames, trigger, } = parameters;
62
- // Restart the comparison if needed
63
- if (restart) {
64
- // Perform necessary actions on restart
65
- return;
66
- }
67
- // Compare each key-value pair in the screenStates objects
68
- for (let i = 0; i < screenStates.length; i++) {
69
- const currentScreenState = screenStates[i];
70
- const prevScreenState = prevScreenStates[i];
71
- // Check if any value has changed
72
- const hasChanged = Object.keys(currentScreenState).some((key) => currentScreenState[key] !== prevScreenState[key]);
73
- // Signal change if any value has changed
74
- if (hasChanged) {
75
- // Perform actions or trigger events based on the change
76
- if (recordingDisplayType === 'video' && recordingVideoOptimized) {
77
- await trigger({ ref_ActiveNames: activeNames, parameters });
78
- break;
79
- }
80
- await trigger({ ref_ActiveNames: activeNames, parameters });
81
- break;
82
- }
83
- }
84
- }
85
- catch (error) {
86
- console.log('compareScreenStates error', error);
87
- }
88
- }
89
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CompareScreenStates, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
90
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CompareScreenStates, providedIn: 'root' });
91
- }
92
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CompareScreenStates, decorators: [{
93
- type: Injectable,
94
- args: [{
95
- providedIn: 'root',
96
- }]
97
- }] });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFyZS1zY3JlZW4tc3RhdGVzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvY29uc3VtZXJzL2NvbXBhcmUtc2NyZWVuLXN0YXRlcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBeUIzQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQWtDSztBQU1MLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUI7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaUJHO0lBQ0gsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEVBQ3hCLE9BQU8sR0FBRyxLQUFLLEVBQ2YsVUFBVSxHQUNpQjtRQUMzQixJQUFJLENBQUM7WUFDSCxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxVQUFVLENBQUM7WUFDekMsVUFBVSxHQUFHLG1CQUFtQixFQUFFLENBQUM7WUFFbkMsSUFBSSxFQUNGLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsT0FBTyxHQUNSLEdBQUcsVUFBVSxDQUFDO1lBRWYsbUNBQW1DO1lBQ25DLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1osdUNBQXVDO2dCQUN2QyxPQUFPO1lBQ1QsQ0FBQztZQUVELDBEQUEwRDtZQUMxRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUM3QyxNQUFNLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRTVDLGlDQUFpQztnQkFDakMsTUFBTSxVQUFVLEdBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBMkIsQ0FBQyxJQUFJLENBQ2hGLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQzFELENBQUM7Z0JBRUYseUNBQXlDO2dCQUN6QyxJQUFJLFVBQVUsRUFBRSxDQUFDO29CQUNmLHdEQUF3RDtvQkFDeEQsSUFBSSxvQkFBb0IsS0FBSyxPQUFPLElBQUksdUJBQXVCLEVBQUUsQ0FBQzt3QkFDaEUsTUFBTSxPQUFPLENBQUMsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7d0JBQzVELE1BQU07b0JBQ1IsQ0FBQztvQkFDRCxNQUFNLE9BQU8sQ0FBQyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztvQkFDNUQsTUFBTTtnQkFDUixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0gsQ0FBQzt1R0FsRVUsbUJBQW1COzJHQUFuQixtQkFBbUIsY0FGbEIsTUFBTTs7MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2NyZWVuU3RhdGUsIFRyaWdnZXJUeXBlLCBUcmlnZ2VyUGFyYW1ldGVycyB9IGZyb20gJy4uL0B0eXBlcy90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGFyZVNjcmVlblN0YXRlc1BhcmFtZXRlcnMgZXh0ZW5kcyBUcmlnZ2VyUGFyYW1ldGVycyB7XG4gIHJlY29yZGluZ0Rpc3BsYXlUeXBlOiAndmlkZW8nIHwgJ21lZGlhJyB8ICdhbGwnO1xuICByZWNvcmRpbmdWaWRlb09wdGltaXplZDogYm9vbGVhbjtcbiAgc2NyZWVuU3RhdGVzOiBTY3JlZW5TdGF0ZVtdO1xuICBwcmV2U2NyZWVuU3RhdGVzOiBTY3JlZW5TdGF0ZVtdO1xuICBhY3RpdmVOYW1lczogc3RyaW5nW107XG5cbiAgLy8gbWVkaWFzZnUgZnVuY3Rpb25zXG4gIHRyaWdnZXI6IFRyaWdnZXJUeXBlO1xuICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiBDb21wYXJlU2NyZWVuU3RhdGVzUGFyYW1ldGVycztcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhcmVTY3JlZW5TdGF0ZXNPcHRpb25zIHtcbiAgcmVzdGFydD86IGJvb2xlYW47XG4gIHBhcmFtZXRlcnM6IENvbXBhcmVTY3JlZW5TdGF0ZXNQYXJhbWV0ZXJzO1xufVxuXG4vLyBFeHBvcnQgdGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIGZ1bmN0aW9uXG5leHBvcnQgdHlwZSBDb21wYXJlU2NyZWVuU3RhdGVzVHlwZSA9IChvcHRpb25zOiBDb21wYXJlU2NyZWVuU3RhdGVzT3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPjtcblxuLyoqXG4gICAqIENvbXBhcmVzIHRoZSBjdXJyZW50IHNjcmVlbiBzdGF0ZXMgd2l0aCB0aGUgcHJldmlvdXMgc2NyZWVuIHN0YXRlcyBhbmQgdHJpZ2dlcnMgYWN0aW9ucyBiYXNlZCBvbiBjaGFuZ2VzLlxuICAgKlxuICAgKiBAcGFyYW0ge0NvbXBhcmVTY3JlZW5TdGF0ZXNPcHRpb25zfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGNvbXBhcmluZyBzY3JlZW4gc3RhdGVzLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnJlc3RhcnQ9ZmFsc2VdIC0gV2hldGhlciB0byByZXN0YXJ0IHRoZSBjb21wYXJpc29uIHByb2Nlc3MuXG4gICAqIEBwYXJhbSB7Q29tcGFyZVNjcmVlblN0YXRlc1BhcmFtZXRlcnN9IG9wdGlvbnMucGFyYW1ldGVycyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY29tcGFyaXNvbi5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmdldFVwZGF0ZWRBbGxQYXJhbXMgLSBGdW5jdGlvbiB0byBnZXQgdXBkYXRlZCBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJhbWV0ZXJzLnJlY29yZGluZ0Rpc3BsYXlUeXBlIC0gVGhlIHR5cGUgb2YgZGlzcGxheSBiZWluZyByZWNvcmRlZC5cbiAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkaW5nVmlkZW9PcHRpbWl6ZWQgLSBXaGV0aGVyIHRoZSByZWNvcmRpbmcgaXMgb3B0aW1pemVkIGZvciB2aWRlby5cbiAgICogQHBhcmFtIHtTY3JlZW5TdGF0ZVtdfSBvcHRpb25zLnBhcmFtZXRlcnMuc2NyZWVuU3RhdGVzIC0gVGhlIGN1cnJlbnQgc2NyZWVuIHN0YXRlcy5cbiAgICogQHBhcmFtIHtTY3JlZW5TdGF0ZVtdfSBvcHRpb25zLnBhcmFtZXRlcnMucHJldlNjcmVlblN0YXRlcyAtIFRoZSBwcmV2aW91cyBzY3JlZW4gc3RhdGVzLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBvcHRpb25zLnBhcmFtZXRlcnMuYWN0aXZlTmFtZXMgLSBUaGUgYWN0aXZlIG5hbWVzIGluIHRoZSBjdXJyZW50IGNvbnRleHQuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy50cmlnZ2VyIC0gRnVuY3Rpb24gdG8gdHJpZ2dlciBhY3Rpb25zIGJhc2VkIG9uIGNoYW5nZXMuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb21wYXJpc29uIGFuZCBhbnkgdHJpZ2dlcmVkIGFjdGlvbnMgYXJlIGNvbXBsZXRlLlxuICAgKlxuICAgKiBAdGhyb3dzIFdpbGwgbG9nIGFuIGVycm9yIG1lc3NhZ2UgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgY29tcGFyaXNvbiBwcm9jZXNzLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBvcHRpb25zID0ge1xuICAgKiAgIHJlc3RhcnQ6IGZhbHNlLFxuICAgKiAgIHBhcmFtZXRlcnM6IHtcbiAgICogICAgIGdldFVwZGF0ZWRBbGxQYXJhbXM6ICgpID0+IHsgLyogTG9naWMgdG8gZ2V0IHVwZGF0ZWQgcGFyYW1ldGVycyAqXFwvIH0sXG4gICAqICAgICByZWNvcmRpbmdEaXNwbGF5VHlwZTogJ3ZpZGVvJyxcbiAgICogICAgIHJlY29yZGluZ1ZpZGVvT3B0aW1pemVkOiB0cnVlLFxuICAgKiAgICAgc2NyZWVuU3RhdGVzOiBbeyBzdGF0ZTogJ2FjdGl2ZScgfSwgeyBzdGF0ZTogJ2luYWN0aXZlJyB9XSxcbiAgICogICAgIHByZXZTY3JlZW5TdGF0ZXM6IFt7IHN0YXRlOiAnaW5hY3RpdmUnIH0sIHsgc3RhdGU6ICdhY3RpdmUnIH1dLFxuICAgKiAgICAgYWN0aXZlTmFtZXM6IFsnQWxpY2UnLCAnQm9iJ10sXG4gICAqICAgICB0cmlnZ2VyOiBhc3luYyAoZGF0YSkgPT4geyAvKiBMb2dpYyB0byBoYW5kbGUgdGhlIHRyaWdnZXIgKlxcLyB9LFxuICAgKiAgIH0sXG4gICAqIH07XG4gICAqXG4gICAqIGF3YWl0IGNvbXBhcmVTY3JlZW5TdGF0ZXNTZXJ2aWNlLmNvbXBhcmVTY3JlZW5TdGF0ZXMob3B0aW9ucyk7XG4gICAqIC8vIElmIGFueSBzY3JlZW4gc3RhdGUgaGFzIGNoYW5nZWQsIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFjY29yZGluZ2x5LlxuICAgKi9cblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ29tcGFyZVNjcmVlblN0YXRlcyB7XG4gIC8qKlxuICAgKiBDb21wYXJlcyB0aGUgY3VycmVudCBzY3JlZW4gc3RhdGVzIHdpdGggdGhlIHByZXZpb3VzIHNjcmVlbiBzdGF0ZXMgYW5kIHRyaWdnZXJzIGFjdGlvbnMgYmFzZWQgb24gY2hhbmdlcy5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgY29tcGFyaW5nIHNjcmVlbiBzdGF0ZXMuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMucmVzdGFydD1mYWxzZV0gLSBXaGV0aGVyIHRvIHJlc3RhcnQgdGhlIGNvbXBhcmlzb24gcHJvY2Vzcy5cbiAgICogQHBhcmFtIHtDb21wYXJlU2NyZWVuU3RhdGVzT3B0aW9uc30gb3B0aW9ucy5wYXJhbWV0ZXJzIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBjb21wYXJpc29uLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMuZ2V0VXBkYXRlZEFsbFBhcmFtcyAtIEZ1bmN0aW9uIHRvIGdldCB1cGRhdGVkIHBhcmFtZXRlcnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcmFtZXRlcnMucmVjb3JkaW5nRGlzcGxheVR5cGUgLSBUaGUgdHlwZSBvZiBkaXNwbGF5IGJlaW5nIHJlY29yZGVkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMucGFyYW1ldGVycy5yZWNvcmRpbmdWaWRlb09wdGltaXplZCAtIFdoZXRoZXIgdGhlIHJlY29yZGluZyBpcyBvcHRpbWl6ZWQgZm9yIHZpZGVvLlxuICAgKiBAcGFyYW0ge0FycmF5PFNjcmVlblN0YXRlPn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnNjcmVlblN0YXRlcyAtIFRoZSBjdXJyZW50IHNjcmVlbiBzdGF0ZXMuXG4gICAqIEBwYXJhbSB7QXJyYXk8U2NyZWVuU3RhdGU+fSBvcHRpb25zLnBhcmFtZXRlcnMucHJldlNjcmVlblN0YXRlcyAtIFRoZSBwcmV2aW91cyBzY3JlZW4gc3RhdGVzLlxuICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IG9wdGlvbnMucGFyYW1ldGVycy5hY3RpdmVOYW1lcyAtIFRoZSBhY3RpdmUgbmFtZXMgaW4gdGhlIGN1cnJlbnQgY29udGV4dC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnRyaWdnZXIgLSBGdW5jdGlvbiB0byB0cmlnZ2VyIGFjdGlvbnMgYmFzZWQgb24gY2hhbmdlcy5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvbXBhcmlzb24gYW5kIGFueSB0cmlnZ2VyZWQgYWN0aW9ucyBhcmUgY29tcGxldGUuXG4gICAqXG4gICAqIEB0aHJvd3MgV2lsbCBsb2cgYW4gZXJyb3IgbWVzc2FnZSBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBjb21wYXJpc29uIHByb2Nlc3MuXG4gICAqL1xuICBhc3luYyBjb21wYXJlU2NyZWVuU3RhdGVzKHtcbiAgICByZXN0YXJ0ID0gZmFsc2UsXG4gICAgcGFyYW1ldGVycyxcbiAgfTogQ29tcGFyZVNjcmVlblN0YXRlc09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgbGV0IHsgZ2V0VXBkYXRlZEFsbFBhcmFtcyB9ID0gcGFyYW1ldGVycztcbiAgICAgIHBhcmFtZXRlcnMgPSBnZXRVcGRhdGVkQWxsUGFyYW1zKCk7XG5cbiAgICAgIGxldCB7XG4gICAgICAgIHJlY29yZGluZ0Rpc3BsYXlUeXBlLFxuICAgICAgICByZWNvcmRpbmdWaWRlb09wdGltaXplZCxcbiAgICAgICAgc2NyZWVuU3RhdGVzLFxuICAgICAgICBwcmV2U2NyZWVuU3RhdGVzLFxuICAgICAgICBhY3RpdmVOYW1lcyxcbiAgICAgICAgdHJpZ2dlcixcbiAgICAgIH0gPSBwYXJhbWV0ZXJzO1xuXG4gICAgICAvLyBSZXN0YXJ0IHRoZSBjb21wYXJpc29uIGlmIG5lZWRlZFxuICAgICAgaWYgKHJlc3RhcnQpIHtcbiAgICAgICAgLy8gUGVyZm9ybSBuZWNlc3NhcnkgYWN0aW9ucyBvbiByZXN0YXJ0XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gQ29tcGFyZSBlYWNoIGtleS12YWx1ZSBwYWlyIGluIHRoZSBzY3JlZW5TdGF0ZXMgb2JqZWN0c1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY3JlZW5TdGF0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgY3VycmVudFNjcmVlblN0YXRlID0gc2NyZWVuU3RhdGVzW2ldO1xuICAgICAgICBjb25zdCBwcmV2U2NyZWVuU3RhdGUgPSBwcmV2U2NyZWVuU3RhdGVzW2ldO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIGFueSB2YWx1ZSBoYXMgY2hhbmdlZFxuICAgICAgICBjb25zdCBoYXNDaGFuZ2VkID0gKE9iamVjdC5rZXlzKGN1cnJlbnRTY3JlZW5TdGF0ZSkgYXMgKGtleW9mIFNjcmVlblN0YXRlKVtdKS5zb21lKFxuICAgICAgICAgIChrZXkpID0+IGN1cnJlbnRTY3JlZW5TdGF0ZVtrZXldICE9PSBwcmV2U2NyZWVuU3RhdGVba2V5XSxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBTaWduYWwgY2hhbmdlIGlmIGFueSB2YWx1ZSBoYXMgY2hhbmdlZFxuICAgICAgICBpZiAoaGFzQ2hhbmdlZCkge1xuICAgICAgICAgIC8vIFBlcmZvcm0gYWN0aW9ucyBvciB0cmlnZ2VyIGV2ZW50cyBiYXNlZCBvbiB0aGUgY2hhbmdlXG4gICAgICAgICAgaWYgKHJlY29yZGluZ0Rpc3BsYXlUeXBlID09PSAndmlkZW8nICYmIHJlY29yZGluZ1ZpZGVvT3B0aW1pemVkKSB7XG4gICAgICAgICAgICBhd2FpdCB0cmlnZ2VyKHsgcmVmX0FjdGl2ZU5hbWVzOiBhY3RpdmVOYW1lcywgcGFyYW1ldGVycyB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCB0cmlnZ2VyKHsgcmVmX0FjdGl2ZU5hbWVzOiBhY3RpdmVOYW1lcywgcGFyYW1ldGVycyB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZygnY29tcGFyZVNjcmVlblN0YXRlcyBlcnJvcicsIGVycm9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,154 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "../sockets/socket-manager.service";
4
- import * as i2 from "./socket-receive-methods/new-pipe-producer.service";
5
- import * as i3 from "./socket-receive-methods/producer-closed.service";
6
- import * as i4 from "./socket-receive-methods/join-consume-room.service";
7
- /**
8
- * Connects to remote IPs and manages socket connections.
9
- *
10
- * This method establishes connections to remote IPs for media streaming, handles new pipe producer events,
11
- * and manages producer closure events. It updates the necessary state in the application to reflect
12
- * the current connections and stream configurations.
13
- *
14
- * @param {ConnectIpsOptions} options - The options for connecting IPs.
15
- * @param {Record<string, any>[]} options.consume_sockets - The array of current socket connections.
16
- * @param {string[]} options.remIP - The list of remote IPs to connect to.
17
- * @param {string} options.apiUserName - The API username for authentication.
18
- * @param {string} [options.apiKey] - The API key for authentication.
19
- * @param {string} [options.apiToken] - The API token for authentication.
20
- * @param {Function} [options.newProducerMethod] - The method to handle new pipe producer events (default: newPipeProducer).
21
- * @param {Function} [options.closedProducerMethod] - The method to handle producer closed events (default: producerClosed).
22
- * @param {Function} [options.joinConsumeRoomMethod] - The method to handle joining a consuming room (default: joinConsumeRoom).
23
- * @param {ConnectIpsParameters} options.parameters - Additional parameters for the operation.
24
- * @param {string[]} options.parameters.roomRecvIPs - The list of IPs that have been received in the room.
25
- * @param {Function} options.parameters.updateRoomRecvIPs - Function to update the room received IPs.
26
- * @param {Function} options.parameters.updateConsume_sockets - Function to update the consume sockets.
27
- *
28
- * @returns {Promise<[Record<string, any>[], string[]]>} A promise that resolves to an array containing the updated consume sockets and room received IPs.
29
- *
30
- * @throws Will throw an error if required parameters are missing or if there is an issue connecting to a remote IP.
31
- *
32
- * @example
33
- * ```typescript
34
- * const result = await connectIps({
35
- * consume_sockets: currentSockets,
36
- * remIP: ['192.168.1.1', '192.168.1.2'],
37
- * apiUserName: 'username',
38
- * apiKey: 'your-api-key',
39
- * apiToken: 'your-api-token',
40
- * parameters: {
41
- * roomRecvIPs: [],
42
- * updateRoomRecvIPs: (ips) => { },
43
- * updateConsume_sockets: (sockets) => { },
44
- * // ...other parameters
45
- * },
46
- * });
47
- * ```
48
- */
49
- export class ConnectIps {
50
- socketManagerService;
51
- newPipeProducerService;
52
- producerClosedService;
53
- joinConsumeRoomService;
54
- constructor(socketManagerService, newPipeProducerService, producerClosedService, joinConsumeRoomService) {
55
- this.socketManagerService = socketManagerService;
56
- this.newPipeProducerService = newPipeProducerService;
57
- this.producerClosedService = producerClosedService;
58
- this.joinConsumeRoomService = joinConsumeRoomService;
59
- }
60
- /**
61
- * Connects to remote IPs and manages socket connections.
62
- *
63
- * @param {Object} options - The options for connecting IPs.
64
- * @param {Record<string, any>[]} options.consume_sockets - The array of current socket connections.
65
- * @param {string[]} options.remIP - The list of remote IPs to connect to.
66
- * @param {string} options.apiUserName - The API username for authentication.
67
- * @param {string} [options.apiKey] - The API key for authentication.
68
- * @param {string} [options.apiToken] - The API token for authentication.
69
- * @param {Function} [options.newProducerMethod=newPipeProducer] - The method to handle new pipe producer events.
70
- * @param {Function} [options.closedProducerMethod=producerClosed] - The method to handle producer closed events.
71
- * @param {Function} [options.joinConsumeRoomMethod=joinConsumeRoom] - The method to handle joining a consuming room.
72
- * @param {Object} options.parameters - Additional parameters.
73
- * @param {string[]} options.parameters.roomRecvIPs - The list of IPs that have been received in the room.
74
- * @param {Function} options.parameters.updateRoomRecvIPs - The function to update the room received IPs.
75
- * @param {Function} options.parameters.updateConsume_sockets - The function to update the consume sockets.
76
- *
77
- * @returns {Promise<[Record<string, any>[], string[]]>} A promise that resolves to an array containing the updated consume sockets and room received IPs.
78
- *
79
- * @throws Will throw an error if required parameters are missing or if there is an issue connecting to a remote IP.
80
- */
81
- connectIps = async ({ consume_sockets, remIP, apiUserName, apiKey = '', apiToken = '', newProducerMethod = this.newPipeProducerService.newPipeProducer, closedProducerMethod = this.producerClosedService.producerClosed, joinConsumeRoomMethod = this.joinConsumeRoomService.joinConsumeRoom, parameters, }) => {
82
- try {
83
- const { roomRecvIPs, updateRoomRecvIPs, updateConsume_sockets } = parameters;
84
- if (!consume_sockets || !remIP || !apiUserName || (!apiKey && !apiToken)) {
85
- console.log('Missing required parameters - consume_sockets, remIP, apiUserName, apiKey, apiToken');
86
- return [consume_sockets, roomRecvIPs];
87
- }
88
- await Promise.all(remIP.map(async (ip) => {
89
- try {
90
- // Check if the IP is already connected
91
- const matching = consume_sockets.find((socketObj) => Object.keys(socketObj)[0] == ip);
92
- if (matching || !ip || ip === '' || ip === null || ip === undefined) {
93
- // Skip if the IP is already connected
94
- return;
95
- }
96
- // Connect to the remote socket using socket.io-client
97
- const remote_sock = await this.socketManagerService.connectSocket({
98
- apiUserName,
99
- apiKey,
100
- apiToken,
101
- link: `https://${ip}.mediasfu.com`,
102
- });
103
- // Handle successful connection to the remote socket
104
- if (remote_sock.id) {
105
- // Check if the IP is in the roomRecvIPs, if not, add it
106
- if (!roomRecvIPs.includes(ip)) {
107
- roomRecvIPs.push(ip);
108
- updateRoomRecvIPs(roomRecvIPs);
109
- }
110
- // Handle new pipe producer event
111
- remote_sock.on('new-pipe-producer', async ({ producerId, islevel }) => {
112
- await newProducerMethod({ producerId, islevel, nsock: remote_sock, parameters });
113
- });
114
- // Handle producer closed event
115
- remote_sock.on('producer-closed', async ({ remoteProducerId }) => {
116
- await closedProducerMethod({ remoteProducerId, parameters });
117
- });
118
- // Handle new consuming room by joining the room
119
- const data = await joinConsumeRoomMethod({
120
- remote_sock,
121
- apiToken,
122
- apiUserName,
123
- parameters,
124
- });
125
- if (!data.rtpCapabilities) {
126
- return;
127
- }
128
- // Add the remote socket to the consume_sockets array
129
- consume_sockets.push({ [ip]: remote_sock });
130
- updateConsume_sockets(consume_sockets);
131
- }
132
- }
133
- catch (error) {
134
- // Handle the error
135
- console.log('connectIps error', error);
136
- }
137
- }));
138
- return [consume_sockets, roomRecvIPs];
139
- }
140
- catch (error) {
141
- // Handle the error
142
- console.log('connectIps error', error);
143
- }
144
- };
145
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ConnectIps, deps: [{ token: i1.SocketManager }, { token: i2.NewPipeProducer }, { token: i3.ProducerClosed }, { token: i4.JoinConsumeRoom }], target: i0.ɵɵFactoryTarget.Injectable });
146
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ConnectIps, providedIn: 'root' });
147
- }
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ConnectIps, decorators: [{
149
- type: Injectable,
150
- args: [{
151
- providedIn: 'root',
152
- }]
153
- }], ctorParameters: () => [{ type: i1.SocketManager }, { type: i2.NewPipeProducer }, { type: i3.ProducerClosed }, { type: i4.JoinConsumeRoom }] });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdC1pcHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9jb25zdW1lcnMvY29ubmVjdC1pcHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFtRDNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlDRztBQU9ILE1BQU0sT0FBTyxVQUFVO0lBRVg7SUFDQTtJQUNBO0lBQ0E7SUFKVixZQUNVLG9CQUFtQyxFQUNuQyxzQkFBdUMsRUFDdkMscUJBQXFDLEVBQ3JDLHNCQUF1QztRQUh2Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQWU7UUFDbkMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUFpQjtRQUN2QywwQkFBcUIsR0FBckIscUJBQXFCLENBQWdCO1FBQ3JDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBaUI7SUFDOUMsQ0FBQztJQUVKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNILFVBQVUsR0FBRyxLQUFLLEVBQUUsRUFDbEIsZUFBZSxFQUNmLEtBQUssRUFDTCxXQUFXLEVBQ1gsTUFBTSxHQUFHLEVBQUUsRUFDWCxRQUFRLEdBQUcsRUFBRSxFQUNiLGlCQUFpQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLEVBQy9ELG9CQUFvQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLEVBQ2hFLHFCQUFxQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLEVBQ25FLFVBQVUsR0FDUSxFQUFnQixFQUFFO1FBQ3BDLElBQUksQ0FBQztZQUNILE1BQU0sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxVQUFVLENBQUM7WUFFN0UsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDekUsT0FBTyxDQUFDLEdBQUcsQ0FDVCxxRkFBcUYsQ0FDdEYsQ0FBQztnQkFDRixPQUFPLENBQUMsZUFBZSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ3hDLENBQUM7WUFFRCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQztvQkFDSCx1Q0FBdUM7b0JBQ3ZDLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQ25DLENBQUMsU0FBYyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FDcEQsQ0FBQztvQkFFRixJQUFJLFFBQVEsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUNwRSxzQ0FBc0M7d0JBQ3RDLE9BQU87b0JBQ1QsQ0FBQztvQkFFRCxzREFBc0Q7b0JBQ3RELE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQzt3QkFDaEUsV0FBVzt3QkFDWCxNQUFNO3dCQUNOLFFBQVE7d0JBQ1IsSUFBSSxFQUFFLFdBQVcsRUFBRSxlQUFlO3FCQUNuQyxDQUFDLENBQUM7b0JBRUgsb0RBQW9EO29CQUNwRCxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQzt3QkFDbkIsd0RBQXdEO3dCQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDOzRCQUM5QixXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUNyQixpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQzt3QkFDakMsQ0FBQzt3QkFFRCxpQ0FBaUM7d0JBQ2pDLFdBQVcsQ0FBQyxFQUFFLENBQ1osbUJBQW1CLEVBQ25CLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQTJDLEVBQUUsRUFBRTs0QkFDekUsTUFBTSxpQkFBaUIsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO3dCQUNuRixDQUFDLENBQ0YsQ0FBQzt3QkFFRiwrQkFBK0I7d0JBQy9CLFdBQVcsQ0FBQyxFQUFFLENBQ1osaUJBQWlCLEVBQ2pCLEtBQUssRUFBRSxFQUFFLGdCQUFnQixFQUFnQyxFQUFFLEVBQUU7NEJBQzNELE1BQU0sb0JBQW9CLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO3dCQUMvRCxDQUFDLENBQ0YsQ0FBQzt3QkFFRixnREFBZ0Q7d0JBQ2hELE1BQU0sSUFBSSxHQUFHLE1BQU0scUJBQXFCLENBQUM7NEJBQ3ZDLFdBQVc7NEJBQ1gsUUFBUTs0QkFDUixXQUFXOzRCQUNYLFVBQVU7eUJBQ1gsQ0FBQyxDQUFDO3dCQUNILElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7NEJBQzFCLE9BQU87d0JBQ1QsQ0FBQzt3QkFFRCxxREFBcUQ7d0JBQ3JELGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7d0JBQzVDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUN6QyxDQUFDO2dCQUNILENBQUM7Z0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztvQkFDZixtQkFBbUI7b0JBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3pDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1lBRUYsT0FBTyxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLG1CQUFtQjtZQUNuQixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDLENBQUM7dUdBMUhTLFVBQVU7MkdBQVYsVUFBVSxjQUZULE1BQU07OzJGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU29ja2V0TWFuYWdlciB9IGZyb20gJy4uL3NvY2tldHMvc29ja2V0LW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBOZXdQaXBlUHJvZHVjZXIgfSBmcm9tICcuL3NvY2tldC1yZWNlaXZlLW1ldGhvZHMvbmV3LXBpcGUtcHJvZHVjZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9kdWNlckNsb3NlZCB9IGZyb20gJy4vc29ja2V0LXJlY2VpdmUtbWV0aG9kcy9wcm9kdWNlci1jbG9zZWQuc2VydmljZSc7XG5pbXBvcnQgeyBKb2luQ29uc3VtZVJvb20gfSBmcm9tICcuL3NvY2tldC1yZWNlaXZlLW1ldGhvZHMvam9pbi1jb25zdW1lLXJvb20uc2VydmljZSc7XG5pbXBvcnQgeyBEZXZpY2UgfSBmcm9tICdtZWRpYXNvdXAtY2xpZW50L2xpYi90eXBlcyc7XG5pbXBvcnQge1xuICBSZW9yZGVyU3RyZWFtc1BhcmFtZXRlcnMsXG4gIFJlb3JkZXJTdHJlYW1zVHlwZSxcbiAgTmV3UGlwZVByb2R1Y2VyUGFyYW1ldGVycyxcbiAgTmV3UGlwZVByb2R1Y2VyVHlwZSxcbiAgUHJvZHVjZXJDbG9zZWRUeXBlLFxuICBQcm9kdWNlckNsb3NlZFBhcmFtZXRlcnMsXG4gIEpvaW5Db25zdW1lUm9vbVR5cGUsXG4gIEpvaW5Db25zdW1lUm9vbVBhcmFtZXRlcnMsXG4gIENvbnN1bWVTb2NrZXQsXG59IGZyb20gJy4uL0B0eXBlcy90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdElwc1BhcmFtZXRlcnNcbiAgZXh0ZW5kcyBSZW9yZGVyU3RyZWFtc1BhcmFtZXRlcnMsXG4gICAgSm9pbkNvbnN1bWVSb29tUGFyYW1ldGVycyxcbiAgICBQcm9kdWNlckNsb3NlZFBhcmFtZXRlcnMsXG4gICAgTmV3UGlwZVByb2R1Y2VyUGFyYW1ldGVycyB7XG4gIGRldmljZTogRGV2aWNlIHwgbnVsbDtcbiAgcm9vbVJlY3ZJUHM6IHN0cmluZ1tdO1xuICB1cGRhdGVSb29tUmVjdklQczogKHJvb21SZWN2SVBzOiBzdHJpbmdbXSkgPT4gdm9pZDtcbiAgdXBkYXRlQ29uc3VtZV9zb2NrZXRzOiAoY29uc3VtZV9zb2NrZXRzOiBDb25zdW1lU29ja2V0W10pID0+IHZvaWQ7XG5cbiAgLy8gbWVkaWFzZnUgZnVuY3Rpb25zXG4gIHJlb3JkZXJTdHJlYW1zOiBSZW9yZGVyU3RyZWFtc1R5cGU7XG4gIGdldFVwZGF0ZWRBbGxQYXJhbXM6ICgpID0+IENvbm5lY3RJcHNQYXJhbWV0ZXJzO1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdElwc09wdGlvbnMge1xuICBjb25zdW1lX3NvY2tldHM6IENvbnN1bWVTb2NrZXRbXTtcbiAgcmVtSVA6IHN0cmluZ1tdO1xuICBhcGlVc2VyTmFtZTogc3RyaW5nO1xuICBhcGlLZXk/OiBzdHJpbmc7XG4gIGFwaVRva2VuOiBzdHJpbmc7XG4gIG5ld1Byb2R1Y2VyTWV0aG9kPzogTmV3UGlwZVByb2R1Y2VyVHlwZTtcbiAgY2xvc2VkUHJvZHVjZXJNZXRob2Q/OiBQcm9kdWNlckNsb3NlZFR5cGU7XG4gIGpvaW5Db25zdW1lUm9vbU1ldGhvZD86IEpvaW5Db25zdW1lUm9vbVR5cGU7XG4gIHBhcmFtZXRlcnM6IENvbm5lY3RJcHNQYXJhbWV0ZXJzO1xufVxuXG4vLyBFeHBvcnQgdGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIGZ1bmN0aW9uXG5leHBvcnQgdHlwZSBDb25uZWN0SXBzVHlwZSA9IChcbiAgb3B0aW9uczogQ29ubmVjdElwc09wdGlvbnMsXG4pID0+IFByb21pc2U8W1JlY29yZDxzdHJpbmcsIGFueT5bXSwgc3RyaW5nW11dPjtcblxuLyoqXG4gKiBDb25uZWN0cyB0byByZW1vdGUgSVBzIGFuZCBtYW5hZ2VzIHNvY2tldCBjb25uZWN0aW9ucy5cbiAqXG4gKiBUaGlzIG1ldGhvZCBlc3RhYmxpc2hlcyBjb25uZWN0aW9ucyB0byByZW1vdGUgSVBzIGZvciBtZWRpYSBzdHJlYW1pbmcsIGhhbmRsZXMgbmV3IHBpcGUgcHJvZHVjZXIgZXZlbnRzLFxuICogYW5kIG1hbmFnZXMgcHJvZHVjZXIgY2xvc3VyZSBldmVudHMuIEl0IHVwZGF0ZXMgdGhlIG5lY2Vzc2FyeSBzdGF0ZSBpbiB0aGUgYXBwbGljYXRpb24gdG8gcmVmbGVjdFxuICogdGhlIGN1cnJlbnQgY29ubmVjdGlvbnMgYW5kIHN0cmVhbSBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge0Nvbm5lY3RJcHNPcHRpb25zfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGNvbm5lY3RpbmcgSVBzLlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+W119IG9wdGlvbnMuY29uc3VtZV9zb2NrZXRzIC0gVGhlIGFycmF5IG9mIGN1cnJlbnQgc29ja2V0IGNvbm5lY3Rpb25zLlxuICogQHBhcmFtIHtzdHJpbmdbXX0gb3B0aW9ucy5yZW1JUCAtIFRoZSBsaXN0IG9mIHJlbW90ZSBJUHMgdG8gY29ubmVjdCB0by5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmFwaVVzZXJOYW1lIC0gVGhlIEFQSSB1c2VybmFtZSBmb3IgYXV0aGVudGljYXRpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuYXBpS2V5XSAtIFRoZSBBUEkga2V5IGZvciBhdXRoZW50aWNhdGlvbi5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5hcGlUb2tlbl0gLSBUaGUgQVBJIHRva2VuIGZvciBhdXRoZW50aWNhdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRpb25zLm5ld1Byb2R1Y2VyTWV0aG9kXSAtIFRoZSBtZXRob2QgdG8gaGFuZGxlIG5ldyBwaXBlIHByb2R1Y2VyIGV2ZW50cyAoZGVmYXVsdDogbmV3UGlwZVByb2R1Y2VyKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRpb25zLmNsb3NlZFByb2R1Y2VyTWV0aG9kXSAtIFRoZSBtZXRob2QgdG8gaGFuZGxlIHByb2R1Y2VyIGNsb3NlZCBldmVudHMgKGRlZmF1bHQ6IHByb2R1Y2VyQ2xvc2VkKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRpb25zLmpvaW5Db25zdW1lUm9vbU1ldGhvZF0gLSBUaGUgbWV0aG9kIHRvIGhhbmRsZSBqb2luaW5nIGEgY29uc3VtaW5nIHJvb20gKGRlZmF1bHQ6IGpvaW5Db25zdW1lUm9vbSkuXG4gKiBAcGFyYW0ge0Nvbm5lY3RJcHNQYXJhbWV0ZXJzfSBvcHRpb25zLnBhcmFtZXRlcnMgLSBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoZSBvcGVyYXRpb24uXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBvcHRpb25zLnBhcmFtZXRlcnMucm9vbVJlY3ZJUHMgLSBUaGUgbGlzdCBvZiBJUHMgdGhhdCBoYXZlIGJlZW4gcmVjZWl2ZWQgaW4gdGhlIHJvb20uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlUm9vbVJlY3ZJUHMgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHJvb20gcmVjZWl2ZWQgSVBzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZUNvbnN1bWVfc29ja2V0cyAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgY29uc3VtZSBzb2NrZXRzLlxuICpcbiAqIEByZXR1cm5zIHtQcm9taXNlPFtSZWNvcmQ8c3RyaW5nLCBhbnk+W10sIHN0cmluZ1tdXT59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHVwZGF0ZWQgY29uc3VtZSBzb2NrZXRzIGFuZCByb29tIHJlY2VpdmVkIElQcy5cbiAqXG4gKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgcmVxdWlyZWQgcGFyYW1ldGVycyBhcmUgbWlzc2luZyBvciBpZiB0aGVyZSBpcyBhbiBpc3N1ZSBjb25uZWN0aW5nIHRvIGEgcmVtb3RlIElQLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25uZWN0SXBzKHtcbiAqICAgY29uc3VtZV9zb2NrZXRzOiBjdXJyZW50U29ja2V0cyxcbiAqICAgcmVtSVA6IFsnMTkyLjE2OC4xLjEnLCAnMTkyLjE2OC4xLjInXSxcbiAqICAgYXBpVXNlck5hbWU6ICd1c2VybmFtZScsXG4gKiAgIGFwaUtleTogJ3lvdXItYXBpLWtleScsXG4gKiAgIGFwaVRva2VuOiAneW91ci1hcGktdG9rZW4nLFxuICogICBwYXJhbWV0ZXJzOiB7XG4gKiAgICAgcm9vbVJlY3ZJUHM6IFtdLFxuICogICAgIHVwZGF0ZVJvb21SZWN2SVBzOiAoaXBzKSA9PiB7IH0sXG4gKiAgICAgdXBkYXRlQ29uc3VtZV9zb2NrZXRzOiAoc29ja2V0cykgPT4geyB9LFxuICogICAgIC8vIC4uLm90aGVyIHBhcmFtZXRlcnNcbiAqICAgfSxcbiAqIH0pO1xuICogYGBgXG4gKi9cblxuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDb25uZWN0SXBzIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzb2NrZXRNYW5hZ2VyU2VydmljZTogU29ja2V0TWFuYWdlcixcbiAgICBwcml2YXRlIG5ld1BpcGVQcm9kdWNlclNlcnZpY2U6IE5ld1BpcGVQcm9kdWNlcixcbiAgICBwcml2YXRlIHByb2R1Y2VyQ2xvc2VkU2VydmljZTogUHJvZHVjZXJDbG9zZWQsXG4gICAgcHJpdmF0ZSBqb2luQ29uc3VtZVJvb21TZXJ2aWNlOiBKb2luQ29uc3VtZVJvb20sXG4gICkge31cblxuICAvKipcbiAgICogQ29ubmVjdHMgdG8gcmVtb3RlIElQcyBhbmQgbWFuYWdlcyBzb2NrZXQgY29ubmVjdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgZm9yIGNvbm5lY3RpbmcgSVBzLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIGFueT5bXX0gb3B0aW9ucy5jb25zdW1lX3NvY2tldHMgLSBUaGUgYXJyYXkgb2YgY3VycmVudCBzb2NrZXQgY29ubmVjdGlvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IG9wdGlvbnMucmVtSVAgLSBUaGUgbGlzdCBvZiByZW1vdGUgSVBzIHRvIGNvbm5lY3QgdG8uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmFwaVVzZXJOYW1lIC0gVGhlIEFQSSB1c2VybmFtZSBmb3IgYXV0aGVudGljYXRpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5hcGlLZXldIC0gVGhlIEFQSSBrZXkgZm9yIGF1dGhlbnRpY2F0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuYXBpVG9rZW5dIC0gVGhlIEFQSSB0b2tlbiBmb3IgYXV0aGVudGljYXRpb24uXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRpb25zLm5ld1Byb2R1Y2VyTWV0aG9kPW5ld1BpcGVQcm9kdWNlcl0gLSBUaGUgbWV0aG9kIHRvIGhhbmRsZSBuZXcgcGlwZSBwcm9kdWNlciBldmVudHMuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRpb25zLmNsb3NlZFByb2R1Y2VyTWV0aG9kPXByb2R1Y2VyQ2xvc2VkXSAtIFRoZSBtZXRob2QgdG8gaGFuZGxlIHByb2R1Y2VyIGNsb3NlZCBldmVudHMuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRpb25zLmpvaW5Db25zdW1lUm9vbU1ldGhvZD1qb2luQ29uc3VtZVJvb21dIC0gVGhlIG1ldGhvZCB0byBoYW5kbGUgam9pbmluZyBhIGNvbnN1bWluZyByb29tLlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucy5wYXJhbWV0ZXJzIC0gQWRkaXRpb25hbCBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBvcHRpb25zLnBhcmFtZXRlcnMucm9vbVJlY3ZJUHMgLSBUaGUgbGlzdCBvZiBJUHMgdGhhdCBoYXZlIGJlZW4gcmVjZWl2ZWQgaW4gdGhlIHJvb20uXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG9wdGlvbnMucGFyYW1ldGVycy51cGRhdGVSb29tUmVjdklQcyAtIFRoZSBmdW5jdGlvbiB0byB1cGRhdGUgdGhlIHJvb20gcmVjZWl2ZWQgSVBzLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnBhcmFtZXRlcnMudXBkYXRlQ29uc3VtZV9zb2NrZXRzIC0gVGhlIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgY29uc3VtZSBzb2NrZXRzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxbUmVjb3JkPHN0cmluZywgYW55PltdLCBzdHJpbmdbXV0+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhbiBhcnJheSBjb250YWluaW5nIHRoZSB1cGRhdGVkIGNvbnN1bWUgc29ja2V0cyBhbmQgcm9vbSByZWNlaXZlZCBJUHMuXG4gICAqXG4gICAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiByZXF1aXJlZCBwYXJhbWV0ZXJzIGFyZSBtaXNzaW5nIG9yIGlmIHRoZXJlIGlzIGFuIGlzc3VlIGNvbm5lY3RpbmcgdG8gYSByZW1vdGUgSVAuXG4gICAqL1xuICBjb25uZWN0SXBzID0gYXN5bmMgKHtcbiAgICBjb25zdW1lX3NvY2tldHMsXG4gICAgcmVtSVAsXG4gICAgYXBpVXNlck5hbWUsXG4gICAgYXBpS2V5ID0gJycsXG4gICAgYXBpVG9rZW4gPSAnJyxcbiAgICBuZXdQcm9kdWNlck1ldGhvZCA9IHRoaXMubmV3UGlwZVByb2R1Y2VyU2VydmljZS5uZXdQaXBlUHJvZHVjZXIsXG4gICAgY2xvc2VkUHJvZHVjZXJNZXRob2QgPSB0aGlzLnByb2R1Y2VyQ2xvc2VkU2VydmljZS5wcm9kdWNlckNsb3NlZCxcbiAgICBqb2luQ29uc3VtZVJvb21NZXRob2QgPSB0aGlzLmpvaW5Db25zdW1lUm9vbVNlcnZpY2Uuam9pbkNvbnN1bWVSb29tLFxuICAgIHBhcmFtZXRlcnMsXG4gIH06IENvbm5lY3RJcHNPcHRpb25zKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyByb29tUmVjdklQcywgdXBkYXRlUm9vbVJlY3ZJUHMsIHVwZGF0ZUNvbnN1bWVfc29ja2V0cyB9ID0gcGFyYW1ldGVycztcblxuICAgICAgaWYgKCFjb25zdW1lX3NvY2tldHMgfHwgIXJlbUlQIHx8ICFhcGlVc2VyTmFtZSB8fCAoIWFwaUtleSAmJiAhYXBpVG9rZW4pKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICdNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlcnMgLSBjb25zdW1lX3NvY2tldHMsIHJlbUlQLCBhcGlVc2VyTmFtZSwgYXBpS2V5LCBhcGlUb2tlbicsXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBbY29uc3VtZV9zb2NrZXRzLCByb29tUmVjdklQc107XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICByZW1JUC5tYXAoYXN5bmMgKGlwKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBJUCBpcyBhbHJlYWR5IGNvbm5lY3RlZFxuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmcgPSBjb25zdW1lX3NvY2tldHMuZmluZChcbiAgICAgICAgICAgICAgKHNvY2tldE9iajogYW55KSA9PiBPYmplY3Qua2V5cyhzb2NrZXRPYmopWzBdID09IGlwLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKG1hdGNoaW5nIHx8ICFpcCB8fCBpcCA9PT0gJycgfHwgaXAgPT09IG51bGwgfHwgaXAgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAvLyBTa2lwIGlmIHRoZSBJUCBpcyBhbHJlYWR5IGNvbm5lY3RlZFxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENvbm5lY3QgdG8gdGhlIHJlbW90ZSBzb2NrZXQgdXNpbmcgc29ja2V0LmlvLWNsaWVudFxuICAgICAgICAgICAgY29uc3QgcmVtb3RlX3NvY2sgPSBhd2FpdCB0aGlzLnNvY2tldE1hbmFnZXJTZXJ2aWNlLmNvbm5lY3RTb2NrZXQoe1xuICAgICAgICAgICAgICBhcGlVc2VyTmFtZSxcbiAgICAgICAgICAgICAgYXBpS2V5LFxuICAgICAgICAgICAgICBhcGlUb2tlbixcbiAgICAgICAgICAgICAgbGluazogYGh0dHBzOi8vJHtpcH0ubWVkaWFzZnUuY29tYCxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBIYW5kbGUgc3VjY2Vzc2Z1bCBjb25uZWN0aW9uIHRvIHRoZSByZW1vdGUgc29ja2V0XG4gICAgICAgICAgICBpZiAocmVtb3RlX3NvY2suaWQpIHtcbiAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIElQIGlzIGluIHRoZSByb29tUmVjdklQcywgaWYgbm90LCBhZGQgaXRcbiAgICAgICAgICAgICAgaWYgKCFyb29tUmVjdklQcy5pbmNsdWRlcyhpcCkpIHtcbiAgICAgICAgICAgICAgICByb29tUmVjdklQcy5wdXNoKGlwKTtcbiAgICAgICAgICAgICAgICB1cGRhdGVSb29tUmVjdklQcyhyb29tUmVjdklQcyk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBIYW5kbGUgbmV3IHBpcGUgcHJvZHVjZXIgZXZlbnRcbiAgICAgICAgICAgICAgcmVtb3RlX3NvY2sub24oXG4gICAgICAgICAgICAgICAgJ25ldy1waXBlLXByb2R1Y2VyJyxcbiAgICAgICAgICAgICAgICBhc3luYyAoeyBwcm9kdWNlcklkLCBpc2xldmVsIH06IHsgcHJvZHVjZXJJZDogc3RyaW5nOyBpc2xldmVsOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgYXdhaXQgbmV3UHJvZHVjZXJNZXRob2QoeyBwcm9kdWNlcklkLCBpc2xldmVsLCBuc29jazogcmVtb3RlX3NvY2ssIHBhcmFtZXRlcnMgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAvLyBIYW5kbGUgcHJvZHVjZXIgY2xvc2VkIGV2ZW50XG4gICAgICAgICAgICAgIHJlbW90ZV9zb2NrLm9uKFxuICAgICAgICAgICAgICAgICdwcm9kdWNlci1jbG9zZWQnLFxuICAgICAgICAgICAgICAgIGFzeW5jICh7IHJlbW90ZVByb2R1Y2VySWQgfTogeyByZW1vdGVQcm9kdWNlcklkOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgYXdhaXQgY2xvc2VkUHJvZHVjZXJNZXRob2QoeyByZW1vdGVQcm9kdWNlcklkLCBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgLy8gSGFuZGxlIG5ldyBjb25zdW1pbmcgcm9vbSBieSBqb2luaW5nIHRoZSByb29tXG4gICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBqb2luQ29uc3VtZVJvb21NZXRob2Qoe1xuICAgICAgICAgICAgICAgIHJlbW90ZV9zb2NrLFxuICAgICAgICAgICAgICAgIGFwaVRva2VuLFxuICAgICAgICAgICAgICAgIGFwaVVzZXJOYW1lLFxuICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBpZiAoIWRhdGEucnRwQ2FwYWJpbGl0aWVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gQWRkIHRoZSByZW1vdGUgc29ja2V0IHRvIHRoZSBjb25zdW1lX3NvY2tldHMgYXJyYXlcbiAgICAgICAgICAgICAgY29uc3VtZV9zb2NrZXRzLnB1c2goeyBbaXBdOiByZW1vdGVfc29jayB9KTtcbiAgICAgICAgICAgICAgdXBkYXRlQ29uc3VtZV9zb2NrZXRzKGNvbnN1bWVfc29ja2V0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgZXJyb3JcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjb25uZWN0SXBzIGVycm9yJywgZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gW2NvbnN1bWVfc29ja2V0cywgcm9vbVJlY3ZJUHNdO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBIYW5kbGUgdGhlIGVycm9yXG4gICAgICBjb25zb2xlLmxvZygnY29ubmVjdElwcyBlcnJvcicsIGVycm9yKTtcbiAgICB9XG4gIH07XG59XG4iXX0=
@@ -1,146 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Connects the receiving transport to consume media from a remote producer.
5
- *
6
- * @param {ConnectRecvTransportOptions} options - The options for connecting the receiving transport.
7
- * @param {Transport} options.consumerTransport - The transport used for consuming media.
8
- * @param {string} options.remoteProducerId - The ID of the remote producer.
9
- * @param {string} options.serverConsumerTransportId - The ID of the server consumer transport.
10
- * @param {Socket} options.nsock - The socket used for communication.
11
- * @param {ConnectRecvTransportParameters} options.parameters - The parameters for the connection.
12
- *
13
- * @returns {Promise<void>} A promise that resolves when the connection is established.
14
- *
15
- * @throws Will throw an error if the connection or consumption fails.
16
- *
17
- * @example
18
- * ```typescript
19
- * const options = {
20
- * consumerTransport,
21
- * remoteProducerId: 'producer-id',
22
- * serverConsumerTransportId: 'transport-id',
23
- * nsock: socket,
24
- * parameters: connectRecvTransportOptions,
25
- * };
26
- *
27
- * connectRecvTransport(options)
28
- * .then(() => {
29
- * console.log('Transport connected and consuming media');
30
- * })
31
- * .catch((error) => {
32
- * console.error('Error connecting transport:', error);
33
- * });
34
- * ```
35
- */
36
- export class ConnectRecvTransport {
37
- /**
38
- * Connects the receiving transport to consume media from a remote producer.
39
- *
40
- * @param {Object} options - The options for connecting the receiving transport.
41
- * @param {Transport} options.consumerTransport - The transport used for consuming media.
42
- * @param {string} options.remoteProducerId - The ID of the remote producer.
43
- * @param {string} options.serverConsumerTransportId - The ID of the server consumer transport.
44
- * @param {Socket} options.nsock - The socket used for communication.
45
- * @param {ConnectRecvTransportOptions} options.parameters - The parameters for the connection.
46
- *
47
- * @returns {Promise<void>} A promise that resolves when the connection is established.
48
- *
49
- * @throws Will throw an error if the connection or consumption fails.
50
- *
51
- * @example
52
- * ```typescript
53
- * const options = {
54
- * consumerTransport,
55
- * remoteProducerId: 'producer-id',
56
- * serverConsumerTransportId: 'transport-id',
57
- * nsock: socket,
58
- * parameters: connectRecvTransportOptions,
59
- * };
60
- *
61
- * connectRecvTransport(options)
62
- * .then(() => {
63
- * console.log('Transport connected and consuming media');
64
- * })
65
- * .catch((error) => {
66
- * console.error('Error connecting transport:', error);
67
- * });
68
- * ```
69
- */
70
- connectRecvTransport = async ({ consumerTransport, remoteProducerId, serverConsumerTransportId, nsock, parameters, }) => {
71
- try {
72
- parameters = parameters.getUpdatedAllParams();
73
- const { device, consumerTransports, updateConsumerTransports, consumerResume } = parameters;
74
- // Emit 'consume' event to signal consumption initiation
75
- nsock.emit('consume', {
76
- rtpCapabilities: device ? device.rtpCapabilities : null,
77
- remoteProducerId,
78
- serverConsumerTransportId,
79
- }, async ({ params }) => {
80
- if (params.error) {
81
- // Handle error
82
- console.log('consume error', params.error);
83
- return;
84
- }
85
- try {
86
- // Consume media using received parameters
87
- const consumer = await consumerTransport.consume({
88
- id: params.id,
89
- producerId: params.producerId,
90
- kind: params.kind,
91
- rtpParameters: params.rtpParameters,
92
- });
93
- // Update consumerTransports array with the new consumer
94
- consumerTransports.push({
95
- consumerTransport,
96
- serverConsumerTransportId: params.id,
97
- producerId: remoteProducerId,
98
- consumer,
99
- socket_: nsock,
100
- });
101
- updateConsumerTransports(consumerTransports);
102
- // Extract track from the consumer
103
- const { track } = consumer;
104
- // Emit 'consumer-resume' event to signal consumer resumption
105
- nsock.emit('consumer-resume', { serverConsumerId: params.serverConsumerId }, async ({ resumed }) => {
106
- if (resumed) {
107
- // Consumer resumed and ready to be used
108
- try {
109
- await consumerResume({
110
- track,
111
- kind: params.kind,
112
- remoteProducerId,
113
- params,
114
- parameters,
115
- nsock,
116
- });
117
- }
118
- catch (error) {
119
- // Handle error
120
- console.log('consumerResume error', error);
121
- }
122
- }
123
- });
124
- }
125
- catch (error) {
126
- // Handle error
127
- console.log('consume error', error);
128
- return;
129
- }
130
- });
131
- }
132
- catch (error) {
133
- // Handle error
134
- console.log('connectRecvTransport error', error);
135
- }
136
- };
137
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ConnectRecvTransport, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
138
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ConnectRecvTransport, providedIn: 'root' });
139
- }
140
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ConnectRecvTransport, decorators: [{
141
- type: Injectable,
142
- args: [{
143
- providedIn: 'root',
144
- }]
145
- }] });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdC1yZWN2LXRyYW5zcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL2NvbnN1bWVycy9jb25uZWN0LXJlY3YtdHJhbnNwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFzQ3pDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdDRztBQU1MLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BZ0NHO0lBRUgsb0JBQW9CLEdBQUcsS0FBSyxFQUFFLEVBQzVCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIseUJBQXlCLEVBQ3pCLEtBQUssRUFDTCxVQUFVLEdBQ2tCLEVBQWlCLEVBQUU7UUFDL0MsSUFBSSxDQUFDO1lBQ0gsVUFBVSxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzlDLE1BQU0sRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQUUsY0FBYyxFQUFFLEdBQUcsVUFBVSxDQUFDO1lBRTVGLHdEQUF3RDtZQUN4RCxLQUFLLENBQUMsSUFBSSxDQUNSLFNBQVMsRUFDVDtnQkFDRSxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUN2RCxnQkFBZ0I7Z0JBQ2hCLHlCQUF5QjthQUMxQixFQUNELEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBc0IsRUFBRSxFQUFFO2dCQUN2QyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDakIsZUFBZTtvQkFDZixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzNDLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxJQUFJLENBQUM7b0JBQ0gsMENBQTBDO29CQUMxQyxNQUFNLFFBQVEsR0FBYSxNQUFNLGlCQUFpQixDQUFDLE9BQU8sQ0FBQzt3QkFDekQsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO3dCQUNiLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTt3QkFDN0IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUF5Qjt3QkFDdEMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhO3FCQUNwQyxDQUFDLENBQUM7b0JBRUgsd0RBQXdEO29CQUN4RCxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7d0JBQ3RCLGlCQUFpQjt3QkFDakIseUJBQXlCLEVBQUUsTUFBTSxDQUFDLEVBQUU7d0JBQ3BDLFVBQVUsRUFBRSxnQkFBZ0I7d0JBQzVCLFFBQVE7d0JBQ1IsT0FBTyxFQUFFLEtBQUs7cUJBQ2YsQ0FBQyxDQUFDO29CQUVILHdCQUF3QixDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBRTdDLGtDQUFrQztvQkFDbEMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLFFBQVEsQ0FBQztvQkFFM0IsNkRBQTZEO29CQUM3RCxLQUFLLENBQUMsSUFBSSxDQUNSLGlCQUFpQixFQUNqQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUM3QyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQU8sRUFBRSxFQUFFO3dCQUN6QixJQUFJLE9BQU8sRUFBRSxDQUFDOzRCQUNaLHdDQUF3Qzs0QkFDeEMsSUFBSSxDQUFDO2dDQUNILE1BQU0sY0FBYyxDQUFDO29DQUNuQixLQUFLO29DQUNMLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtvQ0FDakIsZ0JBQWdCO29DQUNoQixNQUFNO29DQUNOLFVBQVU7b0NBQ1YsS0FBSztpQ0FDTixDQUFDLENBQUM7NEJBQ0wsQ0FBQzs0QkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dDQUNmLGVBQWU7Z0NBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQzs0QkFDN0MsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUMsQ0FDRixDQUFDO2dCQUNKLENBQUM7Z0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztvQkFDZixlQUFlO29CQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUNwQyxPQUFPO2dCQUNULENBQUM7WUFDSCxDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsZUFBZTtZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUMsQ0FBQzt1R0F0SFMsb0JBQW9COzJHQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7MkZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNvY2tldCB9IGZyb20gJ3NvY2tldC5pby1jbGllbnQnO1xuaW1wb3J0IHtcbiAgQ29uc3VtZXJSZXN1bWVUeXBlLFxuICBDb25zdW1lclJlc3VtZVBhcmFtZXRlcnMsXG4gIFRyYW5zcG9ydCBhcyBUcmFuc3BvcnRUeXBlLFxufSBmcm9tICcuLi9AdHlwZXMvdHlwZXMnO1xuaW1wb3J0IHsgQ29uc3VtZXIsIERldmljZSwgVHJhbnNwb3J0IH0gZnJvbSAnbWVkaWFzb3VwLWNsaWVudC9saWIvdHlwZXMnO1xuaW50ZXJmYWNlIFBhcmFtcyB7XG4gIGlkOiBzdHJpbmc7XG4gIHByb2R1Y2VySWQ6IHN0cmluZztcbiAga2luZDogc3RyaW5nO1xuICBydHBQYXJhbWV0ZXJzOiBhbnk7XG4gIHNlcnZlckNvbnN1bWVySWQ6IHN0cmluZztcbiAgZXJyb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdFJlY3ZUcmFuc3BvcnRQYXJhbWV0ZXJzIGV4dGVuZHMgQ29uc3VtZXJSZXN1bWVQYXJhbWV0ZXJzIHtcbiAgZGV2aWNlOiBEZXZpY2UgfCBudWxsO1xuICBjb25zdW1lclRyYW5zcG9ydHM6IFRyYW5zcG9ydFR5cGVbXTtcbiAgdXBkYXRlQ29uc3VtZXJUcmFuc3BvcnRzOiAodHJhbnNwb3J0czogVHJhbnNwb3J0VHlwZVtdKSA9PiB2b2lkO1xuXG4gIC8vIG1lZGlhc2Z1IGZ1bmN0aW9uc1xuICBjb25zdW1lclJlc3VtZTogQ29uc3VtZXJSZXN1bWVUeXBlO1xuICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiBDb25uZWN0UmVjdlRyYW5zcG9ydFBhcmFtZXRlcnM7XG4gIFtrZXk6IHN0cmluZ106IGFueTsgLy8gRXh0ZW5kYWJsZSBmb3IgYWRkaXRpb25hbCBwYXJhbWV0ZXJzXG59XG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3RSZWN2VHJhbnNwb3J0T3B0aW9ucyB7XG4gIGNvbnN1bWVyVHJhbnNwb3J0OiBUcmFuc3BvcnQ7XG4gIHJlbW90ZVByb2R1Y2VySWQ6IHN0cmluZztcbiAgc2VydmVyQ29uc3VtZXJUcmFuc3BvcnRJZDogc3RyaW5nO1xuICBuc29jazogU29ja2V0O1xuICBwYXJhbWV0ZXJzOiBDb25uZWN0UmVjdlRyYW5zcG9ydFBhcmFtZXRlcnM7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIENvbm5lY3RSZWN2VHJhbnNwb3J0VHlwZSA9IChvcHRpb25zOiBDb25uZWN0UmVjdlRyYW5zcG9ydE9wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIENvbm5lY3RzIHRoZSByZWNlaXZpbmcgdHJhbnNwb3J0IHRvIGNvbnN1bWUgbWVkaWEgZnJvbSBhIHJlbW90ZSBwcm9kdWNlci5cbiAgICpcbiAgICogQHBhcmFtIHtDb25uZWN0UmVjdlRyYW5zcG9ydE9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgY29ubmVjdGluZyB0aGUgcmVjZWl2aW5nIHRyYW5zcG9ydC5cbiAgICogQHBhcmFtIHtUcmFuc3BvcnR9IG9wdGlvbnMuY29uc3VtZXJUcmFuc3BvcnQgLSBUaGUgdHJhbnNwb3J0IHVzZWQgZm9yIGNvbnN1bWluZyBtZWRpYS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucmVtb3RlUHJvZHVjZXJJZCAtIFRoZSBJRCBvZiB0aGUgcmVtb3RlIHByb2R1Y2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5zZXJ2ZXJDb25zdW1lclRyYW5zcG9ydElkIC0gVGhlIElEIG9mIHRoZSBzZXJ2ZXIgY29uc3VtZXIgdHJhbnNwb3J0LlxuICAgKiBAcGFyYW0ge1NvY2tldH0gb3B0aW9ucy5uc29jayAtIFRoZSBzb2NrZXQgdXNlZCBmb3IgY29tbXVuaWNhdGlvbi5cbiAgICogQHBhcmFtIHtDb25uZWN0UmVjdlRyYW5zcG9ydFBhcmFtZXRlcnN9IG9wdGlvbnMucGFyYW1ldGVycyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuXG4gICAqXG4gICAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgY29ubmVjdGlvbiBvciBjb25zdW1wdGlvbiBmYWlscy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBvcHRpb25zID0ge1xuICAgKiAgIGNvbnN1bWVyVHJhbnNwb3J0LFxuICAgKiAgIHJlbW90ZVByb2R1Y2VySWQ6ICdwcm9kdWNlci1pZCcsXG4gICAqICAgc2VydmVyQ29uc3VtZXJUcmFuc3BvcnRJZDogJ3RyYW5zcG9ydC1pZCcsXG4gICAqICAgbnNvY2s6IHNvY2tldCxcbiAgICogICBwYXJhbWV0ZXJzOiBjb25uZWN0UmVjdlRyYW5zcG9ydE9wdGlvbnMsXG4gICAqIH07XG4gICAqXG4gICAqIGNvbm5lY3RSZWN2VHJhbnNwb3J0KG9wdGlvbnMpXG4gICAqICAgLnRoZW4oKCkgPT4ge1xuICAgKiAgICAgY29uc29sZS5sb2coJ1RyYW5zcG9ydCBjb25uZWN0ZWQgYW5kIGNvbnN1bWluZyBtZWRpYScpO1xuICAgKiAgIH0pXG4gICAqICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgKiAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY29ubmVjdGluZyB0cmFuc3BvcnQ6JywgZXJyb3IpO1xuICAgKiAgIH0pO1xuICAgKiBgYGBcbiAgICovXG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENvbm5lY3RSZWN2VHJhbnNwb3J0IHtcbiAgLyoqXG4gICAqIENvbm5lY3RzIHRoZSByZWNlaXZpbmcgdHJhbnNwb3J0IHRvIGNvbnN1bWUgbWVkaWEgZnJvbSBhIHJlbW90ZSBwcm9kdWNlci5cbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBmb3IgY29ubmVjdGluZyB0aGUgcmVjZWl2aW5nIHRyYW5zcG9ydC5cbiAgICogQHBhcmFtIHtUcmFuc3BvcnR9IG9wdGlvbnMuY29uc3VtZXJUcmFuc3BvcnQgLSBUaGUgdHJhbnNwb3J0IHVzZWQgZm9yIGNvbnN1bWluZyBtZWRpYS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucmVtb3RlUHJvZHVjZXJJZCAtIFRoZSBJRCBvZiB0aGUgcmVtb3RlIHByb2R1Y2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5zZXJ2ZXJDb25zdW1lclRyYW5zcG9ydElkIC0gVGhlIElEIG9mIHRoZSBzZXJ2ZXIgY29uc3VtZXIgdHJhbnNwb3J0LlxuICAgKiBAcGFyYW0ge1NvY2tldH0gb3B0aW9ucy5uc29jayAtIFRoZSBzb2NrZXQgdXNlZCBmb3IgY29tbXVuaWNhdGlvbi5cbiAgICogQHBhcmFtIHtDb25uZWN0UmVjdlRyYW5zcG9ydE9wdGlvbnN9IG9wdGlvbnMucGFyYW1ldGVycyAtIFRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuXG4gICAqXG4gICAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgY29ubmVjdGlvbiBvciBjb25zdW1wdGlvbiBmYWlscy5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBvcHRpb25zID0ge1xuICAgKiAgIGNvbnN1bWVyVHJhbnNwb3J0LFxuICAgKiAgIHJlbW90ZVByb2R1Y2VySWQ6ICdwcm9kdWNlci1pZCcsXG4gICAqICAgc2VydmVyQ29uc3VtZXJUcmFuc3BvcnRJZDogJ3RyYW5zcG9ydC1pZCcsXG4gICAqICAgbnNvY2s6IHNvY2tldCxcbiAgICogICBwYXJhbWV0ZXJzOiBjb25uZWN0UmVjdlRyYW5zcG9ydE9wdGlvbnMsXG4gICAqIH07XG4gICAqXG4gICAqIGNvbm5lY3RSZWN2VHJhbnNwb3J0KG9wdGlvbnMpXG4gICAqICAgLnRoZW4oKCkgPT4ge1xuICAgKiAgICAgY29uc29sZS5sb2coJ1RyYW5zcG9ydCBjb25uZWN0ZWQgYW5kIGNvbnN1bWluZyBtZWRpYScpO1xuICAgKiAgIH0pXG4gICAqICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgKiAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY29ubmVjdGluZyB0cmFuc3BvcnQ6JywgZXJyb3IpO1xuICAgKiAgIH0pO1xuICAgKiBgYGBcbiAgICovXG5cbiAgY29ubmVjdFJlY3ZUcmFuc3BvcnQgPSBhc3luYyAoe1xuICAgIGNvbnN1bWVyVHJhbnNwb3J0LFxuICAgIHJlbW90ZVByb2R1Y2VySWQsXG4gICAgc2VydmVyQ29uc3VtZXJUcmFuc3BvcnRJZCxcbiAgICBuc29jayxcbiAgICBwYXJhbWV0ZXJzLFxuICB9OiBDb25uZWN0UmVjdlRyYW5zcG9ydE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICB0cnkge1xuICAgICAgcGFyYW1ldGVycyA9IHBhcmFtZXRlcnMuZ2V0VXBkYXRlZEFsbFBhcmFtcygpO1xuICAgICAgY29uc3QgeyBkZXZpY2UsIGNvbnN1bWVyVHJhbnNwb3J0cywgdXBkYXRlQ29uc3VtZXJUcmFuc3BvcnRzLCBjb25zdW1lclJlc3VtZSB9ID0gcGFyYW1ldGVycztcblxuICAgICAgLy8gRW1pdCAnY29uc3VtZScgZXZlbnQgdG8gc2lnbmFsIGNvbnN1bXB0aW9uIGluaXRpYXRpb25cbiAgICAgIG5zb2NrLmVtaXQoXG4gICAgICAgICdjb25zdW1lJyxcbiAgICAgICAge1xuICAgICAgICAgIHJ0cENhcGFiaWxpdGllczogZGV2aWNlID8gZGV2aWNlLnJ0cENhcGFiaWxpdGllcyA6IG51bGwsXG4gICAgICAgICAgcmVtb3RlUHJvZHVjZXJJZCxcbiAgICAgICAgICBzZXJ2ZXJDb25zdW1lclRyYW5zcG9ydElkLFxuICAgICAgICB9LFxuICAgICAgICBhc3luYyAoeyBwYXJhbXMgfTogeyBwYXJhbXM6IFBhcmFtcyB9KSA9PiB7XG4gICAgICAgICAgaWYgKHBhcmFtcy5lcnJvcikge1xuICAgICAgICAgICAgLy8gSGFuZGxlIGVycm9yXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY29uc3VtZSBlcnJvcicsIHBhcmFtcy5lcnJvcik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIENvbnN1bWUgbWVkaWEgdXNpbmcgcmVjZWl2ZWQgcGFyYW1ldGVyc1xuICAgICAgICAgICAgY29uc3QgY29uc3VtZXI6IENvbnN1bWVyID0gYXdhaXQgY29uc3VtZXJUcmFuc3BvcnQuY29uc3VtZSh7XG4gICAgICAgICAgICAgIGlkOiBwYXJhbXMuaWQsXG4gICAgICAgICAgICAgIHByb2R1Y2VySWQ6IHBhcmFtcy5wcm9kdWNlcklkLFxuICAgICAgICAgICAgICBraW5kOiBwYXJhbXMua2luZCBhcyAnYXVkaW8nIHwgJ3ZpZGVvJyxcbiAgICAgICAgICAgICAgcnRwUGFyYW1ldGVyczogcGFyYW1zLnJ0cFBhcmFtZXRlcnMsXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gVXBkYXRlIGNvbnN1bWVyVHJhbnNwb3J0cyBhcnJheSB3aXRoIHRoZSBuZXcgY29uc3VtZXJcbiAgICAgICAgICAgIGNvbnN1bWVyVHJhbnNwb3J0cy5wdXNoKHtcbiAgICAgICAgICAgICAgY29uc3VtZXJUcmFuc3BvcnQsXG4gICAgICAgICAgICAgIHNlcnZlckNvbnN1bWVyVHJhbnNwb3J0SWQ6IHBhcmFtcy5pZCxcbiAgICAgICAgICAgICAgcHJvZHVjZXJJZDogcmVtb3RlUHJvZHVjZXJJZCxcbiAgICAgICAgICAgICAgY29uc3VtZXIsXG4gICAgICAgICAgICAgIHNvY2tldF86IG5zb2NrLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHVwZGF0ZUNvbnN1bWVyVHJhbnNwb3J0cyhjb25zdW1lclRyYW5zcG9ydHMpO1xuXG4gICAgICAgICAgICAvLyBFeHRyYWN0IHRyYWNrIGZyb20gdGhlIGNvbnN1bWVyXG4gICAgICAgICAgICBjb25zdCB7IHRyYWNrIH0gPSBjb25zdW1lcjtcblxuICAgICAgICAgICAgLy8gRW1pdCAnY29uc3VtZXItcmVzdW1lJyBldmVudCB0byBzaWduYWwgY29uc3VtZXIgcmVzdW1wdGlvblxuICAgICAgICAgICAgbnNvY2suZW1pdChcbiAgICAgICAgICAgICAgJ2NvbnN1bWVyLXJlc3VtZScsXG4gICAgICAgICAgICAgIHsgc2VydmVyQ29uc3VtZXJJZDogcGFyYW1zLnNlcnZlckNvbnN1bWVySWQgfSxcbiAgICAgICAgICAgICAgYXN5bmMgKHsgcmVzdW1lZCB9OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdW1lZCkge1xuICAgICAgICAgICAgICAgICAgLy8gQ29uc3VtZXIgcmVzdW1lZCBhbmQgcmVhZHkgdG8gYmUgdXNlZFxuICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgY29uc3VtZXJSZXN1bWUoe1xuICAgICAgICAgICAgICAgICAgICAgIHRyYWNrLFxuICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6IHBhcmFtcy5raW5kLFxuICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZVByb2R1Y2VySWQsXG4gICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMsXG4gICAgICAgICAgICAgICAgICAgICAgbnNvY2ssXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjb25zdW1lclJlc3VtZSBlcnJvcicsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBIYW5kbGUgZXJyb3JcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjb25zdW1lIGVycm9yJywgZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIEhhbmRsZSBlcnJvclxuICAgICAgY29uc29sZS5sb2coJ2Nvbm5lY3RSZWN2VHJhbnNwb3J0IGVycm9yJywgZXJyb3IpO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
@@ -1,84 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Connects the send transport for audio by producing audio data and updating the audio producer and producer transport objects.
5
- *
6
- * @param {ConnectSendTransportAudioOptions} options - The parameters for connecting the send transport.
7
- * @param {ProducerOptions} options.audioParams - The options for the audio producer.
8
- * @param {ConnectSendTransportAudioParameters} options.parameters - The parameters containing the audio producer, producer transport, and update functions.
9
- * @param {Producer} options.parameters.audioProducer - The current audio producer.
10
- * @param {Transport} options.parameters.producerTransport - The transport used to produce audio data.
11
- * @param {Function} options.parameters.updateAudioProducer - Function to update the audio producer.
12
- * @param {Function} options.parameters.updateProducerTransport - Function to update the producer transport.
13
- *
14
- * @returns {Promise<void>} A promise that resolves when the audio transport is successfully connected.
15
- *
16
- * @throws Will throw an error if the connection fails.
17
- *
18
- * @example
19
- * ```typescript
20
- * const audioParams: ProducerOptions = {
21
- * codec: 'opus',
22
- * // other options
23
- * };
24
- *
25
- * const parameters = {
26
- * audioProducer: null,
27
- * producerTransport: transport,
28
- * updateAudioProducer: (producer) => { console.log(updated) },
29
- * updateProducerTransport: (transport) => { console.log(updated) },
30
- * };
31
- *
32
- * connectSendTransportAudio({ audioParams, parameters })
33
- * .then(() => {
34
- * console.log('Audio transport connected successfully');
35
- * })
36
- * .catch((error) => {
37
- * console.error('Error connecting audio transport:', error);
38
- * });
39
- * ```
40
- */
41
- export class ConnectSendTransportAudio {
42
- /**
43
- * Connects the send transport for audio by producing audio data and updating the audio producer and producer transport objects.
44
- *
45
- * @param {Object} params - The parameters for connecting the send transport.
46
- * @param {ProducerOptions} params.audioParams - The options for the audio producer.
47
- * @param {ConnectSendTransportAudioParameters} params.parameters - The parameters containing the audio producer, producer transport, and update functions.
48
- * @param {Producer} params.parameters.audioProducer - The current audio producer.
49
- * @param {Transport} params.parameters.producerTransport - The transport used to produce audio data.
50
- * @param {Function} params.parameters.updateAudioProducer - Function to update the audio producer.
51
- * @param {Function} params.parameters.updateProducerTransport - Function to update the producer transport.
52
- *
53
- * @returns {Promise<void>} A promise that resolves when the audio transport is successfully connected.
54
- *
55
- * @throws Will throw an error if the connection fails.
56
- */
57
- async connectSendTransportAudio({ audioParams, parameters, }) {
58
- try {
59
- let { audioProducer, producerTransport, updateAudioProducer, updateProducerTransport } = parameters;
60
- // Connect the send transport for audio by producing audio data
61
- if (producerTransport) {
62
- audioProducer = await producerTransport.produce(audioParams);
63
- }
64
- else {
65
- throw new Error('Producer transport is null');
66
- }
67
- // Update the audio producer and producer transport objects
68
- updateAudioProducer(audioProducer);
69
- updateProducerTransport(producerTransport);
70
- }
71
- catch (error) {
72
- console.log('connectSendTransportAudio error', error);
73
- }
74
- }
75
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ConnectSendTransportAudio, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
76
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ConnectSendTransportAudio, providedIn: 'root' });
77
- }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ConnectSendTransportAudio, decorators: [{
79
- type: Injectable,
80
- args: [{
81
- providedIn: 'root',
82
- }]
83
- }] });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdC1zZW5kLXRyYW5zcG9ydC1hdWRpby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL2NvbnN1bWVycy9jb25uZWN0LXNlbmQtdHJhbnNwb3J0LWF1ZGlvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFvQjNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBcUNJO0FBS0osTUFBTSxPQUFPLHlCQUF5QjtJQUNwQzs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUVILEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxFQUM5QixXQUFXLEVBQ1gsVUFBVSxHQUN1QjtRQUNqQyxJQUFJLENBQUM7WUFDSCxJQUFJLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLEdBQ3BGLFVBQVUsQ0FBQztZQUViLCtEQUErRDtZQUMvRCxJQUFJLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3RCLGFBQWEsR0FBRyxNQUFNLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMvRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1lBQ2hELENBQUM7WUFFRCwyREFBMkQ7WUFDM0QsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDbkMsdUJBQXVCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7dUdBdENVLHlCQUF5QjsyR0FBekIseUJBQXlCLGNBRnhCLE1BQU07OzJGQUVQLHlCQUF5QjtrQkFIckMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRyYW5zcG9ydCwgUHJvZHVjZXIsIFByb2R1Y2VyT3B0aW9ucyB9IGZyb20gJ21lZGlhc291cC1jbGllbnQvbGliL3R5cGVzJztcbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdFNlbmRUcmFuc3BvcnRBdWRpb1BhcmFtZXRlcnMge1xuICBhdWRpb1Byb2R1Y2VyOiBQcm9kdWNlciB8IG51bGw7XG4gIHByb2R1Y2VyVHJhbnNwb3J0OiBUcmFuc3BvcnQgfCBudWxsO1xuICB1cGRhdGVBdWRpb1Byb2R1Y2VyOiAocHJvZHVjZXI6IFByb2R1Y2VyIHwgbnVsbCkgPT4gdm9pZDtcbiAgdXBkYXRlUHJvZHVjZXJUcmFuc3BvcnQ6ICh0cmFuc3BvcnQ6IFRyYW5zcG9ydCB8IG51bGwpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdFNlbmRUcmFuc3BvcnRBdWRpb09wdGlvbnMge1xuICBhdWRpb1BhcmFtczogUHJvZHVjZXJPcHRpb25zO1xuICBwYXJhbWV0ZXJzOiBDb25uZWN0U2VuZFRyYW5zcG9ydEF1ZGlvUGFyYW1ldGVycztcbn1cblxuLy8gRXhwb3J0IHRoZSB0eXBlIGRlZmluaXRpb24gZm9yIHRoZSBmdW5jdGlvblxuZXhwb3J0IHR5cGUgQ29ubmVjdFNlbmRUcmFuc3BvcnRBdWRpb1R5cGUgPSAoXG4gIG9wdGlvbnM6IENvbm5lY3RTZW5kVHJhbnNwb3J0QXVkaW9PcHRpb25zLFxuKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4vKipcbiAqIENvbm5lY3RzIHRoZSBzZW5kIHRyYW5zcG9ydCBmb3IgYXVkaW8gYnkgcHJvZHVjaW5nIGF1ZGlvIGRhdGEgYW5kIHVwZGF0aW5nIHRoZSBhdWRpbyBwcm9kdWNlciBhbmQgcHJvZHVjZXIgdHJhbnNwb3J0IG9iamVjdHMuXG4gKlxuICogQHBhcmFtIHtDb25uZWN0U2VuZFRyYW5zcG9ydEF1ZGlvT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBwYXJhbWV0ZXJzIGZvciBjb25uZWN0aW5nIHRoZSBzZW5kIHRyYW5zcG9ydC5cbiAqIEBwYXJhbSB7UHJvZHVjZXJPcHRpb25zfSBvcHRpb25zLmF1ZGlvUGFyYW1zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBhdWRpbyBwcm9kdWNlci5cbiAqIEBwYXJhbSB7Q29ubmVjdFNlbmRUcmFuc3BvcnRBdWRpb1BhcmFtZXRlcnN9IG9wdGlvbnMucGFyYW1ldGVycyAtIFRoZSBwYXJhbWV0ZXJzIGNvbnRhaW5pbmcgdGhlIGF1ZGlvIHByb2R1Y2VyLCBwcm9kdWNlciB0cmFuc3BvcnQsIGFuZCB1cGRhdGUgZnVuY3Rpb25zLlxuICogQHBhcmFtIHtQcm9kdWNlcn0gb3B0aW9ucy5wYXJhbWV0ZXJzLmF1ZGlvUHJvZHVjZXIgLSBUaGUgY3VycmVudCBhdWRpbyBwcm9kdWNlci5cbiAqIEBwYXJhbSB7VHJhbnNwb3J0fSBvcHRpb25zLnBhcmFtZXRlcnMucHJvZHVjZXJUcmFuc3BvcnQgLSBUaGUgdHJhbnNwb3J0IHVzZWQgdG8gcHJvZHVjZSBhdWRpbyBkYXRhLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZUF1ZGlvUHJvZHVjZXIgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIGF1ZGlvIHByb2R1Y2VyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy5wYXJhbWV0ZXJzLnVwZGF0ZVByb2R1Y2VyVHJhbnNwb3J0IC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBwcm9kdWNlciB0cmFuc3BvcnQuXG4gKlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGF1ZGlvIHRyYW5zcG9ydCBpcyBzdWNjZXNzZnVsbHkgY29ubmVjdGVkLlxuICpcbiAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgY29ubmVjdGlvbiBmYWlscy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgYXVkaW9QYXJhbXM6IFByb2R1Y2VyT3B0aW9ucyA9IHtcbiAqICAgY29kZWM6ICdvcHVzJyxcbiAqICAgLy8gb3RoZXIgb3B0aW9uc1xuICogfTtcbiAqXG4gKiBjb25zdCBwYXJhbWV0ZXJzID0ge1xuICogICBhdWRpb1Byb2R1Y2VyOiBudWxsLFxuICogICBwcm9kdWNlclRyYW5zcG9ydDogdHJhbnNwb3J0LFxuICogICB1cGRhdGVBdWRpb1Byb2R1Y2VyOiAocHJvZHVjZXIpID0+IHsgY29uc29sZS5sb2codXBkYXRlZCkgfSxcbiAgKiAgIHVwZGF0ZVByb2R1Y2VyVHJhbnNwb3J0OiAodHJhbnNwb3J0KSA9PiB7IGNvbnNvbGUubG9nKHVwZGF0ZWQpIH0sXG4gICogfTtcbiAgKlxuICAqIGNvbm5lY3RTZW5kVHJhbnNwb3J0QXVkaW8oeyBhdWRpb1BhcmFtcywgcGFyYW1ldGVycyB9KVxuICAqICAgLnRoZW4oKCkgPT4ge1xuICAqICAgICBjb25zb2xlLmxvZygnQXVkaW8gdHJhbnNwb3J0IGNvbm5lY3RlZCBzdWNjZXNzZnVsbHknKTtcbiAgKiAgIH0pXG4gICogICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICogICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNvbm5lY3RpbmcgYXVkaW8gdHJhbnNwb3J0OicsIGVycm9yKTtcbiAgKiAgIH0pO1xuICAqIGBgYFxuICAqL1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ29ubmVjdFNlbmRUcmFuc3BvcnRBdWRpbyB7XG4gIC8qKlxuICAgKiBDb25uZWN0cyB0aGUgc2VuZCB0cmFuc3BvcnQgZm9yIGF1ZGlvIGJ5IHByb2R1Y2luZyBhdWRpbyBkYXRhIGFuZCB1cGRhdGluZyB0aGUgYXVkaW8gcHJvZHVjZXIgYW5kIHByb2R1Y2VyIHRyYW5zcG9ydCBvYmplY3RzLlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIGNvbm5lY3RpbmcgdGhlIHNlbmQgdHJhbnNwb3J0LlxuICAgKiBAcGFyYW0ge1Byb2R1Y2VyT3B0aW9uc30gcGFyYW1zLmF1ZGlvUGFyYW1zIC0gVGhlIG9wdGlvbnMgZm9yIHRoZSBhdWRpbyBwcm9kdWNlci5cbiAgICogQHBhcmFtIHtDb25uZWN0U2VuZFRyYW5zcG9ydEF1ZGlvUGFyYW1ldGVyc30gcGFyYW1zLnBhcmFtZXRlcnMgLSBUaGUgcGFyYW1ldGVycyBjb250YWluaW5nIHRoZSBhdWRpbyBwcm9kdWNlciwgcHJvZHVjZXIgdHJhbnNwb3J0LCBhbmQgdXBkYXRlIGZ1bmN0aW9ucy5cbiAgICogQHBhcmFtIHtQcm9kdWNlcn0gcGFyYW1zLnBhcmFtZXRlcnMuYXVkaW9Qcm9kdWNlciAtIFRoZSBjdXJyZW50IGF1ZGlvIHByb2R1Y2VyLlxuICAgKiBAcGFyYW0ge1RyYW5zcG9ydH0gcGFyYW1zLnBhcmFtZXRlcnMucHJvZHVjZXJUcmFuc3BvcnQgLSBUaGUgdHJhbnNwb3J0IHVzZWQgdG8gcHJvZHVjZSBhdWRpbyBkYXRhLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwYXJhbXMucGFyYW1ldGVycy51cGRhdGVBdWRpb1Byb2R1Y2VyIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBhdWRpbyBwcm9kdWNlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcGFyYW1zLnBhcmFtZXRlcnMudXBkYXRlUHJvZHVjZXJUcmFuc3BvcnQgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHByb2R1Y2VyIHRyYW5zcG9ydC5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGF1ZGlvIHRyYW5zcG9ydCBpcyBzdWNjZXNzZnVsbHkgY29ubmVjdGVkLlxuICAgKlxuICAgKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIGNvbm5lY3Rpb24gZmFpbHMuXG4gICAqL1xuXG4gIGFzeW5jIGNvbm5lY3RTZW5kVHJhbnNwb3J0QXVkaW8oe1xuICAgIGF1ZGlvUGFyYW1zLFxuICAgIHBhcmFtZXRlcnMsXG4gIH06IENvbm5lY3RTZW5kVHJhbnNwb3J0QXVkaW9PcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGxldCB7IGF1ZGlvUHJvZHVjZXIsIHByb2R1Y2VyVHJhbnNwb3J0LCB1cGRhdGVBdWRpb1Byb2R1Y2VyLCB1cGRhdGVQcm9kdWNlclRyYW5zcG9ydCB9ID1cbiAgICAgICAgcGFyYW1ldGVycztcblxuICAgICAgLy8gQ29ubmVjdCB0aGUgc2VuZCB0cmFuc3BvcnQgZm9yIGF1ZGlvIGJ5IHByb2R1Y2luZyBhdWRpbyBkYXRhXG4gICAgICBpZiAocHJvZHVjZXJUcmFuc3BvcnQpIHtcbiAgICAgICAgYXVkaW9Qcm9kdWNlciA9IGF3YWl0IHByb2R1Y2VyVHJhbnNwb3J0LnByb2R1Y2UoYXVkaW9QYXJhbXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9kdWNlciB0cmFuc3BvcnQgaXMgbnVsbCcpO1xuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgdGhlIGF1ZGlvIHByb2R1Y2VyIGFuZCBwcm9kdWNlciB0cmFuc3BvcnQgb2JqZWN0c1xuICAgICAgdXBkYXRlQXVkaW9Qcm9kdWNlcihhdWRpb1Byb2R1Y2VyKTtcbiAgICAgIHVwZGF0ZVByb2R1Y2VyVHJhbnNwb3J0KHByb2R1Y2VyVHJhbnNwb3J0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coJ2Nvbm5lY3RTZW5kVHJhbnNwb3J0QXVkaW8gZXJyb3InLCBlcnJvcik7XG4gICAgfVxuICB9XG59XG4iXX0=