botframework-webchat-core 4.18.1 → 4.19.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/LICENSE +21 -0
- package/activity.js +3 -0
- package/boot/deprecated/activity.js +7 -0
- package/boot/deprecated/activity.mjs +5 -0
- package/boot/deprecated/graph.js +7 -0
- package/boot/deprecated/graph.mjs +5 -0
- package/boot/deprecated/internal.js +7 -0
- package/boot/deprecated/internal.mjs +5 -0
- package/dist/WebChatActivity-CYqxBG_4.d.mts +271 -0
- package/dist/WebChatActivity-CYqxBG_4.d.ts +271 -0
- package/dist/_dtsroll-chunks/B7Whm73Q-tagged.d.ts +71 -0
- package/dist/_dtsroll-chunks/C-MxR98A-botframework-webchat-core-debug-api.d.ts +135 -0
- package/dist/_dtsroll-chunks/CAquHfZK-botframework-webchat-base.utils.d.ts +17 -0
- package/dist/_dtsroll-chunks/CDVed0Q--botframework-webchat-core.org-schema.d.ts +601 -0
- package/dist/_dtsroll-chunks/vlDgTKWF-botframework-webchat-core-graph.d.ts +239 -0
- package/dist/botframework-webchat-core.activity.d.mts +23 -0
- package/dist/botframework-webchat-core.activity.d.ts +23 -0
- package/dist/botframework-webchat-core.activity.js +2 -0
- package/dist/botframework-webchat-core.activity.js.map +1 -0
- package/dist/botframework-webchat-core.activity.mjs +2 -0
- package/dist/botframework-webchat-core.activity.mjs.map +1 -0
- package/dist/botframework-webchat-core.d.mts +267 -662
- package/dist/botframework-webchat-core.d.ts +556 -0
- package/dist/botframework-webchat-core.graph.d.mts +9 -0
- package/dist/botframework-webchat-core.graph.d.ts +9 -0
- package/dist/botframework-webchat-core.graph.js +2 -0
- package/dist/botframework-webchat-core.graph.js.map +1 -0
- package/dist/botframework-webchat-core.graph.mjs +2 -0
- package/dist/botframework-webchat-core.graph.mjs.map +1 -0
- package/dist/botframework-webchat-core.internal.d.mts +61 -0
- package/dist/botframework-webchat-core.internal.d.ts +61 -0
- package/dist/botframework-webchat-core.internal.js +2 -0
- package/dist/botframework-webchat-core.internal.js.map +1 -0
- package/dist/botframework-webchat-core.internal.mjs +2 -0
- package/dist/botframework-webchat-core.internal.mjs.map +1 -0
- package/dist/botframework-webchat-core.js +2 -0
- package/dist/botframework-webchat-core.js.map +1 -0
- package/dist/botframework-webchat-core.json-ld.d.mts +2 -0
- package/dist/botframework-webchat-core.json-ld.d.ts +2 -0
- package/dist/botframework-webchat-core.json-ld.js +2 -0
- package/dist/botframework-webchat-core.json-ld.js.map +1 -0
- package/dist/botframework-webchat-core.json-ld.mjs +2 -0
- package/dist/botframework-webchat-core.json-ld.mjs.map +1 -0
- package/dist/botframework-webchat-core.mjs +1 -2
- package/dist/botframework-webchat-core.mjs.map +1 -1
- package/dist/botframework-webchat-core.org-schema.d.mts +2 -0
- package/dist/botframework-webchat-core.org-schema.d.ts +2 -0
- package/dist/botframework-webchat-core.org-schema.js +2 -0
- package/dist/botframework-webchat-core.org-schema.js.map +1 -0
- package/dist/botframework-webchat-core.org-schema.mjs +2 -0
- package/dist/botframework-webchat-core.org-schema.mjs.map +1 -0
- package/dist/chunk-A4GEFYZJ.mjs +2 -0
- package/dist/chunk-A4GEFYZJ.mjs.map +1 -0
- package/dist/chunk-HZWWJL43.mjs +2 -0
- package/dist/chunk-HZWWJL43.mjs.map +1 -0
- package/dist/chunk-ICNZKQJW.mjs +2 -0
- package/dist/chunk-ICNZKQJW.mjs.map +1 -0
- package/dist/chunk-K6E6QQMQ.js +2 -0
- package/dist/chunk-K6E6QQMQ.js.map +1 -0
- package/dist/chunk-KPT5FBH2.mjs +2 -0
- package/dist/chunk-KPT5FBH2.mjs.map +1 -0
- package/dist/chunk-LO5BZSVE.js +2 -0
- package/dist/chunk-LO5BZSVE.js.map +1 -0
- package/dist/chunk-LP2X2JTR.js +2 -0
- package/dist/chunk-LP2X2JTR.js.map +1 -0
- package/dist/chunk-RUERYYZO.js +2 -0
- package/dist/chunk-RUERYYZO.js.map +1 -0
- package/dist/chunk-XOE3AOSM.js +2 -0
- package/dist/chunk-XOE3AOSM.js.map +1 -0
- package/dist/chunk-Y6ZDNVRT.mjs +2 -0
- package/dist/chunk-Y6ZDNVRT.mjs.map +1 -0
- package/{lib/createStore.d.ts → dist/createStore-CcvouBrW.d.mts} +29 -7
- package/dist/createStore-CcvouBrW.d.ts +65 -0
- package/dist/metafile-cjs.json +1 -0
- package/dist/metafile-esm.json +1 -1
- package/graph.js +3 -0
- package/internal.js +3 -0
- package/json-ld.js +3 -0
- package/org-schema.js +3 -0
- package/package.json +147 -73
- package/src/__tests__/activityFromBot.spec.js +2 -0
- package/src/__tests__/addMetaTag.spec.js +8 -0
- package/src/__tests__/addMetaTag.spec.mjs +8 -0
- package/src/__tests__/connectSaga.spec.js +2 -0
- package/src/__tests__/deleteKey.spec.js +2 -0
- package/src/__tests__/detectSlowConnectionSaga.spec.js +3 -1
- package/src/__tests__/observeOnce.spec.js +2 -0
- package/src/__tests__/speakableActivity.spec.js +2 -0
- package/src/__tests__/uniqueID.spec.js +2 -0
- package/src/actions/clearSuggestedActions.ts +20 -0
- package/src/actions/{connect.js → connect.ts} +9 -1
- package/src/actions/muteVoiceRecording.ts +17 -0
- package/src/actions/postVoiceActivity.ts +21 -0
- package/src/actions/registerActionSink.ts +29 -0
- package/src/actions/registerVoiceHandler.ts +24 -0
- package/src/actions/{sendEvent.js → sendEvent.ts} +1 -1
- package/src/actions/{sendMessageBack.js → sendMessageBack.ts} +1 -1
- package/src/actions/{sendPostBack.js → sendPostBack.ts} +1 -1
- package/src/actions/{setDictateInterims.js → setDictateInterims.ts} +1 -1
- package/src/actions/{setDictateState.js → setDictateState.ts} +1 -1
- package/src/actions/{setLanguage.js → setLanguage.ts} +1 -1
- package/src/actions/{setSendBox.js → setSendBox.ts} +1 -1
- package/src/actions/{setSendTimeout.js → setSendTimeout.ts} +1 -1
- package/src/actions/setSendTypingIndicator.ts +1 -1
- package/src/actions/setSuggestedActions.ts +35 -0
- package/src/actions/setVoiceState.ts +21 -0
- package/src/actions/startVoiceRecording.ts +17 -0
- package/src/actions/stopVoiceRecording.ts +17 -0
- package/src/actions/{submitSendBox.js → submitSendBox.ts} +1 -1
- package/src/actions/unmuteVoiceRecording.ts +17 -0
- package/src/actions/unregisterActionSink.ts +29 -0
- package/src/actions/unregisterVoiceHandler.ts +19 -0
- package/src/boot/activity.ts +19 -0
- package/src/boot/graph.ts +18 -0
- package/src/boot/internal.ts +11 -0
- package/src/boot/json-ld.ts +6 -0
- package/src/boot/org-schema.ts +29 -0
- package/src/buildInfo.ts +9 -0
- package/src/constants/{ActivityClientState.js → ActivityClientState.ts} +3 -3
- package/src/constants/DictateState.ts +10 -0
- package/src/createPromiseQueue.js +8 -6
- package/src/createReducer.ts +28 -20
- package/src/createSagas.ts +6 -3
- package/src/createStore.ts +26 -10
- package/src/env.d.ts +12 -0
- package/src/graph/createGraphFromStore.ts +121 -0
- package/src/index.ts +62 -45
- package/src/internal/StoreDebugAPIRegistry.ts +4 -0
- package/src/internal/actions/setRawState.ts +48 -0
- package/src/internal/types/suggestedActions.ts +11 -0
- package/src/internal/types/suggestedActionsOriginActivity.ts +16 -0
- package/src/reducers/activities/combineActivitiesReducer.ts +58 -0
- package/src/reducers/activities/createGroupedActivitiesReducer.ts +297 -0
- package/src/reducers/activities/patchActivity.ts +37 -0
- package/src/reducers/activities/sort/deleteActivityByLocalId.activity.spec.ts +144 -0
- package/src/reducers/activities/sort/deleteActivityByLocalId.howTo.spec.ts +148 -0
- package/src/reducers/activities/sort/deleteActivityByLocalId.howToWithLivestream.spec.ts +248 -0
- package/src/reducers/activities/sort/deleteActivityByLocalId.livestream.spec.ts +156 -0
- package/src/reducers/activities/sort/deleteActivityByLocalId.ts +177 -0
- package/src/reducers/activities/sort/private/computePartListTimestamp.ts +9 -0
- package/src/reducers/activities/sort/private/computeSortedActivities.ts +51 -0
- package/src/reducers/activities/sort/private/getLogicalTimestamp.spec.ts +49 -0
- package/src/reducers/activities/sort/private/getLogicalTimestamp.ts +33 -0
- package/src/reducers/activities/sort/private/getPartGroupingMetadataMap.spec.ts +92 -0
- package/src/reducers/activities/sort/private/getPartGroupingMetadataMap.ts +37 -0
- package/src/reducers/activities/sort/private/insertSorted.spec.ts +106 -0
- package/src/reducers/activities/sort/private/insertSorted.ts +18 -0
- package/src/reducers/activities/sort/property/LocalId.ts +60 -0
- package/src/reducers/activities/sort/property/Position.ts +39 -0
- package/src/reducers/activities/sort/property/ReceivedAt.ts +45 -0
- package/src/reducers/activities/sort/property/SendStatus.ts +51 -0
- package/src/reducers/activities/sort/queryLocalIdByActivityId.ts +6 -0
- package/src/reducers/activities/sort/queryLocalIdByClientActivityId.ts +6 -0
- package/src/reducers/activities/sort/types.ts +80 -0
- package/src/reducers/activities/sort/updateActivityChannelData.ts +101 -0
- package/src/reducers/activities/sort/updateSendState.ts +22 -0
- package/src/reducers/activities/sort/upsert.activity.spec.ts +500 -0
- package/src/reducers/activities/sort/upsert.howTo.spec.ts +368 -0
- package/src/reducers/activities/sort/upsert.howToWithLivestream.spec.ts +384 -0
- package/src/reducers/activities/sort/upsert.livestream.spec.ts +418 -0
- package/src/reducers/activities/sort/upsert.ts +498 -0
- package/src/reducers/activities/tsconfig.json +4 -0
- package/src/reducers/createNotificationsReducer.ts +4 -4
- package/src/reducers/suggestedActions.ts +21 -0
- package/src/reducers/suggestedActionsOriginActivity.ts +24 -0
- package/src/reducers/voiceActivity.ts +102 -0
- package/src/sagas/actionSinkSaga.ts +39 -0
- package/src/sagas/observeActivitySaga.ts +51 -1
- package/src/sagas/postActivitySaga.ts +17 -10
- package/src/sagas/postVoiceActivitySaga.ts +76 -0
- package/src/sagas/queueIncomingActivitySaga.ts +10 -4
- package/src/sagas/sendMessageToPostActivitySaga.ts +4 -1
- package/src/sagas/speakActivityAndStartDictateOnIncomingActivityFromOthersSaga.js +10 -4
- package/src/sagas/startDictateOnSpeakCompleteSaga.js +3 -3
- package/src/sagas/startSpeakActivityOnPostActivitySaga.js +15 -5
- package/src/sagas/stopDictateOnCardActionSaga.js +11 -3
- package/src/sagas/stopSpeakingActivityOnInputSaga.js +22 -4
- package/src/selectors/combineSelectors.ts +1 -1
- package/src/tsconfig.json +3 -15
- package/src/types/StoreDebugAPI.ts +25 -0
- package/src/types/WebChatActivity.ts +31 -14
- package/src/types/external/DirectLineActivity.ts +1 -1
- package/src/types/external/Observable.ts +4 -1
- package/src/types/internal/GlobalScopeClock.ts +10 -10
- package/src/types/internal/ReduxState.ts +2 -0
- package/src/types/internal/WebChatOutgoingActivity.ts +1 -1
- package/src/utils/dateToLocaleISOString.chatham.spec.js +1 -2
- package/src/utils/dateToLocaleISOString.japan.spec.js +1 -2
- package/src/utils/dateToLocaleISOString.newfoundland.spec.js +1 -2
- package/src/utils/dateToLocaleISOString.pacific.spec.js +1 -2
- package/src/utils/dateToLocaleISOString.utc.spec.js +1 -3
- package/src/utils/deleteKey.ts +1 -1
- package/src/utils/getActivityLivestreamingMetadata.spec.ts +297 -0
- package/src/utils/getActivityLivestreamingMetadata.ts +197 -0
- package/src/utils/getOrgSchemaMessage.spec.ts +4 -1
- package/src/utils/getOrgSchemaMessage.ts +16 -16
- package/src/utils/onErrorResumeNext.ts +1 -1
- package/src/utils/voiceActivity/getVoiceActivityRole.spec.ts +150 -0
- package/src/utils/voiceActivity/getVoiceActivityRole.ts +16 -0
- package/src/utils/voiceActivity/getVoiceActivityText.spec.ts +100 -0
- package/src/utils/voiceActivity/getVoiceActivityText.ts +11 -0
- package/src/utils/voiceActivity/isVoiceActivity.spec.ts +202 -0
- package/src/utils/voiceActivity/isVoiceActivity.ts +21 -0
- package/src/utils/voiceActivity/isVoiceTranscriptActivity.spec.ts +224 -0
- package/src/utils/voiceActivity/isVoiceTranscriptActivity.ts +24 -0
- package/dist/botframework-webchat-core.mjs.LEGAL.txt +0 -0
- package/lib/actions/clearSuggestedActions.js +0 -15
- package/lib/actions/connect.js +0 -33
- package/lib/actions/connectionStatusUpdate.js +0 -20
- package/lib/actions/deleteActivity.d.ts +0 -13
- package/lib/actions/deleteActivity.d.ts.map +0 -1
- package/lib/actions/deleteActivity.js +0 -19
- package/lib/actions/disconnect.js +0 -21
- package/lib/actions/dismissNotification.d.ts +0 -12
- package/lib/actions/dismissNotification.d.ts.map +0 -1
- package/lib/actions/dismissNotification.js +0 -19
- package/lib/actions/emitTypingIndicator.js +0 -15
- package/lib/actions/incomingActivity.d.ts +0 -14
- package/lib/actions/incomingActivity.d.ts.map +0 -1
- package/lib/actions/incomingActivity.js +0 -19
- package/lib/actions/markActivity.d.ts +0 -17
- package/lib/actions/markActivity.d.ts.map +0 -1
- package/lib/actions/markActivity.js +0 -22
- package/lib/actions/postActivity.d.ts +0 -64
- package/lib/actions/postActivity.d.ts.map +0 -1
- package/lib/actions/postActivity.js +0 -31
- package/lib/actions/queueIncomingActivity.js +0 -18
- package/lib/actions/reconnect.js +0 -17
- package/lib/actions/sagaError.d.ts +0 -8
- package/lib/actions/sagaError.d.ts.map +0 -1
- package/lib/actions/sagaError.js +0 -15
- package/lib/actions/sendEvent.js +0 -19
- package/lib/actions/sendFiles.d.ts +0 -19
- package/lib/actions/sendFiles.d.ts.map +0 -1
- package/lib/actions/sendFiles.js +0 -20
- package/lib/actions/sendMessage.d.ts +0 -19
- package/lib/actions/sendMessage.d.ts.map +0 -1
- package/lib/actions/sendMessage.js +0 -24
- package/lib/actions/sendMessageBack.js +0 -20
- package/lib/actions/sendPostBack.js +0 -18
- package/lib/actions/setClockSkewAdjustment.js +0 -12
- package/lib/actions/setDictateInterims.js +0 -18
- package/lib/actions/setDictateState.js +0 -18
- package/lib/actions/setLanguage.js +0 -18
- package/lib/actions/setNotification.d.ts +0 -10
- package/lib/actions/setNotification.d.ts.map +0 -1
- package/lib/actions/setNotification.js +0 -37
- package/lib/actions/setReferenceGrammarID.js +0 -18
- package/lib/actions/setSendBox.js +0 -18
- package/lib/actions/setSendBoxAttachments.d.ts +0 -13
- package/lib/actions/setSendBoxAttachments.d.ts.map +0 -1
- package/lib/actions/setSendBoxAttachments.js +0 -18
- package/lib/actions/setSendTimeout.js +0 -18
- package/lib/actions/setSendTypingIndicator.d.ts +0 -11
- package/lib/actions/setSendTypingIndicator.d.ts.map +0 -1
- package/lib/actions/setSendTypingIndicator.js +0 -18
- package/lib/actions/setSuggestedActions.js +0 -20
- package/lib/actions/startDictate.js +0 -15
- package/lib/actions/startSpeakingActivity.js +0 -15
- package/lib/actions/stopDictate.js +0 -15
- package/lib/actions/stopSpeakingActivity.js +0 -15
- package/lib/actions/submitSendBox.js +0 -22
- package/lib/actions/updateConnectionStatus.js +0 -18
- package/lib/constants/ActivityClientState.js +0 -16
- package/lib/constants/DictateState.js +0 -17
- package/lib/createPromiseQueue.js +0 -30
- package/lib/createReducer.d.ts +0 -60
- package/lib/createReducer.d.ts.map +0 -1
- package/lib/createReducer.js +0 -45
- package/lib/createSagas.d.ts +0 -8
- package/lib/createSagas.d.ts.map +0 -1
- package/lib/createSagas.js +0 -112
- package/lib/createStore.d.ts.map +0 -1
- package/lib/createStore.js +0 -131
- package/lib/definitions/activityFromBot.js +0 -11
- package/lib/definitions/speakableActivity.js +0 -10
- package/lib/definitions/speakingActivity.js +0 -13
- package/lib/index.d.ts +0 -76
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -309
- package/lib/reducers/connectivityStatus.js +0 -49
- package/lib/reducers/createActivitiesReducer.d.ts +0 -12
- package/lib/reducers/createActivitiesReducer.d.ts.map +0 -1
- package/lib/reducers/createActivitiesReducer.js +0 -267
- package/lib/reducers/createInternalReducer.d.ts +0 -10
- package/lib/reducers/createInternalReducer.d.ts.map +0 -1
- package/lib/reducers/createInternalReducer.js +0 -19
- package/lib/reducers/createNotificationsReducer.d.ts +0 -11
- package/lib/reducers/createNotificationsReducer.d.ts.map +0 -1
- package/lib/reducers/createNotificationsReducer.js +0 -55
- package/lib/reducers/createTypingReducer.d.ts +0 -14
- package/lib/reducers/createTypingReducer.d.ts.map +0 -1
- package/lib/reducers/createTypingReducer.js +0 -50
- package/lib/reducers/dictateInterims.js +0 -23
- package/lib/reducers/dictateState.js +0 -38
- package/lib/reducers/language.js +0 -23
- package/lib/reducers/private/findBeforeAfter.d.ts +0 -4
- package/lib/reducers/private/findBeforeAfter.d.ts.map +0 -1
- package/lib/reducers/private/findBeforeAfter.js +0 -24
- package/lib/reducers/readyState.js +0 -23
- package/lib/reducers/referenceGrammarID.js +0 -23
- package/lib/reducers/sendBoxAttachments.d.ts +0 -9
- package/lib/reducers/sendBoxAttachments.d.ts.map +0 -1
- package/lib/reducers/sendBoxAttachments.js +0 -23
- package/lib/reducers/sendBoxValue.js +0 -23
- package/lib/reducers/sendTimeout.js +0 -23
- package/lib/reducers/sendTypingIndicator.js +0 -23
- package/lib/reducers/shouldSpeakIncomingActivity.js +0 -25
- package/lib/reducers/suggestedActions.js +0 -32
- package/lib/sagas/clearSuggestedActionsOnPostActivitySaga.js +0 -62
- package/lib/sagas/connectSaga.js +0 -445
- package/lib/sagas/connectionStatusToNotificationSaga.js +0 -107
- package/lib/sagas/connectionStatusUpdateSaga.js +0 -63
- package/lib/sagas/detectSlowConnectionSaga.d.ts +0 -5
- package/lib/sagas/detectSlowConnectionSaga.d.ts.map +0 -1
- package/lib/sagas/detectSlowConnectionSaga.js +0 -50
- package/lib/sagas/effects/forever.js +0 -19
- package/lib/sagas/effects/forkPut.js +0 -51
- package/lib/sagas/effects/observeEach.js +0 -45
- package/lib/sagas/effects/observeOnce.d.ts +0 -3
- package/lib/sagas/effects/observeOnce.d.ts.map +0 -1
- package/lib/sagas/effects/observeOnce.js +0 -42
- package/lib/sagas/effects/whileConnected.d.ts +0 -7
- package/lib/sagas/effects/whileConnected.d.ts.map +0 -1
- package/lib/sagas/effects/whileConnected.js +0 -55
- package/lib/sagas/emitTypingIndicatorToPostActivitySaga.js +0 -63
- package/lib/sagas/markAllAsSpokenOnStopSpeakActivitySaga.js +0 -78
- package/lib/sagas/observeActivitySaga.d.ts +0 -2
- package/lib/sagas/observeActivitySaga.d.ts.map +0 -1
- package/lib/sagas/observeActivitySaga.js +0 -117
- package/lib/sagas/postActivitySaga.d.ts +0 -3
- package/lib/sagas/postActivitySaga.d.ts.map +0 -1
- package/lib/sagas/postActivitySaga.js +0 -264
- package/lib/sagas/queueIncomingActivitySaga.d.ts +0 -3
- package/lib/sagas/queueIncomingActivitySaga.d.ts.map +0 -1
- package/lib/sagas/queueIncomingActivitySaga.js +0 -197
- package/lib/sagas/sendEventToPostActivitySaga.js +0 -68
- package/lib/sagas/sendFilesToPostActivitySaga.js +0 -85
- package/lib/sagas/sendMessageBackToPostActivitySaga.js +0 -70
- package/lib/sagas/sendMessageToPostActivitySaga.d.ts +0 -2
- package/lib/sagas/sendMessageToPostActivitySaga.d.ts.map +0 -1
- package/lib/sagas/sendMessageToPostActivitySaga.js +0 -91
- package/lib/sagas/sendPostBackToPostActivitySaga.js +0 -69
- package/lib/sagas/sendTypingIndicatorOnSetSendBoxSaga.d.ts +0 -3
- package/lib/sagas/sendTypingIndicatorOnSetSendBoxSaga.d.ts.map +0 -1
- package/lib/sagas/sendTypingIndicatorOnSetSendBoxSaga.js +0 -145
- package/lib/sagas/speakActivityAndStartDictateOnIncomingActivityFromOthersSaga.js +0 -106
- package/lib/sagas/startDictateOnSpeakCompleteSaga.js +0 -65
- package/lib/sagas/startSpeakActivityOnPostActivitySaga.js +0 -62
- package/lib/sagas/stopDictateOnCardActionSaga.js +0 -65
- package/lib/sagas/stopSpeakingActivityOnInputSaga.js +0 -68
- package/lib/sagas/submitSendBoxSaga.js +0 -84
- package/lib/selectors/activities.d.ts +0 -9
- package/lib/selectors/activities.d.ts.map +0 -1
- package/lib/selectors/activities.js +0 -33
- package/lib/selectors/combineSelectors.js +0 -31
- package/lib/selectors/dictateState.js +0 -12
- package/lib/selectors/language.d.ts +0 -4
- package/lib/selectors/language.d.ts.map +0 -1
- package/lib/selectors/language.js +0 -12
- package/lib/selectors/notifications.js +0 -13
- package/lib/selectors/sendBoxAttachments.js +0 -11
- package/lib/selectors/sendBoxValue.js +0 -12
- package/lib/selectors/sendTimeout.d.ts +0 -4
- package/lib/selectors/sendTimeout.d.ts.map +0 -1
- package/lib/selectors/sendTimeout.js +0 -12
- package/lib/selectors/sendTypingIndicator.d.ts +0 -4
- package/lib/selectors/sendTypingIndicator.d.ts.map +0 -1
- package/lib/selectors/sendTypingIndicator.js +0 -12
- package/lib/selectors/shouldSpeakIncomingActivity.js +0 -12
- package/lib/types/AnyAnd.d.ts +0 -2
- package/lib/types/AnyAnd.d.ts.map +0 -1
- package/lib/types/AnyAnd.js +0 -6
- package/lib/types/GlobalScopePonyfill.d.ts +0 -8
- package/lib/types/GlobalScopePonyfill.d.ts.map +0 -1
- package/lib/types/GlobalScopePonyfill.js +0 -6
- package/lib/types/OneOrMany.d.ts +0 -3
- package/lib/types/OneOrMany.d.ts.map +0 -1
- package/lib/types/OneOrMany.js +0 -6
- package/lib/types/SendBoxAttachment.d.ts +0 -5
- package/lib/types/SendBoxAttachment.d.ts.map +0 -1
- package/lib/types/SendBoxAttachment.js +0 -6
- package/lib/types/WebChatActivity.d.ts +0 -128
- package/lib/types/WebChatActivity.d.ts.map +0 -1
- package/lib/types/WebChatActivity.js +0 -6
- package/lib/types/external/DirectLineActivity.d.ts +0 -3
- package/lib/types/external/DirectLineActivity.d.ts.map +0 -1
- package/lib/types/external/DirectLineActivity.js +0 -6
- package/lib/types/external/DirectLineAnimationCard.d.ts +0 -6
- package/lib/types/external/DirectLineAnimationCard.d.ts.map +0 -1
- package/lib/types/external/DirectLineAnimationCard.js +0 -6
- package/lib/types/external/DirectLineAttachment.d.ts +0 -9
- package/lib/types/external/DirectLineAttachment.d.ts.map +0 -1
- package/lib/types/external/DirectLineAttachment.js +0 -6
- package/lib/types/external/DirectLineAudioCard.d.ts +0 -6
- package/lib/types/external/DirectLineAudioCard.d.ts.map +0 -1
- package/lib/types/external/DirectLineAudioCard.js +0 -6
- package/lib/types/external/DirectLineBasicCardEssence.d.ts +0 -12
- package/lib/types/external/DirectLineBasicCardEssence.d.ts.map +0 -1
- package/lib/types/external/DirectLineBasicCardEssence.js +0 -6
- package/lib/types/external/DirectLineCardAction.d.ts +0 -110
- package/lib/types/external/DirectLineCardAction.d.ts.map +0 -1
- package/lib/types/external/DirectLineCardAction.js +0 -6
- package/lib/types/external/DirectLineCardImage.d.ts +0 -8
- package/lib/types/external/DirectLineCardImage.d.ts.map +0 -1
- package/lib/types/external/DirectLineCardImage.js +0 -6
- package/lib/types/external/DirectLineHeroCard.d.ts +0 -6
- package/lib/types/external/DirectLineHeroCard.d.ts.map +0 -1
- package/lib/types/external/DirectLineHeroCard.js +0 -6
- package/lib/types/external/DirectLineJSBotConnection.d.ts +0 -3
- package/lib/types/external/DirectLineJSBotConnection.d.ts.map +0 -1
- package/lib/types/external/DirectLineJSBotConnection.js +0 -6
- package/lib/types/external/DirectLineMediaCardEssence.d.ts +0 -21
- package/lib/types/external/DirectLineMediaCardEssence.d.ts.map +0 -1
- package/lib/types/external/DirectLineMediaCardEssence.js +0 -6
- package/lib/types/external/DirectLineOAuthCard.d.ts +0 -8
- package/lib/types/external/DirectLineOAuthCard.d.ts.map +0 -1
- package/lib/types/external/DirectLineOAuthCard.js +0 -6
- package/lib/types/external/DirectLineReceiptCard.d.ts +0 -28
- package/lib/types/external/DirectLineReceiptCard.d.ts.map +0 -1
- package/lib/types/external/DirectLineReceiptCard.js +0 -6
- package/lib/types/external/DirectLineSignInCard.d.ts +0 -8
- package/lib/types/external/DirectLineSignInCard.d.ts.map +0 -1
- package/lib/types/external/DirectLineSignInCard.js +0 -6
- package/lib/types/external/DirectLineSuggestedAction.d.ts +0 -7
- package/lib/types/external/DirectLineSuggestedAction.d.ts.map +0 -1
- package/lib/types/external/DirectLineSuggestedAction.js +0 -6
- package/lib/types/external/DirectLineThumbnailCard.d.ts +0 -6
- package/lib/types/external/DirectLineThumbnailCard.d.ts.map +0 -1
- package/lib/types/external/DirectLineThumbnailCard.js +0 -6
- package/lib/types/external/DirectLineVideoCard.d.ts +0 -6
- package/lib/types/external/DirectLineVideoCard.d.ts.map +0 -1
- package/lib/types/external/DirectLineVideoCard.js +0 -6
- package/lib/types/external/Observable.d.ts +0 -49
- package/lib/types/external/Observable.d.ts.map +0 -1
- package/lib/types/external/Observable.js +0 -6
- package/lib/types/external/OrgSchema/Action.d.ts +0 -29
- package/lib/types/external/OrgSchema/Action.d.ts.map +0 -1
- package/lib/types/external/OrgSchema/Action.js +0 -38
- package/lib/types/external/OrgSchema/Claim.d.ts +0 -35
- package/lib/types/external/OrgSchema/Claim.d.ts.map +0 -1
- package/lib/types/external/OrgSchema/Claim.js +0 -41
- package/lib/types/external/OrgSchema/CreativeWork.d.ts +0 -57
- package/lib/types/external/OrgSchema/CreativeWork.d.ts.map +0 -1
- package/lib/types/external/OrgSchema/CreativeWork.js +0 -52
- package/lib/types/external/OrgSchema/DefinedTerm.d.ts +0 -26
- package/lib/types/external/OrgSchema/DefinedTerm.d.ts.map +0 -1
- package/lib/types/external/OrgSchema/DefinedTerm.js +0 -33
- package/lib/types/external/OrgSchema/Project.d.ts +0 -20
- package/lib/types/external/OrgSchema/Project.d.ts.map +0 -1
- package/lib/types/external/OrgSchema/Project.js +0 -32
- package/lib/types/external/OrgSchema/Thing.d.ts +0 -53
- package/lib/types/external/OrgSchema/Thing.d.ts.map +0 -1
- package/lib/types/external/OrgSchema/Thing.js +0 -54
- package/lib/types/external/OrgSchema/VoteAction.d.ts +0 -22
- package/lib/types/external/OrgSchema/VoteAction.d.ts.map +0 -1
- package/lib/types/external/OrgSchema/VoteAction.js +0 -34
- package/lib/types/external/OrgSchema/private/orgSchemaProperties.d.ts +0 -3
- package/lib/types/external/OrgSchema/private/orgSchemaProperties.d.ts.map +0 -1
- package/lib/types/external/OrgSchema/private/orgSchemaProperties.js +0 -22
- package/lib/types/external/OrgSchema/private/orgSchemaProperty.d.ts +0 -4
- package/lib/types/external/OrgSchema/private/orgSchemaProperty.d.ts.map +0 -1
- package/lib/types/external/OrgSchema/private/orgSchemaProperty.js +0 -15
- package/lib/types/internal/GlobalScopeClock.d.ts +0 -15
- package/lib/types/internal/GlobalScopeClock.d.ts.map +0 -1
- package/lib/types/internal/GlobalScopeClock.js +0 -6
- package/lib/types/internal/Notification.d.ts +0 -10
- package/lib/types/internal/Notification.d.ts.map +0 -1
- package/lib/types/internal/Notification.js +0 -6
- package/lib/types/internal/ReduxState.d.ts +0 -19
- package/lib/types/internal/ReduxState.d.ts.map +0 -1
- package/lib/types/internal/ReduxState.js +0 -6
- package/lib/types/internal/SendStatus.d.ts +0 -7
- package/lib/types/internal/SendStatus.d.ts.map +0 -1
- package/lib/types/internal/SendStatus.js +0 -19
- package/lib/types/internal/WebChatOutgoingActivity.d.ts +0 -49
- package/lib/types/internal/WebChatOutgoingActivity.d.ts.map +0 -1
- package/lib/types/internal/WebChatOutgoingActivity.js +0 -6
- package/lib/utils/dateToLocaleISOString.d.ts +0 -2
- package/lib/utils/dateToLocaleISOString.d.ts.map +0 -1
- package/lib/utils/dateToLocaleISOString.js +0 -52
- package/lib/utils/deleteKey.d.ts +0 -2
- package/lib/utils/deleteKey.d.ts.map +0 -1
- package/lib/utils/deleteKey.js +0 -30
- package/lib/utils/getOrgSchemaMessage.d.ts +0 -4
- package/lib/utils/getOrgSchemaMessage.d.ts.map +0 -1
- package/lib/utils/getOrgSchemaMessage.js +0 -21
- package/lib/utils/isForbiddenPropertyName.d.ts +0 -2
- package/lib/utils/isForbiddenPropertyName.d.ts.map +0 -1
- package/lib/utils/isForbiddenPropertyName.js +0 -16
- package/lib/utils/onErrorResumeNext.d.ts +0 -3
- package/lib/utils/onErrorResumeNext.d.ts.map +0 -1
- package/lib/utils/onErrorResumeNext.js +0 -19
- package/lib/utils/once.d.ts +0 -2
- package/lib/utils/once.d.ts.map +0 -1
- package/lib/utils/once.js +0 -16
- package/lib/utils/singleToArray.d.ts +0 -2
- package/lib/utils/singleToArray.d.ts.map +0 -1
- package/lib/utils/singleToArray.js +0 -10
- package/lib/utils/sleep.d.ts +0 -3
- package/lib/utils/sleep.d.ts.map +0 -1
- package/lib/utils/sleep.js +0 -12
- package/lib/utils/uniqueID.d.ts +0 -2
- package/lib/utils/uniqueID.d.ts.map +0 -1
- package/lib/utils/uniqueID.js +0 -14
- package/lib/utils/warnOnce.d.ts +0 -2
- package/lib/utils/warnOnce.d.ts.map +0 -1
- package/lib/utils/warnOnce.js +0 -14
- package/src/actions/clearSuggestedActions.js +0 -9
- package/src/actions/setSuggestedActions.js +0 -12
- package/src/constants/DictateState.js +0 -7
- package/src/reducers/createActivitiesReducer.ts +0 -304
- package/src/reducers/private/findBeforeAfter.spec.ts +0 -90
- package/src/reducers/private/findBeforeAfter.ts +0 -30
- package/src/reducers/suggestedActions.js +0 -23
- package/src/types/OneOrMany.ts +0 -3
- package/src/types/external/OrgSchema/Action.spec.ts +0 -35
- package/src/types/external/OrgSchema/Action.ts +0 -52
- package/src/types/external/OrgSchema/Claim.spec.ts +0 -45
- package/src/types/external/OrgSchema/Claim.ts +0 -48
- package/src/types/external/OrgSchema/CreativeWork.parseCreativeWork.spec.ts +0 -51
- package/src/types/external/OrgSchema/CreativeWork.ts +0 -83
- package/src/types/external/OrgSchema/DefinedTerm.ts +0 -37
- package/src/types/external/OrgSchema/Project.parseProject.spec.ts +0 -17
- package/src/types/external/OrgSchema/Project.ts +0 -29
- package/src/types/external/OrgSchema/Thing.parseThing.spec.ts +0 -54
- package/src/types/external/OrgSchema/Thing.ts +0 -94
- package/src/types/external/OrgSchema/VoteAction.spec.ts +0 -35
- package/src/types/external/OrgSchema/VoteAction.ts +0 -31
- package/src/types/external/OrgSchema/private/orgSchemaProperties.spec.ts +0 -41
- package/src/types/external/OrgSchema/private/orgSchemaProperties.ts +0 -23
- package/src/types/external/OrgSchema/private/orgSchemaProperty.spec.ts +0 -21
- package/src/types/external/OrgSchema/private/orgSchemaProperty.ts +0 -6
- package/src/utils/isForbiddenPropertyName.spec.js +0 -6
- package/src/utils/isForbiddenPropertyName.ts +0 -33
- package/src/utils/singleToArray.ts +0 -3
- package/src/utils/warnOnce.ts +0 -5
- /package/src/actions/{connectionStatusUpdate.js → connectionStatusUpdate.ts} +0 -0
- /package/src/actions/{disconnect.js → disconnect.ts} +0 -0
- /package/src/actions/{emitTypingIndicator.js → emitTypingIndicator.ts} +0 -0
- /package/src/actions/{queueIncomingActivity.js → queueIncomingActivity.ts} +0 -0
- /package/src/actions/{reconnect.js → reconnect.ts} +0 -0
- /package/src/actions/{startDictate.js → startDictate.ts} +0 -0
- /package/src/actions/{startSpeakingActivity.js → startSpeakingActivity.ts} +0 -0
- /package/src/actions/{stopDictate.js → stopDictate.ts} +0 -0
- /package/src/actions/{stopSpeakingActivity.js → stopSpeakingActivity.ts} +0 -0
- /package/src/actions/{updateConnectionStatus.js → updateConnectionStatus.ts} +0 -0
package/lib/sagas/connectSaga.js
DELETED
|
@@ -1,445 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports["default"] = _callee;
|
|
9
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
-
var _effects = require("redux-saga/effects");
|
|
11
|
-
var _jwtDecode = require("jwt-decode");
|
|
12
|
-
var _connect = require("../actions/connect");
|
|
13
|
-
var _createPromiseQueue = _interopRequireDefault(require("../createPromiseQueue"));
|
|
14
|
-
var _forkPut = _interopRequireDefault(require("./effects/forkPut"));
|
|
15
|
-
var _uniqueID = _interopRequireDefault(require("../utils/uniqueID"));
|
|
16
|
-
var _updateConnectionStatus = _interopRequireWildcard(require("../actions/updateConnectionStatus"));
|
|
17
|
-
var _disconnect = require("../actions/disconnect");
|
|
18
|
-
var _reconnect = require("../actions/reconnect");
|
|
19
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
20
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
21
|
-
var _marked = /*#__PURE__*/_regenerator["default"].mark(observeAndPutConnectionStatusUpdate),
|
|
22
|
-
_marked2 = /*#__PURE__*/_regenerator["default"].mark(connectSaga),
|
|
23
|
-
_marked3 = /*#__PURE__*/_regenerator["default"].mark(reconnectSaga),
|
|
24
|
-
_marked4 = /*#__PURE__*/_regenerator["default"].mark(runAsyncEffect),
|
|
25
|
-
_marked5 = /*#__PURE__*/_regenerator["default"].mark(takeDisconnectAsError),
|
|
26
|
-
_marked6 = /*#__PURE__*/_regenerator["default"].mark(_callee);
|
|
27
|
-
/* eslint no-magic-numbers: ["error", { "ignore": [0, 10] }] */
|
|
28
|
-
var CONNECTING = 1;
|
|
29
|
-
var ONLINE = 2;
|
|
30
|
-
var UNINITIALIZED = 0;
|
|
31
|
-
function randomUserID() {
|
|
32
|
-
return "r_".concat((0, _uniqueID["default"])().substring(0, 10));
|
|
33
|
-
}
|
|
34
|
-
function observeAndPutConnectionStatusUpdate(directLine) {
|
|
35
|
-
var connectionStatusQueue, connectionStatusSubscription, connectionStatus;
|
|
36
|
-
return _regenerator["default"].wrap(function observeAndPutConnectionStatusUpdate$(_context) {
|
|
37
|
-
while (1) {
|
|
38
|
-
switch (_context.prev = _context.next) {
|
|
39
|
-
case 0:
|
|
40
|
-
connectionStatusQueue = (0, _createPromiseQueue["default"])();
|
|
41
|
-
connectionStatusSubscription = directLine.connectionStatus$.subscribe({
|
|
42
|
-
next: connectionStatusQueue.push
|
|
43
|
-
});
|
|
44
|
-
_context.prev = 2;
|
|
45
|
-
case 3:
|
|
46
|
-
_context.next = 5;
|
|
47
|
-
return (0, _effects.call)(connectionStatusQueue.shift);
|
|
48
|
-
case 5:
|
|
49
|
-
connectionStatus = _context.sent;
|
|
50
|
-
_context.next = 8;
|
|
51
|
-
return (0, _effects.put)((0, _updateConnectionStatus["default"])(connectionStatus));
|
|
52
|
-
case 8:
|
|
53
|
-
_context.next = 3;
|
|
54
|
-
break;
|
|
55
|
-
case 10:
|
|
56
|
-
_context.prev = 10;
|
|
57
|
-
connectionStatusSubscription.unsubscribe();
|
|
58
|
-
return _context.finish(10);
|
|
59
|
-
case 13:
|
|
60
|
-
case "end":
|
|
61
|
-
return _context.stop();
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}, _marked, null, [[2,, 10, 13]]);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// TODO: [P2] We should move this check and rectification to DirectLineJS.
|
|
68
|
-
function rectifyUserID(directLine, userIDFromAction) {
|
|
69
|
-
var token = directLine.token;
|
|
70
|
-
var userIDFromToken;
|
|
71
|
-
|
|
72
|
-
// TODO: Add test to make sure "jwt-decode" work as expected.
|
|
73
|
-
try {
|
|
74
|
-
userIDFromToken = ((0, _jwtDecode.jwtDecode)(token) || {}).user;
|
|
75
|
-
// eslint-disable-next-line no-empty
|
|
76
|
-
} catch (err) {}
|
|
77
|
-
var result = {
|
|
78
|
-
fromAction: userIDFromAction,
|
|
79
|
-
fromToken: userIDFromToken
|
|
80
|
-
};
|
|
81
|
-
if (userIDFromToken) {
|
|
82
|
-
if (userIDFromAction && userIDFromAction !== userIDFromToken) {
|
|
83
|
-
console.warn('Web Chat: user ID is both specified in the Direct Line token and passed in, will use the user ID from the token.');
|
|
84
|
-
}
|
|
85
|
-
result["final"] = userIDFromToken;
|
|
86
|
-
} else if (userIDFromAction) {
|
|
87
|
-
if (typeof userIDFromAction !== 'string') {
|
|
88
|
-
console.warn('Web Chat: user ID must be a string.');
|
|
89
|
-
result["final"] = randomUserID();
|
|
90
|
-
} else if (/^dl_/.test(userIDFromAction)) {
|
|
91
|
-
console.warn('Web Chat: user ID prefixed with "dl_" is reserved and must be embedded into the Direct Line token to prevent forgery.');
|
|
92
|
-
result["final"] = randomUserID();
|
|
93
|
-
} else {
|
|
94
|
-
result["final"] = userIDFromAction;
|
|
95
|
-
}
|
|
96
|
-
} else {
|
|
97
|
-
result["final"] = randomUserID();
|
|
98
|
-
}
|
|
99
|
-
return result;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// We could make this a Promise instead of saga (function generator) to make the code cleaner, if:
|
|
103
|
-
// 1. We found a way to cancel Promise
|
|
104
|
-
// 2. subscribe() are shared amongst all subscriptions, e.g. turn Observable into events
|
|
105
|
-
function connectSaga(directLine) {
|
|
106
|
-
var activitySubscription, unsubscribeActivity, _yield$take, connectionStatus;
|
|
107
|
-
return _regenerator["default"].wrap(function connectSaga$(_context2) {
|
|
108
|
-
while (1) {
|
|
109
|
-
switch (_context2.prev = _context2.next) {
|
|
110
|
-
case 0:
|
|
111
|
-
// DirectLineJS starts the connection only after the first subscriber for activity$, not connectionStatus$
|
|
112
|
-
activitySubscription = directLine.activity$.subscribe({
|
|
113
|
-
next: function next() {
|
|
114
|
-
return 0;
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
unsubscribeActivity = activitySubscription.unsubscribe.bind(activitySubscription);
|
|
118
|
-
_context2.prev = 2;
|
|
119
|
-
case 3:
|
|
120
|
-
_context2.next = 5;
|
|
121
|
-
return (0, _effects.take)(_updateConnectionStatus.UPDATE_CONNECTION_STATUS);
|
|
122
|
-
case 5:
|
|
123
|
-
_yield$take = _context2.sent;
|
|
124
|
-
connectionStatus = _yield$take.payload.connectionStatus;
|
|
125
|
-
if (!(connectionStatus === ONLINE)) {
|
|
126
|
-
_context2.next = 11;
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
return _context2.abrupt("return", function () {
|
|
130
|
-
unsubscribeActivity();
|
|
131
|
-
directLine.end();
|
|
132
|
-
});
|
|
133
|
-
case 11:
|
|
134
|
-
if (!(connectionStatus !== UNINITIALIZED && connectionStatus !== CONNECTING)) {
|
|
135
|
-
_context2.next = 13;
|
|
136
|
-
break;
|
|
137
|
-
}
|
|
138
|
-
throw new Error("Failed to connect, DirectLineJS returned ".concat(connectionStatus, "."));
|
|
139
|
-
case 13:
|
|
140
|
-
_context2.next = 3;
|
|
141
|
-
break;
|
|
142
|
-
case 15:
|
|
143
|
-
_context2.next = 21;
|
|
144
|
-
break;
|
|
145
|
-
case 17:
|
|
146
|
-
_context2.prev = 17;
|
|
147
|
-
_context2.t0 = _context2["catch"](2);
|
|
148
|
-
// We will unsubscribe if we failed to connect or got cancelled only.
|
|
149
|
-
// We should not unsubscribe in happy case, because DirectLineJS should relying on the subscription to connect/disconnect.
|
|
150
|
-
unsubscribeActivity();
|
|
151
|
-
throw _context2.t0;
|
|
152
|
-
case 21:
|
|
153
|
-
_context2.prev = 21;
|
|
154
|
-
_context2.next = 24;
|
|
155
|
-
return (0, _effects.cancelled)();
|
|
156
|
-
case 24:
|
|
157
|
-
if (!_context2.sent) {
|
|
158
|
-
_context2.next = 26;
|
|
159
|
-
break;
|
|
160
|
-
}
|
|
161
|
-
unsubscribeActivity();
|
|
162
|
-
case 26:
|
|
163
|
-
return _context2.finish(21);
|
|
164
|
-
case 27:
|
|
165
|
-
case "end":
|
|
166
|
-
return _context2.stop();
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}, _marked2, null, [[2, 17, 21, 27]]);
|
|
170
|
-
}
|
|
171
|
-
function reconnectSaga() {
|
|
172
|
-
var _yield$take2, connectionStatus;
|
|
173
|
-
return _regenerator["default"].wrap(function reconnectSaga$(_context3) {
|
|
174
|
-
while (1) {
|
|
175
|
-
switch (_context3.prev = _context3.next) {
|
|
176
|
-
case 0:
|
|
177
|
-
_context3.next = 2;
|
|
178
|
-
return (0, _effects.take)(_updateConnectionStatus.UPDATE_CONNECTION_STATUS);
|
|
179
|
-
case 2:
|
|
180
|
-
_yield$take2 = _context3.sent;
|
|
181
|
-
connectionStatus = _yield$take2.payload.connectionStatus;
|
|
182
|
-
if (!(connectionStatus === ONLINE)) {
|
|
183
|
-
_context3.next = 8;
|
|
184
|
-
break;
|
|
185
|
-
}
|
|
186
|
-
return _context3.abrupt("break", 12);
|
|
187
|
-
case 8:
|
|
188
|
-
if (!(connectionStatus !== CONNECTING)) {
|
|
189
|
-
_context3.next = 10;
|
|
190
|
-
break;
|
|
191
|
-
}
|
|
192
|
-
throw new Error("Failed to reconnect. DirectLineJS returned ".concat(connectionStatus, "."));
|
|
193
|
-
case 10:
|
|
194
|
-
_context3.next = 0;
|
|
195
|
-
break;
|
|
196
|
-
case 12:
|
|
197
|
-
case "end":
|
|
198
|
-
return _context3.stop();
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}, _marked3);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
// This is similar to behavior of redux-promise-middleware, but using saga instead of Promise.
|
|
205
|
-
// We guarantee PENDING -> FULFILLING -> FULFILLED, or PENDING -> REJECTED. This will help us simplify logic in other part of code.
|
|
206
|
-
// Note that after the saga is cancelled, subsequent call to put() will be ignored silently.
|
|
207
|
-
function runAsyncEffect(_ref, callEffectFactory) {
|
|
208
|
-
var type, meta, payload, result;
|
|
209
|
-
return _regenerator["default"].wrap(function runAsyncEffect$(_context4) {
|
|
210
|
-
while (1) {
|
|
211
|
-
switch (_context4.prev = _context4.next) {
|
|
212
|
-
case 0:
|
|
213
|
-
type = _ref.type, meta = _ref.meta, payload = _ref.payload;
|
|
214
|
-
_context4.prev = 1;
|
|
215
|
-
_context4.next = 4;
|
|
216
|
-
return (0, _forkPut["default"])({
|
|
217
|
-
type: "".concat(type, "_PENDING"),
|
|
218
|
-
meta: meta,
|
|
219
|
-
payload: payload
|
|
220
|
-
});
|
|
221
|
-
case 4:
|
|
222
|
-
_context4.next = 6;
|
|
223
|
-
return callEffectFactory();
|
|
224
|
-
case 6:
|
|
225
|
-
result = _context4.sent;
|
|
226
|
-
_context4.next = 9;
|
|
227
|
-
return (0, _forkPut["default"])({
|
|
228
|
-
type: "".concat(type, "_FULFILLING"),
|
|
229
|
-
meta: meta,
|
|
230
|
-
payload: payload
|
|
231
|
-
}, {
|
|
232
|
-
type: "".concat(type, "_FULFILLED"),
|
|
233
|
-
meta: meta,
|
|
234
|
-
payload: payload
|
|
235
|
-
});
|
|
236
|
-
case 9:
|
|
237
|
-
return _context4.abrupt("return", result);
|
|
238
|
-
case 12:
|
|
239
|
-
_context4.prev = 12;
|
|
240
|
-
_context4.t0 = _context4["catch"](1);
|
|
241
|
-
_context4.next = 16;
|
|
242
|
-
return (0, _forkPut["default"])({
|
|
243
|
-
type: "".concat(type, "_REJECTED"),
|
|
244
|
-
error: true,
|
|
245
|
-
meta: meta,
|
|
246
|
-
payload: _context4.t0
|
|
247
|
-
});
|
|
248
|
-
case 16:
|
|
249
|
-
throw _context4.t0;
|
|
250
|
-
case 17:
|
|
251
|
-
case "end":
|
|
252
|
-
return _context4.stop();
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
}, _marked4, null, [[1, 12]]);
|
|
256
|
-
}
|
|
257
|
-
function takeDisconnectAsError() {
|
|
258
|
-
return _regenerator["default"].wrap(function takeDisconnectAsError$(_context5) {
|
|
259
|
-
while (1) {
|
|
260
|
-
switch (_context5.prev = _context5.next) {
|
|
261
|
-
case 0:
|
|
262
|
-
_context5.next = 2;
|
|
263
|
-
return (0, _effects.take)(_disconnect.DISCONNECT);
|
|
264
|
-
case 2:
|
|
265
|
-
throw new Error('disconnected');
|
|
266
|
-
case 3:
|
|
267
|
-
case "end":
|
|
268
|
-
return _context5.stop();
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
}, _marked5);
|
|
272
|
-
}
|
|
273
|
-
function runAsyncEffectUntilDisconnect(baseAction, callEffectFactory) {
|
|
274
|
-
// We cannot use saga cancel() here, because cancelling saga will prohibit us from sending *_REJECTED.
|
|
275
|
-
// Without REJECTED, it impacts our assumptions around PENDING/FULFILLED/REJECTED.
|
|
276
|
-
return runAsyncEffect(baseAction, /*#__PURE__*/_regenerator["default"].mark(function runUntilDisconnect() {
|
|
277
|
-
var _yield$race, result;
|
|
278
|
-
return _regenerator["default"].wrap(function runUntilDisconnect$(_context6) {
|
|
279
|
-
while (1) {
|
|
280
|
-
switch (_context6.prev = _context6.next) {
|
|
281
|
-
case 0:
|
|
282
|
-
_context6.next = 2;
|
|
283
|
-
return (0, _effects.race)({
|
|
284
|
-
_: takeDisconnectAsError(),
|
|
285
|
-
result: callEffectFactory()
|
|
286
|
-
});
|
|
287
|
-
case 2:
|
|
288
|
-
_yield$race = _context6.sent;
|
|
289
|
-
result = _yield$race.result;
|
|
290
|
-
return _context6.abrupt("return", result);
|
|
291
|
-
case 5:
|
|
292
|
-
case "end":
|
|
293
|
-
return _context6.stop();
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}, runUntilDisconnect);
|
|
297
|
-
}));
|
|
298
|
-
}
|
|
299
|
-
function _callee() {
|
|
300
|
-
var _loop;
|
|
301
|
-
return _regenerator["default"].wrap(function _callee$(_context8) {
|
|
302
|
-
while (1) {
|
|
303
|
-
switch (_context8.prev = _context8.next) {
|
|
304
|
-
case 0:
|
|
305
|
-
_loop = /*#__PURE__*/_regenerator["default"].mark(function _loop() {
|
|
306
|
-
var _yield$take3, _yield$take3$payload, directLine, userIDFromAction, username, updateConnectionStatusTask, rectifiedUserID, meta, disconnectMeta, endDirectLine, _yield$race2, _yield$race2$updateCo, _yield$race2$updateCo2, connectionStatus;
|
|
307
|
-
return _regenerator["default"].wrap(function _loop$(_context7) {
|
|
308
|
-
while (1) {
|
|
309
|
-
switch (_context7.prev = _context7.next) {
|
|
310
|
-
case 0:
|
|
311
|
-
_context7.next = 2;
|
|
312
|
-
return (0, _effects.take)(_connect.CONNECT);
|
|
313
|
-
case 2:
|
|
314
|
-
_yield$take3 = _context7.sent;
|
|
315
|
-
_yield$take3$payload = _yield$take3.payload;
|
|
316
|
-
directLine = _yield$take3$payload.directLine;
|
|
317
|
-
userIDFromAction = _yield$take3$payload.userID;
|
|
318
|
-
username = _yield$take3$payload.username;
|
|
319
|
-
_context7.next = 9;
|
|
320
|
-
return (0, _effects.fork)(observeAndPutConnectionStatusUpdate, directLine);
|
|
321
|
-
case 9:
|
|
322
|
-
updateConnectionStatusTask = _context7.sent;
|
|
323
|
-
rectifiedUserID = rectifyUserID(directLine, userIDFromAction); // TODO: [P2] Checks if this attached subtask will get killed if the parent task is complete (peacefully), errored out, or cancelled.
|
|
324
|
-
meta = {
|
|
325
|
-
userID: rectifiedUserID["final"],
|
|
326
|
-
username: username
|
|
327
|
-
}; // Send user ID to DirectLineJS if it was specified from props of <API.Composer>.
|
|
328
|
-
// However, DirectLineJS may still prefer the user ID from token if it is burnt into the token.
|
|
329
|
-
// To prevent DirectLineJS giving false warnings, we will only call setUserId() if it is different than the token.
|
|
330
|
-
directLine.setUserId && rectifiedUserID.fromToken !== meta.userID && directLine.setUserId(meta.userID);
|
|
331
|
-
disconnectMeta = void 0; // We will dispatch CONNECT_PENDING, wait for connect completed, errored, or cancelled (thru disconnect).
|
|
332
|
-
// Then dispatch CONNECT_FULFILLED/CONNECT_REJECTED as needed.
|
|
333
|
-
_context7.prev = 14;
|
|
334
|
-
_context7.next = 17;
|
|
335
|
-
return runAsyncEffectUntilDisconnect({
|
|
336
|
-
type: _connect.CONNECT,
|
|
337
|
-
meta: meta,
|
|
338
|
-
payload: {
|
|
339
|
-
directLine: directLine
|
|
340
|
-
}
|
|
341
|
-
}, function () {
|
|
342
|
-
return (0, _effects.call)(connectSaga, directLine);
|
|
343
|
-
});
|
|
344
|
-
case 17:
|
|
345
|
-
endDirectLine = _context7.sent;
|
|
346
|
-
_context7.prev = 18;
|
|
347
|
-
case 19:
|
|
348
|
-
_context7.next = 21;
|
|
349
|
-
return (0, _effects.race)({
|
|
350
|
-
_: (0, _effects.take)(_disconnect.DISCONNECT),
|
|
351
|
-
updateConnectionStatusAction: (0, _effects.take)(_updateConnectionStatus.UPDATE_CONNECTION_STATUS)
|
|
352
|
-
});
|
|
353
|
-
case 21:
|
|
354
|
-
_yield$race2 = _context7.sent;
|
|
355
|
-
_yield$race2$updateCo = _yield$race2.updateConnectionStatusAction;
|
|
356
|
-
_yield$race2$updateCo = _yield$race2$updateCo === void 0 ? {} : _yield$race2$updateCo;
|
|
357
|
-
_yield$race2$updateCo2 = _yield$race2$updateCo.payload;
|
|
358
|
-
_yield$race2$updateCo2 = _yield$race2$updateCo2 === void 0 ? {} : _yield$race2$updateCo2;
|
|
359
|
-
connectionStatus = _yield$race2$updateCo2.connectionStatus; // If it is not disconnect action, connectionStatus will not be undefined.
|
|
360
|
-
if (!(connectionStatus === CONNECTING)) {
|
|
361
|
-
_context7.next = 32;
|
|
362
|
-
break;
|
|
363
|
-
}
|
|
364
|
-
_context7.next = 30;
|
|
365
|
-
return runAsyncEffectUntilDisconnect({
|
|
366
|
-
type: _reconnect.RECONNECT,
|
|
367
|
-
meta: meta,
|
|
368
|
-
payload: {
|
|
369
|
-
directLine: directLine
|
|
370
|
-
}
|
|
371
|
-
}, function () {
|
|
372
|
-
return (0, _effects.call)(reconnectSaga);
|
|
373
|
-
});
|
|
374
|
-
case 30:
|
|
375
|
-
_context7.next = 38;
|
|
376
|
-
break;
|
|
377
|
-
case 32:
|
|
378
|
-
if (!(connectionStatus !== ONLINE)) {
|
|
379
|
-
_context7.next = 38;
|
|
380
|
-
break;
|
|
381
|
-
}
|
|
382
|
-
if (!(typeof connectionStatus !== 'undefined')) {
|
|
383
|
-
_context7.next = 37;
|
|
384
|
-
break;
|
|
385
|
-
}
|
|
386
|
-
throw new Error("Connection status changed to ".concat(connectionStatus));
|
|
387
|
-
case 37:
|
|
388
|
-
return _context7.abrupt("break", 40);
|
|
389
|
-
case 38:
|
|
390
|
-
_context7.next = 19;
|
|
391
|
-
break;
|
|
392
|
-
case 40:
|
|
393
|
-
_context7.prev = 40;
|
|
394
|
-
endDirectLine();
|
|
395
|
-
return _context7.finish(40);
|
|
396
|
-
case 43:
|
|
397
|
-
_context7.next = 48;
|
|
398
|
-
break;
|
|
399
|
-
case 45:
|
|
400
|
-
_context7.prev = 45;
|
|
401
|
-
_context7.t0 = _context7["catch"](14);
|
|
402
|
-
disconnectMeta = {
|
|
403
|
-
error: _context7.t0
|
|
404
|
-
};
|
|
405
|
-
case 48:
|
|
406
|
-
_context7.prev = 48;
|
|
407
|
-
_context7.next = 51;
|
|
408
|
-
return (0, _effects.cancel)(updateConnectionStatusTask);
|
|
409
|
-
case 51:
|
|
410
|
-
_context7.next = 53;
|
|
411
|
-
return (0, _forkPut["default"])({
|
|
412
|
-
type: _disconnect.DISCONNECT_PENDING,
|
|
413
|
-
meta: disconnectMeta,
|
|
414
|
-
payload: {
|
|
415
|
-
directLine: directLine
|
|
416
|
-
}
|
|
417
|
-
}, {
|
|
418
|
-
type: _disconnect.DISCONNECT_FULFILLED,
|
|
419
|
-
meta: disconnectMeta,
|
|
420
|
-
payload: {
|
|
421
|
-
directLine: directLine
|
|
422
|
-
}
|
|
423
|
-
});
|
|
424
|
-
case 53:
|
|
425
|
-
return _context7.finish(48);
|
|
426
|
-
case 54:
|
|
427
|
-
case "end":
|
|
428
|
-
return _context7.stop();
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
}, _loop, null, [[14, 45, 48, 54], [18,, 40, 43]]);
|
|
432
|
-
});
|
|
433
|
-
case 1:
|
|
434
|
-
return _context8.delegateYield(_loop(), "t0", 2);
|
|
435
|
-
case 2:
|
|
436
|
-
_context8.next = 1;
|
|
437
|
-
break;
|
|
438
|
-
case 4:
|
|
439
|
-
case "end":
|
|
440
|
-
return _context8.stop();
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
}, _marked6);
|
|
444
|
-
}
|
|
445
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZWZmZWN0cyIsInJlcXVpcmUiLCJfand0RGVjb2RlIiwiX2Nvbm5lY3QiLCJfY3JlYXRlUHJvbWlzZVF1ZXVlIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9mb3JrUHV0IiwiX3VuaXF1ZUlEIiwiX3VwZGF0ZUNvbm5lY3Rpb25TdGF0dXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9kaXNjb25uZWN0IiwiX3JlY29ubmVjdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJfbWFya2VkIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIm9ic2VydmVBbmRQdXRDb25uZWN0aW9uU3RhdHVzVXBkYXRlIiwiX21hcmtlZDIiLCJjb25uZWN0U2FnYSIsIl9tYXJrZWQzIiwicmVjb25uZWN0U2FnYSIsIl9tYXJrZWQ0IiwicnVuQXN5bmNFZmZlY3QiLCJfbWFya2VkNSIsInRha2VEaXNjb25uZWN0QXNFcnJvciIsIl9tYXJrZWQ2IiwiX2NhbGxlZSIsIkNPTk5FQ1RJTkciLCJPTkxJTkUiLCJVTklOSVRJQUxJWkVEIiwicmFuZG9tVXNlcklEIiwiY29uY2F0IiwidW5pcXVlSUQiLCJzdWJzdHJpbmciLCJkaXJlY3RMaW5lIiwiY29ubmVjdGlvblN0YXR1c1F1ZXVlIiwiY29ubmVjdGlvblN0YXR1c1N1YnNjcmlwdGlvbiIsImNvbm5lY3Rpb25TdGF0dXMiLCJ3cmFwIiwib2JzZXJ2ZUFuZFB1dENvbm5lY3Rpb25TdGF0dXNVcGRhdGUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImNyZWF0ZVByb21pc2VRdWV1ZSIsImNvbm5lY3Rpb25TdGF0dXMkIiwic3Vic2NyaWJlIiwicHVzaCIsInNoaWZ0Iiwic2VudCIsInB1dCIsInVwZGF0ZUNvbm5lY3Rpb25TdGF0dXMiLCJ1bnN1YnNjcmliZSIsImZpbmlzaCIsInN0b3AiLCJyZWN0aWZ5VXNlcklEIiwidXNlcklERnJvbUFjdGlvbiIsInRva2VuIiwidXNlcklERnJvbVRva2VuIiwiand0RGVjb2RlIiwidXNlciIsImVyciIsInJlc3VsdCIsImZyb21BY3Rpb24iLCJmcm9tVG9rZW4iLCJjb25zb2xlIiwid2FybiIsInRlc3QiLCJhY3Rpdml0eVN1YnNjcmlwdGlvbiIsInVuc3Vic2NyaWJlQWN0aXZpdHkiLCJfeWllbGQkdGFrZSIsImNvbm5lY3RTYWdhJCIsIl9jb250ZXh0MiIsImFjdGl2aXR5JCIsImJpbmQiLCJ0YWtlIiwiVVBEQVRFX0NPTk5FQ1RJT05fU1RBVFVTIiwicGF5bG9hZCIsImFicnVwdCIsImVuZCIsIkVycm9yIiwidDAiLCJjYW5jZWxsZWQiLCJfeWllbGQkdGFrZTIiLCJyZWNvbm5lY3RTYWdhJCIsIl9jb250ZXh0MyIsIl9yZWYiLCJjYWxsRWZmZWN0RmFjdG9yeSIsInR5cGUiLCJtZXRhIiwicnVuQXN5bmNFZmZlY3QkIiwiX2NvbnRleHQ0IiwiZm9ya1B1dCIsImVycm9yIiwidGFrZURpc2Nvbm5lY3RBc0Vycm9yJCIsIl9jb250ZXh0NSIsIkRJU0NPTk5FQ1QiLCJydW5Bc3luY0VmZmVjdFVudGlsRGlzY29ubmVjdCIsImJhc2VBY3Rpb24iLCJydW5VbnRpbERpc2Nvbm5lY3QiLCJfeWllbGQkcmFjZSIsInJ1blVudGlsRGlzY29ubmVjdCQiLCJfY29udGV4dDYiLCJyYWNlIiwiXyIsIl9sb29wIiwiX2NhbGxlZSQiLCJfY29udGV4dDgiLCJfeWllbGQkdGFrZTMiLCJfeWllbGQkdGFrZTMkcGF5bG9hZCIsInVzZXJuYW1lIiwidXBkYXRlQ29ubmVjdGlvblN0YXR1c1Rhc2siLCJyZWN0aWZpZWRVc2VySUQiLCJkaXNjb25uZWN0TWV0YSIsImVuZERpcmVjdExpbmUiLCJfeWllbGQkcmFjZTIiLCJfeWllbGQkcmFjZTIkdXBkYXRlQ28iLCJfeWllbGQkcmFjZTIkdXBkYXRlQ28yIiwiX2xvb3AkIiwiX2NvbnRleHQ3IiwiQ09OTkVDVCIsInVzZXJJRCIsImZvcmsiLCJzZXRVc2VySWQiLCJ1cGRhdGVDb25uZWN0aW9uU3RhdHVzQWN0aW9uIiwiUkVDT05ORUNUIiwiY2FuY2VsIiwiRElTQ09OTkVDVF9QRU5ESU5HIiwiRElTQ09OTkVDVF9GVUxGSUxMRUQiLCJkZWxlZ2F0ZVlpZWxkIl0sInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NhZ2FzL2Nvbm5lY3RTYWdhLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludCBuby1tYWdpYy1udW1iZXJzOiBbXCJlcnJvclwiLCB7IFwiaWdub3JlXCI6IFswLCAxMF0gfV0gKi9cblxuaW1wb3J0IHsgY2FsbCwgY2FuY2VsLCBjYW5jZWxsZWQsIGZvcmssIHB1dCwgcmFjZSwgdGFrZSB9IGZyb20gJ3JlZHV4LXNhZ2EvZWZmZWN0cyc7XG5cbmltcG9ydCB7IGp3dERlY29kZSB9IGZyb20gJ2p3dC1kZWNvZGUnO1xuXG5pbXBvcnQgeyBDT05ORUNUIH0gZnJvbSAnLi4vYWN0aW9ucy9jb25uZWN0JztcbmltcG9ydCBjcmVhdGVQcm9taXNlUXVldWUgZnJvbSAnLi4vY3JlYXRlUHJvbWlzZVF1ZXVlJztcbmltcG9ydCBmb3JrUHV0IGZyb20gJy4vZWZmZWN0cy9mb3JrUHV0JztcbmltcG9ydCB1bmlxdWVJRCBmcm9tICcuLi91dGlscy91bmlxdWVJRCc7XG5pbXBvcnQgdXBkYXRlQ29ubmVjdGlvblN0YXR1cywgeyBVUERBVEVfQ09OTkVDVElPTl9TVEFUVVMgfSBmcm9tICcuLi9hY3Rpb25zL3VwZGF0ZUNvbm5lY3Rpb25TdGF0dXMnO1xuXG5pbXBvcnQgeyBESVNDT05ORUNULCBESVNDT05ORUNUX1BFTkRJTkcsIERJU0NPTk5FQ1RfRlVMRklMTEVEIH0gZnJvbSAnLi4vYWN0aW9ucy9kaXNjb25uZWN0JztcblxuaW1wb3J0IHsgUkVDT05ORUNUIH0gZnJvbSAnLi4vYWN0aW9ucy9yZWNvbm5lY3QnO1xuXG5jb25zdCBDT05ORUNUSU5HID0gMTtcbmNvbnN0IE9OTElORSA9IDI7XG5jb25zdCBVTklOSVRJQUxJWkVEID0gMDtcblxuZnVuY3Rpb24gcmFuZG9tVXNlcklEKCkge1xuICByZXR1cm4gYHJfJHt1bmlxdWVJRCgpLnN1YnN0cmluZygwLCAxMCl9YDtcbn1cblxuZnVuY3Rpb24qIG9ic2VydmVBbmRQdXRDb25uZWN0aW9uU3RhdHVzVXBkYXRlKGRpcmVjdExpbmUpIHtcbiAgY29uc3QgY29ubmVjdGlvblN0YXR1c1F1ZXVlID0gY3JlYXRlUHJvbWlzZVF1ZXVlKCk7XG4gIGNvbnN0IGNvbm5lY3Rpb25TdGF0dXNTdWJzY3JpcHRpb24gPSBkaXJlY3RMaW5lLmNvbm5lY3Rpb25TdGF0dXMkLnN1YnNjcmliZSh7IG5leHQ6IGNvbm5lY3Rpb25TdGF0dXNRdWV1ZS5wdXNoIH0pO1xuXG4gIHRyeSB7XG4gICAgZm9yICg7Oykge1xuICAgICAgY29uc3QgY29ubmVjdGlvblN0YXR1cyA9IHlpZWxkIGNhbGwoY29ubmVjdGlvblN0YXR1c1F1ZXVlLnNoaWZ0KTtcblxuICAgICAgeWllbGQgcHV0KHVwZGF0ZUNvbm5lY3Rpb25TdGF0dXMoY29ubmVjdGlvblN0YXR1cykpO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBjb25uZWN0aW9uU3RhdHVzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cblxuLy8gVE9ETzogW1AyXSBXZSBzaG91bGQgbW92ZSB0aGlzIGNoZWNrIGFuZCByZWN0aWZpY2F0aW9uIHRvIERpcmVjdExpbmVKUy5cbmZ1bmN0aW9uIHJlY3RpZnlVc2VySUQoZGlyZWN0TGluZSwgdXNlcklERnJvbUFjdGlvbikge1xuICBjb25zdCB7IHRva2VuIH0gPSBkaXJlY3RMaW5lO1xuXG4gIGxldCB1c2VySURGcm9tVG9rZW47XG5cbiAgLy8gVE9ETzogQWRkIHRlc3QgdG8gbWFrZSBzdXJlIFwiand0LWRlY29kZVwiIHdvcmsgYXMgZXhwZWN0ZWQuXG4gIHRyeSB7XG4gICAgdXNlcklERnJvbVRva2VuID0gKGp3dERlY29kZSh0b2tlbikgfHwge30pLnVzZXI7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5XG4gIH0gY2F0Y2ggKGVycikge31cblxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgZnJvbUFjdGlvbjogdXNlcklERnJvbUFjdGlvbixcbiAgICBmcm9tVG9rZW46IHVzZXJJREZyb21Ub2tlblxuICB9O1xuXG4gIGlmICh1c2VySURGcm9tVG9rZW4pIHtcbiAgICBpZiAodXNlcklERnJvbUFjdGlvbiAmJiB1c2VySURGcm9tQWN0aW9uICE9PSB1c2VySURGcm9tVG9rZW4pIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ1dlYiBDaGF0OiB1c2VyIElEIGlzIGJvdGggc3BlY2lmaWVkIGluIHRoZSBEaXJlY3QgTGluZSB0b2tlbiBhbmQgcGFzc2VkIGluLCB3aWxsIHVzZSB0aGUgdXNlciBJRCBmcm9tIHRoZSB0b2tlbi4nXG4gICAgICApO1xuICAgIH1cblxuICAgIHJlc3VsdC5maW5hbCA9IHVzZXJJREZyb21Ub2tlbjtcbiAgfSBlbHNlIGlmICh1c2VySURGcm9tQWN0aW9uKSB7XG4gICAgaWYgKHR5cGVvZiB1c2VySURGcm9tQWN0aW9uICE9PSAnc3RyaW5nJykge1xuICAgICAgY29uc29sZS53YXJuKCdXZWIgQ2hhdDogdXNlciBJRCBtdXN0IGJlIGEgc3RyaW5nLicpO1xuXG4gICAgICByZXN1bHQuZmluYWwgPSByYW5kb21Vc2VySUQoKTtcbiAgICB9IGVsc2UgaWYgKC9eZGxfL3UudGVzdCh1c2VySURGcm9tQWN0aW9uKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnV2ViIENoYXQ6IHVzZXIgSUQgcHJlZml4ZWQgd2l0aCBcImRsX1wiIGlzIHJlc2VydmVkIGFuZCBtdXN0IGJlIGVtYmVkZGVkIGludG8gdGhlIERpcmVjdCBMaW5lIHRva2VuIHRvIHByZXZlbnQgZm9yZ2VyeS4nXG4gICAgICApO1xuXG4gICAgICByZXN1bHQuZmluYWwgPSByYW5kb21Vc2VySUQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LmZpbmFsID0gdXNlcklERnJvbUFjdGlvbjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0LmZpbmFsID0gcmFuZG9tVXNlcklEKCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBXZSBjb3VsZCBtYWtlIHRoaXMgYSBQcm9taXNlIGluc3RlYWQgb2Ygc2FnYSAoZnVuY3Rpb24gZ2VuZXJhdG9yKSB0byBtYWtlIHRoZSBjb2RlIGNsZWFuZXIsIGlmOlxuLy8gMS4gV2UgZm91bmQgYSB3YXkgdG8gY2FuY2VsIFByb21pc2Vcbi8vIDIuIHN1YnNjcmliZSgpIGFyZSBzaGFyZWQgYW1vbmdzdCBhbGwgc3Vic2NyaXB0aW9ucywgZS5nLiB0dXJuIE9ic2VydmFibGUgaW50byBldmVudHNcbmZ1bmN0aW9uKiBjb25uZWN0U2FnYShkaXJlY3RMaW5lKSB7XG4gIC8vIERpcmVjdExpbmVKUyBzdGFydHMgdGhlIGNvbm5lY3Rpb24gb25seSBhZnRlciB0aGUgZmlyc3Qgc3Vic2NyaWJlciBmb3IgYWN0aXZpdHkkLCBub3QgY29ubmVjdGlvblN0YXR1cyRcbiAgY29uc3QgYWN0aXZpdHlTdWJzY3JpcHRpb24gPSBkaXJlY3RMaW5lLmFjdGl2aXR5JC5zdWJzY3JpYmUoeyBuZXh0OiAoKSA9PiAwIH0pO1xuICBjb25zdCB1bnN1YnNjcmliZUFjdGl2aXR5ID0gYWN0aXZpdHlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUuYmluZChhY3Rpdml0eVN1YnNjcmlwdGlvbik7XG5cbiAgdHJ5IHtcbiAgICBmb3IgKDs7KSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBheWxvYWQ6IHsgY29ubmVjdGlvblN0YXR1cyB9XG4gICAgICB9ID0geWllbGQgdGFrZShVUERBVEVfQ09OTkVDVElPTl9TVEFUVVMpO1xuXG4gICAgICBpZiAoY29ubmVjdGlvblN0YXR1cyA9PT0gT05MSU5FKSB7XG4gICAgICAgIC8vIFRPRE86IFtQMl0gRGlyZWN0TGluZUpTIHNob3VsZCBraWxsIHRoZSBjb25uZWN0aW9uIHdoZW4gd2UgdW5zdWJzY3JpYmVcbiAgICAgICAgLy8gICAgICAgQnV0IGN1cnJlbnRseSBpbiB2MywgRGlyZWN0TGluZUpTIGRvZXMgbm90IGhhdmUgdGhpcyBmdW5jdGlvbmFsaXR5XG4gICAgICAgIC8vICAgICAgIFRodXMsIHdlIG5lZWQgdG8gY2FsbCBcImVuZCgpXCIgZXhwbGljaXRseVxuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgdW5zdWJzY3JpYmVBY3Rpdml0eSgpO1xuICAgICAgICAgIGRpcmVjdExpbmUuZW5kKCk7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKGNvbm5lY3Rpb25TdGF0dXMgIT09IFVOSU5JVElBTElaRUQgJiYgY29ubmVjdGlvblN0YXR1cyAhPT0gQ09OTkVDVElORykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBjb25uZWN0LCBEaXJlY3RMaW5lSlMgcmV0dXJuZWQgJHtjb25uZWN0aW9uU3RhdHVzfS5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIFdlIHdpbGwgdW5zdWJzY3JpYmUgaWYgd2UgZmFpbGVkIHRvIGNvbm5lY3Qgb3IgZ290IGNhbmNlbGxlZCBvbmx5LlxuICAgIC8vIFdlIHNob3VsZCBub3QgdW5zdWJzY3JpYmUgaW4gaGFwcHkgY2FzZSwgYmVjYXVzZSBEaXJlY3RMaW5lSlMgc2hvdWxkIHJlbHlpbmcgb24gdGhlIHN1YnNjcmlwdGlvbiB0byBjb25uZWN0L2Rpc2Nvbm5lY3QuXG4gICAgdW5zdWJzY3JpYmVBY3Rpdml0eSgpO1xuXG4gICAgdGhyb3cgZXJyO1xuICB9IGZpbmFsbHkge1xuICAgIGlmICh5aWVsZCBjYW5jZWxsZWQoKSkge1xuICAgICAgdW5zdWJzY3JpYmVBY3Rpdml0eSgpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiogcmVjb25uZWN0U2FnYSgpIHtcbiAgZm9yICg7Oykge1xuICAgIGNvbnN0IHtcbiAgICAgIHBheWxvYWQ6IHsgY29ubmVjdGlvblN0YXR1cyB9XG4gICAgfSA9IHlpZWxkIHRha2UoVVBEQVRFX0NPTk5FQ1RJT05fU1RBVFVTKTtcblxuICAgIGlmIChjb25uZWN0aW9uU3RhdHVzID09PSBPTkxJTkUpIHtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSBpZiAoY29ubmVjdGlvblN0YXR1cyAhPT0gQ09OTkVDVElORykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcmVjb25uZWN0LiBEaXJlY3RMaW5lSlMgcmV0dXJuZWQgJHtjb25uZWN0aW9uU3RhdHVzfS5gKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gVGhpcyBpcyBzaW1pbGFyIHRvIGJlaGF2aW9yIG9mIHJlZHV4LXByb21pc2UtbWlkZGxld2FyZSwgYnV0IHVzaW5nIHNhZ2EgaW5zdGVhZCBvZiBQcm9taXNlLlxuLy8gV2UgZ3VhcmFudGVlIFBFTkRJTkcgLT4gRlVMRklMTElORyAtPiBGVUxGSUxMRUQsIG9yIFBFTkRJTkcgLT4gUkVKRUNURUQuIFRoaXMgd2lsbCBoZWxwIHVzIHNpbXBsaWZ5IGxvZ2ljIGluIG90aGVyIHBhcnQgb2YgY29kZS5cbi8vIE5vdGUgdGhhdCBhZnRlciB0aGUgc2FnYSBpcyBjYW5jZWxsZWQsIHN1YnNlcXVlbnQgY2FsbCB0byBwdXQoKSB3aWxsIGJlIGlnbm9yZWQgc2lsZW50bHkuXG5mdW5jdGlvbiogcnVuQXN5bmNFZmZlY3QoeyB0eXBlLCBtZXRhLCBwYXlsb2FkIH0sIGNhbGxFZmZlY3RGYWN0b3J5KSB7XG4gIHRyeSB7XG4gICAgeWllbGQgZm9ya1B1dCh7IHR5cGU6IGAke3R5cGV9X1BFTkRJTkdgLCBtZXRhLCBwYXlsb2FkIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0ID0geWllbGQgY2FsbEVmZmVjdEZhY3RvcnkoKTtcblxuICAgIHlpZWxkIGZvcmtQdXQoeyB0eXBlOiBgJHt0eXBlfV9GVUxGSUxMSU5HYCwgbWV0YSwgcGF5bG9hZCB9LCB7IHR5cGU6IGAke3R5cGV9X0ZVTEZJTExFRGAsIG1ldGEsIHBheWxvYWQgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9IGNhdGNoIChwYXlsb2FkKSB7XG4gICAgeWllbGQgZm9ya1B1dCh7IHR5cGU6IGAke3R5cGV9X1JFSkVDVEVEYCwgZXJyb3I6IHRydWUsIG1ldGEsIHBheWxvYWQgfSk7XG5cbiAgICB0aHJvdyBwYXlsb2FkO1xuICB9XG59XG5cbmZ1bmN0aW9uKiB0YWtlRGlzY29ubmVjdEFzRXJyb3IoKSB7XG4gIHlpZWxkIHRha2UoRElTQ09OTkVDVCk7XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdkaXNjb25uZWN0ZWQnKTtcbn1cblxuZnVuY3Rpb24gcnVuQXN5bmNFZmZlY3RVbnRpbERpc2Nvbm5lY3QoYmFzZUFjdGlvbiwgY2FsbEVmZmVjdEZhY3RvcnkpIHtcbiAgLy8gV2UgY2Fubm90IHVzZSBzYWdhIGNhbmNlbCgpIGhlcmUsIGJlY2F1c2UgY2FuY2VsbGluZyBzYWdhIHdpbGwgcHJvaGliaXQgdXMgZnJvbSBzZW5kaW5nICpfUkVKRUNURUQuXG4gIC8vIFdpdGhvdXQgUkVKRUNURUQsIGl0IGltcGFjdHMgb3VyIGFzc3VtcHRpb25zIGFyb3VuZCBQRU5ESU5HL0ZVTEZJTExFRC9SRUpFQ1RFRC5cbiAgcmV0dXJuIHJ1bkFzeW5jRWZmZWN0KGJhc2VBY3Rpb24sIGZ1bmN0aW9uKiBydW5VbnRpbERpc2Nvbm5lY3QoKSB7XG4gICAgY29uc3QgeyByZXN1bHQgfSA9IHlpZWxkIHJhY2Uoe1xuICAgICAgXzogdGFrZURpc2Nvbm5lY3RBc0Vycm9yKCksXG4gICAgICByZXN1bHQ6IGNhbGxFZmZlY3RGYWN0b3J5KClcbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiogKCkge1xuICBmb3IgKDs7KSB7XG4gICAgY29uc3Qge1xuICAgICAgcGF5bG9hZDogeyBkaXJlY3RMaW5lLCB1c2VySUQ6IHVzZXJJREZyb21BY3Rpb24sIHVzZXJuYW1lIH1cbiAgICB9ID0geWllbGQgdGFrZShDT05ORUNUKTtcblxuICAgIGNvbnN0IHVwZGF0ZUNvbm5lY3Rpb25TdGF0dXNUYXNrID0geWllbGQgZm9yayhvYnNlcnZlQW5kUHV0Q29ubmVjdGlvblN0YXR1c1VwZGF0ZSwgZGlyZWN0TGluZSk7XG4gICAgY29uc3QgcmVjdGlmaWVkVXNlcklEID0gcmVjdGlmeVVzZXJJRChkaXJlY3RMaW5lLCB1c2VySURGcm9tQWN0aW9uKTtcblxuICAgIC8vIFRPRE86IFtQMl0gQ2hlY2tzIGlmIHRoaXMgYXR0YWNoZWQgc3VidGFzayB3aWxsIGdldCBraWxsZWQgaWYgdGhlIHBhcmVudCB0YXNrIGlzIGNvbXBsZXRlIChwZWFjZWZ1bGx5KSwgZXJyb3JlZCBvdXQsIG9yIGNhbmNlbGxlZC5cbiAgICBjb25zdCBtZXRhID0ge1xuICAgICAgdXNlcklEOiByZWN0aWZpZWRVc2VySUQuZmluYWwsXG4gICAgICB1c2VybmFtZVxuICAgIH07XG5cbiAgICAvLyBTZW5kIHVzZXIgSUQgdG8gRGlyZWN0TGluZUpTIGlmIGl0IHdhcyBzcGVjaWZpZWQgZnJvbSBwcm9wcyBvZiA8QVBJLkNvbXBvc2VyPi5cbiAgICAvLyBIb3dldmVyLCBEaXJlY3RMaW5lSlMgbWF5IHN0aWxsIHByZWZlciB0aGUgdXNlciBJRCBmcm9tIHRva2VuIGlmIGl0IGlzIGJ1cm50IGludG8gdGhlIHRva2VuLlxuICAgIC8vIFRvIHByZXZlbnQgRGlyZWN0TGluZUpTIGdpdmluZyBmYWxzZSB3YXJuaW5ncywgd2Ugd2lsbCBvbmx5IGNhbGwgc2V0VXNlcklkKCkgaWYgaXQgaXMgZGlmZmVyZW50IHRoYW4gdGhlIHRva2VuLlxuICAgIGRpcmVjdExpbmUuc2V0VXNlcklkICYmIHJlY3RpZmllZFVzZXJJRC5mcm9tVG9rZW4gIT09IG1ldGEudXNlcklEICYmIGRpcmVjdExpbmUuc2V0VXNlcklkKG1ldGEudXNlcklEKTtcblxuICAgIGxldCBkaXNjb25uZWN0TWV0YTtcblxuICAgIC8vIFdlIHdpbGwgZGlzcGF0Y2ggQ09OTkVDVF9QRU5ESU5HLCB3YWl0IGZvciBjb25uZWN0IGNvbXBsZXRlZCwgZXJyb3JlZCwgb3IgY2FuY2VsbGVkICh0aHJ1IGRpc2Nvbm5lY3QpLlxuICAgIC8vIFRoZW4gZGlzcGF0Y2ggQ09OTkVDVF9GVUxGSUxMRUQvQ09OTkVDVF9SRUpFQ1RFRCBhcyBuZWVkZWQuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGVuZERpcmVjdExpbmUgPSB5aWVsZCBydW5Bc3luY0VmZmVjdFVudGlsRGlzY29ubmVjdChcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IENPTk5FQ1QsXG4gICAgICAgICAgbWV0YSxcbiAgICAgICAgICBwYXlsb2FkOiB7IGRpcmVjdExpbmUgfVxuICAgICAgICB9LFxuICAgICAgICAoKSA9PiBjYWxsKGNvbm5lY3RTYWdhLCBkaXJlY3RMaW5lKVxuICAgICAgKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIC8vIFdlIGFyZSB3YWl0aW5nIGZvciBjb25uZWN0aW9uIHN0YXR1cyBjaGFuZ2Ugb3IgZGlzY29ubmVjdCBhY3Rpb24uXG4gICAgICAgICAgY29uc3QgeyB1cGRhdGVDb25uZWN0aW9uU3RhdHVzQWN0aW9uOiB7IHBheWxvYWQ6IHsgY29ubmVjdGlvblN0YXR1cyB9ID0ge30gfSA9IHt9IH0gPSB5aWVsZCByYWNlKHtcbiAgICAgICAgICAgIF86IHRha2UoRElTQ09OTkVDVCksXG4gICAgICAgICAgICB1cGRhdGVDb25uZWN0aW9uU3RhdHVzQWN0aW9uOiB0YWtlKFVQREFURV9DT05ORUNUSU9OX1NUQVRVUylcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vIElmIGl0IGlzIG5vdCBkaXNjb25uZWN0IGFjdGlvbiwgY29ubmVjdGlvblN0YXR1cyB3aWxsIG5vdCBiZSB1bmRlZmluZWQuXG4gICAgICAgICAgaWYgKGNvbm5lY3Rpb25TdGF0dXMgPT09IENPTk5FQ1RJTkcpIHtcbiAgICAgICAgICAgIC8vIElmIERpcmVjdExpbmVKUyBjaGFuZ2VkIGNvbm5lY3Rpb25TdGF0dXMgdG8gQ09OTkVDVElORywgd2Ugd2lsbCB0cmVhdCBpdCBhcyByZWNvbm5lY3Qgc3RhdHVzLlxuICAgICAgICAgICAgeWllbGQgcnVuQXN5bmNFZmZlY3RVbnRpbERpc2Nvbm5lY3QoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBSRUNPTk5FQ1QsXG4gICAgICAgICAgICAgICAgbWV0YSxcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiB7IGRpcmVjdExpbmUgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAoKSA9PiBjYWxsKHJlY29ubmVjdFNhZ2EpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY29ubmVjdGlvblN0YXR1cyAhPT0gT05MSU5FKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbm5lY3Rpb25TdGF0dXMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8ga2lsbCB0aGUgY29ubmVjdGlvbiBiZWNhdXNlIERpcmVjdExpbmVKUyB3YW50IHRvIGNsb3NlIGl0LlxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbm5lY3Rpb24gc3RhdHVzIGNoYW5nZWQgdG8gJHtjb25uZWN0aW9uU3RhdHVzfWApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gU29tZW9uZSBkaXNwYXRjaGVkIGRpc2Nvbm5lY3QgYWN0aW9uLlxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGVuZERpcmVjdExpbmUoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgZGlzY29ubmVjdE1ldGEgPSB7IGVycm9yIH07XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHlpZWxkIGNhbmNlbCh1cGRhdGVDb25uZWN0aW9uU3RhdHVzVGFzayk7XG5cbiAgICAgIC8vIEV2ZW4gaWYgdGhlIGNvbm5lY3Rpb24gaXMgaW50ZXJydXB0ZWQsIHdlIHdpbGwgc3RpbGwgZW1pdCBESVNDT05ORUNUX1BFTkRJTkcuXG4gICAgICAvLyBUaGlzIHdpbGwgbWFrZXMgaGFuZGxpbmcgbG9naWMgZWFzaWVyLiBJZiBDT05ORUNUX0ZVTEZJTExFRCwgd2UgZ3VhcmFudGVlIERJU0NPTk5FQ1RfUEVORElORy5cbiAgICAgIHlpZWxkIGZvcmtQdXQoXG4gICAgICAgIHsgdHlwZTogRElTQ09OTkVDVF9QRU5ESU5HLCBtZXRhOiBkaXNjb25uZWN0TWV0YSwgcGF5bG9hZDogeyBkaXJlY3RMaW5lIH0gfSxcbiAgICAgICAgeyB0eXBlOiBESVNDT05ORUNUX0ZVTEZJTExFRCwgbWV0YTogZGlzY29ubmVjdE1ldGEsIHBheWxvYWQ6IHsgZGlyZWN0TGluZSB9IH1cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQUVBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLG1CQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFELHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTSxTQUFBLEdBQUFGLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTyx1QkFBQSxHQUFBQyx1QkFBQSxDQUFB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
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports["default"] = _callee;
|
|
8
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
-
var _effects = require("redux-saga/effects");
|
|
10
|
-
var _connect = require("../actions/connect");
|
|
11
|
-
var _createPromiseQueue2 = _interopRequireDefault(require("../createPromiseQueue"));
|
|
12
|
-
var _setNotification = _interopRequireDefault(require("../actions/setNotification"));
|
|
13
|
-
var _marked = /*#__PURE__*/_regenerator["default"].mark(connectionStatusToNotification),
|
|
14
|
-
_marked2 = /*#__PURE__*/_regenerator["default"].mark(_callee);
|
|
15
|
-
/* eslint no-magic-numbers: ["error", { "ignore": [0, 1, 2, 3, 4] }] */
|
|
16
|
-
var CONNECTIVITY_STATUS_NOTIFICATION_ID = 'connectivitystatus';
|
|
17
|
-
function subscribeToPromiseQueue(observable) {
|
|
18
|
-
var _createPromiseQueue = (0, _createPromiseQueue2["default"])(),
|
|
19
|
-
push = _createPromiseQueue.push,
|
|
20
|
-
shift = _createPromiseQueue.shift;
|
|
21
|
-
var subscription = observable.subscribe({
|
|
22
|
-
next: push
|
|
23
|
-
});
|
|
24
|
-
return {
|
|
25
|
-
shift: shift,
|
|
26
|
-
unsubscribe: function unsubscribe() {
|
|
27
|
-
subscription.unsubscribe();
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
function connectionStatusToNotification(_ref) {
|
|
32
|
-
var directLine, _subscribeToPromiseQu, shift, unsubscribe, reconnecting, value;
|
|
33
|
-
return _regenerator["default"].wrap(function connectionStatusToNotification$(_context) {
|
|
34
|
-
while (1) {
|
|
35
|
-
switch (_context.prev = _context.next) {
|
|
36
|
-
case 0:
|
|
37
|
-
directLine = _ref.payload.directLine;
|
|
38
|
-
_subscribeToPromiseQu = subscribeToPromiseQueue(directLine.connectionStatus$), shift = _subscribeToPromiseQu.shift, unsubscribe = _subscribeToPromiseQu.unsubscribe;
|
|
39
|
-
_context.prev = 2;
|
|
40
|
-
case 3:
|
|
41
|
-
_context.next = 5;
|
|
42
|
-
return (0, _effects.call)(shift);
|
|
43
|
-
case 5:
|
|
44
|
-
value = _context.sent;
|
|
45
|
-
_context.t0 = value;
|
|
46
|
-
_context.next = _context.t0 === 0 ? 9 : _context.t0 === 1 ? 9 : _context.t0 === 2 ? 12 : _context.t0 === 3 ? 16 : _context.t0 === 4 ? 16 : 20;
|
|
47
|
-
break;
|
|
48
|
-
case 9:
|
|
49
|
-
_context.next = 11;
|
|
50
|
-
return (0, _effects.put)((0, _setNotification["default"])({
|
|
51
|
-
id: CONNECTIVITY_STATUS_NOTIFICATION_ID,
|
|
52
|
-
level: 'info',
|
|
53
|
-
message: reconnecting ? 'reconnecting' : 'connecting'
|
|
54
|
-
}));
|
|
55
|
-
case 11:
|
|
56
|
-
return _context.abrupt("break", 21);
|
|
57
|
-
case 12:
|
|
58
|
-
reconnecting = 1;
|
|
59
|
-
_context.next = 15;
|
|
60
|
-
return (0, _effects.put)((0, _setNotification["default"])({
|
|
61
|
-
id: CONNECTIVITY_STATUS_NOTIFICATION_ID,
|
|
62
|
-
level: 'success',
|
|
63
|
-
message: 'connected'
|
|
64
|
-
}));
|
|
65
|
-
case 15:
|
|
66
|
-
return _context.abrupt("break", 21);
|
|
67
|
-
case 16:
|
|
68
|
-
reconnecting = 1;
|
|
69
|
-
_context.next = 19;
|
|
70
|
-
return (0, _effects.put)((0, _setNotification["default"])({
|
|
71
|
-
id: CONNECTIVITY_STATUS_NOTIFICATION_ID,
|
|
72
|
-
level: 'error',
|
|
73
|
-
message: 'failedtoconnect'
|
|
74
|
-
}));
|
|
75
|
-
case 19:
|
|
76
|
-
return _context.abrupt("break", 21);
|
|
77
|
-
case 20:
|
|
78
|
-
return _context.abrupt("break", 21);
|
|
79
|
-
case 21:
|
|
80
|
-
_context.next = 3;
|
|
81
|
-
break;
|
|
82
|
-
case 23:
|
|
83
|
-
_context.prev = 23;
|
|
84
|
-
unsubscribe();
|
|
85
|
-
return _context.finish(23);
|
|
86
|
-
case 26:
|
|
87
|
-
case "end":
|
|
88
|
-
return _context.stop();
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}, _marked, null, [[2,, 23, 26]]);
|
|
92
|
-
}
|
|
93
|
-
function _callee() {
|
|
94
|
-
return _regenerator["default"].wrap(function _callee$(_context2) {
|
|
95
|
-
while (1) {
|
|
96
|
-
switch (_context2.prev = _context2.next) {
|
|
97
|
-
case 0:
|
|
98
|
-
_context2.next = 2;
|
|
99
|
-
return (0, _effects.takeLatest)(_connect.CONNECT, connectionStatusToNotification);
|
|
100
|
-
case 2:
|
|
101
|
-
case "end":
|
|
102
|
-
return _context2.stop();
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}, _marked2);
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZWZmZWN0cyIsInJlcXVpcmUiLCJfY29ubmVjdCIsIl9jcmVhdGVQcm9taXNlUXVldWUyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9zZXROb3RpZmljYXRpb24iLCJfbWFya2VkIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsImNvbm5lY3Rpb25TdGF0dXNUb05vdGlmaWNhdGlvbiIsIl9tYXJrZWQyIiwiX2NhbGxlZSIsIkNPTk5FQ1RJVklUWV9TVEFUVVNfTk9USUZJQ0FUSU9OX0lEIiwic3Vic2NyaWJlVG9Qcm9taXNlUXVldWUiLCJvYnNlcnZhYmxlIiwiX2NyZWF0ZVByb21pc2VRdWV1ZSIsImNyZWF0ZVByb21pc2VRdWV1ZSIsInB1c2giLCJzaGlmdCIsInN1YnNjcmlwdGlvbiIsInN1YnNjcmliZSIsIm5leHQiLCJ1bnN1YnNjcmliZSIsIl9yZWYiLCJkaXJlY3RMaW5lIiwiX3N1YnNjcmliZVRvUHJvbWlzZVF1IiwicmVjb25uZWN0aW5nIiwidmFsdWUiLCJ3cmFwIiwiY29ubmVjdGlvblN0YXR1c1RvTm90aWZpY2F0aW9uJCIsIl9jb250ZXh0IiwicHJldiIsInBheWxvYWQiLCJjb25uZWN0aW9uU3RhdHVzJCIsImNhbGwiLCJzZW50IiwidDAiLCJwdXQiLCJzZXROb3RpZmljYXRpb24iLCJpZCIsImxldmVsIiwibWVzc2FnZSIsImFicnVwdCIsImZpbmlzaCIsInN0b3AiLCJfY2FsbGVlJCIsIl9jb250ZXh0MiIsInRha2VMYXRlc3QiLCJDT05ORUNUIl0sInNvdXJjZVJvb3QiOiJjb3JlOi8vLyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NhZ2FzL2Nvbm5lY3Rpb25TdGF0dXNUb05vdGlmaWNhdGlvblNhZ2EuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IG5vLW1hZ2ljLW51bWJlcnM6IFtcImVycm9yXCIsIHsgXCJpZ25vcmVcIjogWzAsIDEsIDIsIDMsIDRdIH1dICovXG5cbmltcG9ydCB7IGNhbGwsIHB1dCwgdGFrZUxhdGVzdCB9IGZyb20gJ3JlZHV4LXNhZ2EvZWZmZWN0cyc7XG5cbmltcG9ydCB7IENPTk5FQ1QgfSBmcm9tICcuLi9hY3Rpb25zL2Nvbm5lY3QnO1xuaW1wb3J0IGNyZWF0ZVByb21pc2VRdWV1ZSBmcm9tICcuLi9jcmVhdGVQcm9taXNlUXVldWUnO1xuaW1wb3J0IHNldE5vdGlmaWNhdGlvbiBmcm9tICcuLi9hY3Rpb25zL3NldE5vdGlmaWNhdGlvbic7XG5cbmNvbnN0IENPTk5FQ1RJVklUWV9TVEFUVVNfTk9USUZJQ0FUSU9OX0lEID0gJ2Nvbm5lY3Rpdml0eXN0YXR1cyc7XG5cbmZ1bmN0aW9uIHN1YnNjcmliZVRvUHJvbWlzZVF1ZXVlKG9ic2VydmFibGUpIHtcbiAgY29uc3QgeyBwdXNoLCBzaGlmdCB9ID0gY3JlYXRlUHJvbWlzZVF1ZXVlKCk7XG4gIGNvbnN0IHN1YnNjcmlwdGlvbiA9IG9ic2VydmFibGUuc3Vic2NyaWJlKHsgbmV4dDogcHVzaCB9KTtcblxuICByZXR1cm4ge1xuICAgIHNoaWZ0LFxuICAgIHVuc3Vic2NyaWJlKCkge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiogY29ubmVjdGlvblN0YXR1c1RvTm90aWZpY2F0aW9uKHsgcGF5bG9hZDogeyBkaXJlY3RMaW5lIH0gfSkge1xuICBjb25zdCB7IHNoaWZ0LCB1bnN1YnNjcmliZSB9ID0gc3Vic2NyaWJlVG9Qcm9taXNlUXVldWUoZGlyZWN0TGluZS5jb25uZWN0aW9uU3RhdHVzJCk7XG5cbiAgdHJ5IHtcbiAgICBsZXQgcmVjb25uZWN0aW5nO1xuXG4gICAgZm9yICg7Oykge1xuICAgICAgY29uc3QgdmFsdWUgPSB5aWVsZCBjYWxsKHNoaWZ0KTtcblxuICAgICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICB5aWVsZCBwdXQoXG4gICAgICAgICAgICBzZXROb3RpZmljYXRpb24oe1xuICAgICAgICAgICAgICBpZDogQ09OTkVDVElWSVRZX1NUQVRVU19OT1RJRklDQVRJT05fSUQsXG4gICAgICAgICAgICAgIGxldmVsOiAnaW5mbycsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHJlY29ubmVjdGluZyA/ICdyZWNvbm5lY3RpbmcnIDogJ2Nvbm5lY3RpbmcnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgcmVjb25uZWN0aW5nID0gMTtcblxuICAgICAgICAgIHlpZWxkIHB1dChcbiAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbih7XG4gICAgICAgICAgICAgIGlkOiBDT05ORUNUSVZJVFlfU1RBVFVTX05PVElGSUNBVElPTl9JRCxcbiAgICAgICAgICAgICAgbGV2ZWw6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ2Nvbm5lY3RlZCdcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHJlY29ubmVjdGluZyA9IDE7XG5cbiAgICAgICAgICB5aWVsZCBwdXQoXG4gICAgICAgICAgICBzZXROb3RpZmljYXRpb24oe1xuICAgICAgICAgICAgICBpZDogQ09OTkVDVElWSVRZX1NUQVRVU19OT1RJRklDQVRJT05fSUQsXG4gICAgICAgICAgICAgIGxldmVsOiAnZXJyb3InLFxuICAgICAgICAgICAgICBtZXNzYWdlOiAnZmFpbGVkdG9jb25uZWN0J1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgdW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiogKCkge1xuICB5aWVsZCB0YWtlTGF0ZXN0KENPTk5FQ1QsIGNvbm5lY3Rpb25TdGF0dXNUb05vdGlmaWNhdGlvbik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRUEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsb0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLGdCQUFBLEdBQUFELHNCQUFBLENBQUFILE9BQUE7QUFBeUQsSUFBQUssT0FBQSxnQkFBQUMsWUFBQSxZQUFBQyxJQUFBLENBZ0IvQ0MsOEJBQThCO0VBQUFDLFFBQUEsZ0JBQUFILFlBQUEsWUFBQUMsSUFBQSxDQUFBRyxPQUFBO0FBdEJ4QztBQVFBLElBQU1DLG1DQUFtQyxHQUFHLG9CQUFvQjtBQUVoRSxTQUFTQyx1QkFBdUJBLENBQUNDLFVBQVUsRUFBRTtFQUMzQyxJQUFBQyxtQkFBQSxHQUF3QixJQUFBQywrQkFBa0IsRUFBQyxDQUFDO0lBQXBDQyxJQUFJLEdBQUFGLG1CQUFBLENBQUpFLElBQUk7SUFBRUMsS0FBSyxHQUFBSCxtQkFBQSxDQUFMRyxLQUFLO0VBQ25CLElBQU1DLFlBQVksR0FBR0wsVUFBVSxDQUFDTSxTQUFTLENBQUM7SUFBRUMsSUFBSSxFQUFFSjtFQUFLLENBQUMsQ0FBQztFQUV6RCxPQUFPO0lBQ0xDLEtBQUssRUFBTEEsS0FBSztJQUNMSSxXQUFXLFdBQUFBLFlBQUEsRUFBRztNQUNaSCxZQUFZLENBQUNHLFdBQVcsQ0FBQyxDQUFDO0lBQzVCO0VBQ0YsQ0FBQztBQUNIO0FBRUEsU0FBVWIsOEJBQThCQSxDQUFBYyxJQUFBO0VBQUEsSUFBQUMsVUFBQSxFQUFBQyxxQkFBQSxFQUFBUCxLQUFBLEVBQUFJLFdBQUEsRUFBQUksWUFBQSxFQUFBQyxLQUFBO0VBQUEsT0FBQXBCLFlBQUEsWUFBQXFCLElBQUEsVUFBQUMsZ0NBQUFDLFFBQUE7SUFBQTtNQUFBLFFBQUFBLFFBQUEsQ0FBQUMsSUFBQSxHQUFBRCxRQUFBLENBQUFULElBQUE7UUFBQTtVQUFjRyxVQUFVLEdBQUFELElBQUEsQ0FBckJTLE9BQU8sQ0FBSVIsVUFBVTtVQUFBQyxxQkFBQSxHQUMvQlosdUJBQXVCLENBQUNXLFVBQVUsQ0FBQ1MsaUJBQWlCLENBQUMsRUFBNUVmLEtBQUssR0FBQU8scUJBQUEsQ0FBTFAsS0FBSyxFQUFFSSxXQUFXLEdBQUFHLHFCQUFBLENBQVhILFdBQVc7VUFBQVEsUUFBQSxDQUFBQyxJQUFBO1FBQUE7VUFBQUQsUUFBQSxDQUFBVCxJQUFBO1VBTVIsT0FBTSxJQUFBYSxhQUFJLEVBQUNoQixLQUFLLENBQUM7UUFBQTtVQUF6QlMsS0FBSyxHQUFBRyxRQUFBLENBQUFLLElBQUE7VUFBQUwsUUFBQSxDQUFBTSxFQUFBLEdBRUhULEtBQUs7VUFBQUcsUUFBQSxDQUFBVCxJQUFBLEdBQUFTLFFBQUEsQ0FBQU0sRUFBQSxLQUNOLENBQUMsT0FBQU4sUUFBQSxDQUFBTSxFQUFBLEtBQ0QsQ0FBQyxPQUFBTixRQUFBLENBQUFNLEVBQUEsS0FXRCxDQUFDLFFBQUFOLFFBQUEsQ0FBQU0sRUFBQSxLQWFELENBQUMsUUFBQU4sUUFBQSxDQUFBTSxFQUFBLEtBQ0QsQ0FBQztVQUFBO1FBQUE7VUFBQU4sUUFBQSxDQUFBVCxJQUFBO1VBeEJKLE9BQU0sSUFBQWdCLFlBQUcsRUFDUCxJQUFBQywyQkFBZSxFQUFDO1lBQ2RDLEVBQUUsRUFBRTNCLG1DQUFtQztZQUN2QzRCLEtBQUssRUFBRSxNQUFNO1lBQ2JDLE9BQU8sRUFBRWYsWUFBWSxHQUFHLGNBQWMsR0FBRztVQUMzQyxDQUFDLENBQ0gsQ0FBQztRQUFBO1VBQUEsT0FBQUksUUFBQSxDQUFBWSxNQUFBO1FBQUE7VUFLRGhCLFlBQVksR0FBRyxDQUFDO1VBQUNJLFFBQUEsQ0FBQVQsSUFBQTtVQUVqQixPQUFNLElBQUFnQixZQUFHLEVBQ1AsSUFBQUMsMkJBQWUsRUFBQztZQUNkQyxFQUFFLEVBQUUzQixtQ0FBbUM7WUFDdkM0QixLQUFLLEVBQUUsU0FBUztZQUNoQkMsT0FBTyxFQUFFO1VBQ1gsQ0FBQyxDQUNILENBQUM7UUFBQTtVQUFBLE9BQUFYLFFBQUEsQ0FBQVksTUFBQTtRQUFBO1VBTURoQixZQUFZLEdBQUcsQ0FBQztVQUFDSSxRQUFBLENBQUFULElBQUE7VUFFakIsT0FBTSxJQUFBZ0IsWUFBRyxFQUNQLElBQUFDLDJCQUFlLEVBQUM7WUFDZEMsRUFBRSxFQUFFM0IsbUNBQW1DO1lBQ3ZDNEIsS0FBSyxFQUFFLE9BQU87WUFDZEMsT0FBTyxFQUFFO1VBQ1gsQ0FBQyxDQUNILENBQUM7UUFBQTtVQUFBLE9BQUFYLFFBQUEsQ0FBQVksTUFBQTtRQUFBO1VBQUEsT0FBQVosUUFBQSxDQUFBWSxNQUFBO1FBQUE7VUFBQVosUUFBQSxDQUFBVCxJQUFBO1VBQUE7UUFBQTtVQUFBUyxRQUFBLENBQUFDLElBQUE7VUFTUFQsV0FBVyxDQUFDLENBQUM7VUFBQyxPQUFBUSxRQUFBLENBQUFhLE1BQUE7UUFBQTtRQUFBO1VBQUEsT0FBQWIsUUFBQSxDQUFBYyxJQUFBO01BQUE7SUFBQTtFQUFBLEdBQUF0QyxPQUFBO0FBQUE7QUFJSCxTQUFBSyxRQUFBO0VBQUEsT0FBQUosWUFBQSxZQUFBcUIsSUFBQSxVQUFBaUIsU0FBQUMsU0FBQTtJQUFBO01BQUEsUUFBQUEsU0FBQSxDQUFBZixJQUFBLEdBQUFlLFNBQUEsQ0FBQXpCLElBQUE7UUFBQTtVQUFBeUIsU0FBQSxDQUFBekIsSUFBQTtVQUNiLE9BQU0sSUFBQTBCLG1CQUFVLEVBQUNDLGdCQUFPLEVBQUV2Qyw4QkFBOEIsQ0FBQztRQUFBO1FBQUE7VUFBQSxPQUFBcUMsU0FBQSxDQUFBRixJQUFBO01BQUE7SUFBQTtFQUFBLEdBQUFsQyxRQUFBO0FBQUEifQ==
|