mediasfu-angular 1.0.2 → 2.0.0
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 +678 -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,87 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* The `VParams` service provides encoding parameters for video in a media session using the Mediasoup library.
|
|
5
|
-
* It includes a default configuration for RTP encoding parameters optimized for video streaming.
|
|
6
|
-
*
|
|
7
|
-
* @service
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* import { VParams } from './path/to/v-params.service';
|
|
11
|
-
*
|
|
12
|
-
* constructor(private vParamsService: VParams) {
|
|
13
|
-
* console.log(this.vParamsService.vParams);
|
|
14
|
-
* }
|
|
15
|
-
* ```
|
|
16
|
-
*
|
|
17
|
-
* @typedef VParamsType
|
|
18
|
-
* @property {RtpEncodingParameters[]} encodings - Array of RTP encoding parameters for video.
|
|
19
|
-
* @property {ProducerCodecOptions} [codecOptions] - Optional codec options for the video producer.
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* const vParams: VParamsType = {
|
|
23
|
-
* encodings: [
|
|
24
|
-
* {
|
|
25
|
-
* rid: 'r3',
|
|
26
|
-
* maxBitrate: 200000, // Max bitrate for this encoding (in bps)
|
|
27
|
-
* scalabilityMode: 'L1T3', // Scalability mode for encoding
|
|
28
|
-
* scaleResolutionDownBy: 4.0, // Scale down resolution by this factor
|
|
29
|
-
* },
|
|
30
|
-
* {
|
|
31
|
-
* rid: 'r4',
|
|
32
|
-
* maxBitrate: 400000,
|
|
33
|
-
* scalabilityMode: 'L1T3',
|
|
34
|
-
* scaleResolutionDownBy: 2.0,
|
|
35
|
-
* },
|
|
36
|
-
* {
|
|
37
|
-
* rid: 'r5',
|
|
38
|
-
* maxBitrate: 800000,
|
|
39
|
-
* scalabilityMode: 'L1T3',
|
|
40
|
-
* },
|
|
41
|
-
* ],
|
|
42
|
-
* codecOptions: {
|
|
43
|
-
* videoGoogleStartBitrate: 320, // Initial bitrate for the Google codec
|
|
44
|
-
* },
|
|
45
|
-
* };
|
|
46
|
-
*
|
|
47
|
-
* @remarks
|
|
48
|
-
* The default `vParams` includes multiple encoding configurations with different maximum bitrates,
|
|
49
|
-
* allowing for adaptive streaming based on network conditions and participant capabilities.
|
|
50
|
-
*
|
|
51
|
-
* @returns {VParamsType} The video parameters for use in video producer configuration.
|
|
52
|
-
*/
|
|
53
|
-
export class VParams {
|
|
54
|
-
vParams = {
|
|
55
|
-
encodings: [
|
|
56
|
-
{
|
|
57
|
-
rid: 'r3',
|
|
58
|
-
maxBitrate: 200000,
|
|
59
|
-
scalabilityMode: 'L1T3',
|
|
60
|
-
scaleResolutionDownBy: 4.0,
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
rid: 'r4',
|
|
64
|
-
maxBitrate: 400000,
|
|
65
|
-
scalabilityMode: 'L1T3',
|
|
66
|
-
scaleResolutionDownBy: 2.0,
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
rid: 'r5',
|
|
70
|
-
maxBitrate: 800000,
|
|
71
|
-
scalabilityMode: 'L1T3',
|
|
72
|
-
},
|
|
73
|
-
],
|
|
74
|
-
codecOptions: {
|
|
75
|
-
videoGoogleStartBitrate: 320,
|
|
76
|
-
},
|
|
77
|
-
};
|
|
78
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: VParams, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
79
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: VParams, providedIn: 'root' });
|
|
80
|
-
}
|
|
81
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: VParams, decorators: [{
|
|
82
|
-
type: Injectable,
|
|
83
|
-
args: [{
|
|
84
|
-
providedIn: 'root',
|
|
85
|
-
}]
|
|
86
|
-
}] });
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidi1wYXJhbXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9tZXRob2RzL3V0aWxzL3Byb2R1Y2VyL3YtcGFyYW1zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPM0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpREc7QUFNSCxNQUFNLE9BQU8sT0FBTztJQUNsQixPQUFPLEdBQWdCO1FBQ3JCLFNBQVMsRUFBRTtZQUNUO2dCQUNFLEdBQUcsRUFBRSxJQUFJO2dCQUNULFVBQVUsRUFBRSxNQUFNO2dCQUNsQixlQUFlLEVBQUUsTUFBTTtnQkFDdkIscUJBQXFCLEVBQUUsR0FBRzthQUMzQjtZQUNEO2dCQUNFLEdBQUcsRUFBRSxJQUFJO2dCQUNULFVBQVUsRUFBRSxNQUFNO2dCQUNsQixlQUFlLEVBQUUsTUFBTTtnQkFDdkIscUJBQXFCLEVBQUUsR0FBRzthQUMzQjtZQUNEO2dCQUNFLEdBQUcsRUFBRSxJQUFJO2dCQUNULFVBQVUsRUFBRSxNQUFNO2dCQUNsQixlQUFlLEVBQUUsTUFBTTthQUN4QjtTQUNGO1FBQ0QsWUFBWSxFQUFFO1lBQ1osdUJBQXVCLEVBQUUsR0FBRztTQUM3QjtLQUNGLENBQUM7dUdBeEJTLE9BQU87MkdBQVAsT0FBTyxjQUZOLE1BQU07OzJGQUVQLE9BQU87a0JBSG5CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvZHVjZXJDb2RlY09wdGlvbnMsIFJ0cEVuY29kaW5nUGFyYW1ldGVycyB9IGZyb20gJ21lZGlhc291cC1jbGllbnQvbGliL3R5cGVzJztcbmV4cG9ydCB0eXBlIFZQYXJhbXNUeXBlID0ge1xuICBlbmNvZGluZ3M6IFJ0cEVuY29kaW5nUGFyYW1ldGVyc1tdO1xuICBjb2RlY09wdGlvbnM/OiBQcm9kdWNlckNvZGVjT3B0aW9ucztcbn07XG5cbi8qKlxuICogVGhlIGBWUGFyYW1zYCBzZXJ2aWNlIHByb3ZpZGVzIGVuY29kaW5nIHBhcmFtZXRlcnMgZm9yIHZpZGVvIGluIGEgbWVkaWEgc2Vzc2lvbiB1c2luZyB0aGUgTWVkaWFzb3VwIGxpYnJhcnkuXG4gKiBJdCBpbmNsdWRlcyBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmb3IgUlRQIGVuY29kaW5nIHBhcmFtZXRlcnMgb3B0aW1pemVkIGZvciB2aWRlbyBzdHJlYW1pbmcuXG4gKlxuICogQHNlcnZpY2VcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBWUGFyYW1zIH0gZnJvbSAnLi9wYXRoL3RvL3YtcGFyYW1zLnNlcnZpY2UnO1xuICpcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgdlBhcmFtc1NlcnZpY2U6IFZQYXJhbXMpIHtcbiAqICAgY29uc29sZS5sb2codGhpcy52UGFyYW1zU2VydmljZS52UGFyYW1zKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEB0eXBlZGVmIFZQYXJhbXNUeXBlXG4gKiBAcHJvcGVydHkge1J0cEVuY29kaW5nUGFyYW1ldGVyc1tdfSBlbmNvZGluZ3MgLSBBcnJheSBvZiBSVFAgZW5jb2RpbmcgcGFyYW1ldGVycyBmb3IgdmlkZW8uXG4gKiBAcHJvcGVydHkge1Byb2R1Y2VyQ29kZWNPcHRpb25zfSBbY29kZWNPcHRpb25zXSAtIE9wdGlvbmFsIGNvZGVjIG9wdGlvbnMgZm9yIHRoZSB2aWRlbyBwcm9kdWNlci5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgdlBhcmFtczogVlBhcmFtc1R5cGUgPSB7XG4gKiAgIGVuY29kaW5nczogW1xuICogICAgIHtcbiAqICAgICAgIHJpZDogJ3IzJyxcbiAqICAgICAgIG1heEJpdHJhdGU6IDIwMDAwMCwgLy8gTWF4IGJpdHJhdGUgZm9yIHRoaXMgZW5jb2RpbmcgKGluIGJwcylcbiAqICAgICAgIHNjYWxhYmlsaXR5TW9kZTogJ0wxVDMnLCAvLyBTY2FsYWJpbGl0eSBtb2RlIGZvciBlbmNvZGluZ1xuICogICAgICAgc2NhbGVSZXNvbHV0aW9uRG93bkJ5OiA0LjAsIC8vIFNjYWxlIGRvd24gcmVzb2x1dGlvbiBieSB0aGlzIGZhY3RvclxuICogICAgIH0sXG4gKiAgICAge1xuICogICAgICAgcmlkOiAncjQnLFxuICogICAgICAgbWF4Qml0cmF0ZTogNDAwMDAwLFxuICogICAgICAgc2NhbGFiaWxpdHlNb2RlOiAnTDFUMycsXG4gKiAgICAgICBzY2FsZVJlc29sdXRpb25Eb3duQnk6IDIuMCxcbiAqICAgICB9LFxuICogICAgIHtcbiAqICAgICAgIHJpZDogJ3I1JyxcbiAqICAgICAgIG1heEJpdHJhdGU6IDgwMDAwMCxcbiAqICAgICAgIHNjYWxhYmlsaXR5TW9kZTogJ0wxVDMnLFxuICogICAgIH0sXG4gKiAgIF0sXG4gKiAgIGNvZGVjT3B0aW9uczoge1xuICogICAgIHZpZGVvR29vZ2xlU3RhcnRCaXRyYXRlOiAzMjAsIC8vIEluaXRpYWwgYml0cmF0ZSBmb3IgdGhlIEdvb2dsZSBjb2RlY1xuICogICB9LFxuICogfTtcbiAqXG4gKiBAcmVtYXJrc1xuICogVGhlIGRlZmF1bHQgYHZQYXJhbXNgIGluY2x1ZGVzIG11bHRpcGxlIGVuY29kaW5nIGNvbmZpZ3VyYXRpb25zIHdpdGggZGlmZmVyZW50IG1heGltdW0gYml0cmF0ZXMsXG4gKiBhbGxvd2luZyBmb3IgYWRhcHRpdmUgc3RyZWFtaW5nIGJhc2VkIG9uIG5ldHdvcmsgY29uZGl0aW9ucyBhbmQgcGFydGljaXBhbnQgY2FwYWJpbGl0aWVzLlxuICpcbiAqIEByZXR1cm5zIHtWUGFyYW1zVHlwZX0gVGhlIHZpZGVvIHBhcmFtZXRlcnMgZm9yIHVzZSBpbiB2aWRlbyBwcm9kdWNlciBjb25maWd1cmF0aW9uLlxuICovXG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFZQYXJhbXMge1xuICB2UGFyYW1zOiBWUGFyYW1zVHlwZSA9IHtcbiAgICBlbmNvZGluZ3M6IFtcbiAgICAgIHtcbiAgICAgICAgcmlkOiAncjMnLFxuICAgICAgICBtYXhCaXRyYXRlOiAyMDAwMDAsXG4gICAgICAgIHNjYWxhYmlsaXR5TW9kZTogJ0wxVDMnLFxuICAgICAgICBzY2FsZVJlc29sdXRpb25Eb3duQnk6IDQuMCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJpZDogJ3I0JyxcbiAgICAgICAgbWF4Qml0cmF0ZTogNDAwMDAwLFxuICAgICAgICBzY2FsYWJpbGl0eU1vZGU6ICdMMVQzJyxcbiAgICAgICAgc2NhbGVSZXNvbHV0aW9uRG93bkJ5OiAyLjAsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICByaWQ6ICdyNScsXG4gICAgICAgIG1heEJpdHJhdGU6IDgwMDAwMCxcbiAgICAgICAgc2NhbGFiaWxpdHlNb2RlOiAnTDFUMycsXG4gICAgICB9LFxuICAgIF0sXG4gICAgY29kZWNPcHRpb25zOiB7XG4gICAgICB2aWRlb0dvb2dsZVN0YXJ0Qml0cmF0ZTogMzIwLFxuICAgIH0sXG4gIH07XG59XG4iXX0=
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* The `VideoCaptureConstraints` service provides various video capture constraints
|
|
5
|
-
* including resolution and frame rate settings for different display sizes (landscape, portrait, and neutral).
|
|
6
|
-
*
|
|
7
|
-
* @service
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* import { VideoCaptureConstraints } from './path/to/video-capture-constraints.service';
|
|
11
|
-
*
|
|
12
|
-
* constructor(private videoConstraints: VideoCaptureConstraints) {
|
|
13
|
-
* console.log(this.videoConstraints.hdCons); // Access HD constraints
|
|
14
|
-
* }
|
|
15
|
-
* ```
|
|
16
|
-
*
|
|
17
|
-
* @remarks
|
|
18
|
-
* This service contains predefined constraints that can be used for video capture
|
|
19
|
-
* settings based on the desired quality and aspect ratio. These constraints can
|
|
20
|
-
* be applied when requesting media streams from the user's camera.
|
|
21
|
-
*
|
|
22
|
-
* @property {Object} QnHDCons - Video capture constraints for QnHD resolution (320x180).
|
|
23
|
-
* @property {Object} sdCons - Video capture constraints for SD resolution (640x360).
|
|
24
|
-
* @property {Object} hdCons - Video capture constraints for HD resolution (1280x720).
|
|
25
|
-
* @property {Object} fhdCons - Video capture constraints for FHD resolution (1920x1080).
|
|
26
|
-
* @property {Object} qhdCons - Video capture constraints for QHD resolution (2560x1440).
|
|
27
|
-
*
|
|
28
|
-
* @property {Object} QnHDConsPort - Video capture constraints for QnHD resolution in portrait mode.
|
|
29
|
-
* @property {Object} sdConsPort - Video capture constraints for SD resolution in portrait mode.
|
|
30
|
-
* @property {Object} hdConsPort - Video capture constraints for HD resolution in portrait mode.
|
|
31
|
-
* @property {Object} fhdConsPort - Video capture constraints for FHD resolution in portrait mode.
|
|
32
|
-
* @property {Object} qhdConsPort - Video capture constraints for QHD resolution in portrait mode.
|
|
33
|
-
*
|
|
34
|
-
* @property {Object} QnHDConsNeu - Video capture constraints for QnHD resolution in neutral mode.
|
|
35
|
-
* @property {Object} sdConsNeu - Video capture constraints for SD resolution in neutral mode.
|
|
36
|
-
* @property {Object} hdConsNeu - Video capture constraints for HD resolution in neutral mode.
|
|
37
|
-
* @property {Object} fhdConsNeu - Video capture constraints for FHD resolution in neutral mode.
|
|
38
|
-
* @property {Object} qhdConsNeu - Video capture constraints for QnHD resolution in neutral mode.
|
|
39
|
-
*
|
|
40
|
-
* @property {number} QnHDFrameRate - Frame rate for QnHD video capture (5 FPS).
|
|
41
|
-
* @property {number} sdFrameRate - Frame rate for SD video capture (10 FPS).
|
|
42
|
-
* @property {number} hdFrameRate - Frame rate for HD video capture (15 FPS).
|
|
43
|
-
* @property {number} fhdFrameRate - Frame rate for FHD video capture (20 FPS).
|
|
44
|
-
* @property {number} qhdFrameRate - Frame rate for QHD video capture (30 FPS).
|
|
45
|
-
* @property {number} screenFrameRate - Frame rate for screen capture (30 FPS).
|
|
46
|
-
*
|
|
47
|
-
* @returns {VideoCaptureConstraints} The video capture constraints for use in media requests.
|
|
48
|
-
*/
|
|
49
|
-
export class VideoCaptureConstraints {
|
|
50
|
-
// Landscape display sizes
|
|
51
|
-
QnHDCons = { width: { ideal: 320 }, height: { ideal: 180 } };
|
|
52
|
-
sdCons = { width: { ideal: 640 }, height: { ideal: 360 } };
|
|
53
|
-
hdCons = { width: { ideal: 1280 }, height: { ideal: 720 } };
|
|
54
|
-
fhdCons = { width: { ideal: 1920 }, height: { ideal: 1080 } };
|
|
55
|
-
qhdCons = { width: { ideal: 2560 }, height: { ideal: 1440 } };
|
|
56
|
-
// Portrait display sizes
|
|
57
|
-
QnHDConsPort = { width: { ideal: 180 }, height: { ideal: 320 } };
|
|
58
|
-
sdConsPort = { width: { ideal: 360 }, height: { ideal: 640 } };
|
|
59
|
-
hdConsPort = { width: { ideal: 720 }, height: { ideal: 1280 } };
|
|
60
|
-
fhdConsPort = { width: { ideal: 1080 }, height: { ideal: 1920 } };
|
|
61
|
-
qhdConsPort = { width: { ideal: 1440 }, height: { ideal: 2560 } };
|
|
62
|
-
// Neutral (Square) display sizes
|
|
63
|
-
QnHDConsNeu = { width: { ideal: 240 }, height: { ideal: 240 } };
|
|
64
|
-
sdConsNeu = { width: { ideal: 480 }, height: { ideal: 480 } };
|
|
65
|
-
hdConsNeu = { width: { ideal: 960 }, height: { ideal: 960 } };
|
|
66
|
-
fhdConsNeu = { width: { ideal: 1440 }, height: { ideal: 1440 } };
|
|
67
|
-
qhdConsNeu = { width: { ideal: 1920 }, height: { ideal: 1920 } };
|
|
68
|
-
// Frame rates for video capture
|
|
69
|
-
QnHDFrameRate = 5;
|
|
70
|
-
sdFrameRate = 10;
|
|
71
|
-
hdFrameRate = 15;
|
|
72
|
-
fhdFrameRate = 20;
|
|
73
|
-
qhdFrameRate = 30;
|
|
74
|
-
screenFrameRate = 30;
|
|
75
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: VideoCaptureConstraints, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
76
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: VideoCaptureConstraints, providedIn: 'root' });
|
|
77
|
-
}
|
|
78
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: VideoCaptureConstraints, decorators: [{
|
|
79
|
-
type: Injectable,
|
|
80
|
-
args: [{
|
|
81
|
-
providedIn: 'root',
|
|
82
|
-
}]
|
|
83
|
-
}] });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8tY2FwdHVyZS1jb25zdHJhaW50cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWVkaWFzZnUtYW5ndWxhci9zcmMvbGliL21ldGhvZHMvdXRpbHMvcHJvZHVjZXIvdmlkZW8tY2FwdHVyZS1jb25zdHJhaW50cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Q0c7QUFLSCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2xDLDBCQUEwQjtJQUMxQixRQUFRLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDN0QsTUFBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQzNELE1BQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUM1RCxPQUFPLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7SUFDOUQsT0FBTyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBRTlELHlCQUF5QjtJQUN6QixZQUFZLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDakUsVUFBVSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQy9ELFVBQVUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUNoRSxXQUFXLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7SUFDbEUsV0FBVyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBRWxFLGlDQUFpQztJQUNqQyxXQUFXLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDaEUsU0FBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQzlELFNBQVMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUM5RCxVQUFVLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7SUFDakUsVUFBVSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBRWpFLGdDQUFnQztJQUNoQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDakIsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUNqQixZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDbEIsZUFBZSxHQUFHLEVBQUUsQ0FBQzt1R0E1QlYsdUJBQXVCOzJHQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7MkZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBUaGUgYFZpZGVvQ2FwdHVyZUNvbnN0cmFpbnRzYCBzZXJ2aWNlIHByb3ZpZGVzIHZhcmlvdXMgdmlkZW8gY2FwdHVyZSBjb25zdHJhaW50c1xuICogaW5jbHVkaW5nIHJlc29sdXRpb24gYW5kIGZyYW1lIHJhdGUgc2V0dGluZ3MgZm9yIGRpZmZlcmVudCBkaXNwbGF5IHNpemVzIChsYW5kc2NhcGUsIHBvcnRyYWl0LCBhbmQgbmV1dHJhbCkuXG4gKlxuICogQHNlcnZpY2VcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBWaWRlb0NhcHR1cmVDb25zdHJhaW50cyB9IGZyb20gJy4vcGF0aC90by92aWRlby1jYXB0dXJlLWNvbnN0cmFpbnRzLnNlcnZpY2UnO1xuICpcbiAqIGNvbnN0cnVjdG9yKHByaXZhdGUgdmlkZW9Db25zdHJhaW50czogVmlkZW9DYXB0dXJlQ29uc3RyYWludHMpIHtcbiAqICAgY29uc29sZS5sb2codGhpcy52aWRlb0NvbnN0cmFpbnRzLmhkQ29ucyk7IC8vIEFjY2VzcyBIRCBjb25zdHJhaW50c1xuICogfVxuICogYGBgXG4gKlxuICogQHJlbWFya3NcbiAqIFRoaXMgc2VydmljZSBjb250YWlucyBwcmVkZWZpbmVkIGNvbnN0cmFpbnRzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHZpZGVvIGNhcHR1cmVcbiAqIHNldHRpbmdzIGJhc2VkIG9uIHRoZSBkZXNpcmVkIHF1YWxpdHkgYW5kIGFzcGVjdCByYXRpby4gVGhlc2UgY29uc3RyYWludHMgY2FuXG4gKiBiZSBhcHBsaWVkIHdoZW4gcmVxdWVzdGluZyBtZWRpYSBzdHJlYW1zIGZyb20gdGhlIHVzZXIncyBjYW1lcmEuXG4gKlxuICogQHByb3BlcnR5IHtPYmplY3R9IFFuSERDb25zIC0gVmlkZW8gY2FwdHVyZSBjb25zdHJhaW50cyBmb3IgUW5IRCByZXNvbHV0aW9uICgzMjB4MTgwKS5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBzZENvbnMgLSBWaWRlbyBjYXB0dXJlIGNvbnN0cmFpbnRzIGZvciBTRCByZXNvbHV0aW9uICg2NDB4MzYwKS5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBoZENvbnMgLSBWaWRlbyBjYXB0dXJlIGNvbnN0cmFpbnRzIGZvciBIRCByZXNvbHV0aW9uICgxMjgweDcyMCkuXG4gKiBAcHJvcGVydHkge09iamVjdH0gZmhkQ29ucyAtIFZpZGVvIGNhcHR1cmUgY29uc3RyYWludHMgZm9yIEZIRCByZXNvbHV0aW9uICgxOTIweDEwODApLlxuICogQHByb3BlcnR5IHtPYmplY3R9IHFoZENvbnMgLSBWaWRlbyBjYXB0dXJlIGNvbnN0cmFpbnRzIGZvciBRSEQgcmVzb2x1dGlvbiAoMjU2MHgxNDQwKS5cbiAqXG4gKiBAcHJvcGVydHkge09iamVjdH0gUW5IRENvbnNQb3J0IC0gVmlkZW8gY2FwdHVyZSBjb25zdHJhaW50cyBmb3IgUW5IRCByZXNvbHV0aW9uIGluIHBvcnRyYWl0IG1vZGUuXG4gKiBAcHJvcGVydHkge09iamVjdH0gc2RDb25zUG9ydCAtIFZpZGVvIGNhcHR1cmUgY29uc3RyYWludHMgZm9yIFNEIHJlc29sdXRpb24gaW4gcG9ydHJhaXQgbW9kZS5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBoZENvbnNQb3J0IC0gVmlkZW8gY2FwdHVyZSBjb25zdHJhaW50cyBmb3IgSEQgcmVzb2x1dGlvbiBpbiBwb3J0cmFpdCBtb2RlLlxuICogQHByb3BlcnR5IHtPYmplY3R9IGZoZENvbnNQb3J0IC0gVmlkZW8gY2FwdHVyZSBjb25zdHJhaW50cyBmb3IgRkhEIHJlc29sdXRpb24gaW4gcG9ydHJhaXQgbW9kZS5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBxaGRDb25zUG9ydCAtIFZpZGVvIGNhcHR1cmUgY29uc3RyYWludHMgZm9yIFFIRCByZXNvbHV0aW9uIGluIHBvcnRyYWl0IG1vZGUuXG4gKlxuICogQHByb3BlcnR5IHtPYmplY3R9IFFuSERDb25zTmV1IC0gVmlkZW8gY2FwdHVyZSBjb25zdHJhaW50cyBmb3IgUW5IRCByZXNvbHV0aW9uIGluIG5ldXRyYWwgbW9kZS5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBzZENvbnNOZXUgLSBWaWRlbyBjYXB0dXJlIGNvbnN0cmFpbnRzIGZvciBTRCByZXNvbHV0aW9uIGluIG5ldXRyYWwgbW9kZS5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBoZENvbnNOZXUgLSBWaWRlbyBjYXB0dXJlIGNvbnN0cmFpbnRzIGZvciBIRCByZXNvbHV0aW9uIGluIG5ldXRyYWwgbW9kZS5cbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBmaGRDb25zTmV1IC0gVmlkZW8gY2FwdHVyZSBjb25zdHJhaW50cyBmb3IgRkhEIHJlc29sdXRpb24gaW4gbmV1dHJhbCBtb2RlLlxuICogQHByb3BlcnR5IHtPYmplY3R9IHFoZENvbnNOZXUgLSBWaWRlbyBjYXB0dXJlIGNvbnN0cmFpbnRzIGZvciBRbkhEIHJlc29sdXRpb24gaW4gbmV1dHJhbCBtb2RlLlxuICpcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBRbkhERnJhbWVSYXRlIC0gRnJhbWUgcmF0ZSBmb3IgUW5IRCB2aWRlbyBjYXB0dXJlICg1IEZQUykuXG4gKiBAcHJvcGVydHkge251bWJlcn0gc2RGcmFtZVJhdGUgLSBGcmFtZSByYXRlIGZvciBTRCB2aWRlbyBjYXB0dXJlICgxMCBGUFMpLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IGhkRnJhbWVSYXRlIC0gRnJhbWUgcmF0ZSBmb3IgSEQgdmlkZW8gY2FwdHVyZSAoMTUgRlBTKS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBmaGRGcmFtZVJhdGUgLSBGcmFtZSByYXRlIGZvciBGSEQgdmlkZW8gY2FwdHVyZSAoMjAgRlBTKS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBxaGRGcmFtZVJhdGUgLSBGcmFtZSByYXRlIGZvciBRSEQgdmlkZW8gY2FwdHVyZSAoMzAgRlBTKS5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzY3JlZW5GcmFtZVJhdGUgLSBGcmFtZSByYXRlIGZvciBzY3JlZW4gY2FwdHVyZSAoMzAgRlBTKS5cbiAqXG4gKiBAcmV0dXJucyB7VmlkZW9DYXB0dXJlQ29uc3RyYWludHN9IFRoZSB2aWRlbyBjYXB0dXJlIGNvbnN0cmFpbnRzIGZvciB1c2UgaW4gbWVkaWEgcmVxdWVzdHMuXG4gKi9cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFZpZGVvQ2FwdHVyZUNvbnN0cmFpbnRzIHtcbiAgLy8gTGFuZHNjYXBlIGRpc3BsYXkgc2l6ZXNcbiAgUW5IRENvbnMgPSB7IHdpZHRoOiB7IGlkZWFsOiAzMjAgfSwgaGVpZ2h0OiB7IGlkZWFsOiAxODAgfSB9O1xuICBzZENvbnMgPSB7IHdpZHRoOiB7IGlkZWFsOiA2NDAgfSwgaGVpZ2h0OiB7IGlkZWFsOiAzNjAgfSB9O1xuICBoZENvbnMgPSB7IHdpZHRoOiB7IGlkZWFsOiAxMjgwIH0sIGhlaWdodDogeyBpZGVhbDogNzIwIH0gfTtcbiAgZmhkQ29ucyA9IHsgd2lkdGg6IHsgaWRlYWw6IDE5MjAgfSwgaGVpZ2h0OiB7IGlkZWFsOiAxMDgwIH0gfTtcbiAgcWhkQ29ucyA9IHsgd2lkdGg6IHsgaWRlYWw6IDI1NjAgfSwgaGVpZ2h0OiB7IGlkZWFsOiAxNDQwIH0gfTtcblxuICAvLyBQb3J0cmFpdCBkaXNwbGF5IHNpemVzXG4gIFFuSERDb25zUG9ydCA9IHsgd2lkdGg6IHsgaWRlYWw6IDE4MCB9LCBoZWlnaHQ6IHsgaWRlYWw6IDMyMCB9IH07XG4gIHNkQ29uc1BvcnQgPSB7IHdpZHRoOiB7IGlkZWFsOiAzNjAgfSwgaGVpZ2h0OiB7IGlkZWFsOiA2NDAgfSB9O1xuICBoZENvbnNQb3J0ID0geyB3aWR0aDogeyBpZGVhbDogNzIwIH0sIGhlaWdodDogeyBpZGVhbDogMTI4MCB9IH07XG4gIGZoZENvbnNQb3J0ID0geyB3aWR0aDogeyBpZGVhbDogMTA4MCB9LCBoZWlnaHQ6IHsgaWRlYWw6IDE5MjAgfSB9O1xuICBxaGRDb25zUG9ydCA9IHsgd2lkdGg6IHsgaWRlYWw6IDE0NDAgfSwgaGVpZ2h0OiB7IGlkZWFsOiAyNTYwIH0gfTtcblxuICAvLyBOZXV0cmFsIChTcXVhcmUpIGRpc3BsYXkgc2l6ZXNcbiAgUW5IRENvbnNOZXUgPSB7IHdpZHRoOiB7IGlkZWFsOiAyNDAgfSwgaGVpZ2h0OiB7IGlkZWFsOiAyNDAgfSB9O1xuICBzZENvbnNOZXUgPSB7IHdpZHRoOiB7IGlkZWFsOiA0ODAgfSwgaGVpZ2h0OiB7IGlkZWFsOiA0ODAgfSB9O1xuICBoZENvbnNOZXUgPSB7IHdpZHRoOiB7IGlkZWFsOiA5NjAgfSwgaGVpZ2h0OiB7IGlkZWFsOiA5NjAgfSB9O1xuICBmaGRDb25zTmV1ID0geyB3aWR0aDogeyBpZGVhbDogMTQ0MCB9LCBoZWlnaHQ6IHsgaWRlYWw6IDE0NDAgfSB9O1xuICBxaGRDb25zTmV1ID0geyB3aWR0aDogeyBpZGVhbDogMTkyMCB9LCBoZWlnaHQ6IHsgaWRlYWw6IDE5MjAgfSB9O1xuXG4gIC8vIEZyYW1lIHJhdGVzIGZvciB2aWRlbyBjYXB0dXJlXG4gIFFuSERGcmFtZVJhdGUgPSA1O1xuICBzZEZyYW1lUmF0ZSA9IDEwO1xuICBoZEZyYW1lUmF0ZSA9IDE1O1xuICBmaGRGcmFtZVJhdGUgPSAyMDtcbiAgcWhkRnJhbWVSYXRlID0gMzA7XG4gIHNjcmVlbkZyYW1lUmF0ZSA9IDMwO1xufVxuIl19
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pauses the execution for a specified number of milliseconds.
|
|
3
|
-
*
|
|
4
|
-
* @param {SleepOptions} options - Contains the duration to pause.
|
|
5
|
-
* @param {number} options.ms - Number of milliseconds to delay.
|
|
6
|
-
* @returns {Promise<void>} Resolves after the specified duration.
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* await sleep({ ms: 2000 });
|
|
11
|
-
* // Pauses execution for 2 seconds
|
|
12
|
-
* ```
|
|
13
|
-
*/
|
|
14
|
-
export function sleep({ ms }) {
|
|
15
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xlZXAudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9tZXRob2RzL3V0aWxzL3NsZWVwLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0E7Ozs7Ozs7Ozs7OztHQVlHO0FBR0gsTUFBTSxVQUFVLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBZ0I7SUFDeEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNsZWVwT3B0aW9ucyB7XG4gIG1zOiBudW1iZXI7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIFNsZWVwVHlwZSA9IChvcHRpb25zOiBTbGVlcE9wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG5cbi8qKlxuICogUGF1c2VzIHRoZSBleGVjdXRpb24gZm9yIGEgc3BlY2lmaWVkIG51bWJlciBvZiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHBhcmFtIHtTbGVlcE9wdGlvbnN9IG9wdGlvbnMgLSBDb250YWlucyB0aGUgZHVyYXRpb24gdG8gcGF1c2UuXG4gKiBAcGFyYW0ge251bWJlcn0gb3B0aW9ucy5tcyAtIE51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gUmVzb2x2ZXMgYWZ0ZXIgdGhlIHNwZWNpZmllZCBkdXJhdGlvbi5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogYXdhaXQgc2xlZXAoeyBtczogMjAwMCB9KTtcbiAqIC8vIFBhdXNlcyBleGVjdXRpb24gZm9yIDIgc2Vjb25kc1xuICogYGBgXG4gKi9cblxuXG5leHBvcnQgZnVuY3Rpb24gc2xlZXAoeyBtcyB9OiBTbGVlcE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG59XG4iXX0=
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { Injectable, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* SoundPlayer service for playing a sound from a provided URL.
|
|
5
|
-
*
|
|
6
|
-
* @class SoundPlayer
|
|
7
|
-
* @implements {OnInit}
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```typescript
|
|
11
|
-
* const soundUrl = 'https://example.com/sound.mp3';
|
|
12
|
-
* const soundPlayer = new SoundPlayer();
|
|
13
|
-
* soundPlayer.playSound({ soundUrl });
|
|
14
|
-
* ```
|
|
15
|
-
*
|
|
16
|
-
* ### Details
|
|
17
|
-
* - **soundUrl**: URL to the sound file that will be played.
|
|
18
|
-
* - **playSound**: Initiates the audio playback.
|
|
19
|
-
* - **ngOnInit**: Automatically triggers sound playback if `soundUrl` is set.
|
|
20
|
-
*
|
|
21
|
-
* @param {SoundPlayerOptions} options - Contains the URL of the sound to play.
|
|
22
|
-
* @returns {void} - No return; sound is played asynchronously.
|
|
23
|
-
*/
|
|
24
|
-
/**
|
|
25
|
-
* Plays a sound from a given URL.
|
|
26
|
-
* @class
|
|
27
|
-
* @implements {OnInit}
|
|
28
|
-
* @param {string} soundUrl - The URL of the sound to play.
|
|
29
|
-
* @returns {void}
|
|
30
|
-
* @example
|
|
31
|
-
* const soundUrl = 'https://example.com/sound.mp3';
|
|
32
|
-
* const soundPlayer = new SoundPlayer();
|
|
33
|
-
* soundPlayer.playSound({ soundUrl });
|
|
34
|
-
*/
|
|
35
|
-
export class SoundPlayer {
|
|
36
|
-
soundUrl;
|
|
37
|
-
ngOnInit() {
|
|
38
|
-
const shouldPlaySound = true;
|
|
39
|
-
if (shouldPlaySound) {
|
|
40
|
-
if (this.soundUrl) {
|
|
41
|
-
this.playSound({ soundUrl: this.soundUrl });
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
console.log('Sound URL is not defined');
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
playSound({ soundUrl }) {
|
|
49
|
-
const audio = new Audio(soundUrl);
|
|
50
|
-
audio.play().catch((error) => console.error('Error playing sound:', error));
|
|
51
|
-
}
|
|
52
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SoundPlayer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
53
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SoundPlayer, providedIn: 'root' });
|
|
54
|
-
}
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SoundPlayer, decorators: [{
|
|
56
|
-
type: Injectable,
|
|
57
|
-
args: [{
|
|
58
|
-
providedIn: 'root',
|
|
59
|
-
}]
|
|
60
|
-
}], propDecorators: { soundUrl: [{
|
|
61
|
-
type: Input
|
|
62
|
-
}] } });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291bmQtcGxheWVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvbWV0aG9kcy91dGlscy9zb3VuZC1wbGF5ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQzs7QUFRMUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBT0g7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBQ2IsUUFBUSxDQUFxQjtJQUV0QyxRQUFRO1FBQ04sTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBRTdCLElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDOUMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQXNCO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO3VHQWxCVSxXQUFXOzJHQUFYLFdBQVcsY0FkVixNQUFNOzsyRkFjUCxXQUFXO2tCQWZ2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs4QkFjVSxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuZXhwb3J0IGludGVyZmFjZSBTb3VuZFBsYXllck9wdGlvbnMge1xuICBzb3VuZFVybDogc3RyaW5nO1xufVxuXG4vLyBFeHBvcnQgdGhlIHR5cGUgZGVmaW5pdGlvbiBmb3IgdGhlIGZ1bmN0aW9uXG5leHBvcnQgdHlwZSBTb3VuZFBsYXllclR5cGUgPSAob3B0aW9uczogU291bmRQbGF5ZXJPcHRpb25zKSA9PiB2b2lkO1xuXG4vKipcbiAqIFNvdW5kUGxheWVyIHNlcnZpY2UgZm9yIHBsYXlpbmcgYSBzb3VuZCBmcm9tIGEgcHJvdmlkZWQgVVJMLlxuICpcbiAqIEBjbGFzcyBTb3VuZFBsYXllclxuICogQGltcGxlbWVudHMge09uSW5pdH1cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgc291bmRVcmwgPSAnaHR0cHM6Ly9leGFtcGxlLmNvbS9zb3VuZC5tcDMnO1xuICogY29uc3Qgc291bmRQbGF5ZXIgPSBuZXcgU291bmRQbGF5ZXIoKTtcbiAqIHNvdW5kUGxheWVyLnBsYXlTb3VuZCh7IHNvdW5kVXJsIH0pO1xuICogYGBgXG4gKlxuICogIyMjIERldGFpbHNcbiAqIC0gKipzb3VuZFVybCoqOiBVUkwgdG8gdGhlIHNvdW5kIGZpbGUgdGhhdCB3aWxsIGJlIHBsYXllZC5cbiAqIC0gKipwbGF5U291bmQqKjogSW5pdGlhdGVzIHRoZSBhdWRpbyBwbGF5YmFjay5cbiAqIC0gKipuZ09uSW5pdCoqOiBBdXRvbWF0aWNhbGx5IHRyaWdnZXJzIHNvdW5kIHBsYXliYWNrIGlmIGBzb3VuZFVybGAgaXMgc2V0LlxuICpcbiAqIEBwYXJhbSB7U291bmRQbGF5ZXJPcHRpb25zfSBvcHRpb25zIC0gQ29udGFpbnMgdGhlIFVSTCBvZiB0aGUgc291bmQgdG8gcGxheS5cbiAqIEByZXR1cm5zIHt2b2lkfSAtIE5vIHJldHVybjsgc291bmQgaXMgcGxheWVkIGFzeW5jaHJvbm91c2x5LlxuICovXG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuXG4vKipcbiAqIFBsYXlzIGEgc291bmQgZnJvbSBhIGdpdmVuIFVSTC5cbiAqIEBjbGFzc1xuICogQGltcGxlbWVudHMge09uSW5pdH1cbiAqIEBwYXJhbSB7c3RyaW5nfSBzb3VuZFVybCAtIFRoZSBVUkwgb2YgdGhlIHNvdW5kIHRvIHBsYXkuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqIEBleGFtcGxlXG4gKiBjb25zdCBzb3VuZFVybCA9ICdodHRwczovL2V4YW1wbGUuY29tL3NvdW5kLm1wMyc7XG4gKiBjb25zdCBzb3VuZFBsYXllciA9IG5ldyBTb3VuZFBsYXllcigpO1xuICogc291bmRQbGF5ZXIucGxheVNvdW5kKHsgc291bmRVcmwgfSk7XG4gKi9cbmV4cG9ydCBjbGFzcyBTb3VuZFBsYXllciBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHNvdW5kVXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3Qgc2hvdWxkUGxheVNvdW5kID0gdHJ1ZTtcblxuICAgIGlmIChzaG91bGRQbGF5U291bmQpIHtcbiAgICAgIGlmICh0aGlzLnNvdW5kVXJsKSB7XG4gICAgICAgIHRoaXMucGxheVNvdW5kKHsgc291bmRVcmw6IHRoaXMuc291bmRVcmwgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZygnU291bmQgVVJMIGlzIG5vdCBkZWZpbmVkJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcGxheVNvdW5kKHsgc291bmRVcmwgfTogU291bmRQbGF5ZXJPcHRpb25zKTogdm9pZCB7XG4gICAgY29uc3QgYXVkaW8gPSBuZXcgQXVkaW8oc291bmRVcmwpO1xuICAgIGF1ZGlvLnBsYXkoKS5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBsYXlpbmcgc291bmQ6JywgZXJyb3IpKTtcbiAgfVxufVxuIl19
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Service to validate if a given string contains only alphanumeric characters.
|
|
5
|
-
*
|
|
6
|
-
* @class ValidateAlphanumeric
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* const validator = new ValidateAlphanumeric();
|
|
11
|
-
* validator.validateAlphanumeric({ str: 'abc123' }).then(isValid => console.log(isValid)); // true
|
|
12
|
-
* validator.validateAlphanumeric({ str: 'abc 123!' }).then(isValid => console.log(isValid)); // false
|
|
13
|
-
* ```
|
|
14
|
-
*
|
|
15
|
-
* @param {ValidateAlphanumericOptions} options - Contains the string to validate.
|
|
16
|
-
* @param {string} options.str - The input string that needs to be validated.
|
|
17
|
-
* @returns {Promise<boolean>} - A promise resolving to `true` if the input string is alphanumeric, otherwise `false`.
|
|
18
|
-
*/
|
|
19
|
-
export class ValidateAlphanumeric {
|
|
20
|
-
/**
|
|
21
|
-
* Validates if the given string contains only alphanumeric characters.
|
|
22
|
-
*
|
|
23
|
-
* @param {ValidateAlphanumericOptions} options - The options containing the string to validate.
|
|
24
|
-
* @param {string} options.str - The string to be validated.
|
|
25
|
-
* @returns {Promise<boolean>} - A promise that resolves to `true` if the string is alphanumeric, otherwise `false`.
|
|
26
|
-
*/
|
|
27
|
-
async validateAlphanumeric({ str }) {
|
|
28
|
-
let code, i, len;
|
|
29
|
-
for (i = 0, len = str.length; i < len; i++) {
|
|
30
|
-
code = str.charCodeAt(i);
|
|
31
|
-
if (!(code > 47 && code < 58) && // numeric (0-9)
|
|
32
|
-
!(code > 64 && code < 91) && // upper alpha (A-Z)
|
|
33
|
-
!(code > 96 && code < 123)) {
|
|
34
|
-
// lower alpha (a-z)
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ValidateAlphanumeric, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
41
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ValidateAlphanumeric, providedIn: 'root' });
|
|
42
|
-
}
|
|
43
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ValidateAlphanumeric, decorators: [{
|
|
44
|
-
type: Injectable,
|
|
45
|
-
args: [{
|
|
46
|
-
providedIn: 'root',
|
|
47
|
-
}]
|
|
48
|
-
}] });
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtYWxwaGFudW1lcmljLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvbWV0aG9kcy91dGlscy92YWxpZGF0ZS1hbHBoYW51bWVyaWMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVEzQzs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFLSCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9COzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEdBQUcsRUFBK0I7UUFDN0QsSUFBSSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztRQUVqQixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzNDLElBQUksR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLElBQ0UsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQjtnQkFDN0MsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLG9CQUFvQjtnQkFDakQsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUMxQixDQUFDO2dCQUNELG9CQUFvQjtnQkFDcEIsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzt1R0F2QlUsb0JBQW9COzJHQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7MkZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGVBbHBoYW51bWVyaWNPcHRpb25zIHtcbiAgc3RyOiBzdHJpbmc7XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIFZhbGlkYXRlQWxwaGFudW1lcmljVHlwZSA9IChvcHRpb25zOiBWYWxpZGF0ZUFscGhhbnVtZXJpY09wdGlvbnMpID0+IFByb21pc2U8Ym9vbGVhbj47XG5cbi8qKlxuICogU2VydmljZSB0byB2YWxpZGF0ZSBpZiBhIGdpdmVuIHN0cmluZyBjb250YWlucyBvbmx5IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLlxuICpcbiAqIEBjbGFzcyBWYWxpZGF0ZUFscGhhbnVtZXJpY1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB2YWxpZGF0b3IgPSBuZXcgVmFsaWRhdGVBbHBoYW51bWVyaWMoKTtcbiAqIHZhbGlkYXRvci52YWxpZGF0ZUFscGhhbnVtZXJpYyh7IHN0cjogJ2FiYzEyMycgfSkudGhlbihpc1ZhbGlkID0+IGNvbnNvbGUubG9nKGlzVmFsaWQpKTsgLy8gdHJ1ZVxuICogdmFsaWRhdG9yLnZhbGlkYXRlQWxwaGFudW1lcmljKHsgc3RyOiAnYWJjIDEyMyEnIH0pLnRoZW4oaXNWYWxpZCA9PiBjb25zb2xlLmxvZyhpc1ZhbGlkKSk7IC8vIGZhbHNlXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1ZhbGlkYXRlQWxwaGFudW1lcmljT3B0aW9uc30gb3B0aW9ucyAtIENvbnRhaW5zIHRoZSBzdHJpbmcgdG8gdmFsaWRhdGUuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5zdHIgLSBUaGUgaW5wdXQgc3RyaW5nIHRoYXQgbmVlZHMgdG8gYmUgdmFsaWRhdGVkLlxuICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IC0gQSBwcm9taXNlIHJlc29sdmluZyB0byBgdHJ1ZWAgaWYgdGhlIGlucHV0IHN0cmluZyBpcyBhbHBoYW51bWVyaWMsIG90aGVyd2lzZSBgZmFsc2VgLlxuICovXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBWYWxpZGF0ZUFscGhhbnVtZXJpYyB7XG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgaWYgdGhlIGdpdmVuIHN0cmluZyBjb250YWlucyBvbmx5IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge1ZhbGlkYXRlQWxwaGFudW1lcmljT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGNvbnRhaW5pbmcgdGhlIHN0cmluZyB0byB2YWxpZGF0ZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuc3RyIC0gVGhlIHN0cmluZyB0byBiZSB2YWxpZGF0ZWQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSAtIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGB0cnVlYCBpZiB0aGUgc3RyaW5nIGlzIGFscGhhbnVtZXJpYywgb3RoZXJ3aXNlIGBmYWxzZWAuXG4gICAqL1xuICBhc3luYyB2YWxpZGF0ZUFscGhhbnVtZXJpYyh7IHN0ciB9OiBWYWxpZGF0ZUFscGhhbnVtZXJpY09wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBsZXQgY29kZSwgaSwgbGVuO1xuXG4gICAgZm9yIChpID0gMCwgbGVuID0gc3RyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICBpZiAoXG4gICAgICAgICEoY29kZSA+IDQ3ICYmIGNvZGUgPCA1OCkgJiYgLy8gbnVtZXJpYyAoMC05KVxuICAgICAgICAhKGNvZGUgPiA2NCAmJiBjb2RlIDwgOTEpICYmIC8vIHVwcGVyIGFscGhhIChBLVopXG4gICAgICAgICEoY29kZSA+IDk2ICYmIGNvZGUgPCAxMjMpXG4gICAgICApIHtcbiAgICAgICAgLy8gbG93ZXIgYWxwaGEgKGEteilcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Service to toggle the visibility of a waiting modal.
|
|
5
|
-
*
|
|
6
|
-
* @param {LaunchWaitingOptions} options - The options to control the waiting modal visibility.
|
|
7
|
-
* @param {Function} options.updateIsWaitingModalVisible - Function to update the visibility of the waiting modal.
|
|
8
|
-
* @param {boolean} options.isWaitingModalVisible - Current visibility state of the waiting modal.
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```typescript
|
|
12
|
-
* const launchWaitingService = new LaunchWaiting();
|
|
13
|
-
* launchWaitingService.launchWaiting({
|
|
14
|
-
* updateIsWaitingModalVisible: (isVisible) => console.log(`Modal is now ${isVisible ? 'visible' : 'hidden'}`),
|
|
15
|
-
* isWaitingModalVisible: false,
|
|
16
|
-
* });
|
|
17
|
-
* ```
|
|
18
|
-
*
|
|
19
|
-
* This example toggles the modal's visibility state, making it visible if it was hidden and vice versa.
|
|
20
|
-
*/
|
|
21
|
-
export class LaunchWaiting {
|
|
22
|
-
/**
|
|
23
|
-
* Toggles the visibility of the waiting modal.
|
|
24
|
-
*
|
|
25
|
-
* @param updateIsWaitingModalVisible - Function to update the visibility state of the waiting modal.
|
|
26
|
-
* @param isWaitingModalVisible - Current visibility state of the waiting modal.
|
|
27
|
-
*/
|
|
28
|
-
launchWaiting({ updateIsWaitingModalVisible, isWaitingModalVisible, }) {
|
|
29
|
-
// Open or close the menu modal
|
|
30
|
-
updateIsWaitingModalVisible(!isWaitingModalVisible);
|
|
31
|
-
}
|
|
32
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: LaunchWaiting, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
33
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: LaunchWaiting, providedIn: 'root' });
|
|
34
|
-
}
|
|
35
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: LaunchWaiting, decorators: [{
|
|
36
|
-
type: Injectable,
|
|
37
|
-
args: [{
|
|
38
|
-
providedIn: 'root',
|
|
39
|
-
}]
|
|
40
|
-
}] });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF1bmNoLXdhaXRpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21lZGlhc2Z1LWFuZ3VsYXIvc3JjL2xpYi9tZXRob2RzL3dhaXRpbmctbWV0aG9kcy9sYXVuY2gtd2FpdGluZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUzNDOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQU1ILE1BQU0sT0FBTyxhQUFhO0lBQ3hCOzs7OztPQUtHO0lBRUgsYUFBYSxDQUFDLEVBQ1osMkJBQTJCLEVBQzNCLHFCQUFxQixHQUNBO1FBQ3JCLCtCQUErQjtRQUMvQiwyQkFBMkIsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDdEQsQ0FBQzt1R0FkVSxhQUFhOzJHQUFiLGFBQWEsY0FGWixNQUFNOzsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoV2FpdGluZ09wdGlvbnMge1xuICB1cGRhdGVJc1dhaXRpbmdNb2RhbFZpc2libGU6ICh2aXNpYmxlOiBib29sZWFuKSA9PiB2b2lkO1xuICBpc1dhaXRpbmdNb2RhbFZpc2libGU6IGJvb2xlYW47XG59XG5cbi8vIEV4cG9ydCB0aGUgdHlwZSBkZWZpbml0aW9uIGZvciB0aGUgZnVuY3Rpb25cbmV4cG9ydCB0eXBlIExhdW5jaFdhaXRpbmdUeXBlID0gKG9wdGlvbnM6IExhdW5jaFdhaXRpbmdPcHRpb25zKSA9PiB2b2lkO1xuXG4vKipcbiAqIFNlcnZpY2UgdG8gdG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mIGEgd2FpdGluZyBtb2RhbC5cbiAqXG4gKiBAcGFyYW0ge0xhdW5jaFdhaXRpbmdPcHRpb25zfSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgdG8gY29udHJvbCB0aGUgd2FpdGluZyBtb2RhbCB2aXNpYmlsaXR5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gb3B0aW9ucy51cGRhdGVJc1dhaXRpbmdNb2RhbFZpc2libGUgLSBGdW5jdGlvbiB0byB1cGRhdGUgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHdhaXRpbmcgbW9kYWwuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMuaXNXYWl0aW5nTW9kYWxWaXNpYmxlIC0gQ3VycmVudCB2aXNpYmlsaXR5IHN0YXRlIG9mIHRoZSB3YWl0aW5nIG1vZGFsLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBsYXVuY2hXYWl0aW5nU2VydmljZSA9IG5ldyBMYXVuY2hXYWl0aW5nKCk7XG4gKiBsYXVuY2hXYWl0aW5nU2VydmljZS5sYXVuY2hXYWl0aW5nKHtcbiAqICAgdXBkYXRlSXNXYWl0aW5nTW9kYWxWaXNpYmxlOiAoaXNWaXNpYmxlKSA9PiBjb25zb2xlLmxvZyhgTW9kYWwgaXMgbm93ICR7aXNWaXNpYmxlID8gJ3Zpc2libGUnIDogJ2hpZGRlbid9YCksXG4gKiAgIGlzV2FpdGluZ01vZGFsVmlzaWJsZTogZmFsc2UsXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIFRoaXMgZXhhbXBsZSB0b2dnbGVzIHRoZSBtb2RhbCdzIHZpc2liaWxpdHkgc3RhdGUsIG1ha2luZyBpdCB2aXNpYmxlIGlmIGl0IHdhcyBoaWRkZW4gYW5kIHZpY2UgdmVyc2EuXG4gKi9cblxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTGF1bmNoV2FpdGluZyB7XG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSB3YWl0aW5nIG1vZGFsLlxuICAgKlxuICAgKiBAcGFyYW0gdXBkYXRlSXNXYWl0aW5nTW9kYWxWaXNpYmxlIC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSB2aXNpYmlsaXR5IHN0YXRlIG9mIHRoZSB3YWl0aW5nIG1vZGFsLlxuICAgKiBAcGFyYW0gaXNXYWl0aW5nTW9kYWxWaXNpYmxlIC0gQ3VycmVudCB2aXNpYmlsaXR5IHN0YXRlIG9mIHRoZSB3YWl0aW5nIG1vZGFsLlxuICAgKi9cblxuICBsYXVuY2hXYWl0aW5nKHtcbiAgICB1cGRhdGVJc1dhaXRpbmdNb2RhbFZpc2libGUsXG4gICAgaXNXYWl0aW5nTW9kYWxWaXNpYmxlLFxuICB9OiBMYXVuY2hXYWl0aW5nT3B0aW9ucyk6IHZvaWQge1xuICAgIC8vIE9wZW4gb3IgY2xvc2UgdGhlIG1lbnUgbW9kYWxcbiAgICB1cGRhdGVJc1dhaXRpbmdNb2RhbFZpc2libGUoIWlzV2FpdGluZ01vZGFsVmlzaWJsZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Handles the response to a participant in the waiting room, either allowing or denying their entry.
|
|
5
|
-
*
|
|
6
|
-
* @param {RespondToWaitingOptions} options - Options for handling the participant's entry request.
|
|
7
|
-
* @param {string} options.participantId - Unique identifier for the participant.
|
|
8
|
-
* @param {string} options.participantName - Name of the participant.
|
|
9
|
-
* @param {Function} options.updateWaitingList - Function to update the waiting list by removing the responded participant.
|
|
10
|
-
* @param {WaitingRoomParticipant[]} options.waitingList - Current list of participants in the waiting room.
|
|
11
|
-
* @param {boolean | string} options.type - Indicates whether to allow ("true") or deny ("false") the participant's entry.
|
|
12
|
-
* @param {string} options.roomName - The name of the room the participant is requesting to join.
|
|
13
|
-
* @param {Socket} options.socket - The socket instance used to emit the response event.
|
|
14
|
-
* @returns {Promise<void>} Resolves when the response has been processed.
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```typescript
|
|
18
|
-
* const respondService = new RespondToWaiting();
|
|
19
|
-
* respondService.respondToWaiting({
|
|
20
|
-
* participantId: '12345',
|
|
21
|
-
* participantName: 'John Doe',
|
|
22
|
-
* updateWaitingList: (newList) => console.log('Updated Waiting List:', newList),
|
|
23
|
-
* waitingList: currentWaitingList,
|
|
24
|
-
* type: 'true',
|
|
25
|
-
* roomName: 'Room1',
|
|
26
|
-
* socket: io('http://localhost:3000'),
|
|
27
|
-
* });
|
|
28
|
-
* ```
|
|
29
|
-
*
|
|
30
|
-
* In this example, the participant 'John Doe' is allowed to join 'Room1', and the updated waiting list is logged.
|
|
31
|
-
*/
|
|
32
|
-
export class RespondToWaiting {
|
|
33
|
-
/**
|
|
34
|
-
* Responds to a participant waiting to join a room by either allowing or denying their entry.
|
|
35
|
-
*
|
|
36
|
-
* @param {Object} options - The options for responding to the waiting participant.
|
|
37
|
-
* @param {string} options.participantId - The ID of the participant.
|
|
38
|
-
* @param {string} options.participantName - The name of the participant.
|
|
39
|
-
* @param {Function} options.updateWaitingList - The function to update the waiting list.
|
|
40
|
-
* @param {Array} options.waitingList - The current waiting list of participants.
|
|
41
|
-
* @param {boolean | string} options.type - The type of response, either "true" or "false".
|
|
42
|
-
* @param {string} options.roomName - The name of the room.
|
|
43
|
-
* @param {Object} options.socket - The socket instance to emit events.
|
|
44
|
-
* @returns {Promise<void>} - A promise that resolves when the response has been processed.
|
|
45
|
-
*/
|
|
46
|
-
async respondToWaiting({ participantId, participantName, updateWaitingList, waitingList, type, roomName, socket, }) {
|
|
47
|
-
// Filter out the participant from the waiting list
|
|
48
|
-
const newWaitingList = waitingList.filter((item) => item.name !== participantName);
|
|
49
|
-
// Update the waiting list
|
|
50
|
-
updateWaitingList(newWaitingList);
|
|
51
|
-
const responseType = type === 'true' || type === true ? 'true' : 'false';
|
|
52
|
-
// Emit an event to allow or deny the participant based on the response type
|
|
53
|
-
await socket.emit('allowUserIn', {
|
|
54
|
-
participantId,
|
|
55
|
-
participantName,
|
|
56
|
-
type: responseType,
|
|
57
|
-
roomName,
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: RespondToWaiting, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
61
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: RespondToWaiting, providedIn: 'root' });
|
|
62
|
-
}
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: RespondToWaiting, decorators: [{
|
|
64
|
-
type: Injectable,
|
|
65
|
-
args: [{
|
|
66
|
-
providedIn: 'root',
|
|
67
|
-
}]
|
|
68
|
-
}] });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uZC10by13YWl0aW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvbWV0aG9kcy93YWl0aW5nLW1ldGhvZHMvcmVzcG9uZC10by13YWl0aW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFpQjNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBTUgsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQjs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsRUFDckIsYUFBYSxFQUNiLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsV0FBVyxFQUNYLElBQUksRUFDSixRQUFRLEVBQ1IsTUFBTSxHQUNrQjtRQUN4QixtREFBbUQ7UUFDbkQsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxlQUFlLENBQUMsQ0FBQztRQUVuRiwwQkFBMEI7UUFDMUIsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFbEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUV6RSw0RUFBNEU7UUFDNUUsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMvQixhQUFhO1lBQ2IsZUFBZTtZQUNmLElBQUksRUFBRSxZQUFZO1lBQ2xCLFFBQVE7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO3VHQXRDVSxnQkFBZ0I7MkdBQWhCLGdCQUFnQixjQUZmLE1BQU07OzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTb2NrZXQgfSBmcm9tICdzb2NrZXQuaW8tY2xpZW50JztcbmltcG9ydCB7IFdhaXRpbmdSb29tUGFydGljaXBhbnQgfSBmcm9tICcuLi8uLi9AdHlwZXMvdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc3BvbmRUb1dhaXRpbmdPcHRpb25zIHtcbiAgcGFydGljaXBhbnRJZDogc3RyaW5nO1xuICBwYXJ0aWNpcGFudE5hbWU6IHN0cmluZztcbiAgdXBkYXRlV2FpdGluZ0xpc3Q6ICh3YWl0aW5nTGlzdDogV2FpdGluZ1Jvb21QYXJ0aWNpcGFudFtdKSA9PiB2b2lkO1xuICB3YWl0aW5nTGlzdDogV2FpdGluZ1Jvb21QYXJ0aWNpcGFudFtdO1xuICB0eXBlOiBzdHJpbmcgfCBib29sZWFuO1xuICByb29tTmFtZTogc3RyaW5nO1xuICBzb2NrZXQ6IFNvY2tldDtcbn1cblxuLy8gRXhwb3J0IHRoZSB0eXBlIGRlZmluaXRpb24gZm9yIHRoZSBmdW5jdGlvblxuZXhwb3J0IHR5cGUgUmVzcG9uZFRvV2FpdGluZ1R5cGUgPSAob3B0aW9uczogUmVzcG9uZFRvV2FpdGluZ09wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG5cbi8qKlxuICogSGFuZGxlcyB0aGUgcmVzcG9uc2UgdG8gYSBwYXJ0aWNpcGFudCBpbiB0aGUgd2FpdGluZyByb29tLCBlaXRoZXIgYWxsb3dpbmcgb3IgZGVueWluZyB0aGVpciBlbnRyeS5cbiAqXG4gKiBAcGFyYW0ge1Jlc3BvbmRUb1dhaXRpbmdPcHRpb25zfSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgaGFuZGxpbmcgdGhlIHBhcnRpY2lwYW50J3MgZW50cnkgcmVxdWVzdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhcnRpY2lwYW50SWQgLSBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHBhcnRpY2lwYW50LlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFydGljaXBhbnROYW1lIC0gTmFtZSBvZiB0aGUgcGFydGljaXBhbnQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnVwZGF0ZVdhaXRpbmdMaXN0IC0gRnVuY3Rpb24gdG8gdXBkYXRlIHRoZSB3YWl0aW5nIGxpc3QgYnkgcmVtb3ZpbmcgdGhlIHJlc3BvbmRlZCBwYXJ0aWNpcGFudC5cbiAqIEBwYXJhbSB7V2FpdGluZ1Jvb21QYXJ0aWNpcGFudFtdfSBvcHRpb25zLndhaXRpbmdMaXN0IC0gQ3VycmVudCBsaXN0IG9mIHBhcnRpY2lwYW50cyBpbiB0aGUgd2FpdGluZyByb29tLlxuICogQHBhcmFtIHtib29sZWFuIHwgc3RyaW5nfSBvcHRpb25zLnR5cGUgLSBJbmRpY2F0ZXMgd2hldGhlciB0byBhbGxvdyAoXCJ0cnVlXCIpIG9yIGRlbnkgKFwiZmFsc2VcIikgdGhlIHBhcnRpY2lwYW50J3MgZW50cnkuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5yb29tTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSByb29tIHRoZSBwYXJ0aWNpcGFudCBpcyByZXF1ZXN0aW5nIHRvIGpvaW4uXG4gKiBAcGFyYW0ge1NvY2tldH0gb3B0aW9ucy5zb2NrZXQgLSBUaGUgc29ja2V0IGluc3RhbmNlIHVzZWQgdG8gZW1pdCB0aGUgcmVzcG9uc2UgZXZlbnQuXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gUmVzb2x2ZXMgd2hlbiB0aGUgcmVzcG9uc2UgaGFzIGJlZW4gcHJvY2Vzc2VkLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZXNwb25kU2VydmljZSA9IG5ldyBSZXNwb25kVG9XYWl0aW5nKCk7XG4gKiByZXNwb25kU2VydmljZS5yZXNwb25kVG9XYWl0aW5nKHtcbiAqICAgcGFydGljaXBhbnRJZDogJzEyMzQ1JyxcbiAqICAgcGFydGljaXBhbnROYW1lOiAnSm9obiBEb2UnLFxuICogICB1cGRhdGVXYWl0aW5nTGlzdDogKG5ld0xpc3QpID0+IGNvbnNvbGUubG9nKCdVcGRhdGVkIFdhaXRpbmcgTGlzdDonLCBuZXdMaXN0KSxcbiAqICAgd2FpdGluZ0xpc3Q6IGN1cnJlbnRXYWl0aW5nTGlzdCxcbiAqICAgdHlwZTogJ3RydWUnLFxuICogICByb29tTmFtZTogJ1Jvb20xJyxcbiAqICAgc29ja2V0OiBpbygnaHR0cDovL2xvY2FsaG9zdDozMDAwJyksXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEluIHRoaXMgZXhhbXBsZSwgdGhlIHBhcnRpY2lwYW50ICdKb2huIERvZScgaXMgYWxsb3dlZCB0byBqb2luICdSb29tMScsIGFuZCB0aGUgdXBkYXRlZCB3YWl0aW5nIGxpc3QgaXMgbG9nZ2VkLlxuICovXG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFJlc3BvbmRUb1dhaXRpbmcge1xuICAvKipcbiAgICogUmVzcG9uZHMgdG8gYSBwYXJ0aWNpcGFudCB3YWl0aW5nIHRvIGpvaW4gYSByb29tIGJ5IGVpdGhlciBhbGxvd2luZyBvciBkZW55aW5nIHRoZWlyIGVudHJ5LlxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIGZvciByZXNwb25kaW5nIHRvIHRoZSB3YWl0aW5nIHBhcnRpY2lwYW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5wYXJ0aWNpcGFudElkIC0gVGhlIElEIG9mIHRoZSBwYXJ0aWNpcGFudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFydGljaXBhbnROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHBhcnRpY2lwYW50LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcHRpb25zLnVwZGF0ZVdhaXRpbmdMaXN0IC0gVGhlIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGUgd2FpdGluZyBsaXN0LlxuICAgKiBAcGFyYW0ge0FycmF5fSBvcHRpb25zLndhaXRpbmdMaXN0IC0gVGhlIGN1cnJlbnQgd2FpdGluZyBsaXN0IG9mIHBhcnRpY2lwYW50cy5cbiAgICogQHBhcmFtIHtib29sZWFuIHwgc3RyaW5nfSBvcHRpb25zLnR5cGUgLSBUaGUgdHlwZSBvZiByZXNwb25zZSwgZWl0aGVyIFwidHJ1ZVwiIG9yIFwiZmFsc2VcIi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucm9vbU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcm9vbS5cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMuc29ja2V0IC0gVGhlIHNvY2tldCBpbnN0YW5jZSB0byBlbWl0IGV2ZW50cy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcmVzcG9uc2UgaGFzIGJlZW4gcHJvY2Vzc2VkLlxuICAgKi9cbiAgYXN5bmMgcmVzcG9uZFRvV2FpdGluZyh7XG4gICAgcGFydGljaXBhbnRJZCxcbiAgICBwYXJ0aWNpcGFudE5hbWUsXG4gICAgdXBkYXRlV2FpdGluZ0xpc3QsXG4gICAgd2FpdGluZ0xpc3QsXG4gICAgdHlwZSxcbiAgICByb29tTmFtZSxcbiAgICBzb2NrZXQsXG4gIH06IFJlc3BvbmRUb1dhaXRpbmdPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gRmlsdGVyIG91dCB0aGUgcGFydGljaXBhbnQgZnJvbSB0aGUgd2FpdGluZyBsaXN0XG4gICAgY29uc3QgbmV3V2FpdGluZ0xpc3QgPSB3YWl0aW5nTGlzdC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ubmFtZSAhPT0gcGFydGljaXBhbnROYW1lKTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgd2FpdGluZyBsaXN0XG4gICAgdXBkYXRlV2FpdGluZ0xpc3QobmV3V2FpdGluZ0xpc3QpO1xuXG4gICAgY29uc3QgcmVzcG9uc2VUeXBlID0gdHlwZSA9PT0gJ3RydWUnIHx8IHR5cGUgPT09IHRydWUgPyAndHJ1ZScgOiAnZmFsc2UnO1xuXG4gICAgLy8gRW1pdCBhbiBldmVudCB0byBhbGxvdyBvciBkZW55IHRoZSBwYXJ0aWNpcGFudCBiYXNlZCBvbiB0aGUgcmVzcG9uc2UgdHlwZVxuICAgIGF3YWl0IHNvY2tldC5lbWl0KCdhbGxvd1VzZXJJbicsIHtcbiAgICAgIHBhcnRpY2lwYW50SWQsXG4gICAgICBwYXJ0aWNpcGFudE5hbWUsXG4gICAgICB0eXBlOiByZXNwb25zZVR5cGUsXG4gICAgICByb29tTmFtZSxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
2
|
-
// canvas.service.ts
|
|
3
|
-
import { Injectable } from '@angular/core';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
/**
|
|
6
|
-
* Manages capturing and streaming from a canvas element.
|
|
7
|
-
*
|
|
8
|
-
* @param {CaptureCanvasStreamOptions} options - Options to control canvas streaming.
|
|
9
|
-
* @param {CaptureCanvasStreamParameters} options.parameters - Object containing media settings and state management functions.
|
|
10
|
-
* @param {boolean} [options.start=true] - If `true`, initiates canvas capture; if `false`, stops the capture.
|
|
11
|
-
* @returns {Promise<void>} A promise that resolves once the canvas stream has started or stopped.
|
|
12
|
-
*
|
|
13
|
-
* The function first checks the availability of `canvasWhiteboard` to capture the canvas stream. If unavailable, it attempts multiple times until a timeout. If successful:
|
|
14
|
-
* - It starts the canvas capture, creating or reconnecting the transport for streaming.
|
|
15
|
-
* - If stopping, it disconnects the transport and halts the stream.
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* ```typescript
|
|
19
|
-
* const captureService = new CaptureCanvasStream();
|
|
20
|
-
* captureService.captureCanvasStream({
|
|
21
|
-
* parameters: {
|
|
22
|
-
* canvasWhiteboard: document.getElementById('myCanvas') as HTMLCanvasElement,
|
|
23
|
-
* updateCanvasStream: (stream) => console.log('Canvas Stream:', stream),
|
|
24
|
-
* screenProducer: null,
|
|
25
|
-
* transportCreated: false,
|
|
26
|
-
* // other required parameters...
|
|
27
|
-
* },
|
|
28
|
-
* start: true
|
|
29
|
-
* });
|
|
30
|
-
* ```
|
|
31
|
-
*
|
|
32
|
-
* This example initiates a capture of `myCanvas`, updating the canvas stream upon successful connection.
|
|
33
|
-
*/
|
|
34
|
-
export class CaptureCanvasStream {
|
|
35
|
-
/**
|
|
36
|
-
* Capture the canvas stream.
|
|
37
|
-
* @param {Object} parameters - The parameters object.
|
|
38
|
-
* @param {boolean} [start=true] - Indicates whether to start capturing the stream.
|
|
39
|
-
* @returns {Promise<void>} - A promise that resolves when the canvas stream is captured.
|
|
40
|
-
*/
|
|
41
|
-
captureCanvasStream = async ({ parameters, start = true, }) => {
|
|
42
|
-
try {
|
|
43
|
-
parameters = parameters.getUpdatedAllParams();
|
|
44
|
-
let { canvasWhiteboard, canvasStream, updateCanvasStream, screenProducer, transportCreated, updateScreenProducer, sleep, createSendTransport, connectSendTransportScreen, disconnectSendTransportScreen, } = parameters;
|
|
45
|
-
if (start && !canvasStream) {
|
|
46
|
-
// Wait for canvasWhiteboard to be available
|
|
47
|
-
let attempts = 0;
|
|
48
|
-
const maxAttempts = 20; // 2 seconds / 100ms intervals
|
|
49
|
-
while (!canvasWhiteboard && attempts < maxAttempts) {
|
|
50
|
-
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
51
|
-
parameters = parameters.getUpdatedAllParams();
|
|
52
|
-
canvasWhiteboard = parameters.canvasWhiteboard;
|
|
53
|
-
attempts++;
|
|
54
|
-
}
|
|
55
|
-
if (!canvasWhiteboard) {
|
|
56
|
-
throw new Error('Canvas whiteboard not available.');
|
|
57
|
-
}
|
|
58
|
-
const stream = canvasWhiteboard.captureStream(30);
|
|
59
|
-
canvasStream = stream;
|
|
60
|
-
updateCanvasStream(stream);
|
|
61
|
-
if (!transportCreated) {
|
|
62
|
-
await createSendTransport({ option: 'screen', parameters });
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
try {
|
|
66
|
-
screenProducer.close();
|
|
67
|
-
updateScreenProducer(null);
|
|
68
|
-
await sleep({ ms: 500 });
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
/* handle error */
|
|
72
|
-
}
|
|
73
|
-
await connectSendTransportScreen({ stream, parameters });
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
if (!start && canvasStream) {
|
|
78
|
-
canvasStream.getTracks().forEach((track) => track.stop());
|
|
79
|
-
canvasStream = null;
|
|
80
|
-
updateCanvasStream(null);
|
|
81
|
-
disconnectSendTransportScreen({ parameters });
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
console.log('Error in captureCanvasStream:', error);
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CaptureCanvasStream, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
90
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CaptureCanvasStream, providedIn: 'root' });
|
|
91
|
-
}
|
|
92
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: CaptureCanvasStream, decorators: [{
|
|
93
|
-
type: Injectable,
|
|
94
|
-
args: [{
|
|
95
|
-
providedIn: 'root',
|
|
96
|
-
}]
|
|
97
|
-
}] });
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwdHVyZS1jYW52YXMtc3RyZWFtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZWRpYXNmdS1hbmd1bGFyL3NyYy9saWIvbWV0aG9kcy93aGl0ZWJvYXJkLW1ldGhvZHMvY2FwdHVyZS1jYW52YXMtc3RyZWFtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkRBQTZEO0FBQzdELG9CQUFvQjtBQUNwQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQXdDM0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFNSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCOzs7OztPQUtHO0lBQ0gsbUJBQW1CLEdBQUcsS0FBSyxFQUFFLEVBQzNCLFVBQVUsRUFDVixLQUFLLEdBQUcsSUFBSSxHQUNlLEVBQWlCLEVBQUU7UUFDOUMsSUFBSSxDQUFDO1lBQ0gsVUFBVSxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBRTlDLElBQUksRUFDRixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQixLQUFLLEVBQ0wsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQiw2QkFBNkIsR0FDOUIsR0FBRyxVQUFVLENBQUM7WUFFZixJQUFJLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUMzQiw0Q0FBNEM7Z0JBQzVDLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDakIsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLENBQUMsOEJBQThCO2dCQUN0RCxPQUFPLENBQUMsZ0JBQWdCLElBQUksUUFBUSxHQUFHLFdBQVcsRUFBRSxDQUFDO29CQUNuRCxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3pELFVBQVUsR0FBRyxVQUFVLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztvQkFDOUMsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixDQUFDO29CQUMvQyxRQUFRLEVBQUUsQ0FBQztnQkFDYixDQUFDO2dCQUVELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO29CQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7Z0JBQ3RELENBQUM7Z0JBQ0QsTUFBTSxNQUFNLEdBQUcsZ0JBQWlCLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRCxZQUFZLEdBQUcsTUFBTSxDQUFDO2dCQUN0QixrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFM0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7b0JBQ3RCLE1BQU0sbUJBQW1CLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQzlELENBQUM7cUJBQU0sQ0FBQztvQkFDTixJQUFJLENBQUM7d0JBQ0gsY0FBZSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUN4QixvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDM0IsTUFBTSxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFDM0IsQ0FBQztvQkFBQyxNQUFNLENBQUM7d0JBQ1Asa0JBQWtCO29CQUNwQixDQUFDO29CQUVELE1BQU0sMEJBQTBCLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztnQkFDM0QsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsS0FBSyxJQUFJLFlBQVksRUFBRSxDQUFDO29CQUMzQixZQUFZLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBdUIsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQzVFLFlBQVksR0FBRyxJQUFJLENBQUM7b0JBQ3BCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN6Qiw2QkFBNkIsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQ2hELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDLENBQUM7dUdBckVTLG1CQUFtQjsyR0FBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uICovXG4vLyBjYW52YXMuc2VydmljZS50c1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJvZHVjZXIgfSBmcm9tICdtZWRpYXNvdXAtY2xpZW50L2xpYi90eXBlcyc7XG5pbXBvcnQge1xuICBDb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlblR5cGUsXG4gIENyZWF0ZVNlbmRUcmFuc3BvcnRUeXBlLFxuICBEaXNjb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlblR5cGUsXG4gIFNsZWVwVHlwZSxcbiAgQ3JlYXRlU2VuZFRyYW5zcG9ydFBhcmFtZXRlcnMsXG4gIERpc2Nvbm5lY3RTZW5kVHJhbnNwb3J0U2NyZWVuUGFyYW1ldGVycyxcbiAgQ29ubmVjdFNlbmRUcmFuc3BvcnRTY3JlZW5QYXJhbWV0ZXJzLFxufSBmcm9tICcuLi8uLi9AdHlwZXMvdHlwZXMnO1xuZXhwb3J0IGludGVyZmFjZSBDYXB0dXJlQ2FudmFzU3RyZWFtUGFyYW1ldGVyc1xuICBleHRlbmRzIENyZWF0ZVNlbmRUcmFuc3BvcnRQYXJhbWV0ZXJzLFxuICAgIERpc2Nvbm5lY3RTZW5kVHJhbnNwb3J0U2NyZWVuUGFyYW1ldGVycyxcbiAgICBDb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlblBhcmFtZXRlcnMge1xuICBjYW52YXNXaGl0ZWJvYXJkOiBIVE1MQ2FudmFzRWxlbWVudCB8IG51bGw7XG4gIGNhbnZhc1N0cmVhbTogTWVkaWFTdHJlYW0gfCBudWxsO1xuICB1cGRhdGVDYW52YXNTdHJlYW06IChzdHJlYW06IE1lZGlhU3RyZWFtIHwgbnVsbCkgPT4gdm9pZDtcbiAgc2NyZWVuUHJvZHVjZXI6IFByb2R1Y2VyIHwgbnVsbDtcbiAgdHJhbnNwb3J0Q3JlYXRlZDogYm9vbGVhbjtcbiAgdXBkYXRlU2NyZWVuUHJvZHVjZXI6IChwcm9kdWNlcjogUHJvZHVjZXIgfCBudWxsKSA9PiB2b2lkO1xuXG4gIC8vIG1lZGlhc2Z1IGZ1bmN0aW9uc1xuICBzbGVlcDogU2xlZXBUeXBlO1xuICBjcmVhdGVTZW5kVHJhbnNwb3J0OiBDcmVhdGVTZW5kVHJhbnNwb3J0VHlwZTtcbiAgY29ubmVjdFNlbmRUcmFuc3BvcnRTY3JlZW46IENvbm5lY3RTZW5kVHJhbnNwb3J0U2NyZWVuVHlwZTtcbiAgZGlzY29ubmVjdFNlbmRUcmFuc3BvcnRTY3JlZW46IERpc2Nvbm5lY3RTZW5kVHJhbnNwb3J0U2NyZWVuVHlwZTtcblxuICBnZXRVcGRhdGVkQWxsUGFyYW1zOiAoKSA9PiBDYXB0dXJlQ2FudmFzU3RyZWFtUGFyYW1ldGVycztcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhcHR1cmVDYW52YXNTdHJlYW1PcHRpb25zIHtcbiAgcGFyYW1ldGVyczogQ2FwdHVyZUNhbnZhc1N0cmVhbVBhcmFtZXRlcnM7XG4gIHN0YXJ0PzogYm9vbGVhbjtcbn1cblxuLy8gRXhwb3J0IHRoZSB0eXBlIGRlZmluaXRpb24gZm9yIHRoZSBmdW5jdGlvblxuZXhwb3J0IHR5cGUgQ2FwdHVyZUNhbnZhc1N0cmVhbVR5cGUgPSAob3B0aW9uczogQ2FwdHVyZUNhbnZhc1N0cmVhbU9wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG5cbi8qKlxuICogTWFuYWdlcyBjYXB0dXJpbmcgYW5kIHN0cmVhbWluZyBmcm9tIGEgY2FudmFzIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIHtDYXB0dXJlQ2FudmFzU3RyZWFtT3B0aW9uc30gb3B0aW9ucyAtIE9wdGlvbnMgdG8gY29udHJvbCBjYW52YXMgc3RyZWFtaW5nLlxuICogQHBhcmFtIHtDYXB0dXJlQ2FudmFzU3RyZWFtUGFyYW1ldGVyc30gb3B0aW9ucy5wYXJhbWV0ZXJzIC0gT2JqZWN0IGNvbnRhaW5pbmcgbWVkaWEgc2V0dGluZ3MgYW5kIHN0YXRlIG1hbmFnZW1lbnQgZnVuY3Rpb25zLlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5zdGFydD10cnVlXSAtIElmIGB0cnVlYCwgaW5pdGlhdGVzIGNhbnZhcyBjYXB0dXJlOyBpZiBgZmFsc2VgLCBzdG9wcyB0aGUgY2FwdHVyZS5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyBvbmNlIHRoZSBjYW52YXMgc3RyZWFtIGhhcyBzdGFydGVkIG9yIHN0b3BwZWQuXG4gKlxuICogVGhlIGZ1bmN0aW9uIGZpcnN0IGNoZWNrcyB0aGUgYXZhaWxhYmlsaXR5IG9mIGBjYW52YXNXaGl0ZWJvYXJkYCB0byBjYXB0dXJlIHRoZSBjYW52YXMgc3RyZWFtLiBJZiB1bmF2YWlsYWJsZSwgaXQgYXR0ZW1wdHMgbXVsdGlwbGUgdGltZXMgdW50aWwgYSB0aW1lb3V0LiBJZiBzdWNjZXNzZnVsOlxuICogLSBJdCBzdGFydHMgdGhlIGNhbnZhcyBjYXB0dXJlLCBjcmVhdGluZyBvciByZWNvbm5lY3RpbmcgdGhlIHRyYW5zcG9ydCBmb3Igc3RyZWFtaW5nLlxuICogLSBJZiBzdG9wcGluZywgaXQgZGlzY29ubmVjdHMgdGhlIHRyYW5zcG9ydCBhbmQgaGFsdHMgdGhlIHN0cmVhbS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgY2FwdHVyZVNlcnZpY2UgPSBuZXcgQ2FwdHVyZUNhbnZhc1N0cmVhbSgpO1xuICogY2FwdHVyZVNlcnZpY2UuY2FwdHVyZUNhbnZhc1N0cmVhbSh7XG4gKiAgIHBhcmFtZXRlcnM6IHtcbiAqICAgICBjYW52YXNXaGl0ZWJvYXJkOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXlDYW52YXMnKSBhcyBIVE1MQ2FudmFzRWxlbWVudCxcbiAqICAgICB1cGRhdGVDYW52YXNTdHJlYW06IChzdHJlYW0pID0+IGNvbnNvbGUubG9nKCdDYW52YXMgU3RyZWFtOicsIHN0cmVhbSksXG4gKiAgICAgc2NyZWVuUHJvZHVjZXI6IG51bGwsXG4gKiAgICAgdHJhbnNwb3J0Q3JlYXRlZDogZmFsc2UsXG4gKiAgICAgLy8gb3RoZXIgcmVxdWlyZWQgcGFyYW1ldGVycy4uLlxuICogICB9LFxuICogICBzdGFydDogdHJ1ZVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBUaGlzIGV4YW1wbGUgaW5pdGlhdGVzIGEgY2FwdHVyZSBvZiBgbXlDYW52YXNgLCB1cGRhdGluZyB0aGUgY2FudmFzIHN0cmVhbSB1cG9uIHN1Y2Nlc3NmdWwgY29ubmVjdGlvbi5cbiAqL1xuXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDYXB0dXJlQ2FudmFzU3RyZWFtIHtcbiAgLyoqXG4gICAqIENhcHR1cmUgdGhlIGNhbnZhcyBzdHJlYW0uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbWV0ZXJzIC0gVGhlIHBhcmFtZXRlcnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtzdGFydD10cnVlXSAtIEluZGljYXRlcyB3aGV0aGVyIHRvIHN0YXJ0IGNhcHR1cmluZyB0aGUgc3RyZWFtLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjYW52YXMgc3RyZWFtIGlzIGNhcHR1cmVkLlxuICAgKi9cbiAgY2FwdHVyZUNhbnZhc1N0cmVhbSA9IGFzeW5jICh7XG4gICAgcGFyYW1ldGVycyxcbiAgICBzdGFydCA9IHRydWUsXG4gIH06IENhcHR1cmVDYW52YXNTdHJlYW1PcHRpb25zKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzLmdldFVwZGF0ZWRBbGxQYXJhbXMoKTtcblxuICAgICAgbGV0IHtcbiAgICAgICAgY2FudmFzV2hpdGVib2FyZCxcbiAgICAgICAgY2FudmFzU3RyZWFtLFxuICAgICAgICB1cGRhdGVDYW52YXNTdHJlYW0sXG4gICAgICAgIHNjcmVlblByb2R1Y2VyLFxuICAgICAgICB0cmFuc3BvcnRDcmVhdGVkLFxuICAgICAgICB1cGRhdGVTY3JlZW5Qcm9kdWNlcixcbiAgICAgICAgc2xlZXAsXG4gICAgICAgIGNyZWF0ZVNlbmRUcmFuc3BvcnQsXG4gICAgICAgIGNvbm5lY3RTZW5kVHJhbnNwb3J0U2NyZWVuLFxuICAgICAgICBkaXNjb25uZWN0U2VuZFRyYW5zcG9ydFNjcmVlbixcbiAgICAgIH0gPSBwYXJhbWV0ZXJzO1xuXG4gICAgICBpZiAoc3RhcnQgJiYgIWNhbnZhc1N0cmVhbSkge1xuICAgICAgICAvLyBXYWl0IGZvciBjYW52YXNXaGl0ZWJvYXJkIHRvIGJlIGF2YWlsYWJsZVxuICAgICAgICBsZXQgYXR0ZW1wdHMgPSAwO1xuICAgICAgICBjb25zdCBtYXhBdHRlbXB0cyA9IDIwOyAvLyAyIHNlY29uZHMgLyAxMDBtcyBpbnRlcnZhbHNcbiAgICAgICAgd2hpbGUgKCFjYW52YXNXaGl0ZWJvYXJkICYmIGF0dGVtcHRzIDwgbWF4QXR0ZW1wdHMpIHtcbiAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDApKTtcbiAgICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVycy5nZXRVcGRhdGVkQWxsUGFyYW1zKCk7XG4gICAgICAgICAgY2FudmFzV2hpdGVib2FyZCA9IHBhcmFtZXRlcnMuY2FudmFzV2hpdGVib2FyZDtcbiAgICAgICAgICBhdHRlbXB0cysrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjYW52YXNXaGl0ZWJvYXJkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW52YXMgd2hpdGVib2FyZCBub3QgYXZhaWxhYmxlLicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0cmVhbSA9IGNhbnZhc1doaXRlYm9hcmQhLmNhcHR1cmVTdHJlYW0oMzApO1xuICAgICAgICBjYW52YXNTdHJlYW0gPSBzdHJlYW07XG4gICAgICAgIHVwZGF0ZUNhbnZhc1N0cmVhbShzdHJlYW0pO1xuXG4gICAgICAgIGlmICghdHJhbnNwb3J0Q3JlYXRlZCkge1xuICAgICAgICAgIGF3YWl0IGNyZWF0ZVNlbmRUcmFuc3BvcnQoeyBvcHRpb246ICdzY3JlZW4nLCBwYXJhbWV0ZXJzIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzY3JlZW5Qcm9kdWNlciEuY2xvc2UoKTtcbiAgICAgICAgICAgIHVwZGF0ZVNjcmVlblByb2R1Y2VyKG51bGwpO1xuICAgICAgICAgICAgYXdhaXQgc2xlZXAoeyBtczogNTAwIH0pO1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLyogaGFuZGxlIGVycm9yICovXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXdhaXQgY29ubmVjdFNlbmRUcmFuc3BvcnRTY3JlZW4oeyBzdHJlYW0sIHBhcmFtZXRlcnMgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghc3RhcnQgJiYgY2FudmFzU3RyZWFtKSB7XG4gICAgICAgICAgY2FudmFzU3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2goKHRyYWNrOiBNZWRpYVN0cmVhbVRyYWNrKSA9PiB0cmFjay5zdG9wKCkpO1xuICAgICAgICAgIGNhbnZhc1N0cmVhbSA9IG51bGw7XG4gICAgICAgICAgdXBkYXRlQ2FudmFzU3RyZWFtKG51bGwpO1xuICAgICAgICAgIGRpc2Nvbm5lY3RTZW5kVHJhbnNwb3J0U2NyZWVuKHsgcGFyYW1ldGVycyB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZygnRXJyb3IgaW4gY2FwdHVyZUNhbnZhc1N0cmVhbTonLCBlcnJvcik7XG4gICAgfVxuICB9O1xufVxuIl19
|