{"version":3,"file":"index-CvNrKnP1.js","sources":["../../Client/legacy/Components/Banner/index.tsx","../../Client/legacy/Components/Menus/NavbarComponents/StateLockup/index.tsx","../../Client/node_modules/ua-parser-js/dist/ua-parser.min.js","../../Client/node_modules/react-device-detect/dist/lib.js","../../Client/legacy/Components/Menus/NavbarComponents/AvailableStates.tsx","../../Client/legacy/Components/Menus/NavbarComponents/Burger.tsx","../../Client/legacy/Components/Menus/NavbarComponents/ProductLink.tsx","../../Client/legacy/Components/Menus/NavbarComponents/SubPageLink.tsx","../../Client/legacy/Components/DropdownContainer/App.tsx","../../Client/legacy/Components/Menus/NavbarComponents/UserStatus.tsx","../../Client/business/CommonSets/HubChannel/index.ts","../../Client/legacy/Components/Icons/Bell.tsx","../../Client/legacy/Components/Icons/IconBackground.tsx","../../Client/shared/Hooks/Timeout/index.ts","../../Client/node_modules/@microsoft/signalr/dist/esm/Errors.js","../../Client/node_modules/@microsoft/signalr/dist/esm/HttpClient.js","../../Client/node_modules/@microsoft/signalr/dist/esm/ILogger.js","../../Client/node_modules/@microsoft/signalr/dist/esm/Loggers.js","../../Client/node_modules/@microsoft/signalr/dist/esm/Utils.js","../../Client/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js","../../Client/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js","../../Client/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js","../../Client/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js","../../Client/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js","../../Client/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js","../../Client/node_modules/@microsoft/signalr/dist/esm/Subject.js","../../Client/node_modules/@microsoft/signalr/dist/esm/HubConnection.js","../../Client/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js","../../Client/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js","../../Client/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js","../../Client/node_modules/@microsoft/signalr/dist/esm/ITransport.js","../../Client/node_modules/@microsoft/signalr/dist/esm/AbortController.js","../../Client/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js","../../Client/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js","../../Client/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js","../../Client/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js","../../Client/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js","../../Client/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js","../../Client/shared/Hubs/Hub/index.ts","../../Client/legacy/Components/Menus/NotificationIcon/index.tsx","../../Client/legacy/Components/Menus/SlidingMenu/link.tsx","../../Client/legacy/Components/Menus/SlidingMenu/index.tsx","../../Client/shared/Hooks/ComplexState.ts","../../Client/legacy/Components/Menus/Navbar/index.tsx"],"sourcesContent":["import { decodeHtml, toBoolean } from '@shared/Common';\r\nimport { getSessionData, saveSessionData } from '@shared/Storage';\r\nimport { clsx } from 'clsx';\r\nimport { useEffect, useMemo, useState } from 'react';\r\nimport './style.scss';\r\n\r\nexport const BannerDismissStorageKey = 'bannerDismiss';\r\n\r\nexport enum BannerSeverityLevel {\r\n Critical = 'critical',\r\n Moderate = 'moderate',\r\n Normal = 'normal',\r\n}\r\n\r\nexport interface BannerProps {\r\n hide?: boolean;\r\n level?: BannerSeverityLevel;\r\n message: string;\r\n}\r\n\r\nexport function Banner({ hide, level, message }: BannerProps) {\r\n const [visible, setVisible] = useState<boolean>(false),\r\n className = clsx(\r\n 'navbar-banner',\r\n // Default to Moderate style\r\n level || BannerSeverityLevel.Moderate,\r\n visible ? 'visible' : 'banner-hidden',\r\n hide && 'cover'\r\n ),\r\n // AppSettings return an encoded html string when assigned to the window object, so we need to decode it\r\n __html = useMemo(() => decodeHtml(message), [message]);\r\n\r\n useEffect(() => {\r\n if (toBoolean(getSessionData(BannerDismissStorageKey))) {\r\n return;\r\n }\r\n\r\n setVisible(true);\r\n }, []);\r\n\r\n return (\r\n <div id='bannerWrapper'>\r\n <div id='bannerElement' className={className}>\r\n <p id='banner-message' dangerouslySetInnerHTML={{ __html }} />\r\n <div className='dismiss' onClick={dismissBanner}>\r\n <p>Dismiss</p>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n\r\n function dismissBanner() {\r\n setVisible(false);\r\n saveSessionData(BannerDismissStorageKey, 'true');\r\n }\r\n}\r\n","import { Svg } from '@legacy/Components/Svg';\r\nimport './style.scss';\r\n\r\nexport function StateLockup({ stateCode }: { stateCode: string }) {\r\n return (\r\n <span className='state-lockup'>\r\n <Svg id={stateCode} path={`/images/state-${stateCode}.svg`} className='state-icon' alt={stateCode} />\r\n <span>{stateCode}</span>\r\n </span>\r\n );\r\n}\r\n","/* UAParser.js v1.0.38\n Copyright © 2012-2021 Faisal Salman <f@faisalman.com>\n MIT License */\n(function(window,undefined){\"use strict\";var LIBVERSION=\"1.0.38\",EMPTY=\"\",UNKNOWN=\"?\",FUNC_TYPE=\"function\",UNDEF_TYPE=\"undefined\",OBJ_TYPE=\"object\",STR_TYPE=\"string\",MAJOR=\"major\",MODEL=\"model\",NAME=\"name\",TYPE=\"type\",VENDOR=\"vendor\",VERSION=\"version\",ARCHITECTURE=\"architecture\",CONSOLE=\"console\",MOBILE=\"mobile\",TABLET=\"tablet\",SMARTTV=\"smarttv\",WEARABLE=\"wearable\",EMBEDDED=\"embedded\",UA_MAX_LENGTH=500;var AMAZON=\"Amazon\",APPLE=\"Apple\",ASUS=\"ASUS\",BLACKBERRY=\"BlackBerry\",BROWSER=\"Browser\",CHROME=\"Chrome\",EDGE=\"Edge\",FIREFOX=\"Firefox\",GOOGLE=\"Google\",HUAWEI=\"Huawei\",LG=\"LG\",MICROSOFT=\"Microsoft\",MOTOROLA=\"Motorola\",OPERA=\"Opera\",SAMSUNG=\"Samsung\",SHARP=\"Sharp\",SONY=\"Sony\",XIAOMI=\"Xiaomi\",ZEBRA=\"Zebra\",FACEBOOK=\"Facebook\",CHROMIUM_OS=\"Chromium OS\",MAC_OS=\"Mac OS\";var extend=function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i])}else{mergedRegexes[i]=regexes[i]}}return mergedRegexes},enumerize=function(arr){var enums={};for(var i=0;i<arr.length;i++){enums[arr[i].toUpperCase()]=arr[i]}return enums},has=function(str1,str2){return typeof str1===STR_TYPE?lowerize(str2).indexOf(lowerize(str1))!==-1:false},lowerize=function(str){return str.toLowerCase()},majorize=function(version){return typeof version===STR_TYPE?version.replace(/[^\\d\\.]/g,EMPTY).split(\".\")[0]:undefined},trim=function(str,len){if(typeof str===STR_TYPE){str=str.replace(/^\\s\\s*/,EMPTY);return typeof len===UNDEF_TYPE?str:str.substring(0,UA_MAX_LENGTH)}};var rgxMapper=function(ua,arrays){var i=0,j,k,p,q,matches,match;while(i<arrays.length&&!matches){var regex=arrays[i],props=arrays[i+1];j=k=0;while(j<regex.length&&!matches){if(!regex[j]){break}matches=regex[j++].exec(ua);if(!!matches){for(p=0;p<props.length;p++){match=matches[++k];q=props[p];if(typeof q===OBJ_TYPE&&q.length>0){if(q.length===2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length===3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length===4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},strMapper=function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j<map[i].length;j++){if(has(map[i][j],str)){return i===UNKNOWN?undefined:i}}}else if(has(map[i],str)){return i===UNKNOWN?undefined:i}}return str};var oldSafariMap={\"1.0\":\"/8\",1.2:\"/1\",1.3:\"/3\",\"2.0\":\"/412\",\"2.0.2\":\"/416\",\"2.0.3\":\"/417\",\"2.0.4\":\"/419\",\"?\":\"/\"},windowsVersionMap={ME:\"4.90\",\"NT 3.11\":\"NT3.51\",\"NT 4.0\":\"NT4.0\",2e3:\"NT 5.0\",XP:[\"NT 5.1\",\"NT 5.2\"],Vista:\"NT 6.0\",7:\"NT 6.1\",8:\"NT 6.2\",8.1:\"NT 6.3\",10:[\"NT 6.4\",\"NT 10.0\"],RT:\"ARM\"};var regexes={browser:[[/\\b(?:crmo|crios)\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Chrome\"]],[/edg(?:e|ios|a)?\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Edge\"]],[/(opera mini)\\/([-\\w\\.]+)/i,/(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i,/(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i],[NAME,VERSION],[/opios[\\/ ]+([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Mini\"]],[/\\bop(?:rg)?x\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" GX\"]],[/\\bopr\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA]],[/\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i],[VERSION,[NAME,\"Baidu\"]],[/(kindle)\\/([\\w\\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i,/(avant|iemobile|slim)\\s?(?:browser)?[\\/ ]?([\\w\\.]*)/i,/(?:ms|\\()(ie) ([\\w\\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\\/([-\\w\\.]+)/i,/(heytap|ovi)browser\\/([\\d\\.]+)/i,/(weibo)__([\\d\\.]+)/i],[NAME,VERSION],[/\\bddg\\/([\\w\\.]+)/i],[VERSION,[NAME,\"DuckDuckGo\"]],[/(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i],[VERSION,[NAME,\"UC\"+BROWSER]],[/microm.+\\bqbcore\\/([\\w\\.]+)/i,/\\bqbcore\\/([\\w\\.]+).+microm/i,/micromessenger\\/([\\w\\.]+)/i],[VERSION,[NAME,\"WeChat\"]],[/konqueror\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Konqueror\"]],[/trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i],[VERSION,[NAME,\"IE\"]],[/ya(?:search)?browser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Yandex\"]],[/slbrowser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Smart Lenovo \"+BROWSER]],[/(avast|avg)\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1 Secure \"+BROWSER],VERSION],[/\\bfocus\\/([\\w\\.]+)/i],[VERSION,[NAME,FIREFOX+\" Focus\"]],[/\\bopt\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Touch\"]],[/coc_coc\\w+\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Coc Coc\"]],[/dolfin\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Dolphin\"]],[/coast\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Coast\"]],[/miuibrowser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"MIUI \"+BROWSER]],[/fxios\\/([-\\w\\.]+)/i],[VERSION,[NAME,FIREFOX]],[/\\bqihu|(qi?ho?o?|360)browser/i],[[NAME,\"360 \"+BROWSER]],[/(oculus|sailfish|huawei|vivo)browser\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1 \"+BROWSER],VERSION],[/samsungbrowser\\/([\\w\\.]+)/i],[VERSION,[NAME,SAMSUNG+\" Internet\"]],[/(comodo_dragon)\\/([\\w\\.]+)/i],[[NAME,/_/g,\" \"],VERSION],[/metasr[\\/ ]?([\\d\\.]+)/i],[VERSION,[NAME,\"Sogou Explorer\"]],[/(sogou)mo\\w+\\/([\\d\\.]+)/i],[[NAME,\"Sogou Mobile\"],VERSION],[/(electron)\\/([\\w\\.]+) safari/i,/(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i,/m?(qqbrowser|2345Explorer)[\\/ ]?([\\w\\.]+)/i],[NAME,VERSION],[/(lbbrowser)/i,/\\[(linkedin)app\\]/i],[NAME],[/((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i],[[NAME,FACEBOOK],VERSION],[/(Klarna)\\/([\\w\\.]+)/i,/(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i,/(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i,/safari (line)\\/([\\w\\.]+)/i,/\\b(line)\\/([\\w\\.]+)\\/iab/i,/(alipay)client\\/([\\w\\.]+)/i,/(twitter)(?:and| f.+e\\/([\\w\\.]+))/i,/(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i],[NAME,VERSION],[/\\bgsa\\/([\\w\\.]+) .*safari\\//i],[VERSION,[NAME,\"GSA\"]],[/musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i],[VERSION,[NAME,\"TikTok\"]],[/headlesschrome(?:\\/([\\w\\.]+)| )/i],[VERSION,[NAME,CHROME+\" Headless\"]],[/ wv\\).+(chrome)\\/([\\w\\.]+)/i],[[NAME,CHROME+\" WebView\"],VERSION],[/droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i],[VERSION,[NAME,\"Android \"+BROWSER]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i],[NAME,VERSION],[/version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i],[VERSION,[NAME,\"Mobile Safari\"]],[/version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i],[VERSION,NAME],[/webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i],[NAME,[VERSION,strMapper,oldSafariMap]],[/(webkit|khtml)\\/([\\w\\.]+)/i],[NAME,VERSION],[/(navigator|netscape\\d?)\\/([-\\w\\.]+)/i],[[NAME,\"Netscape\"],VERSION],[/mobile vr; rv:([\\w\\.]+)\\).+firefox/i],[VERSION,[NAME,FIREFOX+\" Reality\"]],[/ekiohf.+(flow)\\/([\\w\\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,/(firefox)\\/([\\w\\.]+)/i,/(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,/(links) \\(([\\w\\.]+)/i,/panasonic;(viera)/i],[NAME,VERSION],[/(cobalt)\\/([\\w\\.]+)/i],[NAME,[VERSION,/master.|lts./,\"\"]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i],[[ARCHITECTURE,\"amd64\"]],[/(ia32(?=;))/i],[[ARCHITECTURE,lowerize]],[/((?:i[346]|x)86)[;\\)]/i],[[ARCHITECTURE,\"ia32\"]],[/\\b(aarch64|arm(v?8e?l?|_?64))\\b/i],[[ARCHITECTURE,\"arm64\"]],[/\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i],[[ARCHITECTURE,\"armhf\"]],[/windows (ce|mobile); ppc;/i],[[ARCHITECTURE,\"arm\"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i],[[ARCHITECTURE,/ower/,EMPTY,lowerize]],[/(sun4\\w)[;\\)]/i],[[ARCHITECTURE,\"sparc\"]],[/((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i],[[ARCHITECTURE,lowerize]]],device:[[/\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,TABLET]],[/\\b((?:s[cgp]h|gt|sm)-\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,/samsung[- ]([-\\w]+)/i,/sec-(sgh\\w+)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,MOBILE]],[/(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i],[MODEL,[VENDOR,APPLE],[TYPE,MOBILE]],[/\\((ipad);[-\\w\\),; ]+apple/i,/applecoremedia\\/[\\w\\.]+ \\((ipad)/i,/\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i],[MODEL,[VENDOR,APPLE],[TYPE,TABLET]],[/(macintosh);/i],[MODEL,[VENDOR,APPLE]],[/\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i],[MODEL,[VENDOR,SHARP],[TYPE,MOBILE]],[/\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,TABLET]],[/(?:huawei|honor)([-\\w ]+)[;\\)]/i,/\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,MOBILE]],[/\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i,/\\b; (\\w+) build\\/hm\\1/i,/\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i,/\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i,/oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i,/\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i],[[MODEL,/_/g,\" \"],[VENDOR,XIAOMI],[TYPE,MOBILE]],[/oid[^\\)]+; (2\\d{4}(283|rpbf)[cgl])( bui|\\))/i,/\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i],[[MODEL,/_/g,\" \"],[VENDOR,XIAOMI],[TYPE,TABLET]],[/; (\\w+) bui.+ oppo/i,/\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i],[MODEL,[VENDOR,\"OPPO\"],[TYPE,MOBILE]],[/\\b(opd2\\d{3}a?) bui/i],[MODEL,[VENDOR,\"OPPO\"],[TYPE,TABLET]],[/vivo (\\w+)(?: bui|\\))/i,/\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i],[MODEL,[VENDOR,\"Vivo\"],[TYPE,MOBILE]],[/\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i],[MODEL,[VENDOR,\"Realme\"],[TYPE,MOBILE]],[/\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,/\\bmot(?:orola)?[- ](\\w*)/i,/((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i],[MODEL,[VENDOR,MOTOROLA],[TYPE,MOBILE]],[/\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i],[MODEL,[VENDOR,MOTOROLA],[TYPE,TABLET]],[/((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i],[MODEL,[VENDOR,LG],[TYPE,TABLET]],[/(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,/\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,/\\blg-?([\\d\\w]+) bui/i],[MODEL,[VENDOR,LG],[TYPE,MOBILE]],[/(ideatab[-\\w ]+)/i,/lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i],[MODEL,[VENDOR,\"Lenovo\"],[TYPE,TABLET]],[/(?:maemo|nokia).*(n900|lumia \\d+)/i,/nokia[-_ ]?([-\\w\\.]*)/i],[[MODEL,/_/g,\" \"],[VENDOR,\"Nokia\"],[TYPE,MOBILE]],[/(pixel c)\\b/i],[MODEL,[VENDOR,GOOGLE],[TYPE,TABLET]],[/droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i],[MODEL,[VENDOR,GOOGLE],[TYPE,MOBILE]],[/droid.+ (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i],[MODEL,[VENDOR,SONY],[TYPE,MOBILE]],[/sony tablet [ps]/i,/\\b(?:sony)?sgp\\w+(?: bui|\\))/i],[[MODEL,\"Xperia Tablet\"],[VENDOR,SONY],[TYPE,TABLET]],[/ (kb2005|in20[12]5|be20[12][59])\\b/i,/(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i],[MODEL,[VENDOR,\"OnePlus\"],[TYPE,MOBILE]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i,/(kf[a-z]+)( bui|\\)).+silk\\//i],[MODEL,[VENDOR,AMAZON],[TYPE,TABLET]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i],[[MODEL,/(.+)/g,\"Fire Phone $1\"],[VENDOR,AMAZON],[TYPE,MOBILE]],[/(playbook);[-\\w\\),; ]+(rim)/i],[MODEL,VENDOR,[TYPE,TABLET]],[/\\b((?:bb[a-f]|st[hv])100-\\d)/i,/\\(bb10; (\\w+)/i],[MODEL,[VENDOR,BLACKBERRY],[TYPE,MOBILE]],[/(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i],[MODEL,[VENDOR,ASUS],[TYPE,TABLET]],[/ (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i],[MODEL,[VENDOR,ASUS],[TYPE,MOBILE]],[/(nexus 9)/i],[MODEL,[VENDOR,\"HTC\"],[TYPE,TABLET]],[/(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i,/(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i],[VENDOR,[MODEL,/_/g,\" \"],[TYPE,MOBILE]],[/droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i],[MODEL,[VENDOR,\"Acer\"],[TYPE,TABLET]],[/droid.+; (m[1-5] note) bui/i,/\\bmz-([-\\w]{2,})/i],[MODEL,[VENDOR,\"Meizu\"],[TYPE,MOBILE]],[/; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i],[MODEL,[VENDOR,\"Ulefone\"],[TYPE,MOBILE]],[/(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\\w]*)/i,/(hp) ([\\w ]+\\w)/i,/(asus)-?(\\w+)/i,/(microsoft); (lumia[\\w ]+)/i,/(lenovo)[-_ ]?([-\\w]+)/i,/(jolla)/i,/(oppo) ?([\\w ]+) bui/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kobo)\\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\\/([\\w\\.]+)/i,/(nook)[\\w ]+build\\/(\\w+)/i,/(dell) (strea[kpr\\d ]*[\\dko])/i,/(le[- ]+pan)[- ]+(\\w{1,9}) bui/i,/(trinity)[- ]*(t\\d{3}) bui/i,/(gigaset)[- ]+(q\\w{1,9}) bui/i,/(vodafone) ([\\w ]+)(?:\\)| bui)/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(surface duo)/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,TABLET]],[/droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i],[MODEL,[VENDOR,\"Fairphone\"],[TYPE,MOBILE]],[/(u304aa)/i],[MODEL,[VENDOR,\"AT&T\"],[TYPE,MOBILE]],[/\\bsie-(\\w*)/i],[MODEL,[VENDOR,\"Siemens\"],[TYPE,MOBILE]],[/\\b(rct\\w+) b/i],[MODEL,[VENDOR,\"RCA\"],[TYPE,TABLET]],[/\\b(venue[\\d ]{2,7}) b/i],[MODEL,[VENDOR,\"Dell\"],[TYPE,TABLET]],[/\\b(q(?:mv|ta)\\w+) b/i],[MODEL,[VENDOR,\"Verizon\"],[TYPE,TABLET]],[/\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i],[MODEL,[VENDOR,\"Barnes & Noble\"],[TYPE,TABLET]],[/\\b(tm\\d{3}\\w+) b/i],[MODEL,[VENDOR,\"NuVision\"],[TYPE,TABLET]],[/\\b(k88) b/i],[MODEL,[VENDOR,\"ZTE\"],[TYPE,TABLET]],[/\\b(nx\\d{3}j) b/i],[MODEL,[VENDOR,\"ZTE\"],[TYPE,MOBILE]],[/\\b(gen\\d{3}) b.+49h/i],[MODEL,[VENDOR,\"Swiss\"],[TYPE,MOBILE]],[/\\b(zur\\d{3}) b/i],[MODEL,[VENDOR,\"Swiss\"],[TYPE,TABLET]],[/\\b((zeki)?tb.*\\b) b/i],[MODEL,[VENDOR,\"Zeki\"],[TYPE,TABLET]],[/\\b([yr]\\d{2}) b/i,/\\b(dragon[- ]+touch |dt)(\\w{5}) b/i],[[VENDOR,\"Dragon Touch\"],MODEL,[TYPE,TABLET]],[/\\b(ns-?\\w{0,9}) b/i],[MODEL,[VENDOR,\"Insignia\"],[TYPE,TABLET]],[/\\b((nxa|next)-?\\w{0,9}) b/i],[MODEL,[VENDOR,\"NextBook\"],[TYPE,TABLET]],[/\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[VENDOR,\"Voice\"],MODEL,[TYPE,MOBILE]],[/\\b(lvtel\\-)?(v1[12]) b/i],[[VENDOR,\"LvTel\"],MODEL,[TYPE,MOBILE]],[/\\b(ph-1) /i],[MODEL,[VENDOR,\"Essential\"],[TYPE,MOBILE]],[/\\b(v(100md|700na|7011|917g).*\\b) b/i],[MODEL,[VENDOR,\"Envizen\"],[TYPE,TABLET]],[/\\b(trio[-\\w\\. ]+) b/i],[MODEL,[VENDOR,\"MachSpeed\"],[TYPE,TABLET]],[/\\btu_(1491) b/i],[MODEL,[VENDOR,\"Rotor\"],[TYPE,TABLET]],[/(shield[\\w ]+) b/i],[MODEL,[VENDOR,\"Nvidia\"],[TYPE,TABLET]],[/(sprint) (\\w+)/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kin\\.[onetw]{3})/i],[[MODEL,/\\./g,\" \"],[VENDOR,MICROSOFT],[TYPE,MOBILE]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,TABLET]],[/droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,MOBILE]],[/smart-tv.+(samsung)/i],[VENDOR,[TYPE,SMARTTV]],[/hbbtv.+maple;(\\d+)/i],[[MODEL,/^/,\"SmartTV\"],[VENDOR,SAMSUNG],[TYPE,SMARTTV]],[/(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i],[[VENDOR,LG],[TYPE,SMARTTV]],[/(apple) ?tv/i],[VENDOR,[MODEL,APPLE+\" TV\"],[TYPE,SMARTTV]],[/crkey/i],[[MODEL,CHROME+\"cast\"],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/droid.+aft(\\w+)( bui|\\))/i],[MODEL,[VENDOR,AMAZON],[TYPE,SMARTTV]],[/\\(dtv[\\);].+(aquos)/i,/(aquos-tv[\\w ]+)\\)/i],[MODEL,[VENDOR,SHARP],[TYPE,SMARTTV]],[/(bravia[\\w ]+)( bui|\\))/i],[MODEL,[VENDOR,SONY],[TYPE,SMARTTV]],[/(mitv-\\w{5}) bui/i],[MODEL,[VENDOR,XIAOMI],[TYPE,SMARTTV]],[/Hbbtv.*(technisat) (.*);/i],[VENDOR,MODEL,[TYPE,SMARTTV]],[/\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i,/hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i],[[VENDOR,trim],[MODEL,trim],[TYPE,SMARTTV]],[/\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i],[[TYPE,SMARTTV]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[VENDOR,MODEL,[TYPE,CONSOLE]],[/droid.+; (shield) bui/i],[MODEL,[VENDOR,\"Nvidia\"],[TYPE,CONSOLE]],[/(playstation [345portablevi]+)/i],[MODEL,[VENDOR,SONY],[TYPE,CONSOLE]],[/\\b(xbox(?: one)?(?!; xbox))[\\); ]/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,CONSOLE]],[/((pebble))app/i],[VENDOR,MODEL,[TYPE,WEARABLE]],[/(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i],[MODEL,[VENDOR,APPLE],[TYPE,WEARABLE]],[/droid.+; (glass) \\d/i],[MODEL,[VENDOR,GOOGLE],[TYPE,WEARABLE]],[/droid.+; (wt63?0{2,3})\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,WEARABLE]],[/(quest( \\d| pro)?)/i],[MODEL,[VENDOR,FACEBOOK],[TYPE,WEARABLE]],[/(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i],[VENDOR,[TYPE,EMBEDDED]],[/(aeobc)\\b/i],[MODEL,[VENDOR,AMAZON],[TYPE,EMBEDDED]],[/droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i],[MODEL,[TYPE,MOBILE]],[/droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i],[MODEL,[TYPE,TABLET]],[/\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i],[[TYPE,TABLET]],[/(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i],[[TYPE,MOBILE]],[/(android[-\\w\\. ]{0,9});.+buil/i],[MODEL,[VENDOR,\"Generic\"]]],engine:[[/windows.+ edge\\/([\\w\\.]+)/i],[VERSION,[NAME,EDGE+\"HTML\"]],[/webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i],[VERSION,[NAME,\"Blink\"]],[/(presto)\\/([\\w\\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i,/ekioh(flow)\\/([\\w\\.]+)/i,/(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i,/(icab)[\\/ ]([23]\\.[\\d\\.]+)/i,/\\b(libweb)/i],[NAME,VERSION],[/rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i],[VERSION,NAME]],os:[[/microsoft (windows) (vista|xp)/i],[NAME,VERSION],[/(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i],[NAME,[VERSION,strMapper,windowsVersionMap]],[/windows nt 6\\.2; (arm)/i,/windows[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i],[[VERSION,strMapper,windowsVersionMap],[NAME,\"Windows\"]],[/ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i,/(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,/cfnetwork\\/.+darwin/i],[[VERSION,/_/g,\".\"],[NAME,\"iOS\"]],[/(mac os x) ?([\\w\\. ]*)/i,/(macintosh|mac_powerpc\\b)(?!.+haiku)/i],[[NAME,MAC_OS],[VERSION,/_/g,\".\"]],[/droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i],[VERSION,NAME],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,/(blackberry)\\w*\\/([\\w\\.]*)/i,/(tizen|kaios)[\\/ ]([\\w\\.]+)/i,/\\((series40);/i],[NAME,VERSION],[/\\(bb(10);/i],[VERSION,[NAME,BLACKBERRY]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i],[VERSION,[NAME,\"Symbian\"]],[/mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i],[VERSION,[NAME,FIREFOX+\" OS\"]],[/web0s;.+rt(tv)/i,/\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i],[VERSION,[NAME,\"webOS\"]],[/watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i],[VERSION,[NAME,\"watchOS\"]],[/crkey\\/([\\d\\.]+)/i],[VERSION,[NAME,CHROME+\"cast\"]],[/(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i],[[NAME,CHROMIUM_OS],VERSION],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\\/(\\d+\\.[\\w\\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\\);]+)/i,/\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i,/(mint)[\\/\\(\\) ]?(\\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,/(hurd|linux) ?([\\w\\.]*)/i,/(gnu) ?([\\w\\.]*)/i,/\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i,/(haiku) (\\w+)/i],[NAME,VERSION],[/(sunos) ?([\\w\\.\\d]*)/i],[[NAME,\"Solaris\"],VERSION],[/((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i,/(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i,/\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\\w\\.]*)/i],[NAME,VERSION]]};var UAParser=function(ua,extensions){if(typeof ua===OBJ_TYPE){extensions=ua;ua=undefined}if(!(this instanceof UAParser)){return new UAParser(ua,extensions).getResult()}var _navigator=typeof window!==UNDEF_TYPE&&window.navigator?window.navigator:undefined;var _ua=ua||(_navigator&&_navigator.userAgent?_navigator.userAgent:EMPTY);var _uach=_navigator&&_navigator.userAgentData?_navigator.userAgentData:undefined;var _rgxmap=extensions?extend(regexes,extensions):regexes;var _isSelfNav=_navigator&&_navigator.userAgent==_ua;this.getBrowser=function(){var _browser={};_browser[NAME]=undefined;_browser[VERSION]=undefined;rgxMapper.call(_browser,_ua,_rgxmap.browser);_browser[MAJOR]=majorize(_browser[VERSION]);if(_isSelfNav&&_navigator&&_navigator.brave&&typeof _navigator.brave.isBrave==FUNC_TYPE){_browser[NAME]=\"Brave\"}return _browser};this.getCPU=function(){var _cpu={};_cpu[ARCHITECTURE]=undefined;rgxMapper.call(_cpu,_ua,_rgxmap.cpu);return _cpu};this.getDevice=function(){var _device={};_device[VENDOR]=undefined;_device[MODEL]=undefined;_device[TYPE]=undefined;rgxMapper.call(_device,_ua,_rgxmap.device);if(_isSelfNav&&!_device[TYPE]&&_uach&&_uach.mobile){_device[TYPE]=MOBILE}if(_isSelfNav&&_device[MODEL]==\"Macintosh\"&&_navigator&&typeof _navigator.standalone!==UNDEF_TYPE&&_navigator.maxTouchPoints&&_navigator.maxTouchPoints>2){_device[MODEL]=\"iPad\";_device[TYPE]=TABLET}return _device};this.getEngine=function(){var _engine={};_engine[NAME]=undefined;_engine[VERSION]=undefined;rgxMapper.call(_engine,_ua,_rgxmap.engine);return _engine};this.getOS=function(){var _os={};_os[NAME]=undefined;_os[VERSION]=undefined;rgxMapper.call(_os,_ua,_rgxmap.os);if(_isSelfNav&&!_os[NAME]&&_uach&&_uach.platform&&_uach.platform!=\"Unknown\"){_os[NAME]=_uach.platform.replace(/chrome os/i,CHROMIUM_OS).replace(/macos/i,MAC_OS)}return _os};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return _ua};this.setUA=function(ua){_ua=typeof ua===STR_TYPE&&ua.length>UA_MAX_LENGTH?trim(ua,UA_MAX_LENGTH):ua;return this};this.setUA(_ua);return this};UAParser.VERSION=LIBVERSION;UAParser.BROWSER=enumerize([NAME,VERSION,MAJOR]);UAParser.CPU=enumerize([ARCHITECTURE]);UAParser.DEVICE=enumerize([MODEL,VENDOR,TYPE,CONSOLE,MOBILE,SMARTTV,TABLET,WEARABLE,EMBEDDED]);UAParser.ENGINE=UAParser.OS=enumerize([NAME,VERSION]);if(typeof exports!==UNDEF_TYPE){if(typeof module!==UNDEF_TYPE&&module.exports){exports=module.exports=UAParser}exports.UAParser=UAParser}else{if(typeof define===FUNC_TYPE&&define.amd){define(function(){return UAParser})}else if(typeof window!==UNDEF_TYPE){window.UAParser=UAParser}}var $=typeof window!==UNDEF_TYPE&&(window.jQuery||window.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult();$.ua.get=function(){return parser.getUA()};$.ua.set=function(ua){parser.setUA(ua);var result=parser.getResult();for(var prop in result){$.ua[prop]=result[prop]}}}})(typeof window===\"object\"?window:this);","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nvar UAParser = require('ua-parser-js/dist/ua-parser.min');\n\nvar ClientUAInstance = new UAParser();\nvar browser = ClientUAInstance.getBrowser();\nvar cpu = ClientUAInstance.getCPU();\nvar device = ClientUAInstance.getDevice();\nvar engine = ClientUAInstance.getEngine();\nvar os = ClientUAInstance.getOS();\nvar ua = ClientUAInstance.getUA();\nvar setUa = function setUa(userAgentString) {\n return ClientUAInstance.setUA(userAgentString);\n};\nvar parseUserAgent = function parseUserAgent(userAgent) {\n if (!userAgent) {\n console.error('No userAgent string was provided');\n return;\n }\n\n var UserAgentInstance = new UAParser(userAgent);\n return {\n UA: UserAgentInstance,\n browser: UserAgentInstance.getBrowser(),\n cpu: UserAgentInstance.getCPU(),\n device: UserAgentInstance.getDevice(),\n engine: UserAgentInstance.getEngine(),\n os: UserAgentInstance.getOS(),\n ua: UserAgentInstance.getUA(),\n setUserAgent: function setUserAgent(userAgentString) {\n return UserAgentInstance.setUA(userAgentString);\n }\n };\n};\n\nvar UAHelper = /*#__PURE__*/Object.freeze({\n ClientUAInstance: ClientUAInstance,\n browser: browser,\n cpu: cpu,\n device: device,\n engine: engine,\n os: os,\n ua: ua,\n setUa: setUa,\n parseUserAgent: parseUserAgent\n});\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar DeviceTypes = {\n Mobile: 'mobile',\n Tablet: 'tablet',\n SmartTv: 'smarttv',\n Console: 'console',\n Wearable: 'wearable',\n Embedded: 'embedded',\n Browser: undefined\n};\nvar BrowserTypes = {\n Chrome: 'Chrome',\n Firefox: 'Firefox',\n Opera: 'Opera',\n Yandex: 'Yandex',\n Safari: 'Safari',\n InternetExplorer: 'Internet Explorer',\n Edge: 'Edge',\n Chromium: 'Chromium',\n Ie: 'IE',\n MobileSafari: 'Mobile Safari',\n EdgeChromium: 'Edge Chromium',\n MIUI: 'MIUI Browser',\n SamsungBrowser: 'Samsung Browser'\n};\nvar OsTypes = {\n IOS: 'iOS',\n Android: 'Android',\n WindowsPhone: 'Windows Phone',\n Windows: 'Windows',\n MAC_OS: 'Mac OS'\n};\nvar InitialDeviceTypes = {\n isMobile: false,\n isTablet: false,\n isBrowser: false,\n isSmartTV: false,\n isConsole: false,\n isWearable: false\n};\n\nvar checkDeviceType = function checkDeviceType(type) {\n switch (type) {\n case DeviceTypes.Mobile:\n return {\n isMobile: true\n };\n\n case DeviceTypes.Tablet:\n return {\n isTablet: true\n };\n\n case DeviceTypes.SmartTv:\n return {\n isSmartTV: true\n };\n\n case DeviceTypes.Console:\n return {\n isConsole: true\n };\n\n case DeviceTypes.Wearable:\n return {\n isWearable: true\n };\n\n case DeviceTypes.Browser:\n return {\n isBrowser: true\n };\n\n case DeviceTypes.Embedded:\n return {\n isEmbedded: true\n };\n\n default:\n return InitialDeviceTypes;\n }\n};\nvar setUserAgent = function setUserAgent(userAgent) {\n return setUa(userAgent);\n};\nvar setDefaults = function setDefaults(p) {\n var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n return p ? p : d;\n};\nvar getNavigatorInstance = function getNavigatorInstance() {\n if (typeof window !== 'undefined') {\n if (window.navigator || navigator) {\n return window.navigator || navigator;\n }\n }\n\n return false;\n};\nvar isIOS13Check = function isIOS13Check(type) {\n var nav = getNavigatorInstance();\n return nav && nav.platform && (nav.platform.indexOf(type) !== -1 || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream);\n};\n\nvar browserPayload = function browserPayload(isBrowser, browser, engine, os, ua) {\n return {\n isBrowser: isBrowser,\n browserMajorVersion: setDefaults(browser.major),\n browserFullVersion: setDefaults(browser.version),\n browserName: setDefaults(browser.name),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar mobilePayload = function mobilePayload(type, device, os, ua) {\n return _objectSpread2({}, type, {\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n os: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n ua: setDefaults(ua)\n });\n};\nvar smartTvPayload = function smartTvPayload(isSmartTV, engine, os, ua) {\n return {\n isSmartTV: isSmartTV,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar consolePayload = function consolePayload(isConsole, engine, os, ua) {\n return {\n isConsole: isConsole,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar wearablePayload = function wearablePayload(isWearable, engine, os, ua) {\n return {\n isWearable: isWearable,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar embeddedPayload = function embeddedPayload(isEmbedded, device, engine, os, ua) {\n return {\n isEmbedded: isEmbedded,\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\n\nfunction deviceDetect(userAgent) {\n var _ref = userAgent ? parseUserAgent(userAgent) : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n engine = _ref.engine,\n os = _ref.os,\n ua = _ref.ua;\n\n var type = checkDeviceType(device.type);\n var isBrowser = type.isBrowser,\n isMobile = type.isMobile,\n isTablet = type.isTablet,\n isSmartTV = type.isSmartTV,\n isConsole = type.isConsole,\n isWearable = type.isWearable,\n isEmbedded = type.isEmbedded;\n\n if (isBrowser) {\n return browserPayload(isBrowser, browser, engine, os, ua);\n }\n\n if (isSmartTV) {\n return smartTvPayload(isSmartTV, engine, os, ua);\n }\n\n if (isConsole) {\n return consolePayload(isConsole, engine, os, ua);\n }\n\n if (isMobile) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isTablet) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isWearable) {\n return wearablePayload(isWearable, engine, os, ua);\n }\n\n if (isEmbedded) {\n return embeddedPayload(isEmbedded, device, engine, os, ua);\n }\n}\n\nvar isMobileType = function isMobileType(_ref) {\n var type = _ref.type;\n return type === DeviceTypes.Mobile;\n};\nvar isTabletType = function isTabletType(_ref2) {\n var type = _ref2.type;\n return type === DeviceTypes.Tablet;\n};\nvar isMobileAndTabletType = function isMobileAndTabletType(_ref3) {\n var type = _ref3.type;\n return type === DeviceTypes.Mobile || type === DeviceTypes.Tablet;\n};\nvar isSmartTVType = function isSmartTVType(_ref4) {\n var type = _ref4.type;\n return type === DeviceTypes.SmartTv;\n};\nvar isBrowserType = function isBrowserType(_ref5) {\n var type = _ref5.type;\n return type === DeviceTypes.Browser;\n};\nvar isWearableType = function isWearableType(_ref6) {\n var type = _ref6.type;\n return type === DeviceTypes.Wearable;\n};\nvar isConsoleType = function isConsoleType(_ref7) {\n var type = _ref7.type;\n return type === DeviceTypes.Console;\n};\nvar isEmbeddedType = function isEmbeddedType(_ref8) {\n var type = _ref8.type;\n return type === DeviceTypes.Embedded;\n};\nvar getMobileVendor = function getMobileVendor(_ref9) {\n var vendor = _ref9.vendor;\n return setDefaults(vendor);\n};\nvar getMobileModel = function getMobileModel(_ref10) {\n var model = _ref10.model;\n return setDefaults(model);\n};\nvar getDeviceType = function getDeviceType(_ref11) {\n var type = _ref11.type;\n return setDefaults(type, 'browser');\n}; // os types\n\nvar isAndroidType = function isAndroidType(_ref12) {\n var name = _ref12.name;\n return name === OsTypes.Android;\n};\nvar isWindowsType = function isWindowsType(_ref13) {\n var name = _ref13.name;\n return name === OsTypes.Windows;\n};\nvar isMacOsType = function isMacOsType(_ref14) {\n var name = _ref14.name;\n return name === OsTypes.MAC_OS;\n};\nvar isWinPhoneType = function isWinPhoneType(_ref15) {\n var name = _ref15.name;\n return name === OsTypes.WindowsPhone;\n};\nvar isIOSType = function isIOSType(_ref16) {\n var name = _ref16.name;\n return name === OsTypes.IOS;\n};\nvar getOsVersion = function getOsVersion(_ref17) {\n var version = _ref17.version;\n return setDefaults(version);\n};\nvar getOsName = function getOsName(_ref18) {\n var name = _ref18.name;\n return setDefaults(name);\n}; // browser types\n\nvar isChromeType = function isChromeType(_ref19) {\n var name = _ref19.name;\n return name === BrowserTypes.Chrome;\n};\nvar isFirefoxType = function isFirefoxType(_ref20) {\n var name = _ref20.name;\n return name === BrowserTypes.Firefox;\n};\nvar isChromiumType = function isChromiumType(_ref21) {\n var name = _ref21.name;\n return name === BrowserTypes.Chromium;\n};\nvar isEdgeType = function isEdgeType(_ref22) {\n var name = _ref22.name;\n return name === BrowserTypes.Edge;\n};\nvar isYandexType = function isYandexType(_ref23) {\n var name = _ref23.name;\n return name === BrowserTypes.Yandex;\n};\nvar isSafariType = function isSafariType(_ref24) {\n var name = _ref24.name;\n return name === BrowserTypes.Safari || name === BrowserTypes.MobileSafari;\n};\nvar isMobileSafariType = function isMobileSafariType(_ref25) {\n var name = _ref25.name;\n return name === BrowserTypes.MobileSafari;\n};\nvar isOperaType = function isOperaType(_ref26) {\n var name = _ref26.name;\n return name === BrowserTypes.Opera;\n};\nvar isIEType = function isIEType(_ref27) {\n var name = _ref27.name;\n return name === BrowserTypes.InternetExplorer || name === BrowserTypes.Ie;\n};\nvar isMIUIType = function isMIUIType(_ref28) {\n var name = _ref28.name;\n return name === BrowserTypes.MIUI;\n};\nvar isSamsungBrowserType = function isSamsungBrowserType(_ref29) {\n var name = _ref29.name;\n return name === BrowserTypes.SamsungBrowser;\n};\nvar getBrowserFullVersion = function getBrowserFullVersion(_ref30) {\n var version = _ref30.version;\n return setDefaults(version);\n};\nvar getBrowserVersion = function getBrowserVersion(_ref31) {\n var major = _ref31.major;\n return setDefaults(major);\n};\nvar getBrowserName = function getBrowserName(_ref32) {\n var name = _ref32.name;\n return setDefaults(name);\n}; // engine types\n\nvar getEngineName = function getEngineName(_ref33) {\n var name = _ref33.name;\n return setDefaults(name);\n};\nvar getEngineVersion = function getEngineVersion(_ref34) {\n var version = _ref34.version;\n return setDefaults(version);\n};\nvar isElectronType = function isElectronType() {\n var nav = getNavigatorInstance();\n var ua = nav && nav.userAgent && nav.userAgent.toLowerCase();\n return typeof ua === 'string' ? /electron/.test(ua) : false;\n};\nvar isEdgeChromiumType = function isEdgeChromiumType(ua) {\n return typeof ua === 'string' && ua.indexOf('Edg/') !== -1;\n};\nvar getIOS13 = function getIOS13() {\n var nav = getNavigatorInstance();\n return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream;\n};\nvar getIPad13 = function getIPad13() {\n return isIOS13Check('iPad');\n};\nvar getIphone13 = function getIphone13() {\n return isIOS13Check('iPhone');\n};\nvar getIPod13 = function getIPod13() {\n return isIOS13Check('iPod');\n};\nvar getUseragent = function getUseragent(userAg) {\n return setDefaults(userAg);\n};\n\nfunction buildSelectorsObject(options) {\n var _ref = options ? options : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n os = _ref.os,\n engine = _ref.engine,\n ua = _ref.ua;\n\n return {\n isSmartTV: isSmartTVType(device),\n isConsole: isConsoleType(device),\n isWearable: isWearableType(device),\n isEmbedded: isEmbeddedType(device),\n isMobileSafari: isMobileSafariType(browser) || getIPad13(),\n isChromium: isChromiumType(browser),\n isMobile: isMobileAndTabletType(device) || getIPad13(),\n isMobileOnly: isMobileType(device),\n isTablet: isTabletType(device) || getIPad13(),\n isBrowser: isBrowserType(device),\n isDesktop: isBrowserType(device),\n isAndroid: isAndroidType(os),\n isWinPhone: isWinPhoneType(os),\n isIOS: isIOSType(os) || getIPad13(),\n isChrome: isChromeType(browser),\n isFirefox: isFirefoxType(browser),\n isSafari: isSafariType(browser),\n isOpera: isOperaType(browser),\n isIE: isIEType(browser),\n osVersion: getOsVersion(os),\n osName: getOsName(os),\n fullBrowserVersion: getBrowserFullVersion(browser),\n browserVersion: getBrowserVersion(browser),\n browserName: getBrowserName(browser),\n mobileVendor: getMobileVendor(device),\n mobileModel: getMobileModel(device),\n engineName: getEngineName(engine),\n engineVersion: getEngineVersion(engine),\n getUA: getUseragent(ua),\n isEdge: isEdgeType(browser) || isEdgeChromiumType(ua),\n isYandex: isYandexType(browser),\n deviceType: getDeviceType(device),\n isIOS13: getIOS13(),\n isIPad13: getIPad13(),\n isIPhone13: getIphone13(),\n isIPod13: getIPod13(),\n isElectron: isElectronType(),\n isEdgeChromium: isEdgeChromiumType(ua),\n isLegacyEdge: isEdgeType(browser) && !isEdgeChromiumType(ua),\n isWindows: isWindowsType(os),\n isMacOs: isMacOsType(os),\n isMIUI: isMIUIType(browser),\n isSamsungBrowser: isSamsungBrowserType(browser)\n };\n}\n\nvar isSmartTV = isSmartTVType(device);\nvar isConsole = isConsoleType(device);\nvar isWearable = isWearableType(device);\nvar isEmbedded = isEmbeddedType(device);\nvar isMobileSafari = isMobileSafariType(browser) || getIPad13();\nvar isChromium = isChromiumType(browser);\nvar isMobile = isMobileAndTabletType(device) || getIPad13();\nvar isMobileOnly = isMobileType(device);\nvar isTablet = isTabletType(device) || getIPad13();\nvar isBrowser = isBrowserType(device);\nvar isDesktop = isBrowserType(device);\nvar isAndroid = isAndroidType(os);\nvar isWinPhone = isWinPhoneType(os);\nvar isIOS = isIOSType(os) || getIPad13();\nvar isChrome = isChromeType(browser);\nvar isFirefox = isFirefoxType(browser);\nvar isSafari = isSafariType(browser);\nvar isOpera = isOperaType(browser);\nvar isIE = isIEType(browser);\nvar osVersion = getOsVersion(os);\nvar osName = getOsName(os);\nvar fullBrowserVersion = getBrowserFullVersion(browser);\nvar browserVersion = getBrowserVersion(browser);\nvar browserName = getBrowserName(browser);\nvar mobileVendor = getMobileVendor(device);\nvar mobileModel = getMobileModel(device);\nvar engineName = getEngineName(engine);\nvar engineVersion = getEngineVersion(engine);\nvar getUA = getUseragent(ua);\nvar isEdge = isEdgeType(browser) || isEdgeChromiumType(ua);\nvar isYandex = isYandexType(browser);\nvar deviceType = getDeviceType(device);\nvar isIOS13 = getIOS13();\nvar isIPad13 = getIPad13();\nvar isIPhone13 = getIphone13();\nvar isIPod13 = getIPod13();\nvar isElectron = isElectronType();\nvar isEdgeChromium = isEdgeChromiumType(ua);\nvar isLegacyEdge = isEdgeType(browser) && !isEdgeChromiumType(ua);\nvar isWindows = isWindowsType(os);\nvar isMacOs = isMacOsType(os);\nvar isMIUI = isMIUIType(browser);\nvar isSamsungBrowser = isSamsungBrowserType(browser);\nvar getSelectorsByUserAgent = function getSelectorsByUserAgent(userAgent) {\n if (!userAgent || typeof userAgent !== 'string') {\n console.error('No valid user agent string was provided');\n return;\n }\n\n var _UAHelper$parseUserAg = parseUserAgent(userAgent),\n device = _UAHelper$parseUserAg.device,\n browser = _UAHelper$parseUserAg.browser,\n os = _UAHelper$parseUserAg.os,\n engine = _UAHelper$parseUserAg.engine,\n ua = _UAHelper$parseUserAg.ua;\n\n return buildSelectorsObject({\n device: device,\n browser: browser,\n os: os,\n engine: engine,\n ua: ua\n });\n};\n\nvar AndroidView = function AndroidView(_ref) {\n var renderWithFragment = _ref.renderWithFragment,\n children = _ref.children,\n props = _objectWithoutProperties(_ref, [\"renderWithFragment\", \"children\"]);\n\n return isAndroid ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar BrowserView = function BrowserView(_ref2) {\n var renderWithFragment = _ref2.renderWithFragment,\n children = _ref2.children,\n props = _objectWithoutProperties(_ref2, [\"renderWithFragment\", \"children\"]);\n\n return isBrowser ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IEView = function IEView(_ref3) {\n var renderWithFragment = _ref3.renderWithFragment,\n children = _ref3.children,\n props = _objectWithoutProperties(_ref3, [\"renderWithFragment\", \"children\"]);\n\n return isIE ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IOSView = function IOSView(_ref4) {\n var renderWithFragment = _ref4.renderWithFragment,\n children = _ref4.children,\n props = _objectWithoutProperties(_ref4, [\"renderWithFragment\", \"children\"]);\n\n return isIOS ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileView = function MobileView(_ref5) {\n var renderWithFragment = _ref5.renderWithFragment,\n children = _ref5.children,\n props = _objectWithoutProperties(_ref5, [\"renderWithFragment\", \"children\"]);\n\n return isMobile ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar TabletView = function TabletView(_ref6) {\n var renderWithFragment = _ref6.renderWithFragment,\n children = _ref6.children,\n props = _objectWithoutProperties(_ref6, [\"renderWithFragment\", \"children\"]);\n\n return isTablet ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WinPhoneView = function WinPhoneView(_ref7) {\n var renderWithFragment = _ref7.renderWithFragment,\n children = _ref7.children,\n props = _objectWithoutProperties(_ref7, [\"renderWithFragment\", \"children\"]);\n\n return isWinPhone ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileOnlyView = function MobileOnlyView(_ref8) {\n var renderWithFragment = _ref8.renderWithFragment,\n children = _ref8.children,\n viewClassName = _ref8.viewClassName,\n style = _ref8.style,\n props = _objectWithoutProperties(_ref8, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n\n return isMobileOnly ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar SmartTVView = function SmartTVView(_ref9) {\n var renderWithFragment = _ref9.renderWithFragment,\n children = _ref9.children,\n props = _objectWithoutProperties(_ref9, [\"renderWithFragment\", \"children\"]);\n\n return isSmartTV ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar ConsoleView = function ConsoleView(_ref10) {\n var renderWithFragment = _ref10.renderWithFragment,\n children = _ref10.children,\n props = _objectWithoutProperties(_ref10, [\"renderWithFragment\", \"children\"]);\n\n return isConsole ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WearableView = function WearableView(_ref11) {\n var renderWithFragment = _ref11.renderWithFragment,\n children = _ref11.children,\n props = _objectWithoutProperties(_ref11, [\"renderWithFragment\", \"children\"]);\n\n return isWearable ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar CustomView = function CustomView(_ref12) {\n var renderWithFragment = _ref12.renderWithFragment,\n children = _ref12.children,\n viewClassName = _ref12.viewClassName,\n style = _ref12.style,\n condition = _ref12.condition,\n props = _objectWithoutProperties(_ref12, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\", \"condition\"]);\n\n return condition ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\n\nfunction withOrientationChange(WrappedComponent) {\n return /*#__PURE__*/function (_React$Component) {\n _inherits(_class, _React$Component);\n\n function _class(props) {\n var _this;\n\n _classCallCheck(this, _class);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(_class).call(this, props));\n _this.isEventListenerAdded = false;\n _this.handleOrientationChange = _this.handleOrientationChange.bind(_assertThisInitialized(_this));\n _this.onOrientationChange = _this.onOrientationChange.bind(_assertThisInitialized(_this));\n _this.onPageLoad = _this.onPageLoad.bind(_assertThisInitialized(_this));\n _this.state = {\n isLandscape: false,\n isPortrait: false\n };\n return _this;\n }\n\n _createClass(_class, [{\n key: \"handleOrientationChange\",\n value: function handleOrientationChange() {\n if (!this.isEventListenerAdded) {\n this.isEventListenerAdded = true;\n }\n\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n this.setState({\n isPortrait: orientation === 0,\n isLandscape: orientation === 90\n });\n }\n }, {\n key: \"onOrientationChange\",\n value: function onOrientationChange() {\n this.handleOrientationChange();\n }\n }, {\n key: \"onPageLoad\",\n value: function onPageLoad() {\n this.handleOrientationChange();\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n if (!this.isEventListenerAdded) {\n this.handleOrientationChange();\n window.addEventListener(\"load\", this.onPageLoad, false);\n } else {\n window.removeEventListener(\"load\", this.onPageLoad, false);\n }\n\n window.addEventListener(\"resize\", this.onOrientationChange, false);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener(\"resize\", this.onOrientationChange, false);\n }\n }, {\n key: \"render\",\n value: function render() {\n return React__default.createElement(WrappedComponent, _extends({}, this.props, {\n isLandscape: this.state.isLandscape,\n isPortrait: this.state.isPortrait\n }));\n }\n }]);\n\n return _class;\n }(React__default.Component);\n}\n\nfunction useMobileOrientation() {\n var _useState = React.useState(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n return {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n }),\n _useState2 = _slicedToArray(_useState, 2),\n state = _useState2[0],\n setState = _useState2[1];\n\n var handleOrientationChange = React.useCallback(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n var next = {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n state.orientation !== next.orientation && setState(next);\n }, [state.orientation]);\n React.useEffect(function () {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n handleOrientationChange();\n window.addEventListener(\"load\", handleOrientationChange, false);\n window.addEventListener(\"resize\", handleOrientationChange, false);\n }\n\n return function () {\n window.removeEventListener(\"resize\", handleOrientationChange, false);\n window.removeEventListener(\"load\", handleOrientationChange, false);\n };\n }, [handleOrientationChange]);\n return state;\n}\n\nfunction useDeviceData(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n return parseUserAgent(hookUserAgent);\n}\n\nfunction useDeviceSelectors(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n var deviceData = useDeviceData(hookUserAgent);\n var selectors = buildSelectorsObject(deviceData);\n return [selectors, deviceData];\n}\n\nexports.AndroidView = AndroidView;\nexports.BrowserTypes = BrowserTypes;\nexports.BrowserView = BrowserView;\nexports.ConsoleView = ConsoleView;\nexports.CustomView = CustomView;\nexports.IEView = IEView;\nexports.IOSView = IOSView;\nexports.MobileOnlyView = MobileOnlyView;\nexports.MobileView = MobileView;\nexports.OsTypes = OsTypes;\nexports.SmartTVView = SmartTVView;\nexports.TabletView = TabletView;\nexports.WearableView = WearableView;\nexports.WinPhoneView = WinPhoneView;\nexports.browserName = browserName;\nexports.browserVersion = browserVersion;\nexports.deviceDetect = deviceDetect;\nexports.deviceType = deviceType;\nexports.engineName = engineName;\nexports.engineVersion = engineVersion;\nexports.fullBrowserVersion = fullBrowserVersion;\nexports.getSelectorsByUserAgent = getSelectorsByUserAgent;\nexports.getUA = getUA;\nexports.isAndroid = isAndroid;\nexports.isBrowser = isBrowser;\nexports.isChrome = isChrome;\nexports.isChromium = isChromium;\nexports.isConsole = isConsole;\nexports.isDesktop = isDesktop;\nexports.isEdge = isEdge;\nexports.isEdgeChromium = isEdgeChromium;\nexports.isElectron = isElectron;\nexports.isEmbedded = isEmbedded;\nexports.isFirefox = isFirefox;\nexports.isIE = isIE;\nexports.isIOS = isIOS;\nexports.isIOS13 = isIOS13;\nexports.isIPad13 = isIPad13;\nexports.isIPhone13 = isIPhone13;\nexports.isIPod13 = isIPod13;\nexports.isLegacyEdge = isLegacyEdge;\nexports.isMIUI = isMIUI;\nexports.isMacOs = isMacOs;\nexports.isMobile = isMobile;\nexports.isMobileOnly = isMobileOnly;\nexports.isMobileSafari = isMobileSafari;\nexports.isOpera = isOpera;\nexports.isSafari = isSafari;\nexports.isSamsungBrowser = isSamsungBrowser;\nexports.isSmartTV = isSmartTV;\nexports.isTablet = isTablet;\nexports.isWearable = isWearable;\nexports.isWinPhone = isWinPhone;\nexports.isWindows = isWindows;\nexports.isYandex = isYandex;\nexports.mobileModel = mobileModel;\nexports.mobileVendor = mobileVendor;\nexports.osName = osName;\nexports.osVersion = osVersion;\nexports.parseUserAgent = parseUserAgent;\nexports.setUserAgent = setUserAgent;\nexports.useDeviceData = useDeviceData;\nexports.useDeviceSelectors = useDeviceSelectors;\nexports.useMobileOrientation = useMobileOrientation;\nexports.withOrientationChange = withOrientationChange;\n","import { StateLockup } from '@legacy/Components/Menus/NavbarComponents/StateLockup';\r\nimport { isMobile } from 'react-device-detect';\r\nimport { StatesByProduct } from '../Navbar';\r\n\r\ninterface AvailableStatesProps {\r\n top: string;\r\n showStates: boolean;\r\n stateList: string[];\r\n closeItemsFn: () => void;\r\n stateListByProduct?: StatesByProduct[];\r\n}\r\n\r\nexport function AvailableStates({\r\n top,\r\n showStates,\r\n stateList,\r\n closeItemsFn,\r\n stateListByProduct,\r\n}: AvailableStatesProps) {\r\n return (\r\n <div id='states-container' className={`states-container ${showStates ? 'show-states' : ''}`} style={{ top }}>\r\n {stateListByProduct ? (\r\n mapStateListByProduct()\r\n ) : (\r\n <>\r\n <div className='available-in'>Available In:</div>\r\n {mapSingleStateList(stateList)}\r\n </>\r\n )}\r\n\r\n {isMobile && (\r\n <div className='close-states-button' onClick={closeItemsFn}>\r\n <div className='close-line'></div>\r\n <div className='close-line'></div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n\r\n function mapStateListByProduct() {\r\n return stateListByProduct?.map(list => (\r\n <div key={list.product} className='state-list-by-product'>\r\n <span className='available-in multiple-products'>{list.product} Available In:</span>\r\n {mapSingleStateList(list.states)}\r\n </div>\r\n ));\r\n }\r\n\r\n function mapSingleStateList(stateList: string[]) {\r\n return (\r\n <div className='states'>\r\n {stateList.map((stateCode, index) => {\r\n return <StateLockup key={stateCode + index} stateCode={stateCode} />;\r\n })}\r\n </div>\r\n );\r\n }\r\n}\r\n","import * as React from 'react';\r\n\r\ninterface IBurgerProps {\r\n morphIcon: boolean;\r\n clickFn: () => void;\r\n}\r\n\r\nexport default class Burger extends React.Component<IBurgerProps, {}> {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const p = this.props;\r\n return (\r\n <div id='hamburger-menu-button' className='burger-wrap-cp' onClick={p.clickFn}>\r\n <menu id='hamburger-menu' className={`burger-cp ${p.morphIcon ? 'burger-close-cp' : ''}`}>\r\n <div className='line'></div>\r\n <div className='line'></div>\r\n <div className='line'></div>\r\n </menu>\r\n </div>\r\n );\r\n }\r\n}\r\n","import { Svg } from '@legacy/Components/Svg';\r\nimport * as React from 'react';\r\nimport { isMobile } from 'react-device-detect';\r\n\r\ninterface IProductLinkProps {\r\n id: string;\r\n linkUrl: string;\r\n linkText: string;\r\n linkHighlighted?: boolean;\r\n showStatesFn?: () => void;\r\n hideStatesFn?: () => void;\r\n locationIconActive?: boolean;\r\n}\r\n\r\nexport default class ProductLink extends React.Component<IProductLinkProps, {}> {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const p = this.props;\r\n return (\r\n <div className='link-container-cp'>\r\n <a\r\n id={p.id ? p.id : 'product-link'}\r\n className={`navbar-link-cp ${p.linkHighlighted ? 'navbar-link-highlighted-cp' : ''}`}\r\n href={p.linkUrl}\r\n onMouseEnter={isMobile ? p.hideStatesFn : p.showStatesFn}\r\n onMouseLeave={p.hideStatesFn}\r\n onClick={p.hideStatesFn}\r\n >\r\n {p.linkText}\r\n </a>\r\n {isMobile && (\r\n <span onTouchEnd={!p.locationIconActive ? p.showStatesFn : p.hideStatesFn}>\r\n <Svg\r\n path='/images/location.svg'\r\n className={`product-location-icon${p.locationIconActive ? '-active' : ''}`}\r\n alt={p.linkText}\r\n />\r\n </span>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n","import { Tooltip, TooltipSize } from '@legacy/Components/Tooltip';\r\n\r\ninterface ISubPageLinkProps {\r\n showLink: boolean;\r\n id: string;\r\n linkText: string;\r\n linkUrl?: string;\r\n addClass?: string;\r\n replaceClass?: string;\r\n highlightLink?: boolean;\r\n onClickFn?: () => void;\r\n tooltip?: string;\r\n target?: string;\r\n rel?: string;\r\n}\r\n\r\nexport const SubPageLink = (props: ISubPageLinkProps) => {\r\n return !!props.tooltip ? (\r\n <div className='link-tooltip'>\r\n <Tooltip message={props.tooltip} size={TooltipSize.Large}>\r\n <Link {...props} />\r\n </Tooltip>\r\n </div>\r\n ) : (\r\n <Link {...props} />\r\n );\r\n};\r\n\r\nconst Link = (props: ISubPageLinkProps) => {\r\n const baseClass = props.replaceClass ? props.replaceClass : 'navbar-page-cp ';\r\n const highlight = props.highlightLink ? 'navbar-page-highlighted-cp ' : '';\r\n const addClass = props.addClass ? ` ${props.addClass}` : '';\r\n\r\n return props.showLink ? (\r\n <a\r\n className={baseClass + ' ' + highlight + ' ' + addClass}\r\n href={props.linkUrl ? props.linkUrl : '#'}\r\n id={props.id ? props.id : 'navbar-sub-link'}\r\n onClick={props.onClickFn}\r\n target={props.target}\r\n rel={props.rel}\r\n >\r\n {props.linkText}\r\n </a>\r\n ) : null;\r\n};\r\n","import { useClassName, useDocumentClick, usePosition } from '@shared/Hooks';\r\nimport { MutableRefObject, PropsWithChildren, ReactElement } from 'react';\r\n\r\nexport interface DropdownContainerProps {\r\n id: string;\r\n visible: boolean;\r\n setVisible: (visible: boolean) => void;\r\n triggerRef: MutableRefObject<any>;\r\n title?: string | ReactElement;\r\n className?: string;\r\n scrollable?: boolean;\r\n}\r\n\r\nexport function DropdownContainer({\r\n id,\r\n visible,\r\n setVisible,\r\n triggerRef,\r\n children,\r\n title,\r\n className,\r\n scrollable,\r\n}: PropsWithChildren<DropdownContainerProps>) {\r\n const position = usePosition(triggerRef, mod => {\r\n mod.width = 400;\r\n mod.left -= 350;\r\n mod.top += 5;\r\n }),\r\n clickOutClassName = useDocumentClick(() => setVisible(false)).className,\r\n selectorClassName = useClassName('dropdown-selector-cp ho-dropdown-selector', [\r\n visible ? ' dropdown-selector-shown-cp' : '',\r\n className ? className : '',\r\n scrollable ? 'scrollable-cp' : '',\r\n clickOutClassName.current,\r\n ]);\r\n\r\n return (\r\n <div id={id} className={selectorClassName} style={position}>\r\n {title && <div className='dropdown-selector-title-cp'>{title}</div>}\r\n\r\n {children}\r\n </div>\r\n );\r\n}\r\n","import { DropdownContainer } from '@legacy/Components/DropdownContainer/App';\r\nimport { Svg } from '@legacy/Components/Svg';\r\nimport * as Common from '@shared/Common';\r\nimport { AccessRole, iconPaths } from '@shared/Constants';\r\nimport * as React from 'react';\r\nimport { useRef, useState } from 'react';\r\n\r\ninterface IUserStatusProps {\r\n id?: string;\r\n agentName?: any;\r\n userName: string;\r\n onLogout: () => void;\r\n}\r\n\r\nexport const UserStatus = (props: IUserStatusProps) => {\r\n const buttonRef = useRef(),\r\n [visible, setVisible] = useState<boolean>(false);\r\n\r\n const getUserInitials = (): string | JSX.Element => {\r\n if (props.agentName && props.agentName.split(' '))\r\n return props.agentName\r\n .split(' ')\r\n .map(n => n[0])\r\n .join('');\r\n else return <Svg path={iconPaths.user} alt='User Role' />;\r\n };\r\n\r\n const getUserRole = (): string => {\r\n const isInRole = (role: AccessRole): boolean => Common.isInRole(role);\r\n\r\n if (isInRole(AccessRole.AnonymousUser)) return 'New User';\r\n else if (\r\n isInRole(AccessRole.Agent) ||\r\n isInRole(AccessRole.IndependentAgent) ||\r\n isInRole(AccessRole.CaptiveAgent)\r\n )\r\n return 'Hello, Agent';\r\n else if (isInRole(AccessRole.LimitedAgent)) return 'Limited Agent';\r\n else if (isInRole(AccessRole.AgencyAdmin)) return 'Agency Admin';\r\n else if (isInRole(AccessRole.Admin)) return 'Swyfft Admin';\r\n else return 'Unknown User';\r\n };\r\n\r\n return (\r\n <>\r\n <span id={props.id ? props.id : 'user-status-controls'} className='user-status-controls'>\r\n <IconButton\r\n ref={buttonRef}\r\n id={props.id + '-button'}\r\n className={`user-icon ${visible ? 'user-info-open' : ''}`}\r\n onClick={() => setVisible(!visible)}\r\n >\r\n {getUserInitials()}\r\n </IconButton>\r\n </span>\r\n <DropdownContainer\r\n id='user-status-menu'\r\n visible={visible}\r\n setVisible={v => setVisible(v)}\r\n triggerRef={buttonRef}\r\n title={getUserRole()}\r\n >\r\n <UserInfo userName={props.userName} onLogout={() => props.onLogout()} />\r\n </DropdownContainer>\r\n </>\r\n );\r\n};\r\n\r\ninterface IIconButtonProps {\r\n id?: string;\r\n className: string;\r\n onClick: () => void;\r\n children: string | JSX.Element;\r\n}\r\n\r\nconst IconButton = React.forwardRef((props: IIconButtonProps, ref) => {\r\n return (\r\n <button ref={ref as any} id={props.id} className={props.className} onClick={props.onClick}>\r\n {props.children}\r\n </button>\r\n );\r\n});\r\n\r\ninterface IUserInfoProps {\r\n userName: string;\r\n onLogout: () => void;\r\n}\r\n\r\nconst UserInfo = (props: IUserInfoProps) => {\r\n return (\r\n <div className='user-info' id='user-info'>\r\n <p className='user-email'>{props.userName}</p>\r\n <button id='user-info-logout-button' className='user-info-logout-button' onClick={props.onLogout}>\r\n Log Out\r\n </button>\r\n </div>\r\n );\r\n};\r\n","export class HubChannel {\r\n public readonly value: string;\r\n\r\n private constructor(value: string) {\r\n this.value = value;\r\n }\r\n\r\n public static readonly AppSettings = new HubChannel('app-settings');\r\n public static readonly NotificationCount = new HubChannel('notification-count');\r\n public static readonly AppVersion = new HubChannel('app-version');\r\n}\r\n","import * as React from 'react';\r\n\r\nexport interface IBellProps {\r\n className?: string;\r\n ringing?: boolean;\r\n active?: boolean;\r\n}\r\n\r\nexport const Bell = (props: IBellProps) => {\r\n return (\r\n <div\r\n className={'bell-cp' + (props.className ? ` ${props.className}` : '') + (props.active ? ' active-cp' : '')}\r\n >\r\n <div className={'bell-body-cp' + (props.ringing ? ' ring' : '')} />\r\n <div className='bell-top-cp' />\r\n <div className='bell-bottom-cp' />\r\n </div>\r\n );\r\n};\r\n","import { useClassName } from '@shared/Hooks';\r\nimport { forwardRef, ReactElement } from 'react';\r\n\r\nexport interface Props {\r\n id: string;\r\n onClick: (() => void) | (() => Promise<void>);\r\n className?: string;\r\n badgeCount?: number;\r\n disabled?: boolean;\r\n children: ReactElement;\r\n}\r\n\r\nexport const IconBackground = forwardRef<HTMLDivElement, Props>(\r\n ({ id, onClick, className, badgeCount, disabled, children }, ref) => {\r\n const iconBackgroundClassName = useClassName('icon-background-cp', [\r\n disabled ? 'disabled-cp' : '',\r\n className ? className : '',\r\n ]);\r\n\r\n return (\r\n <div id={id} ref={ref} className={iconBackgroundClassName} onClick={onClick}>\r\n {children}\r\n\r\n {badgeCount !== undefined && (\r\n <div id='icon-background-badge' className={'badge-cp' + (badgeCount > 0 ? ' visible-cp' : '')}>\r\n {badgeCount}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n","import { DependencyList, useEffect } from 'react';\r\n\r\nexport function useTimeout(\r\n callBack: (() => void) | (() => Promise<void>),\r\n timeoutMs: number,\r\n dependencies?: DependencyList,\r\n) {\r\n useEffect(() => {\r\n let timeout = setTimeout(callBack, timeoutMs);\r\n\r\n return () => {\r\n clearInterval(timeout);\r\n };\r\n }, dependencies || []);\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Error thrown when an HTTP request fails. */\r\nexport class HttpError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\r\n constructor(errorMessage, statusCode) {\r\n const trueProto = new.target.prototype;\r\n super(`${errorMessage}: Status code '${statusCode}'`);\r\n this.statusCode = statusCode;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when a timeout elapses. */\r\nexport class TimeoutError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage = \"A timeout occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when an action is aborted. */\r\nexport class AbortError extends Error {\r\n /** Constructs a new instance of {@link AbortError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage = \"An abort occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport is unsupported by the browser. */\r\n/** @private */\r\nexport class UnsupportedTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.UnsupportedTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'UnsupportedTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport is disabled by the browser. */\r\n/** @private */\r\nexport class DisabledTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.DisabledTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'DisabledTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport cannot be started. */\r\n/** @private */\r\nexport class FailedToStartTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToStartTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'FailedToStartTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the negotiation with the server failed to complete. */\r\n/** @private */\r\nexport class FailedToNegotiateWithServerError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToNegotiateWithServerError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n */\r\n constructor(message) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.errorType = 'FailedToNegotiateWithServerError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when multiple errors have occurred. */\r\n/** @private */\r\nexport class AggregateErrors extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.AggregateErrors}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {Error[]} innerErrors The collection of errors this error is aggregating.\r\n */\r\n constructor(message, innerErrors) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.innerErrors = innerErrors;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n//# sourceMappingURL=Errors.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Represents an HTTP response. */\r\nexport class HttpResponse {\r\n constructor(statusCode, statusText, content) {\r\n this.statusCode = statusCode;\r\n this.statusText = statusText;\r\n this.content = content;\r\n }\r\n}\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nexport class HttpClient {\r\n get(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"GET\",\r\n url,\r\n });\r\n }\r\n post(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"POST\",\r\n url,\r\n });\r\n }\r\n delete(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"DELETE\",\r\n url,\r\n });\r\n }\r\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\r\n // @ts-ignore\r\n getCookieString(url) {\r\n return \"\";\r\n }\r\n}\r\n//# sourceMappingURL=HttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nexport var LogLevel;\r\n(function (LogLevel) {\r\n /** Log level for very low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\r\n /** Log level for low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n /** Log level for informational diagnostic messages. */\r\n LogLevel[LogLevel[\"Information\"] = 2] = \"Information\";\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n LogLevel[LogLevel[\"None\"] = 6] = \"None\";\r\n})(LogLevel || (LogLevel = {}));\r\n//# sourceMappingURL=ILogger.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** A logger that does nothing when log messages are sent to it. */\r\nexport class NullLogger {\r\n constructor() { }\r\n /** @inheritDoc */\r\n // eslint-disable-next-line\r\n log(_logLevel, _message) {\r\n }\r\n}\r\n/** The singleton instance of the {@link @microsoft/signalr.NullLogger}. */\r\nNullLogger.instance = new NullLogger();\r\n//# sourceMappingURL=Loggers.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { NullLogger } from \"./Loggers\";\r\n// Version token that will be replaced by the prepack command\r\n/** The version of the SignalR client. */\r\nexport const VERSION = \"7.0.14\";\r\n/** @private */\r\nexport class Arg {\r\n static isRequired(val, name) {\r\n if (val === null || val === undefined) {\r\n throw new Error(`The '${name}' argument is required.`);\r\n }\r\n }\r\n static isNotEmpty(val, name) {\r\n if (!val || val.match(/^\\s*$/)) {\r\n throw new Error(`The '${name}' argument should not be empty.`);\r\n }\r\n }\r\n static isIn(val, values, name) {\r\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\r\n if (!(val in values)) {\r\n throw new Error(`Unknown ${name} value: ${val}.`);\r\n }\r\n }\r\n}\r\n/** @private */\r\nexport class Platform {\r\n // react-native has a window but no document so we should check both\r\n static get isBrowser() {\r\n return typeof window === \"object\" && typeof window.document === \"object\";\r\n }\r\n // WebWorkers don't have a window object so the isBrowser check would fail\r\n static get isWebWorker() {\r\n return typeof self === \"object\" && \"importScripts\" in self;\r\n }\r\n // react-native has a window but no document\r\n static get isReactNative() {\r\n return typeof window === \"object\" && typeof window.document === \"undefined\";\r\n }\r\n // Node apps shouldn't have a window object, but WebWorkers don't either\r\n // so we need to check for both WebWorker and window\r\n static get isNode() {\r\n return !this.isBrowser && !this.isWebWorker && !this.isReactNative;\r\n }\r\n}\r\n/** @private */\r\nexport function getDataDetail(data, includeContent) {\r\n let detail = \"\";\r\n if (isArrayBuffer(data)) {\r\n detail = `Binary data of length ${data.byteLength}`;\r\n if (includeContent) {\r\n detail += `. Content: '${formatArrayBuffer(data)}'`;\r\n }\r\n }\r\n else if (typeof data === \"string\") {\r\n detail = `String data of length ${data.length}`;\r\n if (includeContent) {\r\n detail += `. Content: '${data}'`;\r\n }\r\n }\r\n return detail;\r\n}\r\n/** @private */\r\nexport function formatArrayBuffer(data) {\r\n const view = new Uint8Array(data);\r\n // Uint8Array.map only supports returning another Uint8Array?\r\n let str = \"\";\r\n view.forEach((num) => {\r\n const pad = num < 16 ? \"0\" : \"\";\r\n str += `0x${pad}${num.toString(16)} `;\r\n });\r\n // Trim of trailing space.\r\n return str.substr(0, str.length - 1);\r\n}\r\n// Also in signalr-protocol-msgpack/Utils.ts\r\n/** @private */\r\nexport function isArrayBuffer(val) {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n/** @private */\r\nexport async function sendMessage(logger, transportName, httpClient, url, content, options) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n logger.log(LogLevel.Trace, `(${transportName} transport) sending data. ${getDataDetail(content, options.logMessageContent)}.`);\r\n const responseType = isArrayBuffer(content) ? \"arraybuffer\" : \"text\";\r\n const response = await httpClient.post(url, {\r\n content,\r\n headers: { ...headers, ...options.headers },\r\n responseType,\r\n timeout: options.timeout,\r\n withCredentials: options.withCredentials,\r\n });\r\n logger.log(LogLevel.Trace, `(${transportName} transport) request complete. Response status: ${response.statusCode}.`);\r\n}\r\n/** @private */\r\nexport function createLogger(logger) {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(LogLevel.Information);\r\n }\r\n if (logger === null) {\r\n return NullLogger.instance;\r\n }\r\n if (logger.log !== undefined) {\r\n return logger;\r\n }\r\n return new ConsoleLogger(logger);\r\n}\r\n/** @private */\r\nexport class SubjectSubscription {\r\n constructor(subject, observer) {\r\n this._subject = subject;\r\n this._observer = observer;\r\n }\r\n dispose() {\r\n const index = this._subject.observers.indexOf(this._observer);\r\n if (index > -1) {\r\n this._subject.observers.splice(index, 1);\r\n }\r\n if (this._subject.observers.length === 0 && this._subject.cancelCallback) {\r\n this._subject.cancelCallback().catch((_) => { });\r\n }\r\n }\r\n}\r\n/** @private */\r\nexport class ConsoleLogger {\r\n constructor(minimumLogLevel) {\r\n this._minLevel = minimumLogLevel;\r\n this.out = console;\r\n }\r\n log(logLevel, message) {\r\n if (logLevel >= this._minLevel) {\r\n const msg = `[${new Date().toISOString()}] ${LogLevel[logLevel]}: ${message}`;\r\n switch (logLevel) {\r\n case LogLevel.Critical:\r\n case LogLevel.Error:\r\n this.out.error(msg);\r\n break;\r\n case LogLevel.Warning:\r\n this.out.warn(msg);\r\n break;\r\n case LogLevel.Information:\r\n this.out.info(msg);\r\n break;\r\n default:\r\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\r\n this.out.log(msg);\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/** @private */\r\nexport function getUserAgentHeader() {\r\n let userAgentHeaderName = \"X-SignalR-User-Agent\";\r\n if (Platform.isNode) {\r\n userAgentHeaderName = \"User-Agent\";\r\n }\r\n return [userAgentHeaderName, constructUserAgent(VERSION, getOsName(), getRuntime(), getRuntimeVersion())];\r\n}\r\n/** @private */\r\nexport function constructUserAgent(version, os, runtime, runtimeVersion) {\r\n // Microsoft SignalR/[Version] ([Detailed Version]; [Operating System]; [Runtime]; [Runtime Version])\r\n let userAgent = \"Microsoft SignalR/\";\r\n const majorAndMinor = version.split(\".\");\r\n userAgent += `${majorAndMinor[0]}.${majorAndMinor[1]}`;\r\n userAgent += ` (${version}; `;\r\n if (os && os !== \"\") {\r\n userAgent += `${os}; `;\r\n }\r\n else {\r\n userAgent += \"Unknown OS; \";\r\n }\r\n userAgent += `${runtime}`;\r\n if (runtimeVersion) {\r\n userAgent += `; ${runtimeVersion}`;\r\n }\r\n else {\r\n userAgent += \"; Unknown Runtime Version\";\r\n }\r\n userAgent += \")\";\r\n return userAgent;\r\n}\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getOsName() {\r\n if (Platform.isNode) {\r\n switch (process.platform) {\r\n case \"win32\":\r\n return \"Windows NT\";\r\n case \"darwin\":\r\n return \"macOS\";\r\n case \"linux\":\r\n return \"Linux\";\r\n default:\r\n return process.platform;\r\n }\r\n }\r\n else {\r\n return \"\";\r\n }\r\n}\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getRuntimeVersion() {\r\n if (Platform.isNode) {\r\n return process.versions.node;\r\n }\r\n return undefined;\r\n}\r\nfunction getRuntime() {\r\n if (Platform.isNode) {\r\n return \"NodeJS\";\r\n }\r\n else {\r\n return \"Browser\";\r\n }\r\n}\r\n/** @private */\r\nexport function getErrorString(e) {\r\n if (e.stack) {\r\n return e.stack;\r\n }\r\n else if (e.message) {\r\n return e.message;\r\n }\r\n return `${e}`;\r\n}\r\n/** @private */\r\nexport function getGlobalThis() {\r\n // globalThis is semi-new and not available in Node until v12\r\n if (typeof globalThis !== \"undefined\") {\r\n return globalThis;\r\n }\r\n if (typeof self !== \"undefined\") {\r\n return self;\r\n }\r\n if (typeof window !== \"undefined\") {\r\n return window;\r\n }\r\n if (typeof global !== \"undefined\") {\r\n return global;\r\n }\r\n throw new Error(\"could not find global\");\r\n}\r\n//# sourceMappingURL=Utils.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Platform, getGlobalThis, isArrayBuffer } from \"./Utils\";\r\nexport class FetchHttpClient extends HttpClient {\r\n constructor(logger) {\r\n super();\r\n this._logger = logger;\r\n if (typeof fetch === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n // Cookies aren't automatically handled in Node so we need to add a CookieJar to preserve cookies across requests\r\n this._jar = new (requireFunc(\"tough-cookie\")).CookieJar();\r\n this._fetchType = requireFunc(\"node-fetch\");\r\n // node-fetch doesn't have a nice API for getting and setting cookies\r\n // fetch-cookie will wrap a fetch implementation with a default CookieJar or a provided one\r\n this._fetchType = requireFunc(\"fetch-cookie\")(this._fetchType, this._jar);\r\n }\r\n else {\r\n this._fetchType = fetch.bind(getGlobalThis());\r\n }\r\n if (typeof AbortController === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n // Node needs EventListener methods on AbortController which our custom polyfill doesn't provide\r\n this._abortControllerType = requireFunc(\"abort-controller\");\r\n }\r\n else {\r\n this._abortControllerType = AbortController;\r\n }\r\n }\r\n /** @inheritDoc */\r\n async send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n throw new AbortError();\r\n }\r\n if (!request.method) {\r\n throw new Error(\"No method defined.\");\r\n }\r\n if (!request.url) {\r\n throw new Error(\"No url defined.\");\r\n }\r\n const abortController = new this._abortControllerType();\r\n let error;\r\n // Hook our abortSignal into the abort controller\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n abortController.abort();\r\n error = new AbortError();\r\n };\r\n }\r\n // If a timeout has been passed in, setup a timeout to call abort\r\n // Type needs to be any to fit window.setTimeout and NodeJS.setTimeout\r\n let timeoutId = null;\r\n if (request.timeout) {\r\n const msTimeout = request.timeout;\r\n timeoutId = setTimeout(() => {\r\n abortController.abort();\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n error = new TimeoutError();\r\n }, msTimeout);\r\n }\r\n if (request.content === \"\") {\r\n request.content = undefined;\r\n }\r\n if (request.content) {\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n request.headers = request.headers || {};\r\n if (isArrayBuffer(request.content)) {\r\n request.headers[\"Content-Type\"] = \"application/octet-stream\";\r\n }\r\n else {\r\n request.headers[\"Content-Type\"] = \"text/plain;charset=UTF-8\";\r\n }\r\n }\r\n let response;\r\n try {\r\n response = await this._fetchType(request.url, {\r\n body: request.content,\r\n cache: \"no-cache\",\r\n credentials: request.withCredentials === true ? \"include\" : \"same-origin\",\r\n headers: {\r\n \"X-Requested-With\": \"XMLHttpRequest\",\r\n ...request.headers,\r\n },\r\n method: request.method,\r\n mode: \"cors\",\r\n redirect: \"follow\",\r\n signal: abortController.signal,\r\n });\r\n }\r\n catch (e) {\r\n if (error) {\r\n throw error;\r\n }\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${e}.`);\r\n throw e;\r\n }\r\n finally {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n }\r\n if (!response.ok) {\r\n const errorMessage = await deserializeContent(response, \"text\");\r\n throw new HttpError(errorMessage || response.statusText, response.status);\r\n }\r\n const content = deserializeContent(response, request.responseType);\r\n const payload = await content;\r\n return new HttpResponse(response.status, response.statusText, payload);\r\n }\r\n getCookieString(url) {\r\n let cookies = \"\";\r\n if (Platform.isNode && this._jar) {\r\n // @ts-ignore: unused variable\r\n this._jar.getCookies(url, (e, c) => cookies = c.join(\"; \"));\r\n }\r\n return cookies;\r\n }\r\n}\r\nfunction deserializeContent(response, responseType) {\r\n let content;\r\n switch (responseType) {\r\n case \"arraybuffer\":\r\n content = response.arrayBuffer();\r\n break;\r\n case \"text\":\r\n content = response.text();\r\n break;\r\n case \"blob\":\r\n case \"document\":\r\n case \"json\":\r\n throw new Error(`${responseType} is not supported.`);\r\n default:\r\n content = response.text();\r\n break;\r\n }\r\n return content;\r\n}\r\n//# sourceMappingURL=FetchHttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\nexport class XhrHttpClient extends HttpClient {\r\n constructor(logger) {\r\n super();\r\n this._logger = logger;\r\n }\r\n /** @inheritDoc */\r\n send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return new Promise((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(request.method, request.url, true);\r\n xhr.withCredentials = request.withCredentials === undefined ? true : request.withCredentials;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n if (request.content === \"\") {\r\n request.content = undefined;\r\n }\r\n if (request.content) {\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n if (isArrayBuffer(request.content)) {\r\n xhr.setRequestHeader(\"Content-Type\", \"application/octet-stream\");\r\n }\r\n else {\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n }\r\n }\r\n const headers = request.headers;\r\n if (headers) {\r\n Object.keys(headers)\r\n .forEach((header) => {\r\n xhr.setRequestHeader(header, headers[header]);\r\n });\r\n }\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n xhr.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n xhr.onload = () => {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n }\r\n else {\r\n reject(new HttpError(xhr.response || xhr.responseText || xhr.statusText, xhr.status));\r\n }\r\n };\r\n xhr.onerror = () => {\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${xhr.status}: ${xhr.statusText}.`);\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n xhr.ontimeout = () => {\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n reject(new TimeoutError());\r\n };\r\n xhr.send(request.content);\r\n });\r\n }\r\n}\r\n//# sourceMappingURL=XhrHttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortError } from \"./Errors\";\r\nimport { FetchHttpClient } from \"./FetchHttpClient\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { Platform } from \"./Utils\";\r\nimport { XhrHttpClient } from \"./XhrHttpClient\";\r\n/** Default implementation of {@link @microsoft/signalr.HttpClient}. */\r\nexport class DefaultHttpClient extends HttpClient {\r\n /** Creates a new instance of the {@link @microsoft/signalr.DefaultHttpClient}, using the provided {@link @microsoft/signalr.ILogger} to log messages. */\r\n constructor(logger) {\r\n super();\r\n if (typeof fetch !== \"undefined\" || Platform.isNode) {\r\n this._httpClient = new FetchHttpClient(logger);\r\n }\r\n else if (typeof XMLHttpRequest !== \"undefined\") {\r\n this._httpClient = new XhrHttpClient(logger);\r\n }\r\n else {\r\n throw new Error(\"No usable HttpClient found.\");\r\n }\r\n }\r\n /** @inheritDoc */\r\n send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return this._httpClient.send(request);\r\n }\r\n getCookieString(url) {\r\n return this._httpClient.getCookieString(url);\r\n }\r\n}\r\n//# sourceMappingURL=DefaultHttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// Not exported from index\r\n/** @private */\r\nexport class TextMessageFormat {\r\n static write(output) {\r\n return `${output}${TextMessageFormat.RecordSeparator}`;\r\n }\r\n static parse(input) {\r\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n const messages = input.split(TextMessageFormat.RecordSeparator);\r\n messages.pop();\r\n return messages;\r\n }\r\n}\r\nTextMessageFormat.RecordSeparatorCode = 0x1e;\r\nTextMessageFormat.RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\r\n//# sourceMappingURL=TextMessageFormat.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n/** @private */\r\nexport class HandshakeProtocol {\r\n // Handshake request is always JSON\r\n writeHandshakeRequest(handshakeRequest) {\r\n return TextMessageFormat.write(JSON.stringify(handshakeRequest));\r\n }\r\n parseHandshakeResponse(data) {\r\n let messageData;\r\n let remainingData;\r\n if (isArrayBuffer(data)) {\r\n // Format is binary but still need to read JSON text from handshake response\r\n const binaryData = new Uint8Array(data);\r\n const separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = String.fromCharCode.apply(null, Array.prototype.slice.call(binaryData.slice(0, responseLength)));\r\n remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;\r\n }\r\n else {\r\n const textData = data;\r\n const separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = textData.substring(0, responseLength);\r\n remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;\r\n }\r\n // At this point we should have just the single handshake message\r\n const messages = TextMessageFormat.parse(messageData);\r\n const response = JSON.parse(messages[0]);\r\n if (response.type) {\r\n throw new Error(\"Expected a handshake response from the server.\");\r\n }\r\n const responseMessage = response;\r\n // multiple messages could have arrived with handshake\r\n // return additional data to be parsed as usual, or null if all parsed\r\n return [remainingData, responseMessage];\r\n }\r\n}\r\n//# sourceMappingURL=HandshakeProtocol.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Defines the type of a Hub Message. */\r\nexport var MessageType;\r\n(function (MessageType) {\r\n /** Indicates the message is an Invocation message and implements the {@link @microsoft/signalr.InvocationMessage} interface. */\r\n MessageType[MessageType[\"Invocation\"] = 1] = \"Invocation\";\r\n /** Indicates the message is a StreamItem message and implements the {@link @microsoft/signalr.StreamItemMessage} interface. */\r\n MessageType[MessageType[\"StreamItem\"] = 2] = \"StreamItem\";\r\n /** Indicates the message is a Completion message and implements the {@link @microsoft/signalr.CompletionMessage} interface. */\r\n MessageType[MessageType[\"Completion\"] = 3] = \"Completion\";\r\n /** Indicates the message is a Stream Invocation message and implements the {@link @microsoft/signalr.StreamInvocationMessage} interface. */\r\n MessageType[MessageType[\"StreamInvocation\"] = 4] = \"StreamInvocation\";\r\n /** Indicates the message is a Cancel Invocation message and implements the {@link @microsoft/signalr.CancelInvocationMessage} interface. */\r\n MessageType[MessageType[\"CancelInvocation\"] = 5] = \"CancelInvocation\";\r\n /** Indicates the message is a Ping message and implements the {@link @microsoft/signalr.PingMessage} interface. */\r\n MessageType[MessageType[\"Ping\"] = 6] = \"Ping\";\r\n /** Indicates the message is a Close message and implements the {@link @microsoft/signalr.CloseMessage} interface. */\r\n MessageType[MessageType[\"Close\"] = 7] = \"Close\";\r\n})(MessageType || (MessageType = {}));\r\n//# sourceMappingURL=IHubProtocol.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { SubjectSubscription } from \"./Utils\";\r\n/** Stream implementation to stream items to the server. */\r\nexport class Subject {\r\n constructor() {\r\n this.observers = [];\r\n }\r\n next(item) {\r\n for (const observer of this.observers) {\r\n observer.next(item);\r\n }\r\n }\r\n error(err) {\r\n for (const observer of this.observers) {\r\n if (observer.error) {\r\n observer.error(err);\r\n }\r\n }\r\n }\r\n complete() {\r\n for (const observer of this.observers) {\r\n if (observer.complete) {\r\n observer.complete();\r\n }\r\n }\r\n }\r\n subscribe(observer) {\r\n this.observers.push(observer);\r\n return new SubjectSubscription(this, observer);\r\n }\r\n}\r\n//# sourceMappingURL=Subject.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { HandshakeProtocol } from \"./HandshakeProtocol\";\r\nimport { AbortError } from \"./Errors\";\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Subject } from \"./Subject\";\r\nimport { Arg, getErrorString, Platform } from \"./Utils\";\r\nconst DEFAULT_TIMEOUT_IN_MS = 30 * 1000;\r\nconst DEFAULT_PING_INTERVAL_IN_MS = 15 * 1000;\r\n/** Describes the current state of the {@link HubConnection} to the server. */\r\nexport var HubConnectionState;\r\n(function (HubConnectionState) {\r\n /** The hub connection is disconnected. */\r\n HubConnectionState[\"Disconnected\"] = \"Disconnected\";\r\n /** The hub connection is connecting. */\r\n HubConnectionState[\"Connecting\"] = \"Connecting\";\r\n /** The hub connection is connected. */\r\n HubConnectionState[\"Connected\"] = \"Connected\";\r\n /** The hub connection is disconnecting. */\r\n HubConnectionState[\"Disconnecting\"] = \"Disconnecting\";\r\n /** The hub connection is reconnecting. */\r\n HubConnectionState[\"Reconnecting\"] = \"Reconnecting\";\r\n})(HubConnectionState || (HubConnectionState = {}));\r\n/** Represents a connection to a SignalR Hub. */\r\nexport class HubConnection {\r\n constructor(connection, logger, protocol, reconnectPolicy) {\r\n this._nextKeepAlive = 0;\r\n this._freezeEventListener = () => {\r\n this._logger.log(LogLevel.Warning, \"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://docs.microsoft.com/aspnet/core/signalr/javascript-client#bsleep\");\r\n };\r\n Arg.isRequired(connection, \"connection\");\r\n Arg.isRequired(logger, \"logger\");\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;\r\n this.keepAliveIntervalInMilliseconds = DEFAULT_PING_INTERVAL_IN_MS;\r\n this._logger = logger;\r\n this._protocol = protocol;\r\n this.connection = connection;\r\n this._reconnectPolicy = reconnectPolicy;\r\n this._handshakeProtocol = new HandshakeProtocol();\r\n this.connection.onreceive = (data) => this._processIncomingData(data);\r\n this.connection.onclose = (error) => this._connectionClosed(error);\r\n this._callbacks = {};\r\n this._methods = {};\r\n this._closedCallbacks = [];\r\n this._reconnectingCallbacks = [];\r\n this._reconnectedCallbacks = [];\r\n this._invocationId = 0;\r\n this._receivedHandshakeResponse = false;\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n this._cachedPingMessage = this._protocol.writeMessage({ type: MessageType.Ping });\r\n }\r\n /** @internal */\r\n // Using a public static factory method means we can have a private constructor and an _internal_\r\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\r\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\r\n // public parameter-less constructor.\r\n static create(connection, logger, protocol, reconnectPolicy) {\r\n return new HubConnection(connection, logger, protocol, reconnectPolicy);\r\n }\r\n /** Indicates the state of the {@link HubConnection} to the server. */\r\n get state() {\r\n return this._connectionState;\r\n }\r\n /** Represents the connection id of the {@link HubConnection} on the server. The connection id will be null when the connection is either\r\n * in the disconnected state or if the negotiation step was skipped.\r\n */\r\n get connectionId() {\r\n return this.connection ? (this.connection.connectionId || null) : null;\r\n }\r\n /** Indicates the url of the {@link HubConnection} to the server. */\r\n get baseUrl() {\r\n return this.connection.baseUrl || \"\";\r\n }\r\n /**\r\n * Sets a new url for the HubConnection. Note that the url can only be changed when the connection is in either the Disconnected or\r\n * Reconnecting states.\r\n * @param {string} url The url to connect to.\r\n */\r\n set baseUrl(url) {\r\n if (this._connectionState !== HubConnectionState.Disconnected && this._connectionState !== HubConnectionState.Reconnecting) {\r\n throw new Error(\"The HubConnection must be in the Disconnected or Reconnecting state to change the url.\");\r\n }\r\n if (!url) {\r\n throw new Error(\"The HubConnection url must be a valid url.\");\r\n }\r\n this.connection.baseUrl = url;\r\n }\r\n /** Starts the connection.\r\n *\r\n * @returns {Promise<void>} A Promise that resolves when the connection has been successfully established, or rejects with an error.\r\n */\r\n start() {\r\n this._startPromise = this._startWithStateTransitions();\r\n return this._startPromise;\r\n }\r\n async _startWithStateTransitions() {\r\n if (this._connectionState !== HubConnectionState.Disconnected) {\r\n return Promise.reject(new Error(\"Cannot start a HubConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n this._connectionState = HubConnectionState.Connecting;\r\n this._logger.log(LogLevel.Debug, \"Starting HubConnection.\");\r\n try {\r\n await this._startInternal();\r\n if (Platform.isBrowser) {\r\n // Log when the browser freezes the tab so users know why their connection unexpectedly stopped working\r\n window.document.addEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n this._connectionState = HubConnectionState.Connected;\r\n this._connectionStarted = true;\r\n this._logger.log(LogLevel.Debug, \"HubConnection connected successfully.\");\r\n }\r\n catch (e) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._logger.log(LogLevel.Debug, `HubConnection failed to start successfully because of error '${e}'.`);\r\n return Promise.reject(e);\r\n }\r\n }\r\n async _startInternal() {\r\n this._stopDuringStartError = undefined;\r\n this._receivedHandshakeResponse = false;\r\n // Set up the promise before any connection is (re)started otherwise it could race with received messages\r\n const handshakePromise = new Promise((resolve, reject) => {\r\n this._handshakeResolver = resolve;\r\n this._handshakeRejecter = reject;\r\n });\r\n await this.connection.start(this._protocol.transferFormat);\r\n try {\r\n const handshakeRequest = {\r\n protocol: this._protocol.name,\r\n version: this._protocol.version,\r\n };\r\n this._logger.log(LogLevel.Debug, \"Sending handshake request.\");\r\n await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(handshakeRequest));\r\n this._logger.log(LogLevel.Information, `Using HubProtocol '${this._protocol.name}'.`);\r\n // defensively cleanup timeout in case we receive a message from the server before we finish start\r\n this._cleanupTimeout();\r\n this._resetTimeoutPeriod();\r\n this._resetKeepAliveInterval();\r\n await handshakePromise;\r\n // It's important to check the stopDuringStartError instead of just relying on the handshakePromise\r\n // being rejected on close, because this continuation can run after both the handshake completed successfully\r\n // and the connection was closed.\r\n if (this._stopDuringStartError) {\r\n // It's important to throw instead of returning a rejected promise, because we don't want to allow any state\r\n // transitions to occur between now and the calling code observing the exceptions. Returning a rejected promise\r\n // will cause the calling continuation to get scheduled to run later.\r\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\r\n throw this._stopDuringStartError;\r\n }\r\n if (!this.connection.features.inherentKeepAlive) {\r\n await this._sendMessage(this._cachedPingMessage);\r\n }\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Debug, `Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`);\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n // HttpConnection.stop() should not complete until after the onclose callback is invoked.\r\n // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.\r\n await this.connection.stop(e);\r\n throw e;\r\n }\r\n }\r\n /** Stops the connection.\r\n *\r\n * @returns {Promise<void>} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.\r\n */\r\n async stop() {\r\n // Capture the start promise before the connection might be restarted in an onclose callback.\r\n const startPromise = this._startPromise;\r\n this._stopPromise = this._stopInternal();\r\n await this._stopPromise;\r\n try {\r\n // Awaiting undefined continues immediately\r\n await startPromise;\r\n }\r\n catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n }\r\n _stopInternal(error) {\r\n if (this._connectionState === HubConnectionState.Disconnected) {\r\n this._logger.log(LogLevel.Debug, `Call to HubConnection.stop(${error}) ignored because it is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise;\r\n }\r\n this._connectionState = HubConnectionState.Disconnecting;\r\n this._logger.log(LogLevel.Debug, \"Stopping HubConnection.\");\r\n if (this._reconnectDelayHandle) {\r\n // We're in a reconnect delay which means the underlying connection is currently already stopped.\r\n // Just clear the handle to stop the reconnect loop (which no one is waiting on thankfully) and\r\n // fire the onclose callbacks.\r\n this._logger.log(LogLevel.Debug, \"Connection stopped during reconnect delay. Done reconnecting.\");\r\n clearTimeout(this._reconnectDelayHandle);\r\n this._reconnectDelayHandle = undefined;\r\n this._completeClose();\r\n return Promise.resolve();\r\n }\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n this._stopDuringStartError = error || new AbortError(\"The connection was stopped before the hub handshake could complete.\");\r\n // HttpConnection.stop() should not complete until after either HttpConnection.start() fails\r\n // or the onclose callback is invoked. The onclose callback will transition the HubConnection\r\n // to the disconnected state if need be before HttpConnection.stop() completes.\r\n return this.connection.stop(error);\r\n }\r\n /** Invokes a streaming hub method on the server using the specified name and arguments.\r\n *\r\n * @typeparam T The type of the items returned by the server.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {IStreamResult<T>} An object that yields results from the server as they are received.\r\n */\r\n stream(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createStreamInvocation(methodName, args, streamIds);\r\n // eslint-disable-next-line prefer-const\r\n let promiseQueue;\r\n const subject = new Subject();\r\n subject.cancelCallback = () => {\r\n const cancelInvocation = this._createCancelInvocation(invocationDescriptor.invocationId);\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n return promiseQueue.then(() => {\r\n return this._sendWithProtocol(cancelInvocation);\r\n });\r\n };\r\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent, error) => {\r\n if (error) {\r\n subject.error(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n subject.error(new Error(invocationEvent.error));\r\n }\r\n else {\r\n subject.complete();\r\n }\r\n }\r\n else {\r\n subject.next((invocationEvent.item));\r\n }\r\n }\r\n };\r\n promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n subject.error(e);\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n });\r\n this._launchStreams(streams, promiseQueue);\r\n return subject;\r\n }\r\n _sendMessage(message) {\r\n this._resetKeepAliveInterval();\r\n return this.connection.send(message);\r\n }\r\n /**\r\n * Sends a js object to the server.\r\n * @param message The js object to serialize and send.\r\n */\r\n _sendWithProtocol(message) {\r\n return this._sendMessage(this._protocol.writeMessage(message));\r\n }\r\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise<void>} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\r\n send(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const sendPromise = this._sendWithProtocol(this._createInvocation(methodName, args, true, streamIds));\r\n this._launchStreams(streams, sendPromise);\r\n return sendPromise;\r\n }\r\n /** Invokes a hub method on the server using the specified name and arguments.\r\n *\r\n * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise\r\n * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of\r\n * resolving the Promise.\r\n *\r\n * @typeparam T The expected return type.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise<T>} A Promise that resolves with the result of the server method (if any), or rejects with an error.\r\n */\r\n invoke(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createInvocation(methodName, args, false, streamIds);\r\n const p = new Promise((resolve, reject) => {\r\n // invocationId will always have a value for a non-blocking invocation\r\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent, error) => {\r\n if (error) {\r\n reject(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n reject(new Error(invocationEvent.error));\r\n }\r\n else {\r\n resolve(invocationEvent.result);\r\n }\r\n }\r\n else {\r\n reject(new Error(`Unexpected message type: ${invocationEvent.type}`));\r\n }\r\n }\r\n };\r\n const promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n reject(e);\r\n // invocationId will always have a value for a non-blocking invocation\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n });\r\n this._launchStreams(streams, promiseQueue);\r\n });\r\n return p;\r\n }\r\n on(methodName, newMethod) {\r\n if (!methodName || !newMethod) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n if (!this._methods[methodName]) {\r\n this._methods[methodName] = [];\r\n }\r\n // Preventing adding the same handler multiple times.\r\n if (this._methods[methodName].indexOf(newMethod) !== -1) {\r\n return;\r\n }\r\n this._methods[methodName].push(newMethod);\r\n }\r\n off(methodName, method) {\r\n if (!methodName) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n const handlers = this._methods[methodName];\r\n if (!handlers) {\r\n return;\r\n }\r\n if (method) {\r\n const removeIdx = handlers.indexOf(method);\r\n if (removeIdx !== -1) {\r\n handlers.splice(removeIdx, 1);\r\n if (handlers.length === 0) {\r\n delete this._methods[methodName];\r\n }\r\n }\r\n }\r\n else {\r\n delete this._methods[methodName];\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection is closed.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).\r\n */\r\n onclose(callback) {\r\n if (callback) {\r\n this._closedCallbacks.push(callback);\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection starts reconnecting.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection starts reconnecting. Optionally receives a single argument containing the error that caused the connection to start reconnecting (if any).\r\n */\r\n onreconnecting(callback) {\r\n if (callback) {\r\n this._reconnectingCallbacks.push(callback);\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection successfully reconnects.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection successfully reconnects.\r\n */\r\n onreconnected(callback) {\r\n if (callback) {\r\n this._reconnectedCallbacks.push(callback);\r\n }\r\n }\r\n _processIncomingData(data) {\r\n this._cleanupTimeout();\r\n if (!this._receivedHandshakeResponse) {\r\n data = this._processHandshakeResponse(data);\r\n this._receivedHandshakeResponse = true;\r\n }\r\n // Data may have all been read when processing handshake response\r\n if (data) {\r\n // Parse the messages\r\n const messages = this._protocol.parseMessages(data, this._logger);\r\n for (const message of messages) {\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._invokeClientMethod(message);\r\n break;\r\n case MessageType.StreamItem:\r\n case MessageType.Completion: {\r\n const callback = this._callbacks[message.invocationId];\r\n if (callback) {\r\n if (message.type === MessageType.Completion) {\r\n delete this._callbacks[message.invocationId];\r\n }\r\n try {\r\n callback(message);\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream callback threw error: ${getErrorString(e)}`);\r\n }\r\n }\r\n break;\r\n }\r\n case MessageType.Ping:\r\n // Don't care about pings\r\n break;\r\n case MessageType.Close: {\r\n this._logger.log(LogLevel.Information, \"Close message received from server.\");\r\n const error = message.error ? new Error(\"Server returned an error on close: \" + message.error) : undefined;\r\n if (message.allowReconnect === true) {\r\n // It feels wrong not to await connection.stop() here, but processIncomingData is called as part of an onreceive callback which is not async,\r\n // this is already the behavior for serverTimeout(), and HttpConnection.Stop() should catch and log all possible exceptions.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(error);\r\n }\r\n else {\r\n // We cannot await stopInternal() here, but subsequent calls to stop() will await this if stopInternal() is still ongoing.\r\n this._stopPromise = this._stopInternal(error);\r\n }\r\n break;\r\n }\r\n default:\r\n this._logger.log(LogLevel.Warning, `Invalid message type: ${message.type}.`);\r\n break;\r\n }\r\n }\r\n }\r\n this._resetTimeoutPeriod();\r\n }\r\n _processHandshakeResponse(data) {\r\n let responseMessage;\r\n let remainingData;\r\n try {\r\n [remainingData, responseMessage] = this._handshakeProtocol.parseHandshakeResponse(data);\r\n }\r\n catch (e) {\r\n const message = \"Error parsing handshake response: \" + e;\r\n this._logger.log(LogLevel.Error, message);\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n }\r\n if (responseMessage.error) {\r\n const message = \"Server returned handshake error: \" + responseMessage.error;\r\n this._logger.log(LogLevel.Error, message);\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n this._handshakeResolver();\r\n return remainingData;\r\n }\r\n _resetKeepAliveInterval() {\r\n if (this.connection.features.inherentKeepAlive) {\r\n return;\r\n }\r\n // Set the time we want the next keep alive to be sent\r\n // Timer will be setup on next message receive\r\n this._nextKeepAlive = new Date().getTime() + this.keepAliveIntervalInMilliseconds;\r\n this._cleanupPingTimer();\r\n }\r\n _resetTimeoutPeriod() {\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this._timeoutHandle = setTimeout(() => this.serverTimeout(), this.serverTimeoutInMilliseconds);\r\n // Set keepAlive timer if there isn't one\r\n if (this._pingServerHandle === undefined) {\r\n let nextPing = this._nextKeepAlive - new Date().getTime();\r\n if (nextPing < 0) {\r\n nextPing = 0;\r\n }\r\n // The timer needs to be set from a networking callback to avoid Chrome timer throttling from causing timers to run once a minute\r\n this._pingServerHandle = setTimeout(async () => {\r\n if (this._connectionState === HubConnectionState.Connected) {\r\n try {\r\n await this._sendMessage(this._cachedPingMessage);\r\n }\r\n catch {\r\n // We don't care about the error. It should be seen elsewhere in the client.\r\n // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering\r\n this._cleanupPingTimer();\r\n }\r\n }\r\n }, nextPing);\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n serverTimeout() {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise. This could trigger reconnecting.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"));\r\n }\r\n async _invokeClientMethod(invocationMessage) {\r\n const methodName = invocationMessage.target.toLowerCase();\r\n const methods = this._methods[methodName];\r\n if (!methods) {\r\n this._logger.log(LogLevel.Warning, `No client method with the name '${methodName}' found.`);\r\n // No handlers provided by client but the server is expecting a response still, so we send an error\r\n if (invocationMessage.invocationId) {\r\n this._logger.log(LogLevel.Warning, `No result given for '${methodName}' method and invocation ID '${invocationMessage.invocationId}'.`);\r\n await this._sendWithProtocol(this._createCompletionMessage(invocationMessage.invocationId, \"Client didn't provide a result.\", null));\r\n }\r\n return;\r\n }\r\n // Avoid issues with handlers removing themselves thus modifying the list while iterating through it\r\n const methodsCopy = methods.slice();\r\n // Server expects a response\r\n const expectsResponse = invocationMessage.invocationId ? true : false;\r\n // We preserve the last result or exception but still call all handlers\r\n let res;\r\n let exception;\r\n let completionMessage;\r\n for (const m of methodsCopy) {\r\n try {\r\n const prevRes = res;\r\n res = await m.apply(this, invocationMessage.arguments);\r\n if (expectsResponse && res && prevRes) {\r\n this._logger.log(LogLevel.Error, `Multiple results provided for '${methodName}'. Sending error to server.`);\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, `Client provided multiple results.`, null);\r\n }\r\n // Ignore exception if we got a result after, the exception will be logged\r\n exception = undefined;\r\n }\r\n catch (e) {\r\n exception = e;\r\n this._logger.log(LogLevel.Error, `A callback for the method '${methodName}' threw error '${e}'.`);\r\n }\r\n }\r\n if (completionMessage) {\r\n await this._sendWithProtocol(completionMessage);\r\n }\r\n else if (expectsResponse) {\r\n // If there is an exception that means either no result was given or a handler after a result threw\r\n if (exception) {\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, `${exception}`, null);\r\n }\r\n else if (res !== undefined) {\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, null, res);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Warning, `No result given for '${methodName}' method and invocation ID '${invocationMessage.invocationId}'.`);\r\n // Client didn't provide a result or throw from a handler, server expects a response so we send an error\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, \"Client didn't provide a result.\", null);\r\n }\r\n await this._sendWithProtocol(completionMessage);\r\n }\r\n else {\r\n if (res) {\r\n this._logger.log(LogLevel.Error, `Result given for '${methodName}' method but server is not expecting a result.`);\r\n }\r\n }\r\n }\r\n _connectionClosed(error) {\r\n this._logger.log(LogLevel.Debug, `HubConnection.connectionClosed(${error}) called while in state ${this._connectionState}.`);\r\n // Triggering this.handshakeRejecter is insufficient because it could already be resolved without the continuation having run yet.\r\n this._stopDuringStartError = this._stopDuringStartError || error || new AbortError(\"The underlying connection was closed before the hub handshake could complete.\");\r\n // If the handshake is in progress, start will be waiting for the handshake promise, so we complete it.\r\n // If it has already completed, this should just noop.\r\n if (this._handshakeResolver) {\r\n this._handshakeResolver();\r\n }\r\n this._cancelCallbacksWithError(error || new Error(\"Invocation canceled due to the underlying connection being closed.\"));\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._completeClose(error);\r\n }\r\n else if (this._connectionState === HubConnectionState.Connected && this._reconnectPolicy) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._reconnect(error);\r\n }\r\n else if (this._connectionState === HubConnectionState.Connected) {\r\n this._completeClose(error);\r\n }\r\n // If none of the above if conditions were true were called the HubConnection must be in either:\r\n // 1. The Connecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail it.\r\n // 2. The Reconnecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail the current reconnect attempt\r\n // and potentially continue the reconnect() loop.\r\n // 3. The Disconnected state in which case we're already done.\r\n }\r\n _completeClose(error) {\r\n if (this._connectionStarted) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n if (Platform.isBrowser) {\r\n window.document.removeEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n try {\r\n this._closedCallbacks.forEach((c) => c.apply(this, [error]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onclose callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n async _reconnect(error) {\r\n const reconnectStartTime = Date.now();\r\n let previousReconnectAttempts = 0;\r\n let retryError = error !== undefined ? error : new Error(\"Attempting to reconnect due to a unknown error.\");\r\n let nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, 0, retryError);\r\n if (nextRetryDelay === null) {\r\n this._logger.log(LogLevel.Debug, \"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.\");\r\n this._completeClose(error);\r\n return;\r\n }\r\n this._connectionState = HubConnectionState.Reconnecting;\r\n if (error) {\r\n this._logger.log(LogLevel.Information, `Connection reconnecting because of error '${error}'.`);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Information, \"Connection reconnecting.\");\r\n }\r\n if (this._reconnectingCallbacks.length !== 0) {\r\n try {\r\n this._reconnectingCallbacks.forEach((c) => c.apply(this, [error]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnecting callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n // Exit early if an onreconnecting callback called connection.stop().\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.\");\r\n return;\r\n }\r\n }\r\n while (nextRetryDelay !== null) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt number ${previousReconnectAttempts} will start in ${nextRetryDelay} ms.`);\r\n await new Promise((resolve) => {\r\n this._reconnectDelayHandle = setTimeout(resolve, nextRetryDelay);\r\n });\r\n this._reconnectDelayHandle = undefined;\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state during reconnect delay. Done reconnecting.\");\r\n return;\r\n }\r\n try {\r\n await this._startInternal();\r\n this._connectionState = HubConnectionState.Connected;\r\n this._logger.log(LogLevel.Information, \"HubConnection reconnected successfully.\");\r\n if (this._reconnectedCallbacks.length !== 0) {\r\n try {\r\n this._reconnectedCallbacks.forEach((c) => c.apply(this, [this.connection.connectionId]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`);\r\n }\r\n }\r\n return;\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt failed because of error '${e}'.`);\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, `Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`);\r\n // The TypeScript compiler thinks that connectionState must be Connected here. The TypeScript compiler is wrong.\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._completeClose();\r\n }\r\n return;\r\n }\r\n retryError = e instanceof Error ? e : new Error(e.toString());\r\n nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, Date.now() - reconnectStartTime, retryError);\r\n }\r\n }\r\n this._logger.log(LogLevel.Information, `Reconnect retries have been exhausted after ${Date.now() - reconnectStartTime} ms and ${previousReconnectAttempts} failed attempts. Connection disconnecting.`);\r\n this._completeClose();\r\n }\r\n _getNextRetryDelay(previousRetryCount, elapsedMilliseconds, retryReason) {\r\n try {\r\n return this._reconnectPolicy.nextRetryDelayInMilliseconds({\r\n elapsedMilliseconds,\r\n previousRetryCount,\r\n retryReason,\r\n });\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `IRetryPolicy.nextRetryDelayInMilliseconds(${previousRetryCount}, ${elapsedMilliseconds}) threw error '${e}'.`);\r\n return null;\r\n }\r\n }\r\n _cancelCallbacksWithError(error) {\r\n const callbacks = this._callbacks;\r\n this._callbacks = {};\r\n Object.keys(callbacks)\r\n .forEach((key) => {\r\n const callback = callbacks[key];\r\n try {\r\n callback(null, error);\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream 'error' callback called with '${error}' threw error: ${getErrorString(e)}`);\r\n }\r\n });\r\n }\r\n _cleanupPingTimer() {\r\n if (this._pingServerHandle) {\r\n clearTimeout(this._pingServerHandle);\r\n this._pingServerHandle = undefined;\r\n }\r\n }\r\n _cleanupTimeout() {\r\n if (this._timeoutHandle) {\r\n clearTimeout(this._timeoutHandle);\r\n }\r\n }\r\n _createInvocation(methodName, args, nonblocking, streamIds) {\r\n if (nonblocking) {\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n else {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n }\r\n _launchStreams(streams, promiseQueue) {\r\n if (streams.length === 0) {\r\n return;\r\n }\r\n // Synchronize stream data so they arrive in-order on the server\r\n if (!promiseQueue) {\r\n promiseQueue = Promise.resolve();\r\n }\r\n // We want to iterate over the keys, since the keys are the stream ids\r\n // eslint-disable-next-line guard-for-in\r\n for (const streamId in streams) {\r\n streams[streamId].subscribe({\r\n complete: () => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId)));\r\n },\r\n error: (err) => {\r\n let message;\r\n if (err instanceof Error) {\r\n message = err.message;\r\n }\r\n else if (err && err.toString) {\r\n message = err.toString();\r\n }\r\n else {\r\n message = \"Unknown error\";\r\n }\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId, message)));\r\n },\r\n next: (item) => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createStreamItemMessage(streamId, item)));\r\n },\r\n });\r\n }\r\n }\r\n _replaceStreamingParams(args) {\r\n const streams = [];\r\n const streamIds = [];\r\n for (let i = 0; i < args.length; i++) {\r\n const argument = args[i];\r\n if (this._isObservable(argument)) {\r\n const streamId = this._invocationId;\r\n this._invocationId++;\r\n // Store the stream for later use\r\n streams[streamId] = argument;\r\n streamIds.push(streamId.toString());\r\n // remove stream from args\r\n args.splice(i, 1);\r\n }\r\n }\r\n return [streams, streamIds];\r\n }\r\n _isObservable(arg) {\r\n // This allows other stream implementations to just work (like rxjs)\r\n return arg && arg.subscribe && typeof arg.subscribe === \"function\";\r\n }\r\n _createStreamInvocation(methodName, args, streamIds) {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n }\r\n _createCancelInvocation(id) {\r\n return {\r\n invocationId: id,\r\n type: MessageType.CancelInvocation,\r\n };\r\n }\r\n _createStreamItemMessage(id, item) {\r\n return {\r\n invocationId: id,\r\n item,\r\n type: MessageType.StreamItem,\r\n };\r\n }\r\n _createCompletionMessage(id, error, result) {\r\n if (error) {\r\n return {\r\n error,\r\n invocationId: id,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n return {\r\n invocationId: id,\r\n result,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n}\r\n//# sourceMappingURL=HubConnection.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// 0, 2, 10, 30 second delays before reconnect attempts.\r\nconst DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2000, 10000, 30000, null];\r\n/** @private */\r\nexport class DefaultReconnectPolicy {\r\n constructor(retryDelays) {\r\n this._retryDelays = retryDelays !== undefined ? [...retryDelays, null] : DEFAULT_RETRY_DELAYS_IN_MILLISECONDS;\r\n }\r\n nextRetryDelayInMilliseconds(retryContext) {\r\n return this._retryDelays[retryContext.previousRetryCount];\r\n }\r\n}\r\n//# sourceMappingURL=DefaultReconnectPolicy.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nexport class HeaderNames {\r\n}\r\nHeaderNames.Authorization = \"Authorization\";\r\nHeaderNames.Cookie = \"Cookie\";\r\n//# sourceMappingURL=HeaderNames.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { HttpClient } from \"./HttpClient\";\r\n/** @private */\r\nexport class AccessTokenHttpClient extends HttpClient {\r\n constructor(innerClient, accessTokenFactory) {\r\n super();\r\n this._innerClient = innerClient;\r\n this._accessTokenFactory = accessTokenFactory;\r\n }\r\n async send(request) {\r\n let allowRetry = true;\r\n if (this._accessTokenFactory && (!this._accessToken || (request.url && request.url.indexOf(\"/negotiate?\") > 0))) {\r\n // don't retry if the request is a negotiate or if we just got a potentially new token from the access token factory\r\n allowRetry = false;\r\n this._accessToken = await this._accessTokenFactory();\r\n }\r\n this._setAuthorizationHeader(request);\r\n const response = await this._innerClient.send(request);\r\n if (allowRetry && response.statusCode === 401 && this._accessTokenFactory) {\r\n this._accessToken = await this._accessTokenFactory();\r\n this._setAuthorizationHeader(request);\r\n return await this._innerClient.send(request);\r\n }\r\n return response;\r\n }\r\n _setAuthorizationHeader(request) {\r\n if (!request.headers) {\r\n request.headers = {};\r\n }\r\n if (this._accessToken) {\r\n request.headers[HeaderNames.Authorization] = `Bearer ${this._accessToken}`;\r\n }\r\n // don't remove the header if there isn't an access token factory, the user manually added the header in this case\r\n else if (this._accessTokenFactory) {\r\n if (request.headers[HeaderNames.Authorization]) {\r\n delete request.headers[HeaderNames.Authorization];\r\n }\r\n }\r\n }\r\n getCookieString(url) {\r\n return this._innerClient.getCookieString(url);\r\n }\r\n}\r\n//# sourceMappingURL=AccessTokenHttpClient.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\r\n/** Specifies a specific HTTP transport type. */\r\nexport var HttpTransportType;\r\n(function (HttpTransportType) {\r\n /** Specifies no transport preference. */\r\n HttpTransportType[HttpTransportType[\"None\"] = 0] = \"None\";\r\n /** Specifies the WebSockets transport. */\r\n HttpTransportType[HttpTransportType[\"WebSockets\"] = 1] = \"WebSockets\";\r\n /** Specifies the Server-Sent Events transport. */\r\n HttpTransportType[HttpTransportType[\"ServerSentEvents\"] = 2] = \"ServerSentEvents\";\r\n /** Specifies the Long Polling transport. */\r\n HttpTransportType[HttpTransportType[\"LongPolling\"] = 4] = \"LongPolling\";\r\n})(HttpTransportType || (HttpTransportType = {}));\r\n/** Specifies the transfer format for a connection. */\r\nexport var TransferFormat;\r\n(function (TransferFormat) {\r\n /** Specifies that only text data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Text\"] = 1] = \"Text\";\r\n /** Specifies that binary data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Binary\"] = 2] = \"Binary\";\r\n})(TransferFormat || (TransferFormat = {}));\r\n//# sourceMappingURL=ITransport.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\r\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\r\n// it's a very new API right now.\r\n// Not exported from index.\r\n/** @private */\r\nexport class AbortController {\r\n constructor() {\r\n this._isAborted = false;\r\n this.onabort = null;\r\n }\r\n abort() {\r\n if (!this._isAborted) {\r\n this._isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n }\r\n get signal() {\r\n return this;\r\n }\r\n get aborted() {\r\n return this._isAborted;\r\n }\r\n}\r\n//# sourceMappingURL=AbortController.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AbortController } from \"./AbortController\";\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, sendMessage } from \"./Utils\";\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nexport class LongPollingTransport {\r\n constructor(httpClient, logger, options) {\r\n this._httpClient = httpClient;\r\n this._logger = logger;\r\n this._pollAbort = new AbortController();\r\n this._options = options;\r\n this._running = false;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n get pollAborted() {\r\n return this._pollAbort.aborted;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._url = url;\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting.\");\r\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\r\n if (transferFormat === TransferFormat.Binary &&\r\n (typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n const [name, value] = getUserAgentHeader();\r\n const headers = { [name]: value, ...this._options.headers };\r\n const pollOptions = {\r\n abortSignal: this._pollAbort.signal,\r\n headers,\r\n timeout: 100000,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n // Make initial long polling request\r\n // Server uses first long polling request to finish initializing connection and it returns without data\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n }\r\n else {\r\n this._running = true;\r\n }\r\n this._receiving = this._poll(this._url, pollOptions);\r\n }\r\n async _poll(url, pollOptions) {\r\n try {\r\n while (this._running) {\r\n try {\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode === 204) {\r\n this._logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\r\n this._running = false;\r\n }\r\n else if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n // Unexpected status code\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n }\r\n else {\r\n // Process the response\r\n if (response.content) {\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) data received. ${getDataDetail(response.content, this._options.logMessageContent)}.`);\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n }\r\n else {\r\n // This is another way timeout manifest.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n }\r\n catch (e) {\r\n if (!this._running) {\r\n // Log but disregard errors that occur after stopping\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) Poll errored after shutdown: ${e.message}`);\r\n }\r\n else {\r\n if (e instanceof TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n else {\r\n // Close the connection with the error as the result.\r\n this._closeError = e;\r\n this._running = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\r\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\r\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\r\n if (!this.pollAborted) {\r\n this._raiseOnClose();\r\n }\r\n }\r\n }\r\n async send(data) {\r\n if (!this._running) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"LongPolling\", this._httpClient, this._url, data, this._options);\r\n }\r\n async stop() {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\r\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\r\n this._running = false;\r\n this._pollAbort.abort();\r\n try {\r\n await this._receiving;\r\n // Send DELETE to clean up long polling on the server\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) sending DELETE request to ${this._url}.`);\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n const deleteOptions = {\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n await this._httpClient.delete(this._url, deleteOptions);\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request sent.\");\r\n }\r\n finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\r\n // Raise close event here instead of in polling\r\n // It needs to happen after the DELETE request is sent\r\n this._raiseOnClose();\r\n }\r\n }\r\n _raiseOnClose() {\r\n if (this.onclose) {\r\n let logMessage = \"(LongPolling transport) Firing onclose event.\";\r\n if (this._closeError) {\r\n logMessage += \" Error: \" + this._closeError;\r\n }\r\n this._logger.log(LogLevel.Trace, logMessage);\r\n this.onclose(this._closeError);\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=LongPollingTransport.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform, sendMessage } from \"./Utils\";\r\n/** @private */\r\nexport class ServerSentEventsTransport {\r\n constructor(httpClient, accessToken, logger, options) {\r\n this._httpClient = httpClient;\r\n this._accessToken = accessToken;\r\n this._logger = logger;\r\n this._options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(SSE transport) Connecting.\");\r\n // set url before accessTokenFactory because this._url is only for send and we set the auth header instead of the query string for send\r\n this._url = url;\r\n if (this._accessToken) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(this._accessToken)}`;\r\n }\r\n return new Promise((resolve, reject) => {\r\n let opened = false;\r\n if (transferFormat !== TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n return;\r\n }\r\n let eventSource;\r\n if (Platform.isBrowser || Platform.isWebWorker) {\r\n eventSource = new this._options.EventSource(url, { withCredentials: this._options.withCredentials });\r\n }\r\n else {\r\n // Non-browser passes cookies via the dictionary\r\n const cookies = this._httpClient.getCookieString(url);\r\n const headers = {};\r\n headers.Cookie = cookies;\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n eventSource = new this._options.EventSource(url, { withCredentials: this._options.withCredentials, headers: { ...headers, ...this._options.headers } });\r\n }\r\n try {\r\n eventSource.onmessage = (e) => {\r\n if (this.onreceive) {\r\n try {\r\n this._logger.log(LogLevel.Trace, `(SSE transport) data received. ${getDataDetail(e.data, this._options.logMessageContent)}.`);\r\n this.onreceive(e.data);\r\n }\r\n catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n // @ts-ignore: not using event on purpose\r\n eventSource.onerror = (e) => {\r\n // EventSource doesn't give any useful information about server side closes.\r\n if (opened) {\r\n this._close();\r\n }\r\n else {\r\n reject(new Error(\"EventSource failed to connect. The connection could not be found on the server,\"\r\n + \" either the connection ID is not present on the server, or a proxy is refusing/buffering the connection.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\"));\r\n }\r\n };\r\n eventSource.onopen = () => {\r\n this._logger.log(LogLevel.Information, `SSE connected to ${this._url}`);\r\n this._eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(e);\r\n return;\r\n }\r\n });\r\n }\r\n async send(data) {\r\n if (!this._eventSource) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"SSE\", this._httpClient, this._url, data, this._options);\r\n }\r\n stop() {\r\n this._close();\r\n return Promise.resolve();\r\n }\r\n _close(e) {\r\n if (this._eventSource) {\r\n this._eventSource.close();\r\n this._eventSource = undefined;\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=ServerSentEventsTransport.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform } from \"./Utils\";\r\n/** @private */\r\nexport class WebSocketTransport {\r\n constructor(httpClient, accessTokenFactory, logger, logMessageContent, webSocketConstructor, headers) {\r\n this._logger = logger;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logMessageContent = logMessageContent;\r\n this._webSocketConstructor = webSocketConstructor;\r\n this._httpClient = httpClient;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n this._headers = headers;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting.\");\r\n let token;\r\n if (this._accessTokenFactory) {\r\n token = await this._accessTokenFactory();\r\n }\r\n return new Promise((resolve, reject) => {\r\n url = url.replace(/^http/, \"ws\");\r\n let webSocket;\r\n const cookies = this._httpClient.getCookieString(url);\r\n let opened = false;\r\n if (Platform.isNode || Platform.isReactNative) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n if (token) {\r\n headers[HeaderNames.Authorization] = `Bearer ${token}`;\r\n }\r\n if (cookies) {\r\n headers[HeaderNames.Cookie] = cookies;\r\n }\r\n // Only pass headers when in non-browser environments\r\n webSocket = new this._webSocketConstructor(url, undefined, {\r\n headers: { ...headers, ...this._headers },\r\n });\r\n }\r\n else {\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(token)}`;\r\n }\r\n }\r\n if (!webSocket) {\r\n // Chrome is not happy with passing 'undefined' as protocol\r\n webSocket = new this._webSocketConstructor(url);\r\n }\r\n if (transferFormat === TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n webSocket.onopen = (_event) => {\r\n this._logger.log(LogLevel.Information, `WebSocket connected to ${url}.`);\r\n this._webSocket = webSocket;\r\n opened = true;\r\n resolve();\r\n };\r\n webSocket.onerror = (event) => {\r\n let error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = \"There was an error with the transport\";\r\n }\r\n this._logger.log(LogLevel.Information, `(WebSockets transport) ${error}.`);\r\n };\r\n webSocket.onmessage = (message) => {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) data received. ${getDataDetail(message.data, this._logMessageContent)}.`);\r\n if (this.onreceive) {\r\n try {\r\n this.onreceive(message.data);\r\n }\r\n catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n webSocket.onclose = (event) => {\r\n // Don't call close handler if connection was never established\r\n // We'll reject the connect call instead\r\n if (opened) {\r\n this._close(event);\r\n }\r\n else {\r\n let error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = \"WebSocket failed to connect. The connection could not be found on the server,\"\r\n + \" either the endpoint may not be a SignalR endpoint,\"\r\n + \" the connection ID is not present on the server, or there is a proxy blocking WebSockets.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\";\r\n }\r\n reject(new Error(error));\r\n }\r\n };\r\n });\r\n }\r\n send(data) {\r\n if (this._webSocket && this._webSocket.readyState === this._webSocketConstructor.OPEN) {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) sending data. ${getDataDetail(data, this._logMessageContent)}.`);\r\n this._webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n }\r\n stop() {\r\n if (this._webSocket) {\r\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\r\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\r\n this._close(undefined);\r\n }\r\n return Promise.resolve();\r\n }\r\n _close(event) {\r\n // webSocket will be null if the transport did not start successfully\r\n if (this._webSocket) {\r\n // Clear websocket handlers because we are considering the socket closed now\r\n this._webSocket.onclose = () => { };\r\n this._webSocket.onmessage = () => { };\r\n this._webSocket.onerror = () => { };\r\n this._webSocket.close();\r\n this._webSocket = undefined;\r\n }\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (this.onclose) {\r\n if (this._isCloseEvent(event) && (event.wasClean === false || event.code !== 1000)) {\r\n this.onclose(new Error(`WebSocket closed with status code: ${event.code} (${event.reason || \"no reason given\"}).`));\r\n }\r\n else if (event instanceof Error) {\r\n this.onclose(event);\r\n }\r\n else {\r\n this.onclose();\r\n }\r\n }\r\n }\r\n _isCloseEvent(event) {\r\n return event && typeof event.wasClean === \"boolean\" && typeof event.code === \"number\";\r\n }\r\n}\r\n//# sourceMappingURL=WebSocketTransport.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { AccessTokenHttpClient } from \"./AccessTokenHttpClient\";\r\nimport { DefaultHttpClient } from \"./DefaultHttpClient\";\r\nimport { AggregateErrors, DisabledTransportError, FailedToNegotiateWithServerError, FailedToStartTransportError, HttpError, UnsupportedTransportError, AbortError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { HttpTransportType, TransferFormat } from \"./ITransport\";\r\nimport { LongPollingTransport } from \"./LongPollingTransport\";\r\nimport { ServerSentEventsTransport } from \"./ServerSentEventsTransport\";\r\nimport { Arg, createLogger, getUserAgentHeader, Platform } from \"./Utils\";\r\nimport { WebSocketTransport } from \"./WebSocketTransport\";\r\nconst MAX_REDIRECTS = 100;\r\n/** @private */\r\nexport class HttpConnection {\r\n constructor(url, options = {}) {\r\n this._stopPromiseResolver = () => { };\r\n this.features = {};\r\n this._negotiateVersion = 1;\r\n Arg.isRequired(url, \"url\");\r\n this._logger = createLogger(options.logger);\r\n this.baseUrl = this._resolveUrl(url);\r\n options = options || {};\r\n options.logMessageContent = options.logMessageContent === undefined ? false : options.logMessageContent;\r\n if (typeof options.withCredentials === \"boolean\" || options.withCredentials === undefined) {\r\n options.withCredentials = options.withCredentials === undefined ? true : options.withCredentials;\r\n }\r\n else {\r\n throw new Error(\"withCredentials option was not a 'boolean' or 'undefined' value\");\r\n }\r\n options.timeout = options.timeout === undefined ? 100 * 1000 : options.timeout;\r\n let webSocketModule = null;\r\n let eventSourceModule = null;\r\n if (Platform.isNode && typeof require !== \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n webSocketModule = requireFunc(\"ws\");\r\n eventSourceModule = requireFunc(\"eventsource\");\r\n }\r\n if (!Platform.isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\r\n options.WebSocket = WebSocket;\r\n }\r\n else if (Platform.isNode && !options.WebSocket) {\r\n if (webSocketModule) {\r\n options.WebSocket = webSocketModule;\r\n }\r\n }\r\n if (!Platform.isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\r\n options.EventSource = EventSource;\r\n }\r\n else if (Platform.isNode && !options.EventSource) {\r\n if (typeof eventSourceModule !== \"undefined\") {\r\n options.EventSource = eventSourceModule;\r\n }\r\n }\r\n this._httpClient = new AccessTokenHttpClient(options.httpClient || new DefaultHttpClient(this._logger), options.accessTokenFactory);\r\n this._connectionState = \"Disconnected\" /* Disconnected */;\r\n this._connectionStarted = false;\r\n this._options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async start(transferFormat) {\r\n transferFormat = transferFormat || TransferFormat.Binary;\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Debug, `Starting connection with transfer format '${TransferFormat[transferFormat]}'.`);\r\n if (this._connectionState !== \"Disconnected\" /* Disconnected */) {\r\n return Promise.reject(new Error(\"Cannot start an HttpConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n this._connectionState = \"Connecting\" /* Connecting */;\r\n this._startInternalPromise = this._startInternal(transferFormat);\r\n await this._startInternalPromise;\r\n // The TypeScript compiler thinks that connectionState must be Connecting here. The TypeScript compiler is wrong.\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"Failed to start the HttpConnection before stop() was called.\";\r\n this._logger.log(LogLevel.Error, message);\r\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\r\n await this._stopPromise;\r\n return Promise.reject(new AbortError(message));\r\n }\r\n else if (this._connectionState !== \"Connected\" /* Connected */) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!\";\r\n this._logger.log(LogLevel.Error, message);\r\n return Promise.reject(new AbortError(message));\r\n }\r\n this._connectionStarted = true;\r\n }\r\n send(data) {\r\n if (this._connectionState !== \"Connected\" /* Connected */) {\r\n return Promise.reject(new Error(\"Cannot send data if the connection is not in the 'Connected' State.\"));\r\n }\r\n if (!this._sendQueue) {\r\n this._sendQueue = new TransportSendQueue(this.transport);\r\n }\r\n // Transport will not be null if state is connected\r\n return this._sendQueue.send(data);\r\n }\r\n async stop(error) {\r\n if (this._connectionState === \"Disconnected\" /* Disconnected */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise;\r\n }\r\n this._connectionState = \"Disconnecting\" /* Disconnecting */;\r\n this._stopPromise = new Promise((resolve) => {\r\n // Don't complete stop() until stopConnection() completes.\r\n this._stopPromiseResolver = resolve;\r\n });\r\n // stopInternal should never throw so just observe it.\r\n await this._stopInternal(error);\r\n await this._stopPromise;\r\n }\r\n async _stopInternal(error) {\r\n // Set error as soon as possible otherwise there is a race between\r\n // the transport closing and providing an error and the error from a close message\r\n // We would prefer the close message error.\r\n this._stopError = error;\r\n try {\r\n await this._startInternalPromise;\r\n }\r\n catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n // The transport's onclose will trigger stopConnection which will run our onclose event.\r\n // The transport should always be set if currently connected. If it wasn't set, it's likely because\r\n // stop was called during start() and start() failed.\r\n if (this.transport) {\r\n try {\r\n await this.transport.stop();\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.transport.stop() threw error '${e}'.`);\r\n this._stopConnection();\r\n }\r\n this.transport = undefined;\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, \"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.\");\r\n }\r\n }\r\n async _startInternal(transferFormat) {\r\n // Store the original base url and the access token factory since they may change\r\n // as part of negotiating\r\n let url = this.baseUrl;\r\n this._accessTokenFactory = this._options.accessTokenFactory;\r\n this._httpClient._accessTokenFactory = this._accessTokenFactory;\r\n try {\r\n if (this._options.skipNegotiation) {\r\n if (this._options.transport === HttpTransportType.WebSockets) {\r\n // No need to add a connection ID in this case\r\n this.transport = this._constructTransport(HttpTransportType.WebSockets);\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n await this._startTransport(url, transferFormat);\r\n }\r\n else {\r\n throw new Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\r\n }\r\n }\r\n else {\r\n let negotiateResponse = null;\r\n let redirects = 0;\r\n do {\r\n negotiateResponse = await this._getNegotiationResponse(url);\r\n // the user tries to stop the connection when it is being started\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */ || this._connectionState === \"Disconnected\" /* Disconnected */) {\r\n throw new AbortError(\"The connection was stopped during negotiation.\");\r\n }\r\n if (negotiateResponse.error) {\r\n throw new Error(negotiateResponse.error);\r\n }\r\n if (negotiateResponse.ProtocolVersion) {\r\n throw new Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\r\n }\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n if (negotiateResponse.accessToken) {\r\n // Replace the current access token factory with one that uses\r\n // the returned access token\r\n const accessToken = negotiateResponse.accessToken;\r\n this._accessTokenFactory = () => accessToken;\r\n // set the factory to undefined so the AccessTokenHttpClient won't retry with the same token, since we know it won't change until a connection restart\r\n this._httpClient._accessToken = accessToken;\r\n this._httpClient._accessTokenFactory = undefined;\r\n }\r\n redirects++;\r\n } while (negotiateResponse.url && redirects < MAX_REDIRECTS);\r\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\r\n throw new Error(\"Negotiate redirection limit exceeded.\");\r\n }\r\n await this._createTransport(url, this._options.transport, negotiateResponse, transferFormat);\r\n }\r\n if (this.transport instanceof LongPollingTransport) {\r\n this.features.inherentKeepAlive = true;\r\n }\r\n if (this._connectionState === \"Connecting\" /* Connecting */) {\r\n // Ensure the connection transitions to the connected state prior to completing this.startInternalPromise.\r\n // start() will handle the case when stop was called and startInternal exits still in the disconnecting state.\r\n this._logger.log(LogLevel.Debug, \"The HttpConnection connected successfully.\");\r\n this._connectionState = \"Connected\" /* Connected */;\r\n }\r\n // stop() is waiting on us via this.startInternalPromise so keep this.transport around so it can clean up.\r\n // This is the only case startInternal can exit in neither the connected nor disconnected state because stopConnection()\r\n // will transition to the disconnected state. start() will wait for the transition using the stopPromise.\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, \"Failed to start the connection: \" + e);\r\n this._connectionState = \"Disconnected\" /* Disconnected */;\r\n this.transport = undefined;\r\n // if start fails, any active calls to stop assume that start will complete the stop promise\r\n this._stopPromiseResolver();\r\n return Promise.reject(e);\r\n }\r\n }\r\n async _getNegotiationResponse(url) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n const negotiateUrl = this._resolveNegotiateUrl(url);\r\n this._logger.log(LogLevel.Debug, `Sending negotiation request: ${negotiateUrl}.`);\r\n try {\r\n const response = await this._httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n });\r\n if (response.statusCode !== 200) {\r\n return Promise.reject(new Error(`Unexpected status code returned from negotiate '${response.statusCode}'`));\r\n }\r\n const negotiateResponse = JSON.parse(response.content);\r\n if (!negotiateResponse.negotiateVersion || negotiateResponse.negotiateVersion < 1) {\r\n // Negotiate version 0 doesn't use connectionToken\r\n // So we set it equal to connectionId so all our logic can use connectionToken without being aware of the negotiate version\r\n negotiateResponse.connectionToken = negotiateResponse.connectionId;\r\n }\r\n return negotiateResponse;\r\n }\r\n catch (e) {\r\n let errorMessage = \"Failed to complete negotiation with the server: \" + e;\r\n if (e instanceof HttpError) {\r\n if (e.statusCode === 404) {\r\n errorMessage = errorMessage + \" Either this is not a SignalR endpoint or there is a proxy blocking the connection.\";\r\n }\r\n }\r\n this._logger.log(LogLevel.Error, errorMessage);\r\n return Promise.reject(new FailedToNegotiateWithServerError(errorMessage));\r\n }\r\n }\r\n _createConnectUrl(url, connectionToken) {\r\n if (!connectionToken) {\r\n return url;\r\n }\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + `id=${connectionToken}`;\r\n }\r\n async _createTransport(url, requestedTransport, negotiateResponse, requestedTransferFormat) {\r\n let connectUrl = this._createConnectUrl(url, negotiateResponse.connectionToken);\r\n if (this._isITransport(requestedTransport)) {\r\n this._logger.log(LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\r\n this.transport = requestedTransport;\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiateResponse.connectionId;\r\n return;\r\n }\r\n const transportExceptions = [];\r\n const transports = negotiateResponse.availableTransports || [];\r\n let negotiate = negotiateResponse;\r\n for (const endpoint of transports) {\r\n const transportOrError = this._resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat);\r\n if (transportOrError instanceof Error) {\r\n // Store the error and continue, we don't want to cause a re-negotiate in these cases\r\n transportExceptions.push(`${endpoint.transport} failed:`);\r\n transportExceptions.push(transportOrError);\r\n }\r\n else if (this._isITransport(transportOrError)) {\r\n this.transport = transportOrError;\r\n if (!negotiate) {\r\n try {\r\n negotiate = await this._getNegotiationResponse(url);\r\n }\r\n catch (ex) {\r\n return Promise.reject(ex);\r\n }\r\n connectUrl = this._createConnectUrl(url, negotiate.connectionToken);\r\n }\r\n try {\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiate.connectionId;\r\n return;\r\n }\r\n catch (ex) {\r\n this._logger.log(LogLevel.Error, `Failed to start the transport '${endpoint.transport}': ${ex}`);\r\n negotiate = undefined;\r\n transportExceptions.push(new FailedToStartTransportError(`${endpoint.transport} failed: ${ex}`, HttpTransportType[endpoint.transport]));\r\n if (this._connectionState !== \"Connecting\" /* Connecting */) {\r\n const message = \"Failed to select transport before stop() was called.\";\r\n this._logger.log(LogLevel.Debug, message);\r\n return Promise.reject(new AbortError(message));\r\n }\r\n }\r\n }\r\n }\r\n if (transportExceptions.length > 0) {\r\n return Promise.reject(new AggregateErrors(`Unable to connect to the server with any of the available transports. ${transportExceptions.join(\" \")}`, transportExceptions));\r\n }\r\n return Promise.reject(new Error(\"None of the transports supported by the client are supported by the server.\"));\r\n }\r\n _constructTransport(transport) {\r\n switch (transport) {\r\n case HttpTransportType.WebSockets:\r\n if (!this._options.WebSocket) {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n return new WebSocketTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options.logMessageContent, this._options.WebSocket, this._options.headers || {});\r\n case HttpTransportType.ServerSentEvents:\r\n if (!this._options.EventSource) {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n return new ServerSentEventsTransport(this._httpClient, this._httpClient._accessToken, this._logger, this._options);\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this._httpClient, this._logger, this._options);\r\n default:\r\n throw new Error(`Unknown transport: ${transport}.`);\r\n }\r\n }\r\n _startTransport(url, transferFormat) {\r\n this.transport.onreceive = this.onreceive;\r\n this.transport.onclose = (e) => this._stopConnection(e);\r\n return this.transport.connect(url, transferFormat);\r\n }\r\n _resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat) {\r\n const transport = HttpTransportType[endpoint.transport];\r\n if (transport === null || transport === undefined) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n return new Error(`Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n }\r\n else {\r\n if (transportMatches(requestedTransport, transport)) {\r\n const transferFormats = endpoint.transferFormats.map((s) => TransferFormat[s]);\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === HttpTransportType.WebSockets && !this._options.WebSocket) ||\r\n (transport === HttpTransportType.ServerSentEvents && !this._options.EventSource)) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it is not supported in your environment.'`);\r\n return new UnsupportedTransportError(`'${HttpTransportType[transport]}' is not supported in your environment.`, transport);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Selecting transport '${HttpTransportType[transport]}'.`);\r\n try {\r\n return this._constructTransport(transport);\r\n }\r\n catch (ex) {\r\n return ex;\r\n }\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it does not support the requested transfer format '${TransferFormat[requestedTransferFormat]}'.`);\r\n return new Error(`'${HttpTransportType[transport]}' does not support ${TransferFormat[requestedTransferFormat]}.`);\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it was disabled by the client.`);\r\n return new DisabledTransportError(`'${HttpTransportType[transport]}' is disabled by the client.`, transport);\r\n }\r\n }\r\n }\r\n _isITransport(transport) {\r\n return transport && typeof (transport) === \"object\" && \"connect\" in transport;\r\n }\r\n _stopConnection(error) {\r\n this._logger.log(LogLevel.Debug, `HttpConnection.stopConnection(${error}) called while in state ${this._connectionState}.`);\r\n this.transport = undefined;\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this._stopError || error;\r\n this._stopError = undefined;\r\n if (this._connectionState === \"Disconnected\" /* Disconnected */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is already in the disconnected state.`);\r\n return;\r\n }\r\n if (this._connectionState === \"Connecting\" /* Connecting */) {\r\n this._logger.log(LogLevel.Warning, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is still in the connecting state.`);\r\n throw new Error(`HttpConnection.stopConnection(${error}) was called while the connection is still in the connecting state.`);\r\n }\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n // A call to stop() induced this call to stopConnection and needs to be completed.\r\n // Any stop() awaiters will be scheduled to continue after the onclose callback fires.\r\n this._stopPromiseResolver();\r\n }\r\n if (error) {\r\n this._logger.log(LogLevel.Error, `Connection disconnected with error '${error}'.`);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Information, \"Connection disconnected.\");\r\n }\r\n if (this._sendQueue) {\r\n this._sendQueue.stop().catch((e) => {\r\n this._logger.log(LogLevel.Error, `TransportSendQueue.stop() threw error '${e}'.`);\r\n });\r\n this._sendQueue = undefined;\r\n }\r\n this.connectionId = undefined;\r\n this._connectionState = \"Disconnected\" /* Disconnected */;\r\n if (this._connectionStarted) {\r\n this._connectionStarted = false;\r\n try {\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.onclose(${error}) threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n _resolveUrl(url) {\r\n // startsWith is not supported in IE\r\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\r\n return url;\r\n }\r\n if (!Platform.isBrowser) {\r\n throw new Error(`Cannot resolve '${url}'.`);\r\n }\r\n // Setting the url to the href propery of an anchor tag handles normalization\r\n // for us. There are 3 main cases.\r\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\r\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\r\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\r\n const aTag = window.document.createElement(\"a\");\r\n aTag.href = url;\r\n this._logger.log(LogLevel.Information, `Normalizing '${url}' to '${aTag.href}'.`);\r\n return aTag.href;\r\n }\r\n _resolveNegotiateUrl(url) {\r\n const index = url.indexOf(\"?\");\r\n let negotiateUrl = url.substring(0, index === -1 ? url.length : index);\r\n if (negotiateUrl[negotiateUrl.length - 1] !== \"/\") {\r\n negotiateUrl += \"/\";\r\n }\r\n negotiateUrl += \"negotiate\";\r\n negotiateUrl += index === -1 ? \"\" : url.substring(index);\r\n if (negotiateUrl.indexOf(\"negotiateVersion\") === -1) {\r\n negotiateUrl += index === -1 ? \"?\" : \"&\";\r\n negotiateUrl += \"negotiateVersion=\" + this._negotiateVersion;\r\n }\r\n return negotiateUrl;\r\n }\r\n}\r\nfunction transportMatches(requestedTransport, actualTransport) {\r\n return !requestedTransport || ((actualTransport & requestedTransport) !== 0);\r\n}\r\n/** @private */\r\nexport class TransportSendQueue {\r\n constructor(_transport) {\r\n this._transport = _transport;\r\n this._buffer = [];\r\n this._executing = true;\r\n this._sendBufferedData = new PromiseSource();\r\n this._transportResult = new PromiseSource();\r\n this._sendLoopPromise = this._sendLoop();\r\n }\r\n send(data) {\r\n this._bufferData(data);\r\n if (!this._transportResult) {\r\n this._transportResult = new PromiseSource();\r\n }\r\n return this._transportResult.promise;\r\n }\r\n stop() {\r\n this._executing = false;\r\n this._sendBufferedData.resolve();\r\n return this._sendLoopPromise;\r\n }\r\n _bufferData(data) {\r\n if (this._buffer.length && typeof (this._buffer[0]) !== typeof (data)) {\r\n throw new Error(`Expected data to be of type ${typeof (this._buffer)} but was of type ${typeof (data)}`);\r\n }\r\n this._buffer.push(data);\r\n this._sendBufferedData.resolve();\r\n }\r\n async _sendLoop() {\r\n while (true) {\r\n await this._sendBufferedData.promise;\r\n if (!this._executing) {\r\n if (this._transportResult) {\r\n this._transportResult.reject(\"Connection stopped.\");\r\n }\r\n break;\r\n }\r\n this._sendBufferedData = new PromiseSource();\r\n const transportResult = this._transportResult;\r\n this._transportResult = undefined;\r\n const data = typeof (this._buffer[0]) === \"string\" ?\r\n this._buffer.join(\"\") :\r\n TransportSendQueue._concatBuffers(this._buffer);\r\n this._buffer.length = 0;\r\n try {\r\n await this._transport.send(data);\r\n transportResult.resolve();\r\n }\r\n catch (error) {\r\n transportResult.reject(error);\r\n }\r\n }\r\n }\r\n static _concatBuffers(arrayBuffers) {\r\n const totalLength = arrayBuffers.map((b) => b.byteLength).reduce((a, b) => a + b);\r\n const result = new Uint8Array(totalLength);\r\n let offset = 0;\r\n for (const item of arrayBuffers) {\r\n result.set(new Uint8Array(item), offset);\r\n offset += item.byteLength;\r\n }\r\n return result.buffer;\r\n }\r\n}\r\nclass PromiseSource {\r\n constructor() {\r\n this.promise = new Promise((resolve, reject) => [this._resolver, this._rejecter] = [resolve, reject]);\r\n }\r\n resolve() {\r\n this._resolver();\r\n }\r\n reject(reason) {\r\n this._rejecter(reason);\r\n }\r\n}\r\n//# sourceMappingURL=HttpConnection.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nconst JSON_HUB_PROTOCOL_NAME = \"json\";\r\n/** Implements the JSON Hub Protocol. */\r\nexport class JsonHubProtocol {\r\n constructor() {\r\n /** @inheritDoc */\r\n this.name = JSON_HUB_PROTOCOL_NAME;\r\n /** @inheritDoc */\r\n this.version = 1;\r\n /** @inheritDoc */\r\n this.transferFormat = TransferFormat.Text;\r\n }\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n parseMessages(input, logger) {\r\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (typeof input !== \"string\") {\r\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\r\n }\r\n if (!input) {\r\n return [];\r\n }\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n // Parse the messages\r\n const messages = TextMessageFormat.parse(input);\r\n const hubMessages = [];\r\n for (const message of messages) {\r\n const parsedMessage = JSON.parse(message);\r\n if (typeof parsedMessage.type !== \"number\") {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n switch (parsedMessage.type) {\r\n case MessageType.Invocation:\r\n this._isInvocationMessage(parsedMessage);\r\n break;\r\n case MessageType.StreamItem:\r\n this._isStreamItemMessage(parsedMessage);\r\n break;\r\n case MessageType.Completion:\r\n this._isCompletionMessage(parsedMessage);\r\n break;\r\n case MessageType.Ping:\r\n // Single value, no need to validate\r\n break;\r\n case MessageType.Close:\r\n // All optional values, no need to validate\r\n break;\r\n default:\r\n // Future protocol changes can add message types, old clients can ignore them\r\n logger.log(LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\r\n continue;\r\n }\r\n hubMessages.push(parsedMessage);\r\n }\r\n return hubMessages;\r\n }\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\r\n writeMessage(message) {\r\n return TextMessageFormat.write(JSON.stringify(message));\r\n }\r\n _isInvocationMessage(message) {\r\n this._assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\r\n if (message.invocationId !== undefined) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\r\n }\r\n }\r\n _isStreamItemMessage(message) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\r\n if (message.item === undefined) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n }\r\n _isCompletionMessage(message) {\r\n if (message.result && message.error) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n if (!message.result && message.error) {\r\n this._assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\r\n }\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\r\n }\r\n _assertNotEmptyString(value, errorMessage) {\r\n if (typeof value !== \"string\" || value === \"\") {\r\n throw new Error(errorMessage);\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=JsonHubProtocol.js.map","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nimport { DefaultReconnectPolicy } from \"./DefaultReconnectPolicy\";\r\nimport { HttpConnection } from \"./HttpConnection\";\r\nimport { HubConnection } from \"./HubConnection\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { JsonHubProtocol } from \"./JsonHubProtocol\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { Arg, ConsoleLogger } from \"./Utils\";\r\nconst LogLevelNameMapping = {\r\n trace: LogLevel.Trace,\r\n debug: LogLevel.Debug,\r\n info: LogLevel.Information,\r\n information: LogLevel.Information,\r\n warn: LogLevel.Warning,\r\n warning: LogLevel.Warning,\r\n error: LogLevel.Error,\r\n critical: LogLevel.Critical,\r\n none: LogLevel.None,\r\n};\r\nfunction parseLogLevel(name) {\r\n // Case-insensitive matching via lower-casing\r\n // Yes, I know case-folding is a complicated problem in Unicode, but we only support\r\n // the ASCII strings defined in LogLevelNameMapping anyway, so it's fine -anurse.\r\n const mapping = LogLevelNameMapping[name.toLowerCase()];\r\n if (typeof mapping !== \"undefined\") {\r\n return mapping;\r\n }\r\n else {\r\n throw new Error(`Unknown log level: ${name}`);\r\n }\r\n}\r\n/** A builder for configuring {@link @microsoft/signalr.HubConnection} instances. */\r\nexport class HubConnectionBuilder {\r\n configureLogging(logging) {\r\n Arg.isRequired(logging, \"logging\");\r\n if (isLogger(logging)) {\r\n this.logger = logging;\r\n }\r\n else if (typeof logging === \"string\") {\r\n const logLevel = parseLogLevel(logging);\r\n this.logger = new ConsoleLogger(logLevel);\r\n }\r\n else {\r\n this.logger = new ConsoleLogger(logging);\r\n }\r\n return this;\r\n }\r\n withUrl(url, transportTypeOrOptions) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isNotEmpty(url, \"url\");\r\n this.url = url;\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = { ...this.httpConnectionOptions, ...transportTypeOrOptions };\r\n }\r\n else {\r\n this.httpConnectionOptions = {\r\n ...this.httpConnectionOptions,\r\n transport: transportTypeOrOptions,\r\n };\r\n }\r\n return this;\r\n }\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @microsoft/signalr.IHubProtocol} implementation to use.\r\n */\r\n withHubProtocol(protocol) {\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.protocol = protocol;\r\n return this;\r\n }\r\n withAutomaticReconnect(retryDelaysOrReconnectPolicy) {\r\n if (this.reconnectPolicy) {\r\n throw new Error(\"A reconnectPolicy has already been set.\");\r\n }\r\n if (!retryDelaysOrReconnectPolicy) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy();\r\n }\r\n else if (Array.isArray(retryDelaysOrReconnectPolicy)) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy(retryDelaysOrReconnectPolicy);\r\n }\r\n else {\r\n this.reconnectPolicy = retryDelaysOrReconnectPolicy;\r\n }\r\n return this;\r\n }\r\n /** Creates a {@link @microsoft/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @microsoft/signalr.HubConnection}.\r\n */\r\n build() {\r\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\r\n // provided to configureLogger\r\n const httpConnectionOptions = this.httpConnectionOptions || {};\r\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\r\n if (httpConnectionOptions.logger === undefined) {\r\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\r\n httpConnectionOptions.logger = this.logger;\r\n }\r\n // Now create the connection\r\n if (!this.url) {\r\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\r\n }\r\n const connection = new HttpConnection(this.url, httpConnectionOptions);\r\n return HubConnection.create(connection, this.logger || NullLogger.instance, this.protocol || new JsonHubProtocol(), this.reconnectPolicy);\r\n }\r\n}\r\nfunction isLogger(logger) {\r\n return logger.log !== undefined;\r\n}\r\n//# sourceMappingURL=HubConnectionBuilder.js.map","import { HubChannel } from '@business/CommonSets/HubChannel';\r\nimport { HubConnection, HubConnectionBuilder } from '@microsoft/signalr';\r\nimport { logErrorSafe, normalizeError } from '@shared/Common';\r\n\r\nexport default class Hub {\r\n /** The underlying web socket connection. */\r\n private static connection: HubConnection | null = null;\r\n\r\n /** The url that all websocket connections go through, with specific channel urls for different hubs. */\r\n private static defaultHubUrl: string = '/web-socket';\r\n\r\n /** The period of time to retry the web socket connection more frequently. */\r\n private static initialRetryPeriodMilliseconds: number = 60 * 1000;\r\n\r\n /** The shorter duration for retrying the web socket connection during the initial retry period. */\r\n private static initialRetryMilliseconds: number = 5 * 1000;\r\n\r\n /** The longer duration for retrying the web socket connection during the */\r\n private static continuousRetryMilliseconds: number = 30 * 1000;\r\n\r\n /**\r\n * Listens for messages on the provided channel. If no connection is established with the server-side socket,\r\n * one is created.\r\n * @param channel The channel on which to listen for server-side messages.\r\n * @param onMessage The callback function to execute when a message is received on the channel.\r\n */\r\n static async on<T>(channel: HubChannel, onMessage: (data: T) => void) {\r\n // If the connection to the server-side web socket has not yet been established, connect now.\r\n if (!this.connection) {\r\n this.connection = await this.openConnection();\r\n }\r\n\r\n // Run provided callback when a message on the provided channel is received.\r\n this.connection.on(channel.value, (msg: T) => onMessage(msg));\r\n }\r\n\r\n /**\r\n * Opens a connection to the server-side web socket. On connection, the following messages are dispatched:\r\n * - GetAppSettings: Requests the app settings from the server.\r\n * - GetNotificationCount: Requests the current user's notification count from the server.\r\n * @returns The established connection.\r\n */\r\n static async openConnection(): Promise<HubConnection> {\r\n // Open the connection to the web socket.\r\n this.connection = new HubConnectionBuilder()\r\n .withUrl(this.defaultHubUrl)\r\n .withAutomaticReconnect({\r\n // Retry a reconnect for a shorter duration during the initial retry period then a longer duration thereafter.\r\n nextRetryDelayInMilliseconds: retryContext =>\r\n retryContext.elapsedMilliseconds < this.initialRetryPeriodMilliseconds\r\n ? this.initialRetryMilliseconds\r\n : this.continuousRetryMilliseconds,\r\n })\r\n .build();\r\n\r\n // If an error is provided when the connection is closed, log that error to the console.\r\n this.connection.onclose(async error => {\r\n if (error) {\r\n console.error('Connection to hub closed with error:', error);\r\n const apiError = normalizeError(error);\r\n await logErrorSafe(apiError);\r\n }\r\n });\r\n\r\n // Send requests for initial data when the dropped connection is re-established.\r\n this.connection.onreconnected(async () => await dispatchMessagesOnConnect(this.connection));\r\n\r\n // Start the connection.\r\n await this.connection.start();\r\n\r\n // Dispatch messages that should be sent when the connection is established.\r\n await dispatchMessagesOnConnect(this.connection);\r\n\r\n return this.connection;\r\n\r\n /**\r\n * Sends the app settings and notification count request messages over the provided connection.\r\n * @param connection The connection over which to send on-connect messages.\r\n */\r\n async function dispatchMessagesOnConnect(connection: HubConnection | null) {\r\n if (!connection) {\r\n return;\r\n }\r\n\r\n // Ask the server for app settings.\r\n await connection.send('app-settings');\r\n\r\n // Ask the server for the current app version, so we can determine if we should prompt the user to refresh the app.\r\n await connection.send('app-version');\r\n\r\n // Send a request for the current user's notification count.\r\n // TODO: Uncomment when notifications system is ready for production\r\n // await connection.send('notification-count');\r\n }\r\n }\r\n\r\n /**\r\n * Closes the connection to the server-side web socket.\r\n */\r\n static async closeConnection() {\r\n if (this.connection) {\r\n await this.connection.stop();\r\n this.connection = null;\r\n }\r\n }\r\n}\r\n","import { HubChannel } from '@business/CommonSets/HubChannel';\r\nimport { Bell, IconBackground } from '@legacy/Components/Icons';\r\nimport { navigate } from '@shared/Common';\r\nimport { useTimeout } from '@shared/Hooks/Timeout';\r\nimport Hub from '@shared/Hubs/Hub';\r\nimport { useEffect, useState } from 'react';\r\n\r\n/** Notification icon for navigation bar:\r\n * - Fetches notification count every 5 seconds\r\n * - Returns count of 0 if user is not authorized\r\n * - Animates bell icon when new notifications are received\r\n * - Shows the logged in user's notification count from EFNotifications\r\n * - Clicking navigates user to notification page */\r\nexport function NotificationIcon() {\r\n const [count, setCount] = useState<number>(0),\r\n [animate, setAnimate] = useState<boolean>(false);\r\n\r\n // Turn off animation after one second if initiated.\r\n useTimeout(() => setAnimate(false), 1000, [animate]);\r\n\r\n // Listen for notification count updates.\r\n useEffect(() => {\r\n Hub.on<number>(HubChannel.NotificationCount, newCount => {\r\n setCount(newCount);\r\n setAnimate(newCount > count);\r\n });\r\n }, []);\r\n\r\n return (\r\n <IconBackground\r\n id='notification-icon'\r\n onClick={navigateToNotifications}\r\n disabled={count <= 0}\r\n badgeCount={count}\r\n >\r\n <Bell ringing={animate} active={count > 0} />\r\n </IconBackground>\r\n );\r\n\r\n function navigateToNotifications() {\r\n if (count <= 0) {\r\n return;\r\n }\r\n\r\n navigate('/notifications');\r\n }\r\n}\r\n","import * as React from 'react';\r\n\r\ntype Props = {\r\n showLink: boolean;\r\n id: string;\r\n linkText: string;\r\n linkUrl?: string;\r\n addClass?: string;\r\n onClickFn?: () => void;\r\n replaceClass?: string;\r\n};\r\n\r\nexport function SlidingMenuLink(props: Props) {\r\n return props.showLink ?\r\n <a\r\n className={`${props.replaceClass ? props.replaceClass : 'menu-link-cp'} ${props.addClass ? props.addClass : ''}`}\r\n href={props.linkUrl ? props.linkUrl : '#'}\r\n id={props.id}\r\n onClick={props.onClickFn}\r\n >\r\n {props.linkText}\r\n </a>\r\n : null;\r\n}\r\n","import * as React from 'react';\r\nimport { useEffect, useState } from 'react';\r\n\r\nexport { SlidingMenuLink } from './link';\r\n\r\nenum MenuState {\r\n Expanded = 'sliding-menu-expanded-cp',\r\n Collapsed = 'sliding-menu-collapsed-cp',\r\n}\r\n\r\ntype Props = {\r\n shown: boolean;\r\n className?: string;\r\n} & React.PropsWithChildren;\r\n\r\nexport function SlidingMenu({ shown, className, children }: Props) {\r\n const [menuState, setMenuState] = useState<MenuState>(shown ? MenuState.Expanded : MenuState.Collapsed);\r\n\r\n useEffect(() => {\r\n setMenuState(shown ? MenuState.Expanded : MenuState.Collapsed);\r\n }, [shown]);\r\n\r\n return (\r\n <div className={`${menuState} ${className || ''}`} id='sliding-menu'>\r\n <div className='inner-container-cp'>\r\n <div className='menu-contents-cp'>{children}</div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { useState } from 'react';\r\n\r\nexport const useComplexState = <State>(initial: State): [State, (updater: (state: State) => void) => void] => {\r\n const [state, setState] = useState(initial);\r\n\r\n return [\r\n state,\r\n (updater: (s: State) => void) => {\r\n updater(state);\r\n setState({ ...state });\r\n },\r\n ];\r\n};\r\n","import { Path } from '@app/Views';\r\nimport { AppSetting, getBooleanAppSetting } from '@business/AppSetting';\r\nimport { ProductLine } from '@business/CommonSets';\r\nimport { Banner, BannerSeverityLevel } from '@legacy/Components/Banner';\r\nimport { AvailableStates } from '@legacy/Components/Menus/NavbarComponents/AvailableStates';\r\nimport Burger from '@legacy/Components/Menus/NavbarComponents/Burger';\r\nimport ProductLink from '@legacy/Components/Menus/NavbarComponents/ProductLink';\r\nimport { SubPageLink } from '@legacy/Components/Menus/NavbarComponents/SubPageLink';\r\nimport { UserStatus } from '@legacy/Components/Menus/NavbarComponents/UserStatus';\r\nimport { NotificationIcon } from '@legacy/Components/Menus/NotificationIcon';\r\nimport { SlidingMenu, SlidingMenuLink } from '@legacy/Components/Menus/SlidingMenu';\r\nimport { Svg } from '@legacy/Components/Svg';\r\nimport {\r\n getRootPageForLoggedInAgent,\r\n isAdmin,\r\n isLimitedAgentUser,\r\n logout,\r\n navigate,\r\n setTimeoutAsync,\r\n toBoolean,\r\n} from '@shared/Common';\r\nimport { iconPaths, pages } from '@shared/Constants';\r\nimport { useResize, useScroll } from '@shared/Hooks';\r\nimport { useComplexState } from '@shared/Hooks/ComplexState';\r\nimport { getAgentName, getLoginDetails, getUserName, hasAuth } from '@shared/Storage';\r\nimport Portal from '@webkit/components/portal';\r\nimport { useEffect, useMemo } from 'react';\r\nimport { Col, Grid, Row } from 'react-bootstrap';\r\n\r\ndeclare global {\r\n interface Window {\r\n newBusinessHomeowners: string | undefined;\r\n newBusinessHomeownersEandS: string | undefined;\r\n newBusinessCommercialAdmitted: string | undefined;\r\n newBusinessCommercialEandS: string | undefined;\r\n newBusinessFlood: string | undefined;\r\n bannerEnabled: string | undefined;\r\n bannerLevel: BannerSeverityLevel | undefined;\r\n bannerMessage: string | undefined;\r\n floodFeatureFlag: string | undefined;\r\n }\r\n}\r\n\r\nexport enum NavbarType {\r\n Default = 'default-cp',\r\n Green = 'green-cp',\r\n Gray = 'gray-cp',\r\n}\r\n\r\nconst newBusinessStates = {\r\n Homeowners: (window.newBusinessHomeowners || '').split(','),\r\n HomeownersEandS: (window.newBusinessHomeownersEandS || '').split(','),\r\n CommercialAdmitted: (window.newBusinessCommercialAdmitted || '').split(','),\r\n CommercialEandS: (window.newBusinessCommercialEandS || '').split(','),\r\n Flood: (window.newBusinessFlood || '').split(','),\r\n};\r\n\r\nexport enum ProductLinks {\r\n Homeowners,\r\n HomeownersEandS,\r\n CommercialAdmitted,\r\n CommercialAdmittedEandS,\r\n Flood,\r\n}\r\n\r\ntype Props = {\r\n type?: NavbarType;\r\n className?: string;\r\n menuClassName?: string;\r\n onMenuExpanded?: (expanded: boolean) => void;\r\n logoUrl?: string;\r\n loginReturnUrl?: string;\r\n location?: string;\r\n ratingType?: string;\r\n commQuoteInitializing?: boolean;\r\n isRaterQuote?: boolean;\r\n hideBanner?: boolean;\r\n};\r\n\r\ninterface State {\r\n username: string | null;\r\n agentName: string | null;\r\n authorized: boolean;\r\n menuExpanded: boolean;\r\n isAdmin: boolean;\r\n showUserInfo: boolean;\r\n showStates: boolean;\r\n stateList: string[];\r\n activeLink: ProductLinks;\r\n isTop: boolean;\r\n topOffset: string;\r\n navColor: string;\r\n showProductInfo: boolean;\r\n stateListByProduct?: StatesByProduct[];\r\n}\r\n\r\nexport type StatesByProduct = {\r\n product: string;\r\n states: string[];\r\n};\r\n\r\nconst duration = 375;\r\n\r\nexport function Navbar(props: Props) {\r\n const authorized = hasAuth();\r\n const [state, setState] = useComplexState<State>({\r\n authorized,\r\n username: authorized ? getUserName() : '',\r\n agentName: authorized ? getAgentName() : '',\r\n menuExpanded: false,\r\n isAdmin: isAdmin(),\r\n showUserInfo: false,\r\n showStates: false,\r\n stateList: newBusinessStates.Homeowners,\r\n activeLink: ProductLinks.Homeowners,\r\n isTop: true,\r\n topOffset: '',\r\n navColor: '',\r\n showProductInfo: false,\r\n stateListByProduct: undefined,\r\n });\r\n\r\n useResize(onResize);\r\n useScroll(onScroll);\r\n\r\n useEffect(() => {\r\n setTop();\r\n offsetHeader();\r\n\r\n let main = document.getElementById('main');\r\n if (main) {\r\n main.addEventListener('click', closeItems);\r\n }\r\n }, []);\r\n\r\n const path = (props.location ? props.location : window.location.pathname + window.location.search).toLowerCase(),\r\n isHomeowner = useMemo(\r\n () =>\r\n (path === '/' || path.includes('/purchase') || path.includes('homeowner')) &&\r\n !path.includes('commercial') &&\r\n !path.includes('flood'),\r\n [path]\r\n ),\r\n isCommercial = useMemo(() => path.includes('commercial'), [path]),\r\n isFlood = useMemo(() => path.includes('flood'), [path]),\r\n isLanding = useMemo(\r\n () =>\r\n path === pages.Root ||\r\n path === pages.CommercialLanding_Admitted ||\r\n path === Path.CommercialLanding ||\r\n path === pages.Flood,\r\n [path]\r\n ),\r\n isHistory = useMemo(() => path.startsWith('/history'), [path]),\r\n isAddresses = useMemo(() => path.startsWith(Path.AddressManagement), [path]),\r\n newQuoteLink = useMemo(getNewQuoteLink, []),\r\n productLinks = useMemo(renderProductLinks, []);\r\n\r\n return (\r\n <header style={{ minHeight: 56 }}>\r\n <Portal\r\n id='navbar'\r\n className={`navbar-cp screen-only-cp ${props.className || ''} ${props.type || NavbarType.Default}`}\r\n >\r\n <Grid fluid={true}>\r\n <Row>\r\n <Col\r\n xs={12}\r\n className={`navbar-menu-wrapper-cp ${\r\n state.menuExpanded ? 'navbar-menu-wrapper-expanded-cp' : ''\r\n }`}\r\n >\r\n <a href='/'>\r\n <Svg\r\n path={iconPaths.wordMarkLogoMultiColor}\r\n unstyled\r\n className='logo-cp'\r\n alt='Swyfft Insurance'\r\n />\r\n </a>\r\n\r\n {props.isRaterQuote && (\r\n <div className='navbar-link-cp navbar-link-highlighted-cp'>Admin Rater Quote</div>\r\n )}\r\n\r\n {!props.isRaterQuote && (\r\n <div\r\n className={`navbar-link-wrapper-cp ${state.isTop ? '' : 'hide-products-mobile-ly'}`}\r\n >\r\n {productLinks}\r\n </div>\r\n )}\r\n\r\n <div className='logged-in-items-cp'>\r\n {!props.isRaterQuote && (\r\n <>\r\n <SubPageLink\r\n id='history-navbar-link'\r\n linkText='History'\r\n linkUrl={pages.History(\r\n isCommercial\r\n ? ProductLine.Commercial\r\n : isFlood\r\n ? ProductLine.Flood\r\n : ProductLine.Homeowner\r\n )}\r\n showLink={state.authorized}\r\n highlightLink={isHistory}\r\n />\r\n <SubPageLink\r\n id='agent-resources-navbar-link'\r\n target='_blank'\r\n rel='noopener noreferrer'\r\n addClass='address-link-ly'\r\n linkText='ARC'\r\n linkUrl={pages.AgentResources}\r\n showLink={state.authorized}\r\n highlightLink={false}\r\n tooltip='Agent Resource Center: quick guides, bulletins, training, co-marketing and more.'\r\n />\r\n <SubPageLink\r\n id='address-navbar-link'\r\n addClass='address-link-ly'\r\n linkText='Addresses'\r\n linkUrl={Path.AddressManagement}\r\n showLink={state.authorized && isAdmin()}\r\n highlightLink={isAddresses}\r\n />\r\n <SubPageLink\r\n id='new-quote-navbar-link'\r\n linkText='+ New Quote'\r\n linkUrl={newQuoteLink}\r\n replaceClass='navbar-new-quote-button-cp'\r\n showLink={state.authorized && !isLimitedAgentUser() && !isLanding}\r\n highlightLink={isAddresses}\r\n />\r\n <SubPageLink\r\n id='navbar-login'\r\n addClass='login-link'\r\n linkText='Agent Log In'\r\n linkUrl={getLoginReturnUrl()}\r\n showLink={!state.authorized && path.indexOf('/login') === -1}\r\n />\r\n </>\r\n )}\r\n\r\n {state.authorized && (\r\n <div className='navbar-icons'>\r\n {state.username && (\r\n <UserStatus\r\n id='navbar-user-status-controls'\r\n agentName={state.agentName}\r\n userName={state.username}\r\n onLogout={onLogout}\r\n />\r\n )}\r\n\r\n {getBooleanAppSetting(AppSetting.AgentNotificationsFeatureFlag) && (\r\n <NotificationIcon />\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {!props.isRaterQuote && <Burger morphIcon={state.menuExpanded} clickFn={onExpandMenu} />}\r\n </Col>\r\n </Row>\r\n </Grid>\r\n\r\n <SlidingMenu\r\n shown={state.menuExpanded}\r\n className={`sliding-menu-spacing-top-cp navbar-sliding-menu-cp ${props.menuClassName || ''}`}\r\n >\r\n <Svg path='/images/logo-svg.svg' className='sliding-menu-logo-cp' unstyled alt='Swyfft Insurance' />\r\n\r\n <SlidingMenuLink\r\n id='hamburger-login'\r\n replaceClass='navbar-login-button-ly'\r\n linkText='Agent Log In'\r\n linkUrl={getLoginReturnUrl()}\r\n showLink={!state.authorized && path !== '/login'}\r\n />\r\n\r\n <SlidingMenuLink\r\n id='hamburger-new-quote-button'\r\n replaceClass='navbar-new-quote-button-cp navbar-menu-new-quote-button'\r\n linkText='+ New Quote'\r\n linkUrl={newQuoteLink}\r\n showLink={state.authorized && !isLimitedAgentUser() && !isLanding}\r\n />\r\n\r\n <SlidingMenuLink\r\n id='hamburger-admin-link'\r\n linkText='Admin'\r\n linkUrl={pages.Admin}\r\n showLink={state.authorized && state.isAdmin}\r\n />\r\n\r\n <SlidingMenuLink\r\n id='hamburger-payment-link'\r\n linkText='Make a Payment'\r\n linkUrl={pages.MakeAPayment}\r\n showLink={true}\r\n />\r\n\r\n <SlidingMenuLink\r\n id='hamburger-change-mortgagee-link'\r\n linkText='Change Mortgagee Info'\r\n linkUrl={`${pages.ContactUs}?r=changeMortgagee`}\r\n showLink={true}\r\n />\r\n\r\n <SlidingMenuLink\r\n id='hamburger-history-link'\r\n linkText='History'\r\n linkUrl={pages.History(\r\n isHomeowner ? ProductLine.Homeowner : isFlood ? ProductLine.Flood : ProductLine.Commercial\r\n )}\r\n showLink={state.authorized}\r\n />\r\n\r\n <SlidingMenuLink\r\n id='hamburger-address-link'\r\n linkText='Addresses'\r\n linkUrl={Path.AddressManagement}\r\n showLink={state.authorized}\r\n />\r\n\r\n <SlidingMenuLink\r\n id={state.authorized ? 'hamburger-resources-link' : 'hamburger-faq-link'}\r\n linkText={state.authorized ? 'Agent Resources' : 'FAQs'}\r\n linkUrl={state.authorized ? 'https://agentresources.swyfft.com' : pages.FAQs}\r\n showLink={true}\r\n />\r\n\r\n <SlidingMenuLink\r\n id='hamburger-claims-link'\r\n linkText='Claims'\r\n linkUrl={pages.Claims}\r\n showLink={true}\r\n />\r\n\r\n <SlidingMenuLink\r\n id='hamburger-contact-link'\r\n linkText='Contact Us'\r\n linkUrl={pages.ContactUs}\r\n showLink={true}\r\n />\r\n\r\n <SlidingMenuLink\r\n id='hamburger-about-link'\r\n linkText='Our Company'\r\n linkUrl={pages.About}\r\n showLink={true}\r\n />\r\n\r\n <SlidingMenuLink\r\n id='hamburger-careers-link'\r\n linkText='Careers'\r\n linkUrl={pages.Careers}\r\n showLink={!state.authorized}\r\n />\r\n\r\n <SlidingMenuLink\r\n id='hamburger-logout-button'\r\n replaceClass='navbar-login-button-ly navbar-menu-login-button'\r\n linkText='Log Out'\r\n onClickFn={onLogout}\r\n showLink={state.authorized}\r\n />\r\n </SlidingMenu>\r\n </Portal>\r\n\r\n <div\r\n id='staticPlaceholder'\r\n className='navbar-static-placeholder'\r\n style={{ height: state.topOffset, backgroundColor: state.navColor }}\r\n />\r\n\r\n <AvailableStates\r\n top={state.topOffset}\r\n showStates={state.showStates}\r\n stateList={state.stateList}\r\n closeItemsFn={closeItems}\r\n stateListByProduct={state.stateListByProduct}\r\n />\r\n\r\n {isBannerVisible() && <Banner level={window.bannerLevel} message={getBannerMessage()} />}\r\n </header>\r\n );\r\n\r\n function renderProductLinks() {\r\n const appointedProductLine =\r\n ProductLine.parseOrDefault(getLoginDetails()?.appointedProductLineId) || ProductLine.Homeowner;\r\n return appointedProductLine.switch({\r\n onHomeowner: () => (\r\n <>\r\n <HomeownerLink />\r\n <CommercialLink />\r\n <FloodLink />\r\n </>\r\n ),\r\n onCommercial: () => (\r\n <>\r\n <CommercialLink />\r\n <HomeownerLink />\r\n <FloodLink />\r\n </>\r\n ),\r\n onFlood: () => (\r\n <>\r\n <FloodLink />\r\n <HomeownerLink />\r\n <CommercialLink />\r\n </>\r\n ),\r\n });\r\n }\r\n\r\n function HomeownerLink() {\r\n return (\r\n <ProductLink\r\n id='homeowners-link'\r\n linkText='Homeowners'\r\n linkUrl={pages.Root}\r\n linkHighlighted={isHomeowner}\r\n showStatesFn={() =>\r\n showStatesByProduct(\r\n [\r\n { product: 'Admitted', states: newBusinessStates.Homeowners },\r\n { product: 'E&S', states: newBusinessStates.HomeownersEandS },\r\n ],\r\n ProductLinks.Homeowners\r\n )\r\n }\r\n hideStatesFn={closeItems}\r\n locationIconActive={state.showStates && state.activeLink === ProductLinks.Homeowners}\r\n />\r\n );\r\n }\r\n\r\n function CommercialLink() {\r\n return (\r\n <ProductLink\r\n id='surplus-commercial-link'\r\n linkText='Commercial E&S Package'\r\n linkUrl={state.authorized ? Path.CommercialLanding : getLoginReturnUrl(Path.CommercialLanding)}\r\n linkHighlighted={isCommercial}\r\n showStatesFn={() => showStates(newBusinessStates.CommercialEandS, ProductLinks.CommercialAdmittedEandS)}\r\n hideStatesFn={closeItems}\r\n locationIconActive={state.showStates && state.activeLink === ProductLinks.CommercialAdmittedEandS}\r\n />\r\n );\r\n }\r\n\r\n function FloodLink() {\r\n return (\r\n <ProductLink\r\n id='flood-link'\r\n linkText='Flood'\r\n linkUrl={state.authorized ? pages.Flood : getLoginReturnUrl(pages.Flood)}\r\n linkHighlighted={isFlood}\r\n showStatesFn={() => showStates(newBusinessStates.Flood, ProductLinks.Flood)}\r\n hideStatesFn={closeItems}\r\n locationIconActive={state.showStates && state.activeLink === ProductLinks.Flood}\r\n />\r\n );\r\n }\r\n\r\n function isBannerVisible() {\r\n const appSettingsValid = toBoolean(window.bannerEnabled) && !!window.bannerMessage;\r\n return (\r\n !props.hideBanner &&\r\n // Hard-code banner visible for Commercial Topa disclaimer SW-33307\r\n (isCommercial || appSettingsValid)\r\n );\r\n }\r\n\r\n function getBannerMessage() {\r\n // Bypass app setting Commercial Topa disclaimer SW-33307\r\n return isCommercial\r\n ? 'Topa Insurance Company is not accepting new Commercial business opportunities at this time.'\r\n : window.bannerMessage || 'No banner message configured';\r\n }\r\n\r\n function onScroll() {\r\n setTop();\r\n offsetHeader();\r\n }\r\n\r\n function onResize() {\r\n setTop();\r\n offsetHeader();\r\n }\r\n\r\n function setTop() {\r\n const isTop = window.scrollY < 25;\r\n if (isTop !== state.isTop) setState(s => (s.isTop = isTop));\r\n if (isTop) offsetHeader();\r\n }\r\n\r\n function offsetHeader() {\r\n const nav = document.getElementById('navbar'),\r\n banner = document.getElementById('bannerWrapper'),\r\n layout = document.getElementById('swyfftLayoutWrapper'),\r\n path = window.location.pathname;\r\n\r\n if (nav) {\r\n const navColor = getComputedStyle(nav).backgroundColor;\r\n const topOffset = `${nav.offsetHeight}px`;\r\n\r\n setState(s => {\r\n s.navColor = navColor;\r\n s.topOffset = topOffset;\r\n });\r\n }\r\n\r\n if (banner && layout) {\r\n const oldPages =\r\n path === Path.AddressManagement || path === pages.FAQs || path === pages.About || path === pages.Login;\r\n\r\n if (path === pages.Root) {\r\n banner.setAttribute('style', `background-color: #273803;`);\r\n } else if (oldPages) {\r\n banner.setAttribute('style', `background-color: #000000;`);\r\n } else {\r\n const layoutColor = getComputedStyle(layout).backgroundColor;\r\n banner.setAttribute('style', `background-color: ${layoutColor};`);\r\n }\r\n }\r\n }\r\n\r\n function showStates(stateList: string[], activeLink: ProductLinks) {\r\n setState(s => {\r\n s.stateList = stateList;\r\n s.showStates = true;\r\n s.showUserInfo = false;\r\n s.menuExpanded = false;\r\n s.activeLink = activeLink;\r\n s.stateListByProduct = undefined;\r\n });\r\n }\r\n\r\n function showStatesByProduct(stateListByProduct: StatesByProduct[], activeLink: ProductLinks) {\r\n setState(s => {\r\n s.stateListByProduct = stateListByProduct;\r\n s.showStates = true;\r\n s.showUserInfo = false;\r\n s.menuExpanded = false;\r\n s.activeLink = activeLink;\r\n });\r\n }\r\n\r\n function closeItems() {\r\n setState(s => {\r\n s.showUserInfo = false;\r\n s.menuExpanded = false;\r\n s.showStates = false;\r\n });\r\n }\r\n\r\n async function onExpandMenu() {\r\n setState(s => {\r\n s.showUserInfo = false;\r\n s.showStates = false;\r\n s.menuExpanded = !s.menuExpanded;\r\n });\r\n\r\n await setTimeoutAsync(duration);\r\n }\r\n\r\n async function onLogout() {\r\n await logout();\r\n navigate(getRootPageForLoggedInAgent());\r\n }\r\n\r\n function getLoginReturnUrl(path?: string) {\r\n let url = '/login';\r\n if (props.loginReturnUrl) url += `?ReturnUrl=${props.loginReturnUrl}`;\r\n else if (path) url += `?ReturnUrl=${path}`;\r\n else if ((props.location || window.location.pathname).includes('/commercial'))\r\n url += `?ReturnUrl=${Path.CommercialLanding}`;\r\n return url;\r\n }\r\n\r\n function getNewQuoteLink() {\r\n if (isCommercial) return Path.CommercialLanding;\r\n if (isFlood) return pages.Flood;\r\n return pages.Root;\r\n }\r\n}\r\n"],"names":["BannerDismissStorageKey","Banner","hide","level","message","visible","setVisible","useState","className","clsx","__html","useMemo","decodeHtml","useEffect","toBoolean","getSessionData","jsx","dismissBanner","saveSessionData","StateLockup","stateCode","jsxs","Svg","window","undefined","LIBVERSION","EMPTY","UNKNOWN","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","UA_MAX_LENGTH","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","EDGE","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","MAC_OS","extend","regexes","extensions","mergedRegexes","i","enumerize","arr","enums","has","str1","str2","lowerize","str","majorize","version","trim","len","rgxMapper","ua","arrays","j","k","p","q","matches","match","regex","props","strMapper","map","oldSafariMap","windowsVersionMap","UAParser","_navigator","_ua","_uach","_rgxmap","_isSelfNav","_browser","_cpu","_device","_engine","_os","module","exports","$","parser","result","prop","this","lib","_interopDefault","ex","React","require$$0","React__default","require$$1","ClientUAInstance","browser","cpu","device","engine","os","setUa","userAgentString","parseUserAgent","userAgent","UserAgentInstance","UAHelper","ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread2","target","source","key","_defineProperty","_typeof","obj","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","value","_extends","_inherits","subClass","superClass","_setPrototypeOf","_getPrototypeOf","o","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","sourceSymbolKeys","_assertThisInitialized","self","_possibleConstructorReturn","call","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_i","_arr","_n","_d","_s","_e","err","minLen","_arrayLikeToArray","n","arr2","DeviceTypes","BrowserTypes","OsTypes","InitialDeviceTypes","checkDeviceType","type","setUserAgent","setDefaults","d","getNavigatorInstance","isIOS13Check","nav","browserPayload","isBrowser","mobilePayload","smartTvPayload","isSmartTV","consolePayload","isConsole","wearablePayload","isWearable","embeddedPayload","isEmbedded","deviceDetect","_ref","isMobile","isTablet","isMobileType","isTabletType","_ref2","isMobileAndTabletType","_ref3","isSmartTVType","_ref4","isBrowserType","_ref5","isWearableType","_ref6","isConsoleType","_ref7","isEmbeddedType","_ref8","getMobileVendor","_ref9","vendor","getMobileModel","_ref10","model","getDeviceType","_ref11","isAndroidType","_ref12","name","isWindowsType","_ref13","isMacOsType","_ref14","isWinPhoneType","_ref15","isIOSType","_ref16","getOsVersion","_ref17","getOsName","_ref18","isChromeType","_ref19","isFirefoxType","_ref20","isChromiumType","_ref21","isEdgeType","_ref22","isYandexType","_ref23","isSafariType","_ref24","isMobileSafariType","_ref25","isOperaType","_ref26","isIEType","_ref27","isMIUIType","_ref28","isSamsungBrowserType","_ref29","getBrowserFullVersion","_ref30","getBrowserVersion","_ref31","major","getBrowserName","_ref32","getEngineName","_ref33","getEngineVersion","_ref34","isElectronType","isEdgeChromiumType","getIOS13","getIPad13","getIphone13","getIPod13","getUseragent","userAg","buildSelectorsObject","options","isMobileSafari","isChromium","isMobileOnly","isDesktop","isAndroid","isWinPhone","isIOS","isChrome","isFirefox","isSafari","isOpera","isIE","osVersion","osName","fullBrowserVersion","browserVersion","browserName","mobileVendor","mobileModel","engineName","engineVersion","getUA","isEdge","isYandex","deviceType","isIOS13","isIPad13","isIPhone13","isIPod13","isElectron","isEdgeChromium","isLegacyEdge","isWindows","isMacOs","isMIUI","isSamsungBrowser","getSelectorsByUserAgent","_UAHelper$parseUserAg","AndroidView","renderWithFragment","children","BrowserView","IEView","IOSView","MobileView","TabletView","WinPhoneView","MobileOnlyView","SmartTVView","ConsoleView","WearableView","CustomView","condition","withOrientationChange","WrappedComponent","_React$Component","_class","_this","orientation","useMobileOrientation","_useState","_useState2","state","setState","handleOrientationChange","next","useDeviceData","hookUserAgent","useDeviceSelectors","deviceData","selectors","AvailableStates","top","showStates","stateList","closeItemsFn","stateListByProduct","mapStateListByProduct","Fragment","mapSingleStateList","list","index","Burger","React.Component","ProductLink","SubPageLink","Tooltip","TooltipSize","Link","baseClass","highlight","addClass","DropdownContainer","id","triggerRef","title","scrollable","position","usePosition","mod","clickOutClassName","useDocumentClick","selectorClassName","useClassName","UserStatus","buttonRef","useRef","getUserInitials","iconPaths","getUserRole","isInRole","role","Common.isInRole","AccessRole","IconButton","v","UserInfo","React.forwardRef","ref","_HubChannel","__publicField","HubChannel","Bell","IconBackground","forwardRef","onClick","badgeCount","disabled","iconBackgroundClassName","useTimeout","callBack","timeoutMs","dependencies","timeout","HttpError","errorMessage","statusCode","trueProto","TimeoutError","AbortError","UnsupportedTransportError","transport","DisabledTransportError","FailedToStartTransportError","FailedToNegotiateWithServerError","AggregateErrors","innerErrors","HttpResponse","statusText","content","HttpClient","url","LogLevel","NullLogger","_logLevel","_message","Arg","val","values","Platform","getDataDetail","data","includeContent","detail","isArrayBuffer","formatArrayBuffer","view","num","pad","sendMessage","logger","transportName","httpClient","headers","getUserAgentHeader","responseType","response","createLogger","ConsoleLogger","SubjectSubscription","subject","observer","_","minimumLogLevel","logLevel","msg","userAgentHeaderName","constructUserAgent","getRuntime","getRuntimeVersion","runtime","runtimeVersion","majorAndMinor","getErrorString","e","getGlobalThis","FetchHttpClient","requireFunc","request","abortController","error","timeoutId","msTimeout","deserializeContent","payload","cookies","c","XhrHttpClient","resolve","reject","xhr","header","DefaultHttpClient","TextMessageFormat","output","input","messages","HandshakeProtocol","handshakeRequest","messageData","remainingData","binaryData","separatorIndex","responseLength","textData","MessageType","Subject","item","DEFAULT_TIMEOUT_IN_MS","DEFAULT_PING_INTERVAL_IN_MS","HubConnectionState","HubConnection","connection","protocol","reconnectPolicy","handshakePromise","startPromise","methodName","args","streams","streamIds","invocationDescriptor","promiseQueue","cancelInvocation","invocationEvent","sendPromise","newMethod","method","handlers","removeIdx","callback","responseMessage","nextPing","invocationMessage","methods","methodsCopy","expectsResponse","res","exception","completionMessage","m","prevRes","reconnectStartTime","previousReconnectAttempts","retryError","nextRetryDelay","previousRetryCount","elapsedMilliseconds","retryReason","callbacks","nonblocking","invocationId","streamId","argument","arg","DEFAULT_RETRY_DELAYS_IN_MILLISECONDS","DefaultReconnectPolicy","retryDelays","retryContext","HeaderNames","AccessTokenHttpClient","innerClient","accessTokenFactory","allowRetry","HttpTransportType","TransferFormat","AbortController$1","LongPollingTransport","AbortController","transferFormat","pollOptions","pollUrl","deleteOptions","logMessage","ServerSentEventsTransport","accessToken","opened","eventSource","WebSocketTransport","logMessageContent","webSocketConstructor","token","webSocket","_event","event","MAX_REDIRECTS","HttpConnection","webSocketModule","eventSourceModule","TransportSendQueue","negotiateResponse","redirects","negotiateUrl","connectionToken","requestedTransport","requestedTransferFormat","connectUrl","transportExceptions","transports","negotiate","endpoint","transportOrError","transportMatches","s","aTag","actualTransport","_transport","PromiseSource","transportResult","arrayBuffers","totalLength","b","a","offset","reason","JSON_HUB_PROTOCOL_NAME","JsonHubProtocol","hubMessages","parsedMessage","LogLevelNameMapping","parseLogLevel","mapping","HubConnectionBuilder","logging","isLogger","transportTypeOrOptions","retryDelaysOrReconnectPolicy","httpConnectionOptions","Hub","channel","onMessage","apiError","normalizeError","logErrorSafe","dispatchMessagesOnConnect","NotificationIcon","count","setCount","animate","setAnimate","newCount","navigateToNotifications","navigate","SlidingMenuLink","SlidingMenu","shown","menuState","setMenuState","useComplexState","initial","updater","NavbarType","newBusinessStates","duration","Navbar","authorized","hasAuth","getUserName","getAgentName","isAdmin","useResize","onResize","useScroll","onScroll","setTop","offsetHeader","main","closeItems","path","isHomeowner","isCommercial","isFlood","isLanding","pages","Path","isHistory","isAddresses","newQuoteLink","getNewQuoteLink","productLinks","renderProductLinks","Portal","Grid","Row","Col","ProductLine","isLimitedAgentUser","getLoginReturnUrl","onLogout","getBooleanAppSetting","AppSetting","onExpandMenu","isBannerVisible","getBannerMessage","_a","getLoginDetails","HomeownerLink","CommercialLink","FloodLink","showStatesByProduct","appSettingsValid","isTop","banner","layout","navColor","topOffset","oldPages","layoutColor","activeLink","setTimeoutAsync","logout","getRootPageForLoggedInAgent"],"mappings":"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","x_google_ignoreList":[2,3,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37]}