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.
- package/README.md +686 -578
- package/dist/README.md +677 -578
- package/dist/fesm2022/mediasfu-angular.mjs +5551 -2944
- package/dist/fesm2022/mediasfu-angular.mjs.map +1 -1
- package/dist/lib/@types/types.d.ts +22 -1
- package/dist/lib/components/breakout-components/breakout-rooms-modal.component.d.ts +1 -0
- package/dist/lib/components/mediasfu-components/mediasfu-broadcast.component.d.ts +153 -61
- package/dist/lib/components/mediasfu-components/mediasfu-chat.component.d.ts +154 -66
- package/dist/lib/components/mediasfu-components/mediasfu-conference.component.d.ts +190 -76
- package/dist/lib/components/mediasfu-components/mediasfu-generic.component.d.ts +184 -70
- package/dist/lib/components/mediasfu-components/mediasfu-webinar.component.d.ts +192 -78
- package/dist/lib/components/menu-components/menu-modal/menu-modal.component.d.ts +6 -1
- package/dist/lib/components/menu-components/share-buttons-component/share-buttons-component.component.d.ts +5 -2
- package/dist/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.d.ts +4 -2
- package/dist/lib/components/misc-components/pre-join-page/pre-join-page.component.d.ts +71 -66
- package/dist/lib/components/misc-components/share-event-modal/share-event-modal.component.d.ts +5 -1
- package/dist/lib/consumers/connect-local-ips.service.d.ts +81 -0
- package/dist/lib/consumers/connect-send-transport-audio.service.d.ts +43 -11
- package/dist/lib/consumers/connect-send-transport-screen.service.d.ts +87 -46
- package/dist/lib/consumers/connect-send-transport-video.service.d.ts +89 -43
- package/dist/lib/consumers/connect-send-transport.service.d.ts +5 -1
- package/dist/lib/consumers/create-send-transport.service.d.ts +130 -40
- package/dist/lib/consumers/disconnect-send-transport-audio.service.d.ts +77 -40
- package/dist/lib/consumers/disconnect-send-transport-screen.service.d.ts +48 -14
- package/dist/lib/consumers/disconnect-send-transport-video.service.d.ts +81 -44
- package/dist/lib/consumers/get-piped-producers-alt.service.d.ts +5 -1
- package/dist/lib/consumers/receive-all-piped-transports.service.d.ts +5 -1
- package/dist/lib/consumers/resume-send-transport-audio.service.d.ts +54 -21
- package/dist/lib/consumers/stream-success-audio-switch.service.d.ts +124 -40
- package/dist/lib/consumers/trigger.service.d.ts +3 -0
- package/dist/lib/methods/exit-methods/confirm-exit.service.d.ts +5 -1
- package/dist/lib/methods/recording-methods/start-recording.service.d.ts +3 -0
- package/dist/lib/methods/recording-methods/stop-recording.service.d.ts +4 -1
- package/dist/lib/methods/recording-methods/update-recording.service.d.ts +3 -0
- package/dist/lib/methods/stream-methods/click-audio.service.d.ts +3 -0
- package/dist/lib/methods/utils/check-limits-and-make-request.service.d.ts +23 -0
- package/dist/lib/methods/utils/create-response-join-room.util.d.ts +33 -0
- package/dist/lib/methods/utils/create-room-on-media-sfu.service.d.ts +25 -0
- package/dist/lib/methods/utils/initial-values.util.d.ts +6 -0
- package/dist/lib/methods/utils/join-room-on-media-sfu.service.d.ts +52 -0
- package/dist/lib/methods/whiteboard-methods/capture-canvas-stream.service.d.ts +37 -20
- package/dist/lib/producers/producer-emits/join-local-room.service.d.ts +125 -0
- package/dist/lib/producers/socket-receive-methods/all-members-rest.service.d.ts +7 -2
- package/dist/lib/producers/socket-receive-methods/all-members.service.d.ts +7 -2
- package/dist/lib/producers/socket-receive-methods/disconnect-user-self.service.d.ts +5 -1
- package/dist/lib/sockets/socket-manager.service.d.ts +90 -0
- package/dist/public-api.d.ts +11 -1
- package/package.json +17 -20
- package/dist/esm2022/lib/@types/types.mjs +0 -2
- package/dist/esm2022/lib/components/background-components/background-modal/background-modal.component.mjs +0 -799
- package/dist/esm2022/lib/components/breakout-components/breakout-rooms-modal.component.mjs +0 -366
- package/dist/esm2022/lib/components/breakout-components/edit-room-modal/edit-room-modal.component.mjs +0 -143
- package/dist/esm2022/lib/components/breakout-components/room-list/room-list.component.mjs +0 -40
- package/dist/esm2022/lib/components/co-host-components/co-host-modal/co-host-modal.component.mjs +0 -245
- package/dist/esm2022/lib/components/display-components/alert-component/alert.component.component.mjs +0 -79
- package/dist/esm2022/lib/components/display-components/audio-card/audio-card.component.mjs +0 -356
- package/dist/esm2022/lib/components/display-components/audio-grid/audio-grid.component.mjs +0 -80
- package/dist/esm2022/lib/components/display-components/card-video-display/card-video-display.component.mjs +0 -129
- package/dist/esm2022/lib/components/display-components/control-buttons-alt-component/control-buttons-alt-component.component.mjs +0 -138
- package/dist/esm2022/lib/components/display-components/control-buttons-component/control-buttons-component.component.mjs +0 -231
- package/dist/esm2022/lib/components/display-components/control-buttons-component-touch/control-buttons-component-touch.component.mjs +0 -282
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-participants-widget.component.mjs +0 -82
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-record-widget.component.mjs +0 -65
- package/dist/esm2022/lib/components/display-components/control-widgets/menu-widget.component.mjs +0 -137
- package/dist/esm2022/lib/components/display-components/control-widgets/message-widget.component.mjs +0 -137
- package/dist/esm2022/lib/components/display-components/control-widgets/record-timer-widget.component.mjs +0 -51
- package/dist/esm2022/lib/components/display-components/control-widgets/screenshare-widget.component.mjs +0 -101
- package/dist/esm2022/lib/components/display-components/flexible-grid/flexible-grid.component.mjs +0 -151
- package/dist/esm2022/lib/components/display-components/flexible-video/flexible-video.component.mjs +0 -250
- package/dist/esm2022/lib/components/display-components/loading-modal/loading-modal.component.mjs +0 -102
- package/dist/esm2022/lib/components/display-components/main-aspect-component/main-aspect-component.component.mjs +0 -140
- package/dist/esm2022/lib/components/display-components/main-container-component/main-container-component.component.mjs +0 -131
- package/dist/esm2022/lib/components/display-components/main-grid-component/main-grid-component.component.mjs +0 -120
- package/dist/esm2022/lib/components/display-components/main-screen-component/main-screen-component.component.mjs +0 -201
- package/dist/esm2022/lib/components/display-components/meeting-progress-timer/meeting-progress-timer.component.mjs +0 -115
- package/dist/esm2022/lib/components/display-components/mini-audio/mini-audio.component.mjs +0 -319
- package/dist/esm2022/lib/components/display-components/mini-card/mini-card.component.mjs +0 -161
- package/dist/esm2022/lib/components/display-components/mini-card-audio/mini-card-audio.component.mjs +0 -230
- package/dist/esm2022/lib/components/display-components/other-grid-component/other-grid-component.component.mjs +0 -126
- package/dist/esm2022/lib/components/display-components/pagination/pagination.component.mjs +0 -334
- package/dist/esm2022/lib/components/display-components/sub-aspect-component/sub-aspect-component.component.mjs +0 -112
- package/dist/esm2022/lib/components/display-components/video-card/video-card.component.mjs +0 -392
- package/dist/esm2022/lib/components/display-settings-components/display-settings-modal.component.mjs +0 -106
- package/dist/esm2022/lib/components/event-settings-components/event-settings-modal/event-settings-modal.component.mjs +0 -199
- package/dist/esm2022/lib/components/exit-components/confirm-exit-modal/confirm-exit-modal.component.mjs +0 -132
- package/dist/esm2022/lib/components/media-settings-components/media-settings-modal/media-settings-modal.component.mjs +0 -220
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-broadcast.component.mjs +0 -4238
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-chat.component.mjs +0 -3754
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-conference.component.mjs +0 -5071
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-generic.component.mjs +0 -5380
- package/dist/esm2022/lib/components/mediasfu-components/mediasfu-webinar.component.mjs +0 -5068
- package/dist/esm2022/lib/components/menu-components/custom-buttons/custom-buttons.component.mjs +0 -83
- package/dist/esm2022/lib/components/menu-components/meeting-id-component/meeting-id-component.component.mjs +0 -27
- package/dist/esm2022/lib/components/menu-components/meeting-passcode-component/meeting-passcode-component.component.mjs +0 -27
- package/dist/esm2022/lib/components/menu-components/menu-modal/menu-modal.component.mjs +0 -125
- package/dist/esm2022/lib/components/menu-components/share-buttons-component/share-buttons-component.component.mjs +0 -106
- package/dist/esm2022/lib/components/message-components/message-panel/message-panel.component.mjs +0 -228
- package/dist/esm2022/lib/components/message-components/messages-modal/messages-modal.component.mjs +0 -277
- package/dist/esm2022/lib/components/misc-components/confirm-here-modal/confirm-here-modal.component.mjs +0 -130
- package/dist/esm2022/lib/components/misc-components/pre-join-page/pre-join-page.component.mjs +0 -343
- package/dist/esm2022/lib/components/misc-components/share-event-modal/share-event-modal.component.mjs +0 -127
- package/dist/esm2022/lib/components/misc-components/welcome-page/welcome-page.component.mjs +0 -241
- package/dist/esm2022/lib/components/participants-components/participant-list/participant-list.component.mjs +0 -82
- package/dist/esm2022/lib/components/participants-components/participant-list-item/participant-list-item.component.mjs +0 -139
- package/dist/esm2022/lib/components/participants-components/participant-list-others/participant-list-others.component.mjs +0 -40
- package/dist/esm2022/lib/components/participants-components/participant-list-others-item/participant-list-others-item.component.mjs +0 -60
- package/dist/esm2022/lib/components/participants-components/participants-modal/participants-modal.component.mjs +0 -124
- package/dist/esm2022/lib/components/polls-components/poll-modal/poll-modal.component.mjs +0 -201
- package/dist/esm2022/lib/components/recording-components/advanced-panel-component/advanced-panel-components.component.mjs +0 -92
- package/dist/esm2022/lib/components/recording-components/recording-modal/recording-modal.component.mjs +0 -133
- package/dist/esm2022/lib/components/recording-components/standard-panel-component/standard-panel-component.component.mjs +0 -90
- package/dist/esm2022/lib/components/requests-components/render-request-component/render-request-component.component.mjs +0 -81
- package/dist/esm2022/lib/components/requests-components/requests-modal/requests-modal.component.mjs +0 -147
- package/dist/esm2022/lib/components/screenboard-components/screenboard/screenboard.component.mjs +0 -627
- package/dist/esm2022/lib/components/screenboard-components/screenboard-modal/screenboard-modal.component.mjs +0 -391
- package/dist/esm2022/lib/components/waiting-components/waiting-room-modal.component.mjs +0 -201
- package/dist/esm2022/lib/components/whiteboard-components/configure-whiteboard-modal/configure-whiteboard-modal.component.mjs +0 -286
- package/dist/esm2022/lib/components/whiteboard-components/whiteboard/whiteboard.component.mjs +0 -1833
- package/dist/esm2022/lib/consumers/add-videos-grid.service.mjs +0 -345
- package/dist/esm2022/lib/consumers/auto-adjust.service.mjs +0 -109
- package/dist/esm2022/lib/consumers/calculate-rows-and-columns.service.mjs +0 -60
- package/dist/esm2022/lib/consumers/change-vids.service.mjs +0 -551
- package/dist/esm2022/lib/consumers/check-grid.service.mjs +0 -93
- package/dist/esm2022/lib/consumers/check-permission.service.mjs +0 -105
- package/dist/esm2022/lib/consumers/check-screen-share.service.mjs +0 -106
- package/dist/esm2022/lib/consumers/close-and-resize.service.mjs +0 -331
- package/dist/esm2022/lib/consumers/compare-active-names.service.mjs +0 -106
- package/dist/esm2022/lib/consumers/compare-screen-states.service.mjs +0 -98
- package/dist/esm2022/lib/consumers/connect-ips.service.mjs +0 -154
- package/dist/esm2022/lib/consumers/connect-recv-transport.service.mjs +0 -146
- package/dist/esm2022/lib/consumers/connect-send-transport-audio.service.mjs +0 -84
- package/dist/esm2022/lib/consumers/connect-send-transport-screen.service.mjs +0 -102
- package/dist/esm2022/lib/consumers/connect-send-transport-video.service.mjs +0 -99
- package/dist/esm2022/lib/consumers/connect-send-transport.service.mjs +0 -140
- package/dist/esm2022/lib/consumers/consumer-resume.service.mjs +0 -368
- package/dist/esm2022/lib/consumers/control-media.service.mjs +0 -113
- package/dist/esm2022/lib/consumers/create-send-transport.service.mjs +0 -172
- package/dist/esm2022/lib/consumers/disconnect-send-transport-audio.service.mjs +0 -108
- package/dist/esm2022/lib/consumers/disconnect-send-transport-screen.service.mjs +0 -84
- package/dist/esm2022/lib/consumers/disconnect-send-transport-video.service.mjs +0 -101
- package/dist/esm2022/lib/consumers/disp-streams.service.mjs +0 -513
- package/dist/esm2022/lib/consumers/generate-page-content.service.mjs +0 -106
- package/dist/esm2022/lib/consumers/get-estimate.service.mjs +0 -120
- package/dist/esm2022/lib/consumers/get-piped-producers-alt.service.mjs +0 -82
- package/dist/esm2022/lib/consumers/get-producers-piped.service.mjs +0 -79
- package/dist/esm2022/lib/consumers/get-videos.service.mjs +0 -91
- package/dist/esm2022/lib/consumers/mix-streams.service.mjs +0 -95
- package/dist/esm2022/lib/consumers/on-screen-changes.service.mjs +0 -103
- package/dist/esm2022/lib/consumers/prepopulate-user-media.service.mjs +0 -541
- package/dist/esm2022/lib/consumers/process-consumer-transports-audio.service.mjs +0 -101
- package/dist/esm2022/lib/consumers/process-consumer-transports.service.mjs +0 -128
- package/dist/esm2022/lib/consumers/re-port.service.mjs +0 -114
- package/dist/esm2022/lib/consumers/re-update-inter.service.mjs +0 -239
- package/dist/esm2022/lib/consumers/readjust.service.mjs +0 -173
- package/dist/esm2022/lib/consumers/receive-all-piped-transports.service.mjs +0 -87
- package/dist/esm2022/lib/consumers/receive-room-messages.service.mjs +0 -69
- package/dist/esm2022/lib/consumers/reorder-streams.service.mjs +0 -239
- package/dist/esm2022/lib/consumers/request-screen-share.service.mjs +0 -101
- package/dist/esm2022/lib/consumers/resume-pause-audio-streams.service.mjs +0 -150
- package/dist/esm2022/lib/consumers/resume-pause-streams.service.mjs +0 -103
- package/dist/esm2022/lib/consumers/resume-send-transport-audio.service.mjs +0 -91
- package/dist/esm2022/lib/consumers/signal-new-consumer-transport.service.mjs +0 -136
- package/dist/esm2022/lib/consumers/socket-receive-methods/join-consume-room.service.mjs +0 -96
- package/dist/esm2022/lib/consumers/socket-receive-methods/new-pipe-producer.service.mjs +0 -100
- package/dist/esm2022/lib/consumers/socket-receive-methods/producer-closed.service.mjs +0 -78
- package/dist/esm2022/lib/consumers/start-share-screen.service.mjs +0 -120
- package/dist/esm2022/lib/consumers/stop-share-screen.service.mjs +0 -175
- package/dist/esm2022/lib/consumers/stream-success-audio-switch.service.mjs +0 -185
- package/dist/esm2022/lib/consumers/stream-success-audio.service.mjs +0 -210
- package/dist/esm2022/lib/consumers/stream-success-screen.service.mjs +0 -193
- package/dist/esm2022/lib/consumers/stream-success-video.service.mjs +0 -260
- package/dist/esm2022/lib/consumers/switch-user-audio.service.mjs +0 -120
- package/dist/esm2022/lib/consumers/switch-user-video-alt.service.mjs +0 -260
- package/dist/esm2022/lib/consumers/switch-user-video.service.mjs +0 -172
- package/dist/esm2022/lib/consumers/trigger.service.mjs +0 -210
- package/dist/esm2022/lib/consumers/update-mini-cards-grid.service.mjs +0 -135
- package/dist/esm2022/lib/consumers/update-participant-audio-decibels.service.mjs +0 -84
- package/dist/esm2022/lib/methods/background-methods/launch-background.service.mjs +0 -48
- package/dist/esm2022/lib/methods/breakout-room-methods/breakout-room-updated.service.mjs +0 -183
- package/dist/esm2022/lib/methods/breakout-room-methods/launch-breakout-rooms.service.mjs +0 -46
- package/dist/esm2022/lib/methods/co-host-methods/launch-co-host.service.mjs +0 -46
- package/dist/esm2022/lib/methods/co-host-methods/modify-co-host-settings.service.mjs +0 -104
- package/dist/esm2022/lib/methods/display-settings-methods/launch-display-settings.service.mjs +0 -46
- package/dist/esm2022/lib/methods/display-settings-methods/modify-display-settings.service.mjs +0 -194
- package/dist/esm2022/lib/methods/exit-methods/confirm-exit.service.mjs +0 -52
- package/dist/esm2022/lib/methods/exit-methods/launch-confirm-exit.service.mjs +0 -42
- package/dist/esm2022/lib/methods/media-settings-methods/launch-media-settings.service.mjs +0 -85
- package/dist/esm2022/lib/methods/menu-methods/launch-menu-modal.service.mjs +0 -44
- package/dist/esm2022/lib/methods/message-methods/launch-messages.service.mjs +0 -45
- package/dist/esm2022/lib/methods/message-methods/send-message.service.mjs +0 -143
- package/dist/esm2022/lib/methods/participants-methods/launch-participants.service.mjs +0 -47
- package/dist/esm2022/lib/methods/participants-methods/message-participants.service.mjs +0 -98
- package/dist/esm2022/lib/methods/participants-methods/mute-participants.service.mjs +0 -96
- package/dist/esm2022/lib/methods/participants-methods/remove-participants.service.mjs +0 -107
- package/dist/esm2022/lib/methods/polls-methods/handle-create-poll.service.mjs +0 -75
- package/dist/esm2022/lib/methods/polls-methods/handle-end-poll.service.mjs +0 -72
- package/dist/esm2022/lib/methods/polls-methods/handle-vote-poll.service.mjs +0 -83
- package/dist/esm2022/lib/methods/polls-methods/launch-poll.service.mjs +0 -43
- package/dist/esm2022/lib/methods/polls-methods/poll-updated.service.mjs +0 -95
- package/dist/esm2022/lib/methods/recording-methods/check-pause-state.service.mjs +0 -69
- package/dist/esm2022/lib/methods/recording-methods/check-resume-state.service.mjs +0 -56
- package/dist/esm2022/lib/methods/recording-methods/confirm-recording.service.mjs +0 -278
- package/dist/esm2022/lib/methods/recording-methods/launch-recording.service.mjs +0 -125
- package/dist/esm2022/lib/methods/recording-methods/record-pause-timer.service.mjs +0 -67
- package/dist/esm2022/lib/methods/recording-methods/record-resume-timer.service.mjs +0 -130
- package/dist/esm2022/lib/methods/recording-methods/record-start-timer.service.mjs +0 -134
- package/dist/esm2022/lib/methods/recording-methods/record-update-timer.service.mjs +0 -80
- package/dist/esm2022/lib/methods/recording-methods/start-recording.service.mjs +0 -197
- package/dist/esm2022/lib/methods/recording-methods/stop-recording.service.mjs +0 -112
- package/dist/esm2022/lib/methods/recording-methods/update-recording.service.mjs +0 -272
- package/dist/esm2022/lib/methods/requests-methods/launch-requests.service.mjs +0 -51
- package/dist/esm2022/lib/methods/requests-methods/respond-to-requests.service.mjs +0 -84
- package/dist/esm2022/lib/methods/settings-methods/launch-settings.service.mjs +0 -51
- package/dist/esm2022/lib/methods/settings-methods/modify-settings.service.mjs +0 -109
- package/dist/esm2022/lib/methods/stream-methods/click-audio.service.mjs +0 -275
- package/dist/esm2022/lib/methods/stream-methods/click-chat.service.mjs +0 -75
- package/dist/esm2022/lib/methods/stream-methods/click-screen-share.service.mjs +0 -178
- package/dist/esm2022/lib/methods/stream-methods/click-video.service.mjs +0 -271
- package/dist/esm2022/lib/methods/stream-methods/switch-audio.service.mjs +0 -80
- package/dist/esm2022/lib/methods/stream-methods/switch-video-alt.service.mjs +0 -116
- package/dist/esm2022/lib/methods/stream-methods/switch-video.service.mjs +0 -132
- package/dist/esm2022/lib/methods/utils/format-number.service.mjs +0 -57
- package/dist/esm2022/lib/methods/utils/generate-random-messages.service.mjs +0 -120
- package/dist/esm2022/lib/methods/utils/generate-random-participants.service.mjs +0 -126
- package/dist/esm2022/lib/methods/utils/generate-random-polls.service.mjs +0 -78
- package/dist/esm2022/lib/methods/utils/generate-random-request-list.service.mjs +0 -90
- package/dist/esm2022/lib/methods/utils/generate-random-waiting-room-list.service.mjs +0 -59
- package/dist/esm2022/lib/methods/utils/get-modal-position.util.mjs +0 -32
- package/dist/esm2022/lib/methods/utils/get-overlay-position.util.mjs +0 -31
- package/dist/esm2022/lib/methods/utils/initial-values.util.mjs +0 -379
- package/dist/esm2022/lib/methods/utils/meeting-timer/start-meeting-progress-timer.service.mjs +0 -96
- package/dist/esm2022/lib/methods/utils/mini-audio-player/mini-audio-player.component.mjs +0 -315
- package/dist/esm2022/lib/methods/utils/producer/a-params.service.mjs +0 -58
- package/dist/esm2022/lib/methods/utils/producer/h-params.service.mjs +0 -87
- package/dist/esm2022/lib/methods/utils/producer/screen-params.service.mjs +0 -61
- package/dist/esm2022/lib/methods/utils/producer/v-params.service.mjs +0 -87
- package/dist/esm2022/lib/methods/utils/producer/video-capture-constraints.service.mjs +0 -84
- package/dist/esm2022/lib/methods/utils/sleep.util.mjs +0 -17
- package/dist/esm2022/lib/methods/utils/sound-player.service.mjs +0 -63
- package/dist/esm2022/lib/methods/utils/validate-alphanumeric.service.mjs +0 -49
- package/dist/esm2022/lib/methods/waiting-methods/launch-waiting.service.mjs +0 -41
- package/dist/esm2022/lib/methods/waiting-methods/respond-to-waiting.service.mjs +0 -69
- package/dist/esm2022/lib/methods/whiteboard-methods/capture-canvas-stream.service.mjs +0 -98
- package/dist/esm2022/lib/methods/whiteboard-methods/launch-configure-whiteboard.service.mjs +0 -44
- package/dist/esm2022/lib/producer-client/producer-client-emits/create-device-client.service.mjs +0 -74
- package/dist/esm2022/lib/producer-client/producer-client-emits/join-room-client.service.mjs +0 -96
- package/dist/esm2022/lib/producer-client/producer-client-emits/update-room-parameters-client.service.mjs +0 -276
- package/dist/esm2022/lib/producers/producer-emits/join-con-room.service.mjs +0 -152
- package/dist/esm2022/lib/producers/producer-emits/join-room.service.mjs +0 -152
- package/dist/esm2022/lib/producers/socket-receive-methods/all-members-rest.service.mjs +0 -228
- package/dist/esm2022/lib/producers/socket-receive-methods/all-members.service.mjs +0 -218
- package/dist/esm2022/lib/producers/socket-receive-methods/all-waiting-room-members.service.mjs +0 -57
- package/dist/esm2022/lib/producers/socket-receive-methods/ban-participant.service.mjs +0 -76
- package/dist/esm2022/lib/producers/socket-receive-methods/control-media-host.service.mjs +0 -183
- package/dist/esm2022/lib/producers/socket-receive-methods/disconnect-user-self.service.mjs +0 -50
- package/dist/esm2022/lib/producers/socket-receive-methods/disconnect.service.mjs +0 -64
- package/dist/esm2022/lib/producers/socket-receive-methods/get-domains.service.mjs +0 -78
- package/dist/esm2022/lib/producers/socket-receive-methods/host-request-response.service.mjs +0 -150
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-ended.service.mjs +0 -73
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-still-there.service.mjs +0 -47
- package/dist/esm2022/lib/producers/socket-receive-methods/meeting-time-remaining.service.mjs +0 -63
- package/dist/esm2022/lib/producers/socket-receive-methods/participant-requested.service.mjs +0 -63
- package/dist/esm2022/lib/producers/socket-receive-methods/person-joined.service.mjs +0 -54
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-closed.service.mjs +0 -129
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-paused.service.mjs +0 -152
- package/dist/esm2022/lib/producers/socket-receive-methods/producer-media-resumed.service.mjs +0 -99
- package/dist/esm2022/lib/producers/socket-receive-methods/re-initiate-recording.service.mjs +0 -67
- package/dist/esm2022/lib/producers/socket-receive-methods/receive-message.service.mjs +0 -134
- package/dist/esm2022/lib/producers/socket-receive-methods/recording-notice.service.mjs +0 -233
- package/dist/esm2022/lib/producers/socket-receive-methods/room-record-params.service.mjs +0 -121
- package/dist/esm2022/lib/producers/socket-receive-methods/screen-producer-id.service.mjs +0 -86
- package/dist/esm2022/lib/producers/socket-receive-methods/start-records.service.mjs +0 -60
- package/dist/esm2022/lib/producers/socket-receive-methods/stopped-recording.service.mjs +0 -62
- package/dist/esm2022/lib/producers/socket-receive-methods/time-left-recording.service.mjs +0 -57
- package/dist/esm2022/lib/producers/socket-receive-methods/update-consuming-domains.service.mjs +0 -105
- package/dist/esm2022/lib/producers/socket-receive-methods/update-media-settings.service.mjs +0 -66
- package/dist/esm2022/lib/producers/socket-receive-methods/updated-co-host.service.mjs +0 -96
- package/dist/esm2022/lib/producers/socket-receive-methods/user-waiting.service.mjs +0 -52
- package/dist/esm2022/lib/sockets/socket-manager.service.mjs +0 -113
- package/dist/esm2022/mediasfu-angular.mjs +0 -5
- package/dist/esm2022/public-api.mjs +0 -187
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
// whiteboard.service.ts
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* Toggles the visibility of the configure whiteboard modal.
|
|
6
|
-
*
|
|
7
|
-
* @param {LaunchConfigureWhiteboardOptions} options - Options to control whiteboard configuration modal.
|
|
8
|
-
* @param {Function} options.updateIsConfigureWhiteboardModalVisible - Function to update the modal's visibility state.
|
|
9
|
-
* @param {boolean} options.isConfigureWhiteboardModalVisible - Current visibility state of the configure whiteboard modal.
|
|
10
|
-
*
|
|
11
|
-
* This function uses the current visibility state to toggle the whiteboard configuration modal on or off.
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```typescript
|
|
15
|
-
* const launchService = new LaunchConfigureWhiteboard();
|
|
16
|
-
* launchService.launchConfigureWhiteboard({
|
|
17
|
-
* updateIsConfigureWhiteboardModalVisible: (visible) => console.log('Modal Visible:', visible),
|
|
18
|
-
* isConfigureWhiteboardModalVisible: false
|
|
19
|
-
* });
|
|
20
|
-
* ```
|
|
21
|
-
*
|
|
22
|
-
* In this example, the modal visibility state is toggled, and the updated visibility state is logged.
|
|
23
|
-
*/
|
|
24
|
-
export class LaunchConfigureWhiteboard {
|
|
25
|
-
/**
|
|
26
|
-
* Toggles the visibility of the configure whiteboard modal.
|
|
27
|
-
*
|
|
28
|
-
* @param updateIsConfigureWhiteboardModalVisible - Function to update the visibility state of the configure whiteboard modal.
|
|
29
|
-
* @param isConfigureWhiteboardModalVisible - Current visibility state of the configure whiteboard modal.
|
|
30
|
-
*/
|
|
31
|
-
launchConfigureWhiteboard({ updateIsConfigureWhiteboardModalVisible, isConfigureWhiteboardModalVisible, }) {
|
|
32
|
-
// Open or close the menu modal
|
|
33
|
-
updateIsConfigureWhiteboardModalVisible(!isConfigureWhiteboardModalVisible);
|
|
34
|
-
}
|
|
35
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: LaunchConfigureWhiteboard, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
36
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: LaunchConfigureWhiteboard, providedIn: 'root' });
|
|
37
|
-
}
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: LaunchConfigureWhiteboard, decorators: [{
|
|
39
|
-
type: Injectable,
|
|
40
|
-
args: [{
|
|
41
|
-
providedIn: 'root',
|
|
42
|
-
}]
|
|
43
|
-
}] });
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF1bmNoLWNvbmZpZ3VyZS13aGl0ZWJvYXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvbWV0aG9kcy93aGl0ZWJvYXJkLW1ldGhvZHMvbGF1bmNoLWNvbmZpZ3VyZS13aGl0ZWJvYXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0JBQXdCO0FBQ3hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUzNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBTUgsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQzs7Ozs7T0FLRztJQUVILHlCQUF5QixDQUFDLEVBQ3hCLHVDQUF1QyxFQUN2QyxpQ0FBaUMsR0FDQTtRQUNqQywrQkFBK0I7UUFDL0IsdUNBQXVDLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7dUdBZFUseUJBQXlCOzJHQUF6Qix5QkFBeUIsY0FGeEIsTUFBTTs7MkZBRVAseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIHdoaXRlYm9hcmQuc2VydmljZS50c1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuZXhwb3J0IGludGVyZmFjZSBMYXVuY2hDb25maWd1cmVXaGl0ZWJvYXJkT3B0aW9ucyB7XG4gIHVwZGF0ZUlzQ29uZmlndXJlV2hpdGVib2FyZE1vZGFsVmlzaWJsZTogKHZpc2libGU6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIGlzQ29uZmlndXJlV2hpdGVib2FyZE1vZGFsVmlzaWJsZTogYm9vbGVhbjtcbn1cblxuLy8gRXhwb3J0IHRoZSB0eXBlIGRlZmluaXRpb24gZm9yIHRoZSBmdW5jdGlvblxuZXhwb3J0IHR5cGUgTGF1bmNoQ29uZmlndXJlV2hpdGVib2FyZFR5cGUgPSAob3B0aW9uczogTGF1bmNoQ29uZmlndXJlV2hpdGVib2FyZE9wdGlvbnMpID0+IHZvaWQ7XG5cbi8qKlxuICogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgY29uZmlndXJlIHdoaXRlYm9hcmQgbW9kYWwuXG4gKlxuICogQHBhcmFtIHtMYXVuY2hDb25maWd1cmVXaGl0ZWJvYXJkT3B0aW9uc30gb3B0aW9ucyAtIE9wdGlvbnMgdG8gY29udHJvbCB3aGl0ZWJvYXJkIGNvbmZpZ3VyYXRpb24gbW9kYWwuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnVwZGF0ZUlzQ29uZmlndXJlV2hpdGVib2FyZE1vZGFsVmlzaWJsZSAtIEZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgbW9kYWwncyB2aXNpYmlsaXR5IHN0YXRlLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLmlzQ29uZmlndXJlV2hpdGVib2FyZE1vZGFsVmlzaWJsZSAtIEN1cnJlbnQgdmlzaWJpbGl0eSBzdGF0ZSBvZiB0aGUgY29uZmlndXJlIHdoaXRlYm9hcmQgbW9kYWwuXG4gKlxuICogVGhpcyBmdW5jdGlvbiB1c2VzIHRoZSBjdXJyZW50IHZpc2liaWxpdHkgc3RhdGUgdG8gdG9nZ2xlIHRoZSB3aGl0ZWJvYXJkIGNvbmZpZ3VyYXRpb24gbW9kYWwgb24gb3Igb2ZmLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBsYXVuY2hTZXJ2aWNlID0gbmV3IExhdW5jaENvbmZpZ3VyZVdoaXRlYm9hcmQoKTtcbiAqIGxhdW5jaFNlcnZpY2UubGF1bmNoQ29uZmlndXJlV2hpdGVib2FyZCh7XG4gKiAgIHVwZGF0ZUlzQ29uZmlndXJlV2hpdGVib2FyZE1vZGFsVmlzaWJsZTogKHZpc2libGUpID0+IGNvbnNvbGUubG9nKCdNb2RhbCBWaXNpYmxlOicsIHZpc2libGUpLFxuICogICBpc0NvbmZpZ3VyZVdoaXRlYm9hcmRNb2RhbFZpc2libGU6IGZhbHNlXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEluIHRoaXMgZXhhbXBsZSwgdGhlIG1vZGFsIHZpc2liaWxpdHkgc3RhdGUgaXMgdG9nZ2xlZCwgYW5kIHRoZSB1cGRhdGVkIHZpc2liaWxpdHkgc3RhdGUgaXMgbG9nZ2VkLlxuICovXG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExhdW5jaENvbmZpZ3VyZVdoaXRlYm9hcmQge1xuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgY29uZmlndXJlIHdoaXRlYm9hcmQgbW9kYWwuXG4gICAqXG4gICAqIEBwYXJhbSB1cGRhdGVJc0NvbmZpZ3VyZVdoaXRlYm9hcmRNb2RhbFZpc2libGUgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHZpc2liaWxpdHkgc3RhdGUgb2YgdGhlIGNvbmZpZ3VyZSB3aGl0ZWJvYXJkIG1vZGFsLlxuICAgKiBAcGFyYW0gaXNDb25maWd1cmVXaGl0ZWJvYXJkTW9kYWxWaXNpYmxlIC0gQ3VycmVudCB2aXNpYmlsaXR5IHN0YXRlIG9mIHRoZSBjb25maWd1cmUgd2hpdGVib2FyZCBtb2RhbC5cbiAgICovXG5cbiAgbGF1bmNoQ29uZmlndXJlV2hpdGVib2FyZCh7XG4gICAgdXBkYXRlSXNDb25maWd1cmVXaGl0ZWJvYXJkTW9kYWxWaXNpYmxlLFxuICAgIGlzQ29uZmlndXJlV2hpdGVib2FyZE1vZGFsVmlzaWJsZSxcbiAgfTogTGF1bmNoQ29uZmlndXJlV2hpdGVib2FyZE9wdGlvbnMpOiB2b2lkIHtcbiAgICAvLyBPcGVuIG9yIGNsb3NlIHRoZSBtZW51IG1vZGFsXG4gICAgdXBkYXRlSXNDb25maWd1cmVXaGl0ZWJvYXJkTW9kYWxWaXNpYmxlKCFpc0NvbmZpZ3VyZVdoaXRlYm9hcmRNb2RhbFZpc2libGUpO1xuICB9XG59XG4iXX0=
|
package/dist/esm2022/lib/producer-client/producer-client-emits/create-device-client.service.mjs
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as mediasoupClient from 'mediasoup-client';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* Creates a mediasoup client device using the provided RTP capabilities.
|
|
6
|
-
*
|
|
7
|
-
* @param {CreateDeviceClientOptions} options - Options containing the required RTP capabilities.
|
|
8
|
-
* @param {RtpCapabilities | null} options.rtpCapabilities - The RTP capabilities necessary for initializing the device.
|
|
9
|
-
* @returns {Promise<Device | null>} - A promise resolving to the created `Device` instance or `null` if creation fails.
|
|
10
|
-
* @throws {Error} - Throws an error if RTP capabilities or the mediasoup client library are not provided, or if the device is unsupported by the browser.
|
|
11
|
-
*
|
|
12
|
-
* This function initializes a mediasoup client `Device` using the specified RTP capabilities, enabling communication capabilities according to provided media configurations. It filters out unsupported video orientation extensions and loads router capabilities, ensuring compatibility with client configurations.
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```typescript
|
|
16
|
-
* const client = new CreateDeviceClient();
|
|
17
|
-
* const device = await client.createDeviceClient({ rtpCapabilities });
|
|
18
|
-
* if (device) {
|
|
19
|
-
* console.log('Device created successfully:', device);
|
|
20
|
-
* } else {
|
|
21
|
-
* console.log('Failed to create device.');
|
|
22
|
-
* }
|
|
23
|
-
* ```
|
|
24
|
-
*
|
|
25
|
-
* In this example, the function creates a device based on RTP capabilities, handling errors and unsupported devices gracefully.
|
|
26
|
-
*/
|
|
27
|
-
export class CreateDeviceClient {
|
|
28
|
-
/**
|
|
29
|
-
* Creates a mediasoup client device with the provided RTP capabilities.
|
|
30
|
-
*
|
|
31
|
-
* @param {CreateDeviceClientOptions} options - The options for creating the device client.
|
|
32
|
-
* @param {RTPCapabilities} options.rtpCapabilities - The RTP capabilities required for the device.
|
|
33
|
-
* @returns {Promise<Device | null>} A promise that resolves to the created Device or null if creation fails.
|
|
34
|
-
* @throws {Error} Throws an error if the required parameters are not provided or if device creation is not supported.
|
|
35
|
-
*
|
|
36
|
-
*/
|
|
37
|
-
async createDeviceClient({ rtpCapabilities }) {
|
|
38
|
-
try {
|
|
39
|
-
// Validate input parameters
|
|
40
|
-
if (!rtpCapabilities || !mediasoupClient) {
|
|
41
|
-
throw new Error('Both rtpCapabilities and mediasoupClient must be provided.');
|
|
42
|
-
}
|
|
43
|
-
// Create a mediasoup client device
|
|
44
|
-
const device = new mediasoupClient.Device();
|
|
45
|
-
// Remove orientation capabilities
|
|
46
|
-
if (rtpCapabilities.headerExtensions) {
|
|
47
|
-
rtpCapabilities.headerExtensions = rtpCapabilities.headerExtensions.filter((ext) => ext.uri !== 'urn:3gpp:video-orientation');
|
|
48
|
-
}
|
|
49
|
-
// Load the provided RTP capabilities into the device
|
|
50
|
-
await device.load({
|
|
51
|
-
routerRtpCapabilities: rtpCapabilities,
|
|
52
|
-
});
|
|
53
|
-
// Perform additional initialization, e.g., loading spinner and retrieving messages
|
|
54
|
-
return device;
|
|
55
|
-
}
|
|
56
|
-
catch (error) {
|
|
57
|
-
// Handle specific errors, e.g., UnsupportedError
|
|
58
|
-
if (error.name === 'UnsupportedError') {
|
|
59
|
-
// Handle unsupported device creation
|
|
60
|
-
console.error('UnsupportedError: Device creation is not supported by the browser.');
|
|
61
|
-
}
|
|
62
|
-
throw error; // Propagate other errors
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CreateDeviceClient, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
66
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CreateDeviceClient, providedIn: 'root' });
|
|
67
|
-
}
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CreateDeviceClient, decorators: [{
|
|
69
|
-
type: Injectable,
|
|
70
|
-
args: [{
|
|
71
|
-
providedIn: 'root',
|
|
72
|
-
}]
|
|
73
|
-
}] });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRldmljZS1jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9wcm9kdWNlci1jbGllbnQvcHJvZHVjZXItY2xpZW50LWVtaXRzL2NyZWF0ZS1kZXZpY2UtY2xpZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEtBQUssZUFBZSxNQUFNLGtCQUFrQixDQUFDOztBQVFwRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUtILE1BQU0sT0FBTyxrQkFBa0I7SUFDN0I7Ozs7Ozs7O09BUUc7SUFFSCxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBRSxlQUFlLEVBQTZCO1FBQ3JFLElBQUksQ0FBQztZQUNILDRCQUE0QjtZQUM1QixJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsNERBQTRELENBQUMsQ0FBQztZQUNoRixDQUFDO1lBRUQsbUNBQW1DO1lBQ25DLE1BQU0sTUFBTSxHQUFXLElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBRXBELGtDQUFrQztZQUNsQyxJQUFJLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNyQyxlQUFlLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FDeEUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssNEJBQTRCLENBQ2xELENBQUM7WUFDSixDQUFDO1lBRUQscURBQXFEO1lBQ3JELE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDaEIscUJBQXFCLEVBQUUsZUFBZTthQUN2QyxDQUFDLENBQUM7WUFFSCxtRkFBbUY7WUFFbkYsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7WUFDcEIsaURBQWlEO1lBQ2pELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxrQkFBa0IsRUFBRSxDQUFDO2dCQUN0QyxxQ0FBcUM7Z0JBQ3JDLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0VBQW9FLENBQUMsQ0FBQztZQUN0RixDQUFDO1lBRUQsTUFBTSxLQUFLLENBQUMsQ0FBQyx5QkFBeUI7UUFDeEMsQ0FBQztJQUNILENBQUM7dUdBN0NVLGtCQUFrQjsyR0FBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSdHBDYXBhYmlsaXRpZXMsIERldmljZSB9IGZyb20gJ21lZGlhc291cC1jbGllbnQvbGliL3R5cGVzJztcbmltcG9ydCAqIGFzIG1lZGlhc291cENsaWVudCBmcm9tICdtZWRpYXNvdXAtY2xpZW50JztcbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlRGV2aWNlQ2xpZW50T3B0aW9ucyB7XG4gIHJ0cENhcGFiaWxpdGllczogUnRwQ2FwYWJpbGl0aWVzIHwgbnVsbDtcbn1cblxuLy8gRXhwb3J0IHRoZSB0eXBlIGRlZmluaXRpb24gZm9yIHRoZSBmdW5jdGlvblxuZXhwb3J0IHR5cGUgQ3JlYXRlRGV2aWNlQ2xpZW50VHlwZSA9IChvcHRpb25zOiBDcmVhdGVEZXZpY2VDbGllbnRPcHRpb25zKSA9PiBQcm9taXNlPERldmljZSB8IG51bGw+O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBtZWRpYXNvdXAgY2xpZW50IGRldmljZSB1c2luZyB0aGUgcHJvdmlkZWQgUlRQIGNhcGFiaWxpdGllcy5cbiAqXG4gKiBAcGFyYW0ge0NyZWF0ZURldmljZUNsaWVudE9wdGlvbnN9IG9wdGlvbnMgLSBPcHRpb25zIGNvbnRhaW5pbmcgdGhlIHJlcXVpcmVkIFJUUCBjYXBhYmlsaXRpZXMuXG4gKiBAcGFyYW0ge1J0cENhcGFiaWxpdGllcyB8IG51bGx9IG9wdGlvbnMucnRwQ2FwYWJpbGl0aWVzIC0gVGhlIFJUUCBjYXBhYmlsaXRpZXMgbmVjZXNzYXJ5IGZvciBpbml0aWFsaXppbmcgdGhlIGRldmljZS5cbiAqIEByZXR1cm5zIHtQcm9taXNlPERldmljZSB8IG51bGw+fSAtIEEgcHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIGNyZWF0ZWQgYERldmljZWAgaW5zdGFuY2Ugb3IgYG51bGxgIGlmIGNyZWF0aW9uIGZhaWxzLlxuICogQHRocm93cyB7RXJyb3J9IC0gVGhyb3dzIGFuIGVycm9yIGlmIFJUUCBjYXBhYmlsaXRpZXMgb3IgdGhlIG1lZGlhc291cCBjbGllbnQgbGlicmFyeSBhcmUgbm90IHByb3ZpZGVkLCBvciBpZiB0aGUgZGV2aWNlIGlzIHVuc3VwcG9ydGVkIGJ5IHRoZSBicm93c2VyLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgYSBtZWRpYXNvdXAgY2xpZW50IGBEZXZpY2VgIHVzaW5nIHRoZSBzcGVjaWZpZWQgUlRQIGNhcGFiaWxpdGllcywgZW5hYmxpbmcgY29tbXVuaWNhdGlvbiBjYXBhYmlsaXRpZXMgYWNjb3JkaW5nIHRvIHByb3ZpZGVkIG1lZGlhIGNvbmZpZ3VyYXRpb25zLiBJdCBmaWx0ZXJzIG91dCB1bnN1cHBvcnRlZCB2aWRlbyBvcmllbnRhdGlvbiBleHRlbnNpb25zIGFuZCBsb2FkcyByb3V0ZXIgY2FwYWJpbGl0aWVzLCBlbnN1cmluZyBjb21wYXRpYmlsaXR5IHdpdGggY2xpZW50IGNvbmZpZ3VyYXRpb25zLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjbGllbnQgPSBuZXcgQ3JlYXRlRGV2aWNlQ2xpZW50KCk7XG4gKiBjb25zdCBkZXZpY2UgPSBhd2FpdCBjbGllbnQuY3JlYXRlRGV2aWNlQ2xpZW50KHsgcnRwQ2FwYWJpbGl0aWVzIH0pO1xuICogaWYgKGRldmljZSkge1xuICogICBjb25zb2xlLmxvZygnRGV2aWNlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5OicsIGRldmljZSk7XG4gKiB9IGVsc2Uge1xuICogICBjb25zb2xlLmxvZygnRmFpbGVkIHRvIGNyZWF0ZSBkZXZpY2UuJyk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBJbiB0aGlzIGV4YW1wbGUsIHRoZSBmdW5jdGlvbiBjcmVhdGVzIGEgZGV2aWNlIGJhc2VkIG9uIFJUUCBjYXBhYmlsaXRpZXMsIGhhbmRsaW5nIGVycm9ycyBhbmQgdW5zdXBwb3J0ZWQgZGV2aWNlcyBncmFjZWZ1bGx5LlxuICovXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDcmVhdGVEZXZpY2VDbGllbnQge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG1lZGlhc291cCBjbGllbnQgZGV2aWNlIHdpdGggdGhlIHByb3ZpZGVkIFJUUCBjYXBhYmlsaXRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7Q3JlYXRlRGV2aWNlQ2xpZW50T3B0aW9uc30gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBjcmVhdGluZyB0aGUgZGV2aWNlIGNsaWVudC5cbiAgICogQHBhcmFtIHtSVFBDYXBhYmlsaXRpZXN9IG9wdGlvbnMucnRwQ2FwYWJpbGl0aWVzIC0gVGhlIFJUUCBjYXBhYmlsaXRpZXMgcmVxdWlyZWQgZm9yIHRoZSBkZXZpY2UuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPERldmljZSB8IG51bGw+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgY3JlYXRlZCBEZXZpY2Ugb3IgbnVsbCBpZiBjcmVhdGlvbiBmYWlscy5cbiAgICogQHRocm93cyB7RXJyb3J9IFRocm93cyBhbiBlcnJvciBpZiB0aGUgcmVxdWlyZWQgcGFyYW1ldGVycyBhcmUgbm90IHByb3ZpZGVkIG9yIGlmIGRldmljZSBjcmVhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLlxuICAgKlxuICAgKi9cblxuICBhc3luYyBjcmVhdGVEZXZpY2VDbGllbnQoeyBydHBDYXBhYmlsaXRpZXMgfTogQ3JlYXRlRGV2aWNlQ2xpZW50T3B0aW9ucyk6IFByb21pc2U8RGV2aWNlIHwgbnVsbD4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBWYWxpZGF0ZSBpbnB1dCBwYXJhbWV0ZXJzXG4gICAgICBpZiAoIXJ0cENhcGFiaWxpdGllcyB8fCAhbWVkaWFzb3VwQ2xpZW50KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQm90aCBydHBDYXBhYmlsaXRpZXMgYW5kIG1lZGlhc291cENsaWVudCBtdXN0IGJlIHByb3ZpZGVkLicpO1xuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgYSBtZWRpYXNvdXAgY2xpZW50IGRldmljZVxuICAgICAgY29uc3QgZGV2aWNlOiBEZXZpY2UgPSBuZXcgbWVkaWFzb3VwQ2xpZW50LkRldmljZSgpO1xuXG4gICAgICAvLyBSZW1vdmUgb3JpZW50YXRpb24gY2FwYWJpbGl0aWVzXG4gICAgICBpZiAocnRwQ2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMpIHtcbiAgICAgICAgcnRwQ2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMgPSBydHBDYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5maWx0ZXIoXG4gICAgICAgICAgKGV4dCkgPT4gZXh0LnVyaSAhPT0gJ3VybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uJyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gTG9hZCB0aGUgcHJvdmlkZWQgUlRQIGNhcGFiaWxpdGllcyBpbnRvIHRoZSBkZXZpY2VcbiAgICAgIGF3YWl0IGRldmljZS5sb2FkKHtcbiAgICAgICAgcm91dGVyUnRwQ2FwYWJpbGl0aWVzOiBydHBDYXBhYmlsaXRpZXMsXG4gICAgICB9KTtcblxuICAgICAgLy8gUGVyZm9ybSBhZGRpdGlvbmFsIGluaXRpYWxpemF0aW9uLCBlLmcuLCBsb2FkaW5nIHNwaW5uZXIgYW5kIHJldHJpZXZpbmcgbWVzc2FnZXNcblxuICAgICAgcmV0dXJuIGRldmljZTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAvLyBIYW5kbGUgc3BlY2lmaWMgZXJyb3JzLCBlLmcuLCBVbnN1cHBvcnRlZEVycm9yXG4gICAgICBpZiAoZXJyb3IubmFtZSA9PT0gJ1Vuc3VwcG9ydGVkRXJyb3InKSB7XG4gICAgICAgIC8vIEhhbmRsZSB1bnN1cHBvcnRlZCBkZXZpY2UgY3JlYXRpb25cbiAgICAgICAgY29uc29sZS5lcnJvcignVW5zdXBwb3J0ZWRFcnJvcjogRGV2aWNlIGNyZWF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGJyb3dzZXIuJyk7XG4gICAgICB9XG5cbiAgICAgIHRocm93IGVycm9yOyAvLyBQcm9wYWdhdGUgb3RoZXIgZXJyb3JzXG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../../producers/producer-emits/join-room.service";
|
|
4
|
-
import * as i2 from "../../producers/producer-emits/join-con-room.service";
|
|
5
|
-
/**
|
|
6
|
-
* Facilitates joining a room by emitting the `joinRoom` event to the server through a socket connection.
|
|
7
|
-
*
|
|
8
|
-
* @param {JoinRoomClientOptions} options - Configuration options for joining the room.
|
|
9
|
-
* @param {Socket} options.socket - The socket instance for server communication.
|
|
10
|
-
* @param {string} options.roomName - The name of the room to join.
|
|
11
|
-
* @param {string} options.islevel - Level identifier for the user in the room.
|
|
12
|
-
* @param {string} options.member - Member identifier for the joining user.
|
|
13
|
-
* @param {string} options.sec - Security token or identifier for access.
|
|
14
|
-
* @param {string} options.apiUserName - API username for server authentication.
|
|
15
|
-
* @param {boolean} [options.consume=false] - If `true`, joins via `joinConRoom`; otherwise, joins via `joinRoom`.
|
|
16
|
-
* @returns {Promise<any>} - A promise resolving with the server response data.
|
|
17
|
-
* @throws {Error} - Throws an error if the room joining attempt fails.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```typescript
|
|
21
|
-
* const joinRoomClient = new JoinRoomClient(joinRoomService, joinConRoomService);
|
|
22
|
-
* const response = await joinRoomClient.joinRoomClient({
|
|
23
|
-
* socket: mySocket,
|
|
24
|
-
* roomName: 'myRoom',
|
|
25
|
-
* islevel: '1',
|
|
26
|
-
* member: 'user123',
|
|
27
|
-
* sec: 'secureToken',
|
|
28
|
-
* apiUserName: 'apiUser',
|
|
29
|
-
* consume: true,
|
|
30
|
-
* });
|
|
31
|
-
* console.log('Joined room with response:', response);
|
|
32
|
-
* ```
|
|
33
|
-
*
|
|
34
|
-
* This example demonstrates using `joinRoomClient` to join a room, either as a consumer or a producer, based on the `consume` flag.
|
|
35
|
-
*/
|
|
36
|
-
export class JoinRoomClient {
|
|
37
|
-
JoinRoomService;
|
|
38
|
-
JoinConRoomService;
|
|
39
|
-
constructor(JoinRoomService, JoinConRoomService) {
|
|
40
|
-
this.JoinRoomService = JoinRoomService;
|
|
41
|
-
this.JoinConRoomService = JoinConRoomService;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Joins a room by emitting the `joinRoom` event to the server using the provided socket.
|
|
45
|
-
*
|
|
46
|
-
* @param {Object} options - The options for joining the room.
|
|
47
|
-
* @param {Socket} options.socket - The socket instance to use for communication.
|
|
48
|
-
* @param {string} options.roomName - The name of the room to join.
|
|
49
|
-
* @param {boolean} options.islevel - The level indicator for the room.
|
|
50
|
-
* @param {string} options.member - The member identifier.
|
|
51
|
-
* @param {string} options.sec - The security token or identifier.
|
|
52
|
-
* @param {string} options.apiUserName - The API username for authentication.
|
|
53
|
-
* @param {boolean} [options.consume=false] - Flag to determine which join function to use.
|
|
54
|
-
* @returns {Promise<any>} A promise that resolves with the data returned from the server.
|
|
55
|
-
* @throws {Error} Throws an error if the room joining process fails.
|
|
56
|
-
*/
|
|
57
|
-
async joinRoomClient({ socket, roomName, islevel, member, sec, apiUserName, consume = false, }) {
|
|
58
|
-
try {
|
|
59
|
-
let data;
|
|
60
|
-
if (consume) {
|
|
61
|
-
data = await this.JoinConRoomService.joinConRoom({
|
|
62
|
-
socket,
|
|
63
|
-
roomName,
|
|
64
|
-
islevel,
|
|
65
|
-
member,
|
|
66
|
-
sec,
|
|
67
|
-
apiUserName,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
data = await this.JoinRoomService.joinRoom({
|
|
72
|
-
socket,
|
|
73
|
-
roomName,
|
|
74
|
-
islevel,
|
|
75
|
-
member,
|
|
76
|
-
sec,
|
|
77
|
-
apiUserName,
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
return data;
|
|
81
|
-
}
|
|
82
|
-
catch (error) {
|
|
83
|
-
console.error(error);
|
|
84
|
-
throw new Error('Failed to join the room. Please check your connection and try again.');
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: JoinRoomClient, deps: [{ token: i1.JoinRoom }, { token: i2.JoinConRoom }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
88
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: JoinRoomClient, providedIn: 'root' });
|
|
89
|
-
}
|
|
90
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: JoinRoomClient, decorators: [{
|
|
91
|
-
type: Injectable,
|
|
92
|
-
args: [{
|
|
93
|
-
providedIn: 'root',
|
|
94
|
-
}]
|
|
95
|
-
}], ctorParameters: () => [{ type: i1.JoinRoom }, { type: i2.JoinConRoom }] });
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9pbi1yb29tLWNsaWVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL3Byb2R1Y2VyLWNsaWVudC9wcm9kdWNlci1jbGllbnQtZW1pdHMvam9pbi1yb29tLWNsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFtQjNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFLSCxNQUFNLE9BQU8sY0FBYztJQUNMO0lBQW1DO0lBQXZELFlBQW9CLGVBQXlCLEVBQVUsa0JBQStCO1FBQWxFLG9CQUFlLEdBQWYsZUFBZSxDQUFVO1FBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFhO0lBQUcsQ0FBQztJQUUxRjs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUNuQixNQUFNLEVBQ04sUUFBUSxFQUNSLE9BQU8sRUFDUCxNQUFNLEVBQ04sR0FBRyxFQUNILFdBQVcsRUFDWCxPQUFPLEdBQUcsS0FBSyxHQUNPO1FBQ3RCLElBQUksQ0FBQztZQUNILElBQUksSUFBK0IsQ0FBQztZQUVwQyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUM7b0JBQy9DLE1BQU07b0JBQ04sUUFBUTtvQkFDUixPQUFPO29CQUNQLE1BQU07b0JBQ04sR0FBRztvQkFDSCxXQUFXO2lCQUNaLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQztvQkFDekMsTUFBTTtvQkFDTixRQUFRO29CQUNSLE9BQU87b0JBQ1AsTUFBTTtvQkFDTixHQUFHO29CQUNILFdBQVc7aUJBQ1osQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0VBQXNFLENBQUMsQ0FBQztRQUMxRixDQUFDO0lBQ0gsQ0FBQzt1R0F0RFUsY0FBYzsyR0FBZCxjQUFjLGNBRmIsTUFBTTs7MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBKb2luUm9vbSB9IGZyb20gJy4uLy4uL3Byb2R1Y2Vycy9wcm9kdWNlci1lbWl0cy9qb2luLXJvb20uc2VydmljZSc7XG5pbXBvcnQgeyBKb2luQ29uUm9vbSB9IGZyb20gJy4uLy4uL3Byb2R1Y2Vycy9wcm9kdWNlci1lbWl0cy9qb2luLWNvbi1yb29tLnNlcnZpY2UnO1xuaW1wb3J0IHsgU29ja2V0IH0gZnJvbSAnc29ja2V0LmlvLWNsaWVudCc7XG5pbXBvcnQgeyBSZXNwb25zZUpvaW5Sb29tIH0gZnJvbSAnLi4vLi4vQHR5cGVzL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBKb2luUm9vbUNsaWVudE9wdGlvbnMge1xuICBzb2NrZXQ6IFNvY2tldDtcbiAgcm9vbU5hbWU6IHN0cmluZztcbiAgaXNsZXZlbDogc3RyaW5nO1xuICBtZW1iZXI6IHN0cmluZztcbiAgc2VjOiBzdHJpbmc7XG4gIGFwaVVzZXJOYW1lOiBzdHJpbmc7XG4gIGNvbnN1bWU/OiBib29sZWFuO1xufVxuXG4vLyBFeHBvcnQgdGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIGZ1bmN0aW9uXG5leHBvcnQgdHlwZSBKb2luUm9vbUNsaWVudFR5cGUgPSAocGFyYW1zOiBKb2luUm9vbUNsaWVudE9wdGlvbnMpID0+IFByb21pc2U8YW55PjtcblxuLyoqXG4gKiBGYWNpbGl0YXRlcyBqb2luaW5nIGEgcm9vbSBieSBlbWl0dGluZyB0aGUgYGpvaW5Sb29tYCBldmVudCB0byB0aGUgc2VydmVyIHRocm91Z2ggYSBzb2NrZXQgY29ubmVjdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0pvaW5Sb29tQ2xpZW50T3B0aW9uc30gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3Igam9pbmluZyB0aGUgcm9vbS5cbiAqIEBwYXJhbSB7U29ja2V0fSBvcHRpb25zLnNvY2tldCAtIFRoZSBzb2NrZXQgaW5zdGFuY2UgZm9yIHNlcnZlciBjb21tdW5pY2F0aW9uLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucm9vbU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcm9vbSB0byBqb2luLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuaXNsZXZlbCAtIExldmVsIGlkZW50aWZpZXIgZm9yIHRoZSB1c2VyIGluIHRoZSByb29tLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubWVtYmVyIC0gTWVtYmVyIGlkZW50aWZpZXIgZm9yIHRoZSBqb2luaW5nIHVzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5zZWMgLSBTZWN1cml0eSB0b2tlbiBvciBpZGVudGlmaWVyIGZvciBhY2Nlc3MuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5hcGlVc2VyTmFtZSAtIEFQSSB1c2VybmFtZSBmb3Igc2VydmVyIGF1dGhlbnRpY2F0aW9uLlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5jb25zdW1lPWZhbHNlXSAtIElmIGB0cnVlYCwgam9pbnMgdmlhIGBqb2luQ29uUm9vbWA7IG90aGVyd2lzZSwgam9pbnMgdmlhIGBqb2luUm9vbWAuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fSAtIEEgcHJvbWlzZSByZXNvbHZpbmcgd2l0aCB0aGUgc2VydmVyIHJlc3BvbnNlIGRhdGEuXG4gKiBAdGhyb3dzIHtFcnJvcn0gLSBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIHJvb20gam9pbmluZyBhdHRlbXB0IGZhaWxzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBqb2luUm9vbUNsaWVudCA9IG5ldyBKb2luUm9vbUNsaWVudChqb2luUm9vbVNlcnZpY2UsIGpvaW5Db25Sb29tU2VydmljZSk7XG4gKiBjb25zdCByZXNwb25zZSA9IGF3YWl0IGpvaW5Sb29tQ2xpZW50LmpvaW5Sb29tQ2xpZW50KHtcbiAqICAgc29ja2V0OiBteVNvY2tldCxcbiAqICAgcm9vbU5hbWU6ICdteVJvb20nLFxuICogICBpc2xldmVsOiAnMScsXG4gKiAgIG1lbWJlcjogJ3VzZXIxMjMnLFxuICogICBzZWM6ICdzZWN1cmVUb2tlbicsXG4gKiAgIGFwaVVzZXJOYW1lOiAnYXBpVXNlcicsXG4gKiAgIGNvbnN1bWU6IHRydWUsXG4gKiB9KTtcbiAqIGNvbnNvbGUubG9nKCdKb2luZWQgcm9vbSB3aXRoIHJlc3BvbnNlOicsIHJlc3BvbnNlKTtcbiAqIGBgYFxuICpcbiAqIFRoaXMgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgdXNpbmcgYGpvaW5Sb29tQ2xpZW50YCB0byBqb2luIGEgcm9vbSwgZWl0aGVyIGFzIGEgY29uc3VtZXIgb3IgYSBwcm9kdWNlciwgYmFzZWQgb24gdGhlIGBjb25zdW1lYCBmbGFnLlxuICovXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBKb2luUm9vbUNsaWVudCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgSm9pblJvb21TZXJ2aWNlOiBKb2luUm9vbSwgcHJpdmF0ZSBKb2luQ29uUm9vbVNlcnZpY2U6IEpvaW5Db25Sb29tKSB7fVxuXG4gIC8qKlxuICAgKiBKb2lucyBhIHJvb20gYnkgZW1pdHRpbmcgdGhlIGBqb2luUm9vbWAgZXZlbnQgdG8gdGhlIHNlcnZlciB1c2luZyB0aGUgcHJvdmlkZWQgc29ja2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciBqb2luaW5nIHRoZSByb29tLlxuICAgKiBAcGFyYW0ge1NvY2tldH0gb3B0aW9ucy5zb2NrZXQgLSBUaGUgc29ja2V0IGluc3RhbmNlIHRvIHVzZSBmb3IgY29tbXVuaWNhdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucm9vbU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcm9vbSB0byBqb2luLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMuaXNsZXZlbCAtIFRoZSBsZXZlbCBpbmRpY2F0b3IgZm9yIHRoZSByb29tLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5tZW1iZXIgLSBUaGUgbWVtYmVyIGlkZW50aWZpZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnNlYyAtIFRoZSBzZWN1cml0eSB0b2tlbiBvciBpZGVudGlmaWVyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5hcGlVc2VyTmFtZSAtIFRoZSBBUEkgdXNlcm5hbWUgZm9yIGF1dGhlbnRpY2F0aW9uLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmNvbnN1bWU9ZmFsc2VdIC0gRmxhZyB0byBkZXRlcm1pbmUgd2hpY2ggam9pbiBmdW5jdGlvbiB0byB1c2UuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgc2VydmVyLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSByb29tIGpvaW5pbmcgcHJvY2VzcyBmYWlscy5cbiAgICovXG4gIGFzeW5jIGpvaW5Sb29tQ2xpZW50KHtcbiAgICBzb2NrZXQsXG4gICAgcm9vbU5hbWUsXG4gICAgaXNsZXZlbCxcbiAgICBtZW1iZXIsXG4gICAgc2VjLFxuICAgIGFwaVVzZXJOYW1lLFxuICAgIGNvbnN1bWUgPSBmYWxzZSxcbiAgfTogSm9pblJvb21DbGllbnRPcHRpb25zKTogUHJvbWlzZTxhbnk+IHtcbiAgICB0cnkge1xuICAgICAgbGV0IGRhdGE6IFBhcnRpYWw8UmVzcG9uc2VKb2luUm9vbT47XG5cbiAgICAgIGlmIChjb25zdW1lKSB7XG4gICAgICAgIGRhdGEgPSBhd2FpdCB0aGlzLkpvaW5Db25Sb29tU2VydmljZS5qb2luQ29uUm9vbSh7XG4gICAgICAgICAgc29ja2V0LFxuICAgICAgICAgIHJvb21OYW1lLFxuICAgICAgICAgIGlzbGV2ZWwsXG4gICAgICAgICAgbWVtYmVyLFxuICAgICAgICAgIHNlYyxcbiAgICAgICAgICBhcGlVc2VyTmFtZSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhID0gYXdhaXQgdGhpcy5Kb2luUm9vbVNlcnZpY2Uuam9pblJvb20oe1xuICAgICAgICAgIHNvY2tldCxcbiAgICAgICAgICByb29tTmFtZSxcbiAgICAgICAgICBpc2xldmVsLFxuICAgICAgICAgIG1lbWJlcixcbiAgICAgICAgICBzZWMsXG4gICAgICAgICAgYXBpVXNlck5hbWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBqb2luIHRoZSByb29tLiBQbGVhc2UgY2hlY2sgeW91ciBjb25uZWN0aW9uIGFuZCB0cnkgYWdhaW4uJyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,276 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
2
|
-
// room.service.ts
|
|
3
|
-
import { Injectable } from '@angular/core';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "../../methods/utils/producer/video-capture-constraints.service";
|
|
6
|
-
import * as i2 from "../../methods/utils/producer/h-params.service";
|
|
7
|
-
import * as i3 from "../../methods/utils/producer/v-params.service";
|
|
8
|
-
import * as i4 from "../../methods/utils/producer/screen-params.service";
|
|
9
|
-
import * as i5 from "../../methods/utils/producer/a-params.service";
|
|
10
|
-
/**
|
|
11
|
-
* Updates room parameters for the client after joining a room and receiving server-provided parameters.
|
|
12
|
-
*
|
|
13
|
-
* @param {UpdateRoomParametersClientOptions} options - An object containing:
|
|
14
|
-
* - various room settings and parameters,
|
|
15
|
-
* - functions to update those parameters.
|
|
16
|
-
*
|
|
17
|
-
* - **Screen/Page Settings:** Adjusts screen and item page limits, meeting room parameters, and video constraints based on server data.
|
|
18
|
-
* - **Recording and Media Settings:** Applies bitrate and frame rate adjustments, based on the target resolution and media options.
|
|
19
|
-
* - **Role-Specific Settings:** Configures admin, host, and co-host settings for permissions, orientations, and resolutions.
|
|
20
|
-
* - **Alerting**: Uses `showAlert` to notify the client on issues or permissions restrictions.
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```typescript
|
|
24
|
-
* const options = {
|
|
25
|
-
* parameters: {
|
|
26
|
-
* rtpCapabilities: myRtpCapabilities,
|
|
27
|
-
* roomRecvIPs: ['192.168.1.1'],
|
|
28
|
-
* meetingRoomParams: myMeetingParams,
|
|
29
|
-
* itemPageLimit: 3,
|
|
30
|
-
* audioOnlyRoom: false,
|
|
31
|
-
* addForBasic: true,
|
|
32
|
-
* screenPageLimit: 2,
|
|
33
|
-
* shareScreenStarted: false,
|
|
34
|
-
* shared: true,
|
|
35
|
-
* targetOrientation: 'landscape',
|
|
36
|
-
* recordingVideoSupport: true,
|
|
37
|
-
* frameRate: 15,
|
|
38
|
-
* adminPasscode: 'admin123',
|
|
39
|
-
* eventType: 'conference',
|
|
40
|
-
* youAreCoHost: false,
|
|
41
|
-
* updateRtpCapabilities: (rtp) => console.log('Updating RTP:', rtp),
|
|
42
|
-
* updateRoomRecvIPs: (ips) => console.log('Updating IPs:', ips),
|
|
43
|
-
* updateMeetingRoomParams: (params) => console.log('Updating room params:', params),
|
|
44
|
-
* // Additional parameters...
|
|
45
|
-
* },
|
|
46
|
-
* };
|
|
47
|
-
*
|
|
48
|
-
* const updateRoomParametersClient = new UpdateRoomParametersClient(videoCaptureConstraints, hParams, vParams, screenParams, aParams);
|
|
49
|
-
* updateRoomParametersClient.updateRoomParametersClient(options);
|
|
50
|
-
* ```
|
|
51
|
-
*
|
|
52
|
-
* This example demonstrates setting up room parameters for a conference-type room with recording support and custom update functions.
|
|
53
|
-
*/
|
|
54
|
-
export class UpdateRoomParametersClient {
|
|
55
|
-
videoCaptureConstraints;
|
|
56
|
-
hParams;
|
|
57
|
-
vParams;
|
|
58
|
-
screenParams;
|
|
59
|
-
aParams;
|
|
60
|
-
constructor(videoCaptureConstraints, hParams, vParams, screenParams, aParams) {
|
|
61
|
-
this.videoCaptureConstraints = videoCaptureConstraints;
|
|
62
|
-
this.hParams = hParams;
|
|
63
|
-
this.vParams = vParams;
|
|
64
|
-
this.screenParams = screenParams;
|
|
65
|
-
this.aParams = aParams;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Update Room Parameters Client after the user has joined the room and the room parameters have been received from the server.
|
|
69
|
-
* @param {Object} parameters - An object containing various parameters and update functions.
|
|
70
|
-
*/
|
|
71
|
-
updateRoomParametersClient = ({ parameters }) => {
|
|
72
|
-
try {
|
|
73
|
-
const { screenPageLimit, shareScreenStarted, shared, hParams, vParams, frameRate, islevel, showAlert, data,
|
|
74
|
-
//updates
|
|
75
|
-
updateRtpCapabilities, updateRoomRecvIPs, updateMeetingRoomParams, updateItemPageLimit, updateAudioOnlyRoom, updateScreenPageLimit, updateVidCons, updateFrameRate, updateAdminPasscode, updateEventType, updateYouAreCoHost, updateAutoWave, updateForceFullDisplay, updateChatSetting, updateMeetingDisplayType, updateAudioSetting, updateVideoSetting, updateScreenshareSetting, updateHParams, updateVParams, updateScreenParams, updateAParams, updateTargetResolution, updateTargetResolutionHost,
|
|
76
|
-
// Recording updates
|
|
77
|
-
updateRecordingAudioPausesLimit, updateRecordingAudioPausesCount, updateRecordingAudioSupport, updateRecordingAudioPeopleLimit, updateRecordingAudioParticipantsTimeLimit, updateRecordingVideoPausesCount, updateRecordingVideoPausesLimit, updateRecordingVideoSupport, updateRecordingVideoPeopleLimit, updateRecordingVideoParticipantsTimeLimit, updateRecordingAllParticipantsSupport, updateRecordingVideoParticipantsSupport, updateRecordingAllParticipantsFullRoomSupport, updateRecordingVideoParticipantsFullRoomSupport, updateRecordingPreferredOrientation, updateRecordingSupportForOtherOrientation, updateRecordingMultiFormatsSupport, updateRecordingVideoOptions, updateRecordingAudioOptions, updateMainHeightWidth, } = parameters;
|
|
78
|
-
if (data.rtpCapabilities == null) {
|
|
79
|
-
let reason = data.reason || '';
|
|
80
|
-
showAlert?.({
|
|
81
|
-
message: 'Sorry, you are not allowed to join this room. ' + reason,
|
|
82
|
-
type: 'danger',
|
|
83
|
-
duration: 3000,
|
|
84
|
-
});
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
// Update all values
|
|
88
|
-
updateRtpCapabilities(data.rtpCapabilities);
|
|
89
|
-
updateAdminPasscode(data.secureCode);
|
|
90
|
-
updateRoomRecvIPs(data.roomRecvIPs);
|
|
91
|
-
updateMeetingRoomParams(data.meetingRoomParams);
|
|
92
|
-
// Update recording values
|
|
93
|
-
updateRecordingAudioPausesLimit(data.recordingParams.recordingAudioPausesLimit);
|
|
94
|
-
updateRecordingAudioPausesCount(data.recordingParams.recordingAudioPausesCount);
|
|
95
|
-
updateRecordingAudioSupport(data.recordingParams.recordingAudioSupport);
|
|
96
|
-
updateRecordingAudioPeopleLimit(data.recordingParams.recordingAudioPeopleLimit);
|
|
97
|
-
updateRecordingAudioParticipantsTimeLimit(data.recordingParams.recordingAudioParticipantsTimeLimit);
|
|
98
|
-
updateRecordingVideoPausesCount(data.recordingParams.recordingVideoPausesCount);
|
|
99
|
-
updateRecordingVideoPausesLimit(data.recordingParams.recordingVideoPausesLimit);
|
|
100
|
-
updateRecordingVideoSupport(data.recordingParams.recordingVideoSupport);
|
|
101
|
-
updateRecordingVideoPeopleLimit(data.recordingParams.recordingVideoPeopleLimit);
|
|
102
|
-
updateRecordingVideoParticipantsTimeLimit(data.recordingParams.recordingVideoParticipantsTimeLimit);
|
|
103
|
-
updateRecordingAllParticipantsSupport(data.recordingParams.recordingAllParticipantsSupport);
|
|
104
|
-
updateRecordingVideoParticipantsSupport(data.recordingParams.recordingVideoParticipantsSupport);
|
|
105
|
-
updateRecordingAllParticipantsFullRoomSupport(data.recordingParams.recordingAllParticipantsFullRoomSupport);
|
|
106
|
-
updateRecordingVideoParticipantsFullRoomSupport(data.recordingParams.recordingVideoParticipantsFullRoomSupport);
|
|
107
|
-
updateRecordingPreferredOrientation(data.recordingParams.recordingPreferredOrientation);
|
|
108
|
-
updateRecordingSupportForOtherOrientation(data.recordingParams.recordingSupportForOtherOrientation);
|
|
109
|
-
updateRecordingMultiFormatsSupport(data.recordingParams.recordingMultiFormatsSupport);
|
|
110
|
-
// Update other meeting room settings
|
|
111
|
-
updateItemPageLimit(data.meetingRoomParams.itemPageLimit);
|
|
112
|
-
updateEventType(data.meetingRoomParams.type);
|
|
113
|
-
if (data.meetingRoomParams.type == 'chat' && islevel != '2') {
|
|
114
|
-
updateYouAreCoHost(true);
|
|
115
|
-
}
|
|
116
|
-
if (['chat', 'broadcast'].includes(data.meetingRoomParams.type)) {
|
|
117
|
-
updateAutoWave(false);
|
|
118
|
-
updateMeetingDisplayType('all');
|
|
119
|
-
updateForceFullDisplay(true);
|
|
120
|
-
updateChatSetting('allow');
|
|
121
|
-
}
|
|
122
|
-
updateAudioSetting(data.meetingRoomParams.audioSetting);
|
|
123
|
-
updateVideoSetting(data.meetingRoomParams.videoSetting);
|
|
124
|
-
updateScreenshareSetting(data.meetingRoomParams.screenshareSetting);
|
|
125
|
-
updateChatSetting(data.meetingRoomParams.chatSetting);
|
|
126
|
-
updateAudioOnlyRoom(data.meetingRoomParams.mediaType != 'video');
|
|
127
|
-
if (data.meetingRoomParams.type == 'chat' || data.meetingRoomParams.type == 'broadcast') {
|
|
128
|
-
if (data.meetingRoomParams.type == 'broadcast') {
|
|
129
|
-
updateItemPageLimit(1);
|
|
130
|
-
updateRecordingVideoOptions('mainScreen');
|
|
131
|
-
updateRecordingAudioOptions('host');
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
updateItemPageLimit(2);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
if (data.meetingRoomParams.type == 'conference' && (shared || shareScreenStarted)) {
|
|
138
|
-
updateMainHeightWidth(100);
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
updateMainHeightWidth(0);
|
|
142
|
-
}
|
|
143
|
-
updateScreenPageLimit(Math.min(data.meetingRoomParams.itemPageLimit, screenPageLimit));
|
|
144
|
-
// Assign media capture constraints based on the user's role and room settings
|
|
145
|
-
let targetOrientation = islevel == '2'
|
|
146
|
-
? data.meetingRoomParams.targetOrientationHost
|
|
147
|
-
: data.meetingRoomParams.targetOrientation;
|
|
148
|
-
let targetResolution = islevel == '2'
|
|
149
|
-
? data.meetingRoomParams.targetResolutionHost
|
|
150
|
-
: data.meetingRoomParams.targetResolution;
|
|
151
|
-
let vidCons;
|
|
152
|
-
if (targetOrientation == 'landscape') {
|
|
153
|
-
vidCons =
|
|
154
|
-
targetResolution == 'hd'
|
|
155
|
-
? this.videoCaptureConstraints.hdCons
|
|
156
|
-
: targetResolution == 'QnHD'
|
|
157
|
-
? this.videoCaptureConstraints.QnHDCons
|
|
158
|
-
: targetResolution == 'fhd'
|
|
159
|
-
? this.videoCaptureConstraints.fhdCons
|
|
160
|
-
: targetResolution == 'qhd'
|
|
161
|
-
? this.videoCaptureConstraints.qhdCons
|
|
162
|
-
: this.videoCaptureConstraints.sdCons;
|
|
163
|
-
}
|
|
164
|
-
else if (targetOrientation == 'neutral') {
|
|
165
|
-
vidCons =
|
|
166
|
-
targetResolution == 'hd'
|
|
167
|
-
? this.videoCaptureConstraints.hdConsNeu
|
|
168
|
-
: targetResolution == 'QnHD'
|
|
169
|
-
? this.videoCaptureConstraints.QnHDConsNeu
|
|
170
|
-
: targetResolution == 'fhd'
|
|
171
|
-
? this.videoCaptureConstraints.fhdConsNeu
|
|
172
|
-
: targetResolution == 'qhd'
|
|
173
|
-
? this.videoCaptureConstraints.qhdConsNeu
|
|
174
|
-
: this.videoCaptureConstraints.sdConsNeu;
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
vidCons =
|
|
178
|
-
targetResolution == 'hd'
|
|
179
|
-
? this.videoCaptureConstraints.hdConsPort
|
|
180
|
-
: targetResolution == 'QnHD'
|
|
181
|
-
? this.videoCaptureConstraints.QnHDConsPort
|
|
182
|
-
: targetResolution == 'fhd'
|
|
183
|
-
? this.videoCaptureConstraints.fhdConsPort
|
|
184
|
-
: targetResolution == 'qhd'
|
|
185
|
-
? this.videoCaptureConstraints.qhdConsPort
|
|
186
|
-
: this.videoCaptureConstraints.sdConsPort;
|
|
187
|
-
}
|
|
188
|
-
let frameRateValue = frameRate ? frameRate : 10;
|
|
189
|
-
let vParamsValue = { ...vParams };
|
|
190
|
-
let hParamsValue = { ...hParams };
|
|
191
|
-
if (Object.keys(vParamsValue).length === 0) {
|
|
192
|
-
vParamsValue = this.vParams.vParams;
|
|
193
|
-
}
|
|
194
|
-
if (Object.keys(hParamsValue).length === 0) {
|
|
195
|
-
hParamsValue = this.hParams.hParams;
|
|
196
|
-
}
|
|
197
|
-
if (targetResolution == 'hd') {
|
|
198
|
-
frameRateValue = this.videoCaptureConstraints.hdFrameRate;
|
|
199
|
-
vParamsValue.encodings.forEach((encoding) => {
|
|
200
|
-
encoding.maxBitrate && (encoding.maxBitrate *= 4);
|
|
201
|
-
});
|
|
202
|
-
hParamsValue.encodings.forEach((encoding) => {
|
|
203
|
-
encoding.maxBitrate && (encoding.maxBitrate *= 4);
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
else if (targetResolution == 'QnHD') {
|
|
207
|
-
frameRateValue = this.videoCaptureConstraints.QnHDFrameRate;
|
|
208
|
-
vParamsValue.encodings.forEach((encoding) => {
|
|
209
|
-
encoding.maxBitrate && (encoding.maxBitrate *= 0.25);
|
|
210
|
-
});
|
|
211
|
-
hParamsValue.encodings.forEach((encoding) => {
|
|
212
|
-
encoding.maxBitrate && (encoding.maxBitrate *= 0.25);
|
|
213
|
-
});
|
|
214
|
-
hParamsValue.codecOptions.videoGoogleStartBitrate *= 0.25;
|
|
215
|
-
vParamsValue.codecOptions.videoGoogleStartBitrate *= 0.25;
|
|
216
|
-
}
|
|
217
|
-
else if (targetResolution == 'fhd') {
|
|
218
|
-
frameRateValue = this.videoCaptureConstraints.fhdFrameRate;
|
|
219
|
-
vParamsValue.encodings.forEach((encoding) => {
|
|
220
|
-
encoding.maxBitrate && (encoding.maxBitrate *= 8);
|
|
221
|
-
});
|
|
222
|
-
hParamsValue.encodings.forEach((encoding) => {
|
|
223
|
-
encoding.maxBitrate && (encoding.maxBitrate *= 8);
|
|
224
|
-
});
|
|
225
|
-
hParamsValue.codecOptions.videoGoogleStartBitrate *= 8;
|
|
226
|
-
vParamsValue.codecOptions.videoGoogleStartBitrate *= 8;
|
|
227
|
-
}
|
|
228
|
-
else if (targetResolution == 'qhd') {
|
|
229
|
-
frameRateValue = this.videoCaptureConstraints.qhdFrameRate;
|
|
230
|
-
vParamsValue.encodings.forEach((encoding) => {
|
|
231
|
-
encoding.maxBitrate && (encoding.maxBitrate *= 16);
|
|
232
|
-
});
|
|
233
|
-
hParamsValue.encodings.forEach((encoding) => {
|
|
234
|
-
encoding.maxBitrate && (encoding.maxBitrate *= 16);
|
|
235
|
-
});
|
|
236
|
-
hParamsValue.codecOptions.videoGoogleStartBitrate *= 16;
|
|
237
|
-
vParamsValue.codecOptions.videoGoogleStartBitrate *= 16;
|
|
238
|
-
}
|
|
239
|
-
if (data.recordingParams.recordingVideoSupport) {
|
|
240
|
-
vParamsValue.encodings.forEach((encoding) => {
|
|
241
|
-
encoding.maxBitrate && (encoding.maxBitrate *= 1.2);
|
|
242
|
-
});
|
|
243
|
-
hParamsValue.encodings.forEach((encoding) => {
|
|
244
|
-
encoding.maxBitrate && (encoding.maxBitrate *= 1.2);
|
|
245
|
-
});
|
|
246
|
-
hParamsValue.codecOptions.videoGoogleStartBitrate *= 1.2;
|
|
247
|
-
vParamsValue.codecOptions.videoGoogleStartBitrate *= 1.2;
|
|
248
|
-
}
|
|
249
|
-
updateVidCons(vidCons);
|
|
250
|
-
updateFrameRate(frameRateValue);
|
|
251
|
-
updateHParams(hParamsValue);
|
|
252
|
-
updateVParams(vParamsValue);
|
|
253
|
-
updateScreenParams(this.screenParams.screenParams);
|
|
254
|
-
updateAParams(this.aParams.aParams);
|
|
255
|
-
updateTargetResolution(data.meetingRoomParams.targetResolution);
|
|
256
|
-
updateTargetResolutionHost(data.meetingRoomParams.targetResolutionHost);
|
|
257
|
-
}
|
|
258
|
-
catch (error) {
|
|
259
|
-
console.log('updateRoomParametersClient error', error);
|
|
260
|
-
parameters.showAlert?.({
|
|
261
|
-
message: error.message,
|
|
262
|
-
type: 'danger',
|
|
263
|
-
duration: 3000,
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
|
-
};
|
|
267
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: UpdateRoomParametersClient, deps: [{ token: i1.VideoCaptureConstraints }, { token: i2.HParams }, { token: i3.VParams }, { token: i4.ScreenParams }, { token: i5.AParams }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
268
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: UpdateRoomParametersClient, providedIn: 'root' });
|
|
269
|
-
}
|
|
270
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: UpdateRoomParametersClient, decorators: [{
|
|
271
|
-
type: Injectable,
|
|
272
|
-
args: [{
|
|
273
|
-
providedIn: 'root',
|
|
274
|
-
}]
|
|
275
|
-
}], ctorParameters: () => [{ type: i1.VideoCaptureConstraints }, { type: i2.HParams }, { type: i3.VParams }, { type: i4.ScreenParams }, { type: i5.AParams }] });
|
|
276
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXJvb20tcGFyYW1ldGVycy1jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9wcm9kdWNlci1jbGllbnQvcHJvZHVjZXItY2xpZW50LWVtaXRzL3VwZGF0ZS1yb29tLXBhcmFtZXRlcnMtY2xpZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkRBQTZEO0FBQzdELGtCQUFrQjtBQUNsQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBMEczQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJDRztBQUtILE1BQU0sT0FBTywwQkFBMEI7SUFFM0I7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUxWLFlBQ1UsdUJBQWdELEVBQ2hELE9BQWdCLEVBQ2hCLE9BQWdCLEVBQ2hCLFlBQTBCLEVBQzFCLE9BQWdCO1FBSmhCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQVM7SUFDdkIsQ0FBQztJQUVKOzs7T0FHRztJQUNILDBCQUEwQixHQUFHLENBQUMsRUFBRSxVQUFVLEVBQXFDLEVBQVEsRUFBRTtRQUN2RixJQUFJLENBQUM7WUFDSCxNQUFNLEVBQ0osZUFBZSxFQUNmLGtCQUFrQixFQUNsQixNQUFNLEVBRU4sT0FBTyxFQUNQLE9BQU8sRUFDUCxTQUFTLEVBRVQsT0FBTyxFQUNQLFNBQVMsRUFDVCxJQUFJO1lBRUosU0FBUztZQUNULHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixtQkFBbUIsRUFDbkIscUJBQXFC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ekIsTUFBTTs7MkZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb24gKi9cbi8vIHJvb20uc2VydmljZS50c1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmlkZW9DYXB0dXJlQ29uc3RyYWludHMgfSBmcm9tICcuLi8uLi9tZXRob2RzL3V0aWxzL3Byb2R1Y2VyL3ZpZGVvLWNhcHR1cmUtY29uc3RyYWludHMuc2VydmljZSc7XG5pbXBvcnQgeyBIUGFyYW1zLCBIUGFyYW1zVHlwZSB9IGZyb20gJy4uLy4uL21ldGhvZHMvdXRpbHMvcHJvZHVjZXIvaC1wYXJhbXMuc2VydmljZSc7XG5pbXBvcnQgeyBWUGFyYW1zLCBWUGFyYW1zVHlwZSB9IGZyb20gJy4uLy4uL21ldGhvZHMvdXRpbHMvcHJvZHVjZXIvdi1wYXJhbXMuc2VydmljZSc7XG5pbXBvcnQgeyBTY3JlZW5QYXJhbXMgfSBmcm9tICcuLi8uLi9tZXRob2RzL3V0aWxzL3Byb2R1Y2VyL3NjcmVlbi1wYXJhbXMuc2VydmljZSc7XG5pbXBvcnQgeyBBUGFyYW1zIH0gZnJvbSAnLi4vLi4vbWV0aG9kcy91dGlscy9wcm9kdWNlci9hLXBhcmFtcy5zZXJ2aWNlJztcbmltcG9ydCB7IFJ0cENhcGFiaWxpdGllcyB9IGZyb20gJ21lZGlhc291cC1jbGllbnQvbGliL3R5cGVzJztcbmltcG9ydCB7XG4gIEV2ZW50VHlwZSxcbiAgU2hvd0FsZXJ0LFxuICBWaWRDb25zLFxuICBSZXNwb25zZUpvaW5Sb29tLFxuICBTY3JlZW5QYXJhbXNUeXBlLFxuICBBUGFyYW1zVHlwZSxcbiAgTWVldGluZ1Jvb21QYXJhbXMsXG59IGZyb20gJy4uLy4uL0B0eXBlcy90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlUm9vbVBhcmFtZXRlcnNDbGllbnRQYXJhbWV0ZXJzIHtcbiAgcnRwQ2FwYWJpbGl0aWVzOiBSdHBDYXBhYmlsaXRpZXMgfCBudWxsO1xuICByb29tUmVjdklQczogc3RyaW5nW107XG4gIG1lZXRpbmdSb29tUGFyYW1zOiBNZWV0aW5nUm9vbVBhcmFtcyB8IG51bGw7XG4gIGl0ZW1QYWdlTGltaXQ6IG51bWJlcjtcbiAgYXVkaW9Pbmx5Um9vbTogYm9vbGVhbjtcbiAgYWRkRm9yQmFzaWM6IGJvb2xlYW47XG4gIHNjcmVlblBhZ2VMaW1pdDogbnVtYmVyO1xuICBzaGFyZVNjcmVlblN0YXJ0ZWQ6IGJvb2xlYW47XG4gIHNoYXJlZDogYm9vbGVhbjtcbiAgdGFyZ2V0T3JpZW50YXRpb246IHN0cmluZztcbiAgdmlkQ29uczogYW55O1xuICByZWNvcmRpbmdWaWRlb1N1cHBvcnQ6IGJvb2xlYW47XG4gIGZyYW1lUmF0ZTogbnVtYmVyO1xuICBhZG1pblBhc3Njb2RlOiBzdHJpbmc7XG4gIGV2ZW50VHlwZTogRXZlbnRUeXBlO1xuICB5b3VBcmVDb0hvc3Q6IGJvb2xlYW47XG4gIGF1dG9XYXZlOiBib29sZWFuO1xuICBmb3JjZUZ1bGxEaXNwbGF5OiBib29sZWFuO1xuICBjaGF0U2V0dGluZzogc3RyaW5nO1xuICBtZWV0aW5nRGlzcGxheVR5cGU6IHN0cmluZztcbiAgYXVkaW9TZXR0aW5nOiBzdHJpbmc7XG4gIHZpZGVvU2V0dGluZzogc3RyaW5nO1xuICBzY3JlZW5zaGFyZVNldHRpbmc6IHN0cmluZztcbiAgaFBhcmFtczogSFBhcmFtc1R5cGU7XG4gIHZQYXJhbXM6IFZQYXJhbXNUeXBlO1xuICBzY3JlZW5QYXJhbXM6IFNjcmVlblBhcmFtc1R5cGU7XG4gIGFQYXJhbXM6IEFQYXJhbXNUeXBlO1xuICBpc2xldmVsOiBzdHJpbmc7XG4gIHNob3dBbGVydD86IFNob3dBbGVydDtcbiAgZGF0YTogUmVzcG9uc2VKb2luUm9vbTtcblxuICAvLyB1cGRhdGUgZnVuY3Rpb25zXG4gIHVwZGF0ZVJ0cENhcGFiaWxpdGllczogKHJ0cENhcGFiaWxpdGllczogUnRwQ2FwYWJpbGl0aWVzIHwgbnVsbCkgPT4gdm9pZDtcbiAgdXBkYXRlUm9vbVJlY3ZJUHM6IChyb29tUmVjdklQczogc3RyaW5nW10pID0+IHZvaWQ7XG4gIHVwZGF0ZU1lZXRpbmdSb29tUGFyYW1zOiAocGFyYW1zOiBNZWV0aW5nUm9vbVBhcmFtcyB8IG51bGwpID0+IHZvaWQ7XG4gIHVwZGF0ZUl0ZW1QYWdlTGltaXQ6IChsaW1pdDogbnVtYmVyKSA9PiB2b2lkO1xuICB1cGRhdGVBdWRpb09ubHlSb29tOiAoaXNBdWRpb09ubHk6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZUFkZEZvckJhc2ljOiAoYWRkRm9yQmFzaWM6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZVNjcmVlblBhZ2VMaW1pdDogKGxpbWl0OiBudW1iZXIpID0+IHZvaWQ7XG4gIHVwZGF0ZVZpZENvbnM6IChjb25zOiBhbnkpID0+IHZvaWQ7XG4gIHVwZGF0ZUZyYW1lUmF0ZTogKGZyYW1lUmF0ZTogbnVtYmVyKSA9PiB2b2lkO1xuICB1cGRhdGVBZG1pblBhc3Njb2RlOiAocGFzc2NvZGU6IHN0cmluZykgPT4gdm9pZDtcbiAgdXBkYXRlRXZlbnRUeXBlOiAoZXZlbnRUeXBlOiBFdmVudFR5cGUpID0+IHZvaWQ7XG4gIHVwZGF0ZVlvdUFyZUNvSG9zdDogKGNvSG9zdDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlQXV0b1dhdmU6IChhdXRvV2F2ZTogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlRm9yY2VGdWxsRGlzcGxheTogKGZvcmNlRnVsbDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlQ2hhdFNldHRpbmc6IChzZXR0aW5nOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHVwZGF0ZU1lZXRpbmdEaXNwbGF5VHlwZTogKHR5cGU6IHN0cmluZykgPT4gdm9pZDtcbiAgdXBkYXRlQXVkaW9TZXR0aW5nOiAoc2V0dGluZzogc3RyaW5nKSA9PiB2b2lkO1xuICB1cGRhdGVWaWRlb1NldHRpbmc6IChzZXR0aW5nOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHVwZGF0ZVNjcmVlbnNoYXJlU2V0dGluZzogKHNldHRpbmc6IHN0cmluZykgPT4gdm9pZDtcbiAgdXBkYXRlSFBhcmFtczogKHBhcmFtczogSFBhcmFtc1R5cGUpID0+IHZvaWQ7XG4gIHVwZGF0ZVZQYXJhbXM6IChwYXJhbXM6IFZQYXJhbXNUeXBlKSA9PiB2b2lkO1xuICB1cGRhdGVTY3JlZW5QYXJhbXM6IChwYXJhbXM6IFNjcmVlblBhcmFtc1R5cGUpID0+IHZvaWQ7XG4gIHVwZGF0ZUFQYXJhbXM6IChwYXJhbXM6IEFQYXJhbXNUeXBlKSA9PiB2b2lkO1xuICB1cGRhdGVNYWluSGVpZ2h0V2lkdGg6IChoZWlnaHRXaWR0aDogbnVtYmVyKSA9PiB2b2lkO1xuICB1cGRhdGVUYXJnZXRSZXNvbHV0aW9uOiAocmVzb2x1dGlvbjogc3RyaW5nKSA9PiB2b2lkO1xuICB1cGRhdGVUYXJnZXRSZXNvbHV0aW9uSG9zdDogKHJlc29sdXRpb246IHN0cmluZykgPT4gdm9pZDtcblxuICAvLyBSZWNvcmRpbmctcmVsYXRlZCB1cGRhdGUgZnVuY3Rpb25zXG4gIHVwZGF0ZVJlY29yZGluZ0F1ZGlvUGF1c2VzTGltaXQ6IChsaW1pdDogbnVtYmVyKSA9PiB2b2lkO1xuICB1cGRhdGVSZWNvcmRpbmdBdWRpb1BhdXNlc0NvdW50OiAoY291bnQ6IG51bWJlcikgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkaW5nQXVkaW9TdXBwb3J0OiAoc3VwcG9ydDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkaW5nQXVkaW9QZW9wbGVMaW1pdDogKGxpbWl0OiBudW1iZXIpID0+IHZvaWQ7XG4gIHVwZGF0ZVJlY29yZGluZ0F1ZGlvUGFydGljaXBhbnRzVGltZUxpbWl0OiAobGltaXQ6IG51bWJlcikgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkaW5nVmlkZW9QYXVzZXNDb3VudDogKGNvdW50OiBudW1iZXIpID0+IHZvaWQ7XG4gIHVwZGF0ZVJlY29yZGluZ1ZpZGVvUGF1c2VzTGltaXQ6IChsaW1pdDogbnVtYmVyKSA9PiB2b2lkO1xuICB1cGRhdGVSZWNvcmRpbmdWaWRlb1N1cHBvcnQ6IChzdXBwb3J0OiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVSZWNvcmRpbmdWaWRlb1Blb3BsZUxpbWl0OiAobGltaXQ6IG51bWJlcikgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkaW5nVmlkZW9QYXJ0aWNpcGFudHNUaW1lTGltaXQ6IChsaW1pdDogbnVtYmVyKSA9PiB2b2lkO1xuICB1cGRhdGVSZWNvcmRpbmdBbGxQYXJ0aWNpcGFudHNTdXBwb3J0OiAoc3VwcG9ydDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkaW5nVmlkZW9QYXJ0aWNpcGFudHNTdXBwb3J0OiAoc3VwcG9ydDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkaW5nQWxsUGFydGljaXBhbnRzRnVsbFJvb21TdXBwb3J0OiAoc3VwcG9ydDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkaW5nVmlkZW9QYXJ0aWNpcGFudHNGdWxsUm9vbVN1cHBvcnQ6IChzdXBwb3J0OiBib29sZWFuKSA9PiB2b2lkO1xuICB1cGRhdGVSZWNvcmRpbmdQcmVmZXJyZWRPcmllbnRhdGlvbjogKG9yaWVudGF0aW9uOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHVwZGF0ZVJlY29yZGluZ1N1cHBvcnRGb3JPdGhlck9yaWVudGF0aW9uOiAoc3VwcG9ydDogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkaW5nTXVsdGlGb3JtYXRzU3VwcG9ydDogKHN1cHBvcnQ6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZVJlY29yZGluZ1ZpZGVvT3B0aW9uczogKG9wdGlvbnM6IHN0cmluZykgPT4gdm9pZDtcbiAgdXBkYXRlUmVjb3JkaW5nQXVkaW9PcHRpb25zOiAob3B0aW9uczogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBVcGRhdGVSb29tUGFyYW1ldGVyc0NsaWVudE9wdGlvbnMgPSB7XG4gIHBhcmFtZXRlcnM6IFVwZGF0ZVJvb21QYXJhbWV0ZXJzQ2xpZW50UGFyYW1ldGVycztcbn07XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIFVwZGF0ZVJvb21QYXJhbWV0ZXJzQ2xpZW50VHlwZSA9IChvcHRpb25zOiBVcGRhdGVSb29tUGFyYW1ldGVyc0NsaWVudE9wdGlvbnMpID0+IHZvaWQ7XG5cbi8qKlxuICogVXBkYXRlcyByb29tIHBhcmFtZXRlcnMgZm9yIHRoZSBjbGllbnQgYWZ0ZXIgam9pbmluZyBhIHJvb20gYW5kIHJlY2VpdmluZyBzZXJ2ZXItcHJvdmlkZWQgcGFyYW1ldGVycy5cbiAqXG4gKiBAcGFyYW0ge1VwZGF0ZVJvb21QYXJhbWV0ZXJzQ2xpZW50T3B0aW9uc30gb3B0aW9ucyAtIEFuIG9iamVjdCBjb250YWluaW5nOlxuICogIC0gdmFyaW91cyByb29tIHNldHRpbmdzIGFuZCBwYXJhbWV0ZXJzLFxuICogIC0gZnVuY3Rpb25zIHRvIHVwZGF0ZSB0aG9zZSBwYXJhbWV0ZXJzLlxuICpcbiAqIC0gKipTY3JlZW4vUGFnZSBTZXR0aW5nczoqKiBBZGp1c3RzIHNjcmVlbiBhbmQgaXRlbSBwYWdlIGxpbWl0cywgbWVldGluZyByb29tIHBhcmFtZXRlcnMsIGFuZCB2aWRlbyBjb25zdHJhaW50cyBiYXNlZCBvbiBzZXJ2ZXIgZGF0YS5cbiAqIC0gKipSZWNvcmRpbmcgYW5kIE1lZGlhIFNldHRpbmdzOioqIEFwcGxpZXMgYml0cmF0ZSBhbmQgZnJhbWUgcmF0ZSBhZGp1c3RtZW50cywgYmFzZWQgb24gdGhlIHRhcmdldCByZXNvbHV0aW9uIGFuZCBtZWRpYSBvcHRpb25zLlxuICogLSAqKlJvbGUtU3BlY2lmaWMgU2V0dGluZ3M6KiogQ29uZmlndXJlcyBhZG1pbiwgaG9zdCwgYW5kIGNvLWhvc3Qgc2V0dGluZ3MgZm9yIHBlcm1pc3Npb25zLCBvcmllbnRhdGlvbnMsIGFuZCByZXNvbHV0aW9ucy5cbiAqIC0gKipBbGVydGluZyoqOiBVc2VzIGBzaG93QWxlcnRgIHRvIG5vdGlmeSB0aGUgY2xpZW50IG9uIGlzc3VlcyBvciBwZXJtaXNzaW9ucyByZXN0cmljdGlvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IG9wdGlvbnMgPSB7XG4gKiAgIHBhcmFtZXRlcnM6IHtcbiAqICAgICBydHBDYXBhYmlsaXRpZXM6IG15UnRwQ2FwYWJpbGl0aWVzLFxuICogICAgIHJvb21SZWN2SVBzOiBbJzE5Mi4xNjguMS4xJ10sXG4gKiAgICAgbWVldGluZ1Jvb21QYXJhbXM6IG15TWVldGluZ1BhcmFtcyxcbiAqICAgICBpdGVtUGFnZUxpbWl0OiAzLFxuICogICAgIGF1ZGlvT25seVJvb206IGZhbHNlLFxuICogICAgIGFkZEZvckJhc2ljOiB0cnVlLFxuICogICAgIHNjcmVlblBhZ2VMaW1pdDogMixcbiAqICAgICBzaGFyZVNjcmVlblN0YXJ0ZWQ6IGZhbHNlLFxuICogICAgIHNoYXJlZDogdHJ1ZSxcbiAqICAgICB0YXJnZXRPcmllbnRhdGlvbjogJ2xhbmRzY2FwZScsXG4gKiAgICAgcmVjb3JkaW5nVmlkZW9TdXBwb3J0OiB0cnVlLFxuICogICAgIGZyYW1lUmF0ZTogMTUsXG4gKiAgICAgYWRtaW5QYXNzY29kZTogJ2FkbWluMTIzJyxcbiAqICAgICBldmVudFR5cGU6ICdjb25mZXJlbmNlJyxcbiAqICAgICB5b3VBcmVDb0hvc3Q6IGZhbHNlLFxuICogICAgIHVwZGF0ZVJ0cENhcGFiaWxpdGllczogKHJ0cCkgPT4gY29uc29sZS5sb2coJ1VwZGF0aW5nIFJUUDonLCBydHApLFxuICogICAgIHVwZGF0ZVJvb21SZWN2SVBzOiAoaXBzKSA9PiBjb25zb2xlLmxvZygnVXBkYXRpbmcgSVBzOicsIGlwcyksXG4gKiAgICAgdXBkYXRlTWVldGluZ1Jvb21QYXJhbXM6IChwYXJhbXMpID0+IGNvbnNvbGUubG9nKCdVcGRhdGluZyByb29tIHBhcmFtczonLCBwYXJhbXMpLFxuICogICAgIC8vIEFkZGl0aW9uYWwgcGFyYW1ldGVycy4uLlxuICogICB9LFxuICogfTtcbiAqXG4gKiBjb25zdCB1cGRhdGVSb29tUGFyYW1ldGVyc0NsaWVudCA9IG5ldyBVcGRhdGVSb29tUGFyYW1ldGVyc0NsaWVudCh2aWRlb0NhcHR1cmVDb25zdHJhaW50cywgaFBhcmFtcywgdlBhcmFtcywgc2NyZWVuUGFyYW1zLCBhUGFyYW1zKTtcbiAqIHVwZGF0ZVJvb21QYXJhbWV0ZXJzQ2xpZW50LnVwZGF0ZVJvb21QYXJhbWV0ZXJzQ2xpZW50KG9wdGlvbnMpO1xuICogYGBgXG4gKlxuICogVGhpcyBleGFtcGxlIGRlbW9uc3RyYXRlcyBzZXR0aW5nIHVwIHJvb20gcGFyYW1ldGVycyBmb3IgYSBjb25mZXJlbmNlLXR5cGUgcm9vbSB3aXRoIHJlY29yZGluZyBzdXBwb3J0IGFuZCBjdXN0b20gdXBkYXRlIGZ1bmN0aW9ucy5cbiAqL1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVXBkYXRlUm9vbVBhcmFtZXRlcnNDbGllbnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZpZGVvQ2FwdHVyZUNvbnN0cmFpbnRzOiBWaWRlb0NhcHR1cmVDb25zdHJhaW50cyxcbiAgICBwcml2YXRlIGhQYXJhbXM6IEhQYXJhbXMsXG4gICAgcHJpdmF0ZSB2UGFyYW1zOiBWUGFyYW1zLFxuICAgIHByaXZhdGUgc2NyZWVuUGFyYW1zOiBTY3JlZW5QYXJhbXMsXG4gICAgcHJpdmF0ZSBhUGFyYW1zOiBBUGFyYW1zLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBSb29tIFBhcmFtZXRlcnMgQ2xpZW50IGFmdGVyIHRoZSB1c2VyIGhhcyBqb2luZWQgdGhlIHJvb20gYW5kIHRoZSByb29tIHBhcmFtZXRlcnMgaGF2ZSBiZWVuIHJlY2VpdmVkIGZyb20gdGhlIHNlcnZlci5cbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtZXRlcnMgLSBBbiBvYmplY3QgY29udGFpbmluZyB2YXJpb3VzIHBhcmFtZXRlcnMgYW5kIHVwZGF0ZSBmdW5jdGlvbnMuXG4gICAqL1xuICB1cGRhdGVSb29tUGFyYW1ldGVyc0NsaWVudCA9ICh7IHBhcmFtZXRlcnMgfTogVXBkYXRlUm9vbVBhcmFtZXRlcnNDbGllbnRPcHRpb25zKTogdm9pZCA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgc2NyZWVuUGFnZUxpbWl0LFxuICAgICAgICBzaGFyZVNjcmVlblN0YXJ0ZWQsXG4gICAgICAgIHNoYXJlZCxcblxuICAgICAgICBoUGFyYW1zLFxuICAgICAgICB2UGFyYW1zLFxuICAgICAgICBmcmFtZVJhdGUsXG5cbiAgICAgICAgaXNsZXZlbCxcbiAgICAgICAgc2hvd0FsZXJ0LFxuICAgICAgICBkYXRhLFxuXG4gICAgICAgIC8vdXBkYXRlc1xuICAgICAgICB1cGRhdGVSdHBDYXBhYmlsaXRpZXMsXG4gICAgICAgIHVwZGF0ZVJvb21SZWN2SVBzLFxuICAgICAgICB1cGRhdGVNZWV0aW5nUm9vbVBhcmFtcyxcbiAgICAgICAgdXBkYXRlSXRlbVBhZ2VMaW1pdCxcbiAgICAgICAgdXBkYXRlQXVkaW9Pbmx5Um9vbSxcbiAgICAgICAgdXBkYXRlU2NyZWVuUGFnZUxpbWl0LFxuICAgICAgICB1cGRhdGVWaWRDb25zLFxuICAgICAgICB1cGRhdGVGcmFtZVJhdGUsXG4gICAgICAgIHVwZGF0ZUFkbWluUGFzc2NvZGUsXG4gICAgICAgIHVwZGF0ZUV2ZW50VHlwZSxcbiAgICAgICAgdXBkYXRlWW91QXJlQ29Ib3N0LFxuICAgICAgICB1cGRhdGVBdXRvV2F2ZSxcbiAgICAgICAgdXBkYXRlRm9yY2VGdWxsRGlzcGxheSxcbiAgICAgICAgdXBkYXRlQ2hhdFNldHRpbmcsXG4gICAgICAgIHVwZGF0ZU1lZXRpbmdEaXNwbGF5VHlwZSxcbiAgICAgICAgdXBkYXRlQXVkaW9TZXR0aW5nLFxuICAgICAgICB1cGRhdGVWaWRlb1NldHRpbmcsXG4gICAgICAgIHVwZGF0ZVNjcmVlbnNoYXJlU2V0dGluZyxcbiAgICAgICAgdXBkYXRlSFBhcmFtcyxcbiAgICAgICAgdXBkYXRlVlBhcmFtcyxcbiAgICAgICAgdXBkYXRlU2NyZWVuUGFyYW1zLFxuICAgICAgICB1cGRhdGVBUGFyYW1zLFxuICAgICAgICB1cGRhdGVUYXJnZXRSZXNvbHV0aW9uLFxuICAgICAgICB1cGRhdGVUYXJnZXRSZXNvbHV0aW9uSG9zdCxcblxuICAgICAgICAvLyBSZWNvcmRpbmcgdXBkYXRlc1xuICAgICAgICB1cGRhdGVSZWNvcmRpbmdBdWRpb1BhdXNlc0xpbWl0LFxuICAgICAgICB1cGRhdGVSZWNvcmRpbmdBdWRpb1BhdXNlc0NvdW50LFxuICAgICAgICB1cGRhdGVSZWNvcmRpbmdBdWRpb1N1cHBvcnQsXG4gICAgICAgIHVwZGF0ZVJlY29yZGluZ0F1ZGlvUGVvcGxlTGltaXQsXG4gICAgICAgIHVwZGF0ZVJlY29yZGluZ0F1ZGlvUGFydGljaXBhbnRzVGltZUxpbWl0LFxuICAgICAgICB1cGRhdGVSZWNvcmRpbmdWaWRlb1BhdXNlc0NvdW50LFxuICAgICAgICB1cGRhdGVSZWNvcmRpbmdWaWRlb1BhdXNlc0xpbWl0LFxuICAgICAgICB1cGRhdGVSZWNvcmRpbmdWaWRlb1N1cHBvcnQsXG4gICAgICAgIHVwZGF0ZVJlY29yZGluZ1ZpZGVvUGVvcGxlTGltaXQsXG4gICAgICAgIHVwZGF0ZVJlY29yZGluZ1ZpZGVvUGFydGljaXBhbnRzVGltZUxpbWl0LFxuICAgICAgICB1cGRhdGVSZWNvcmRpbmdBbGxQYXJ0aWNpcGFudHNTdXBwb3J0LFxuICAgICAgICB1cGRhdGVSZWNvcmRpbmdWaWRlb1BhcnRpY2lwYW50c1N1cHBvcnQsXG4gICAgICAgIHVwZGF0ZVJlY29yZGluZ0FsbFBhcnRpY2lwYW50c0Z1bGxSb29tU3VwcG9ydCxcbiAgICAgICAgdXBkYXRlUmVjb3JkaW5nVmlkZW9QYXJ0aWNpcGFudHNGdWxsUm9vbVN1cHBvcnQsXG4gICAgICAgIHVwZGF0ZVJlY29yZGluZ1ByZWZlcnJlZE9yaWVudGF0aW9uLFxuICAgICAgICB1cGRhdGVSZWNvcmRpbmdTdXBwb3J0Rm9yT3RoZXJPcmllbnRhdGlvbixcbiAgICAgICAgdXBkYXRlUmVjb3JkaW5nTXVsdGlGb3JtYXRzU3VwcG9ydCxcbiAgICAgICAgdXBkYXRlUmVjb3JkaW5nVmlkZW9PcHRpb25zLFxuICAgICAgICB1cGRhdGVSZWNvcmRpbmdBdWRpb09wdGlvbnMsXG4gICAgICAgIHVwZGF0ZU1haW5IZWlnaHRXaWR0aCxcbiAgICAgIH0gPSBwYXJhbWV0ZXJzO1xuXG4gICAgICBpZiAoZGF0YS5ydHBDYXBhYmlsaXRpZXMgPT0gbnVsbCkge1xuICAgICAgICBsZXQgcmVhc29uID0gZGF0YS5yZWFzb24gfHwgJyc7XG4gICAgICAgIHNob3dBbGVydD8uKHtcbiAgICAgICAgICBtZXNzYWdlOiAnU29ycnksIHlvdSBhcmUgbm90IGFsbG93ZWQgdG8gam9pbiB0aGlzIHJvb20uICcgKyByZWFzb24sXG4gICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFVwZGF0ZSBhbGwgdmFsdWVzXG4gICAgICB1cGRhdGVSdHBDYXBhYmlsaXRpZXMoZGF0YS5ydHBDYXBhYmlsaXRpZXMpO1xuICAgICAgdXBkYXRlQWRtaW5QYXNzY29kZShkYXRhLnNlY3VyZUNvZGUpO1xuICAgICAgdXBkYXRlUm9vbVJlY3ZJUHMoZGF0YS5yb29tUmVjdklQcyk7XG4gICAgICB1cGRhdGVNZWV0aW5nUm9vbVBhcmFtcyhkYXRhLm1lZXRpbmdSb29tUGFyYW1zKTtcblxuICAgICAgLy8gVXBkYXRlIHJlY29yZGluZyB2YWx1ZXNcbiAgICAgIHVwZGF0ZVJlY29yZGluZ0F1ZGlvUGF1c2VzTGltaXQoZGF0YS5yZWNvcmRpbmdQYXJhbXMucmVjb3JkaW5nQXVkaW9QYXVzZXNMaW1pdCk7XG4gICAgICB1cGRhdGVSZWNvcmRpbmdBdWRpb1BhdXNlc0NvdW50KGRhdGEucmVjb3JkaW5nUGFyYW1zLnJlY29yZGluZ0F1ZGlvUGF1c2VzQ291bnQhKTtcbiAgICAgIHVwZGF0ZVJlY29yZGluZ0F1ZGlvU3VwcG9ydChkYXRhLnJlY29yZGluZ1BhcmFtcy5yZWNvcmRpbmdBdWRpb1N1cHBvcnQpO1xuICAgICAgdXBkYXRlUmVjb3JkaW5nQXVkaW9QZW9wbGVMaW1pdChkYXRhLnJlY29yZGluZ1BhcmFtcy5yZWNvcmRpbmdBdWRpb1Blb3BsZUxpbWl0KTtcbiAgICAgIHVwZGF0ZVJlY29yZGluZ0F1ZGlvUGFydGljaXBhbnRzVGltZUxpbWl0KFxuICAgICAgICBkYXRhLnJlY29yZGluZ1BhcmFtcy5yZWNvcmRpbmdBdWRpb1BhcnRpY2lwYW50c1RpbWVMaW1pdCxcbiAgICAgICk7XG4gICAgICB1cGRhdGVSZWNvcmRpbmdWaWRlb1BhdXNlc0NvdW50KGRhdGEucmVjb3JkaW5nUGFyYW1zLnJlY29yZGluZ1ZpZGVvUGF1c2VzQ291bnQhKTtcbiAgICAgIHVwZGF0ZVJlY29yZGluZ1ZpZGVvUGF1c2VzTGltaXQoZGF0YS5yZWNvcmRpbmdQYXJhbXMucmVjb3JkaW5nVmlkZW9QYXVzZXNMaW1pdCk7XG4gICAgICB1cGRhdGVSZWNvcmRpbmdWaWRlb1N1cHBvcnQoZGF0YS5yZWNvcmRpbmdQYXJhbXMucmVjb3JkaW5nVmlkZW9TdXBwb3J0KTtcbiAgICAgIHVwZGF0ZVJlY29yZGluZ1ZpZGVvUGVvcGxlTGltaXQoZGF0YS5yZWNvcmRpbmdQYXJhbXMucmVjb3JkaW5nVmlkZW9QZW9wbGVMaW1pdCk7XG4gICAgICB1cGRhdGVSZWNvcmRpbmdWaWRlb1BhcnRpY2lwYW50c1RpbWVMaW1pdChcbiAgICAgICAgZGF0YS5yZWNvcmRpbmdQYXJhbXMucmVjb3JkaW5nVmlkZW9QYXJ0aWNpcGFudHNUaW1lTGltaXQsXG4gICAgICApO1xuICAgICAgdXBkYXRlUmVjb3JkaW5nQWxsUGFydGljaXBhbnRzU3VwcG9ydChkYXRhLnJlY29yZGluZ1BhcmFtcy5yZWNvcmRpbmdBbGxQYXJ0aWNpcGFudHNTdXBwb3J0KTtcbiAgICAgIHVwZGF0ZVJlY29yZGluZ1ZpZGVvUGFydGljaXBhbnRzU3VwcG9ydChcbiAgICAgICAgZGF0YS5yZWNvcmRpbmdQYXJhbXMucmVjb3JkaW5nVmlkZW9QYXJ0aWNpcGFudHNTdXBwb3J0LFxuICAgICAgKTtcbiAgICAgIHVwZGF0ZVJlY29yZGluZ0FsbFBhcnRpY2lwYW50c0Z1bGxSb29tU3VwcG9ydChcbiAgICAgICAgZGF0YS5yZWNvcmRpbmdQYXJhbXMucmVjb3JkaW5nQWxsUGFydGljaXBhbnRzRnVsbFJvb21TdXBwb3J0LFxuICAgICAgKTtcbiAgICAgIHVwZGF0ZVJlY29yZGluZ1ZpZGVvUGFydGljaXBhbnRzRnVsbFJvb21TdXBwb3J0KFxuICAgICAgICBkYXRhLnJlY29yZGluZ1BhcmFtcy5yZWNvcmRpbmdWaWRlb1BhcnRpY2lwYW50c0Z1bGxSb29tU3VwcG9ydCxcbiAgICAgICk7XG4gICAgICB1cGRhdGVSZWNvcmRpbmdQcmVmZXJyZWRPcmllbnRhdGlvbihkYXRhLnJlY29yZGluZ1BhcmFtcy5yZWNvcmRpbmdQcmVmZXJyZWRPcmllbnRhdGlvbik7XG4gICAgICB1cGRhdGVSZWNvcmRpbmdTdXBwb3J0Rm9yT3RoZXJPcmllbnRhdGlvbihcbiAgICAgICAgZGF0YS5yZWNvcmRpbmdQYXJhbXMucmVjb3JkaW5nU3VwcG9ydEZvck90aGVyT3JpZW50YXRpb24sXG4gICAgICApO1xuICAgICAgdXBkYXRlUmVjb3JkaW5nTXVsdGlGb3JtYXRzU3VwcG9ydChkYXRhLnJlY29yZGluZ1BhcmFtcy5yZWNvcmRpbmdNdWx0aUZvcm1hdHNTdXBwb3J0KTtcblxuICAgICAgLy8gVXBkYXRlIG90aGVyIG1lZXRpbmcgcm9vbSBzZXR0aW5nc1xuICAgICAgdXBkYXRlSXRlbVBhZ2VMaW1pdChkYXRhLm1lZXRpbmdSb29tUGFyYW1zLml0ZW1QYWdlTGltaXQpO1xuICAgICAgdXBkYXRlRXZlbnRUeXBlKGRhdGEubWVldGluZ1Jvb21QYXJhbXMudHlwZSk7XG5cbiAgICAgIGlmIChkYXRhLm1lZXRpbmdSb29tUGFyYW1zLnR5cGUgPT0gJ2NoYXQnICYmIGlzbGV2ZWwgIT0gJzInKSB7XG4gICAgICAgIHVwZGF0ZVlvdUFyZUNvSG9zdCh0cnVlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKFsnY2hhdCcsICdicm9hZGNhc3QnXS5pbmNsdWRlcyhkYXRhLm1lZXRpbmdSb29tUGFyYW1zLnR5cGUpKSB7XG4gICAgICAgIHVwZGF0ZUF1dG9XYXZlKGZhbHNlKTtcbiAgICAgICAgdXBkYXRlTWVldGluZ0Rpc3BsYXlUeXBlKCdhbGwnKTtcbiAgICAgICAgdXBkYXRlRm9yY2VGdWxsRGlzcGxheSh0cnVlKTtcbiAgICAgICAgdXBkYXRlQ2hhdFNldHRpbmcoJ2FsbG93Jyk7XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZUF1ZGlvU2V0dGluZyhkYXRhLm1lZXRpbmdSb29tUGFyYW1zLmF1ZGlvU2V0dGluZyk7XG4gICAgICB1cGRhdGVWaWRlb1NldHRpbmcoZGF0YS5tZWV0aW5nUm9vbVBhcmFtcy52aWRlb1NldHRpbmcpO1xuICAgICAgdXBkYXRlU2NyZWVuc2hhcmVTZXR0aW5nKGRhdGEubWVldGluZ1Jvb21QYXJhbXMuc2NyZWVuc2hhcmVTZXR0aW5nKTtcbiAgICAgIHVwZGF0ZUNoYXRTZXR0aW5nKGRhdGEubWVldGluZ1Jvb21QYXJhbXMuY2hhdFNldHRpbmcpO1xuXG4gICAgICB1cGRhdGVBdWRpb09ubHlSb29tKGRhdGEubWVldGluZ1Jvb21QYXJhbXMubWVkaWFUeXBlICE9ICd2aWRlbycpO1xuXG4gICAgICBpZiAoZGF0YS5tZWV0aW5nUm9vbVBhcmFtcy50eXBlID09ICdjaGF0JyB8fCBkYXRhLm1lZXRpbmdSb29tUGFyYW1zLnR5cGUgPT0gJ2Jyb2FkY2FzdCcpIHtcbiAgICAgICAgaWYgKGRhdGEubWVldGluZ1Jvb21QYXJhbXMudHlwZSA9PSAnYnJvYWRjYXN0Jykge1xuICAgICAgICAgIHVwZGF0ZUl0ZW1QYWdlTGltaXQoMSk7XG4gICAgICAgICAgdXBkYXRlUmVjb3JkaW5nVmlkZW9PcHRpb25zKCdtYWluU2NyZWVuJyk7XG4gICAgICAgICAgdXBkYXRlUmVjb3JkaW5nQXVkaW9PcHRpb25zKCdob3N0Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXBkYXRlSXRlbVBhZ2VMaW1pdCgyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5tZWV0aW5nUm9vbVBhcmFtcy50eXBlID09ICdjb25mZXJlbmNlJyAmJiAoc2hhcmVkIHx8IHNoYXJlU2NyZWVuU3RhcnRlZCkpIHtcbiAgICAgICAgdXBkYXRlTWFpbkhlaWdodFdpZHRoKDEwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cGRhdGVNYWluSGVpZ2h0V2lkdGgoMCk7XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZVNjcmVlblBhZ2VMaW1pdChNYXRoLm1pbihkYXRhLm1lZXRpbmdSb29tUGFyYW1zLml0ZW1QYWdlTGltaXQsIHNjcmVlblBhZ2VMaW1pdCkpO1xuXG4gICAgICAvLyBBc3NpZ24gbWVkaWEgY2FwdHVyZSBjb25zdHJhaW50cyBiYXNlZCBvbiB0aGUgdXNlcidzIHJvbGUgYW5kIHJvb20gc2V0dGluZ3NcbiAgICAgIGxldCB0YXJnZXRPcmllbnRhdGlvbiA9XG4gICAgICAgIGlzbGV2ZWwgPT0gJzInXG4gICAgICAgICAgPyBkYXRhLm1lZXRpbmdSb29tUGFyYW1zLnRhcmdldE9yaWVudGF0aW9uSG9zdFxuICAgICAgICAgIDogZGF0YS5tZWV0aW5nUm9vbVBhcmFtcy50YXJnZXRPcmllbnRhdGlvbjtcbiAgICAgIGxldCB0YXJnZXRSZXNvbHV0aW9uID1cbiAgICAgICAgaXNsZXZlbCA9PSAnMidcbiAgICAgICAgICA/IGRhdGEubWVldGluZ1Jvb21QYXJhbXMudGFyZ2V0UmVzb2x1dGlvbkhvc3RcbiAgICAgICAgICA6IGRhdGEubWVldGluZ1Jvb21QYXJhbXMudGFyZ2V0UmVzb2x1dGlvbjtcblxuICAgICAgbGV0IHZpZENvbnM6IFZpZENvbnM7XG4gICAgICBpZiAodGFyZ2V0T3JpZW50YXRpb24gPT0gJ2xhbmRzY2FwZScpIHtcbiAgICAgICAgdmlkQ29ucyA9XG4gICAgICAgICAgdGFyZ2V0UmVzb2x1dGlvbiA9PSAnaGQnXG4gICAgICAgICAgICA/IHRoaXMudmlkZW9DYXB0dXJlQ29uc3RyYWludHMuaGRDb25zXG4gICAgICAgICAgICA6IHRhcmdldFJlc29sdXRpb24gPT0gJ1FuSEQnXG4gICAgICAgICAgICA/IHRoaXMudmlkZW9DYXB0dXJlQ29uc3RyYWludHMuUW5IRENvbnNcbiAgICAgICAgICAgIDogdGFyZ2V0UmVzb2x1dGlvbiA9PSAnZmhkJ1xuICAgICAgICAgICAgPyB0aGlzLnZpZGVvQ2FwdHVyZUNvbnN0cmFpbnRzLmZoZENvbnNcbiAgICAgICAgICAgIDogdGFyZ2V0UmVzb2x1dGlvbiA9PSAncWhkJ1xuICAgICAgICAgICAgPyB0aGlzLnZpZGVvQ2FwdHVyZUNvbnN0cmFpbnRzLnFoZENvbnNcbiAgICAgICAgICAgIDogdGhpcy52aWRlb0NhcHR1cmVDb25zdHJhaW50cy5zZENvbnM7XG4gICAgICB9IGVsc2UgaWYgKHRhcmdldE9yaWVudGF0aW9uID09ICduZXV0cmFsJykge1xuICAgICAgICB2aWRDb25zID1cbiAgICAgICAgICB0YXJnZXRSZXNvbHV0aW9uID09ICdoZCdcbiAgICAgICAgICAgID8gdGhpcy52aWRlb0NhcHR1cmVDb25zdHJhaW50cy5oZENvbnNOZXVcbiAgICAgICAgICAgIDogdGFyZ2V0UmVzb2x1dGlvbiA9PSAnUW5IRCdcbiAgICAgICAgICAgID8gdGhpcy52aWRlb0NhcHR1cmVDb25zdHJhaW50cy5RbkhEQ29uc05ldVxuICAgICAgICAgICAgOiB0YXJnZXRSZXNvbHV0aW9uID09ICdmaGQnXG4gICAgICAgICAgICA/IHRoaXMudmlkZW9DYXB0dXJlQ29uc3RyYWludHMuZmhkQ29uc05ldVxuICAgICAgICAgICAgOiB0YXJnZXRSZXNvbHV0aW9uID09ICdxaGQnXG4gICAgICAgICAgICA/IHRoaXMudmlkZW9DYXB0dXJlQ29uc3RyYWludHMucWhkQ29uc05ldVxuICAgICAgICAgICAgOiB0aGlzLnZpZGVvQ2FwdHVyZUNvbnN0cmFpbnRzLnNkQ29uc05ldTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZpZENvbnMgPVxuICAgICAgICAgIHRhcmdldFJlc29sdXRpb24gPT0gJ2hkJ1xuICAgICAgICAgICAgPyB0aGlzLnZpZGVvQ2FwdHVyZUNvbnN0cmFpbnRzLmhkQ29uc1BvcnRcbiAgICAgICAgICAgIDogdGFyZ2V0UmVzb2x1dGlvbiA9PSAnUW5IRCdcbiAgICAgICAgICAgID8gdGhpcy52aWRlb0NhcHR1cmVDb25zdHJhaW50cy5RbkhEQ29uc1BvcnRcbiAgICAgICAgICAgIDogdGFyZ2V0UmVzb2x1dGlvbiA9PSAnZmhkJ1xuICAgICAgICAgICAgPyB0aGlzLnZpZGVvQ2FwdHVyZUNvbnN0cmFpbnRzLmZoZENvbnNQb3J0XG4gICAgICAgICAgICA6IHRhcmdldFJlc29sdXRpb24gPT0gJ3FoZCdcbiAgICAgICAgICAgID8gdGhpcy52aWRlb0NhcHR1cmVDb25zdHJhaW50cy5xaGRDb25zUG9ydFxuICAgICAgICAgICAgOiB0aGlzLnZpZGVvQ2FwdHVyZUNvbnN0cmFpbnRzLnNkQ29uc1BvcnQ7XG4gICAgICB9XG5cbiAgICAgIGxldCBmcmFtZVJhdGVWYWx1ZSA9IGZyYW1lUmF0ZSA/IGZyYW1lUmF0ZSA6IDEwO1xuXG4gICAgICBsZXQgdlBhcmFtc1ZhbHVlID0geyAuLi52UGFyYW1zIH07XG4gICAgICBsZXQgaFBhcmFtc1ZhbHVlID0geyAuLi5oUGFyYW1zIH07XG4gICAgICBpZiAoT2JqZWN0LmtleXModlBhcmFtc1ZhbHVlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdlBhcmFtc1ZhbHVlID0gdGhpcy52UGFyYW1zLnZQYXJhbXM7XG4gICAgICB9XG4gICAgICBpZiAoT2JqZWN0LmtleXMoaFBhcmFtc1ZhbHVlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaFBhcmFtc1ZhbHVlID0gdGhpcy5oUGFyYW1zLmhQYXJhbXM7XG4gICAgICB9XG5cbiAgICAgIGlmICh0YXJnZXRSZXNvbHV0aW9uID09ICdoZCcpIHtcbiAgICAgICAgZnJhbWVSYXRlVmFsdWUgPSB0aGlzLnZpZGVvQ2FwdHVyZUNvbnN0cmFpbnRzLmhkRnJhbWVSYXRlO1xuXG4gICAgICAgIHZQYXJhbXNWYWx1ZS5lbmNvZGluZ3MuZm9yRWFjaCgoZW5jb2Rpbmc6IFBhcnRpYWw8VlBhcmFtc1R5cGVbJ2VuY29kaW5ncyddWzBdPikgPT4ge1xuICAgICAgICAgIGVuY29kaW5nLm1heEJpdHJhdGUgJiYgKGVuY29kaW5nLm1heEJpdHJhdGUgKj0gNCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGhQYXJhbXNWYWx1ZS5lbmNvZGluZ3MuZm9yRWFjaCgoZW5jb2Rpbmc6IFBhcnRpYWw8SFBhcmFtc1R5cGVbJ2VuY29kaW5ncyddWzBdPikgPT4ge1xuICAgICAgICAgIGVuY29kaW5nLm1heEJpdHJhdGUgJiYgKGVuY29kaW5nLm1heEJpdHJhdGUgKj0gNCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICh0YXJnZXRSZXNvbHV0aW9uID09ICdRbkhEJykge1xuICAgICAgICBmcmFtZVJhdGVWYWx1ZSA9IHRoaXMudmlkZW9DYXB0dXJlQ29uc3RyYWludHMuUW5IREZyYW1lUmF0ZTtcbiAgICAgICAgdlBhcmFtc1ZhbHVlLmVuY29kaW5ncy5mb3JFYWNoKChlbmNvZGluZzogUGFydGlhbDxWUGFyYW1zVHlwZVsnZW5jb2RpbmdzJ11bMF0+KSA9PiB7XG4gICAgICAgICAgZW5jb2RpbmcubWF4Qml0cmF0ZSAmJiAoZW5jb2RpbmcubWF4Qml0cmF0ZSAqPSAwLjI1KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaFBhcmFtc1ZhbHVlLmVuY29kaW5ncy5mb3JFYWNoKChlbmNvZGluZzogUGFydGlhbDxIUGFyYW1zVHlwZVsnZW5jb2RpbmdzJ11bMF0+KSA9PiB7XG4gICAgICAgICAgZW5jb2RpbmcubWF4Qml0cmF0ZSAmJiAoZW5jb2RpbmcubWF4Qml0cmF0ZSAqPSAwLjI1KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaFBhcmFtc1ZhbHVlLmNvZGVjT3B0aW9ucyEudmlkZW9Hb29nbGVTdGFydEJpdHJhdGUhICo9IDAuMjU7XG4gICAgICAgIHZQYXJhbXNWYWx1ZS5jb2RlY09wdGlvbnMhLnZpZGVvR29vZ2xlU3RhcnRCaXRyYXRlISAqPSAwLjI1O1xuICAgICAgfSBlbHNlIGlmICh0YXJnZXRSZXNvbHV0aW9uID09ICdmaGQnKSB7XG4gICAgICAgIGZyYW1lUmF0ZVZhbHVlID0gdGhpcy52aWRlb0NhcHR1cmVDb25zdHJhaW50cy5maGRGcmFtZVJhdGU7XG4gICAgICAgIHZQYXJhbXNWYWx1ZS5lbmNvZGluZ3MuZm9yRWFjaCgoZW5jb2Rpbmc6IFBhcnRpYWw8VlBhcmFtc1R5cGVbJ2VuY29kaW5ncyddWzBdPikgPT4ge1xuICAgICAgICAgIGVuY29kaW5nLm1heEJpdHJhdGUgJiYgKGVuY29kaW5nLm1heEJpdHJhdGUgKj0gOCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGhQYXJhbXNWYWx1ZS5lbmNvZGluZ3MuZm9yRWFjaCgoZW5jb2Rpbmc6IFBhcnRpYWw8SFBhcmFtc1R5cGVbJ2VuY29kaW5ncyddWzBdPikgPT4ge1xuICAgICAgICAgIGVuY29kaW5nLm1heEJpdHJhdGUgJiYgKGVuY29kaW5nLm1heEJpdHJhdGUgKj0gOCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGhQYXJhbXNWYWx1ZS5jb2RlY09wdGlvbnMhLnZpZGVvR29vZ2xlU3RhcnRCaXRyYXRlISAqPSA4O1xuICAgICAgICB2UGFyYW1zVmFsdWUuY29kZWNPcHRpb25zIS52aWRlb0dvb2dsZVN0YXJ0Qml0cmF0ZSEgKj0gODtcbiAgICAgIH0gZWxzZSBpZiAodGFyZ2V0UmVzb2x1dGlvbiA9PSAncWhkJykge1xuICAgICAgICBmcmFtZVJhdGVWYWx1ZSA9IHRoaXMudmlkZW9DYXB0dXJlQ29uc3RyYWludHMucWhkRnJhbWVSYXRlO1xuICAgICAgICB2UGFyYW1zVmFsdWUuZW5jb2RpbmdzLmZvckVhY2goKGVuY29kaW5nOiBQYXJ0aWFsPFZQYXJhbXNUeXBlWydlbmNvZGluZ3MnXVswXT4pID0+IHtcbiAgICAgICAgICBlbmNvZGluZy5tYXhCaXRyYXRlICYmIChlbmNvZGluZy5tYXhCaXRyYXRlICo9IDE2KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaFBhcmFtc1ZhbHVlLmVuY29kaW5ncy5mb3JFYWNoKChlbmNvZGluZzogUGFydGlhbDxIUGFyYW1zVHlwZVsnZW5jb2RpbmdzJ11bMF0+KSA9PiB7XG4gICAgICAgICAgZW5jb2RpbmcubWF4Qml0cmF0ZSAmJiAoZW5jb2RpbmcubWF4Qml0cmF0ZSAqPSAxNik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGhQYXJhbXNWYWx1ZS5jb2RlY09wdGlvbnMhLnZpZGVvR29vZ2xlU3RhcnRCaXRyYXRlISAqPSAxNjtcbiAgICAgICAgdlBhcmFtc1ZhbHVlLmNvZGVjT3B0aW9ucyEudmlkZW9Hb29nbGVTdGFydEJpdHJhdGUhICo9IDE2O1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5yZWNvcmRpbmdQYXJhbXMucmVjb3JkaW5nVmlkZW9TdXBwb3J0KSB7XG4gICAgICAgIHZQYXJhbXNWYWx1ZS5lbmNvZGluZ3MuZm9yRWFjaCgoZW5jb2Rpbmc6IFBhcnRpYWw8VlBhcmFtc1R5cGVbJ2VuY29kaW5ncyddWzBdPikgPT4ge1xuICAgICAgICAgIGVuY29kaW5nLm1heEJpdHJhdGUgJiYgKGVuY29kaW5nLm1heEJpdHJhdGUgKj0gMS4yKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaFBhcmFtc1ZhbHVlLmVuY29kaW5ncy5mb3JFYWNoKChlbmNvZGluZzogUGFydGlhbDxIUGFyYW1zVHlwZVsnZW5jb2RpbmdzJ11bMF0+KSA9PiB7XG4gICAgICAgICAgZW5jb2RpbmcubWF4Qml0cmF0ZSAmJiAoZW5jb2RpbmcubWF4Qml0cmF0ZSAqPSAxLjIpO1xuICAgICAgICB9KTtcblxuICAgICAgICBoUGFyYW1zVmFsdWUuY29kZWNPcHRpb25zIS52aWRlb0dvb2dsZVN0YXJ0Qml0cmF0ZSEgKj0gMS4yO1xuICAgICAgICB2UGFyYW1zVmFsdWUuY29kZWNPcHRpb25zIS52aWRlb0dvb2dsZVN0YXJ0Qml0cmF0ZSEgKj0gMS4yO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGVWaWRDb25zKHZpZENvbnMpO1xuICAgICAgdXBkYXRlRnJhbWVSYXRlKGZyYW1lUmF0ZVZhbHVlKTtcbiAgICAgIHVwZGF0ZUhQYXJhbXMoaFBhcmFtc1ZhbHVlKTtcbiAgICAgIHVwZGF0ZVZQYXJhbXModlBhcmFtc1ZhbHVlKTtcbiAgICAgIHVwZGF0ZVNjcmVlblBhcmFtcyh0aGlzLnNjcmVlblBhcmFtcy5zY3JlZW5QYXJhbXMpO1xuICAgICAgdXBkYXRlQVBhcmFtcyh0aGlzLmFQYXJhbXMuYVBhcmFtcyk7XG4gICAgICB1cGRhdGVUYXJnZXRSZXNvbHV0aW9uKGRhdGEubWVldGluZ1Jvb21QYXJhbXMudGFyZ2V0UmVzb2x1dGlvbik7XG4gICAgICB1cGRhdGVUYXJnZXRSZXNvbHV0aW9uSG9zdChkYXRhLm1lZXRpbmdSb29tUGFyYW1zLnRhcmdldFJlc29sdXRpb25Ib3N0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coJ3VwZGF0ZVJvb21QYXJhbWV0ZXJzQ2xpZW50IGVycm9yJywgZXJyb3IpO1xuICAgICAgcGFyYW1ldGVycy5zaG93QWxlcnQ/Lih7XG4gICAgICAgIG1lc3NhZ2U6IChlcnJvciBhcyBFcnJvcikubWVzc2FnZSxcbiAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuIl19
|