openstack-uicore-foundation
Version:
ui reactjs components for openstack marketing site
2 lines • 8.83 kB
JavaScript
!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],o):"object"==typeof exports?exports["openstack-uicore-foundation"]=o():e["openstack-uicore-foundation"]=o()}(this,(()=>(()=>{"use strict";var e={5097:(e,o,t)=>{t(1116),t(6842),t(9087),t(9558),t(2183)},3195:(e,o,t)=>{t.d(o,{AUTH_ERROR_ACCESS_TOKEN_EXPIRED:()=>s,AUTH_ERROR_LOCK_ACQUIRE_ERROR:()=>i,AUTH_ERROR_MISSING_AUTH_INFO:()=>r,AUTH_ERROR_MISSING_REFRESH_TOKEN:()=>n,AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR:()=>c,AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR:()=>a});const r="AUTH_ERROR_MISSING_AUTH_INFO",n="AUTH_ERROR_MISSING_REFRESH_TOKEN",s="AUTH_ERROR_ACCESS_TOKEN_EXPIRED",i="AUTH_ERROR_LOCK_ACQUIRE_ERROR",a="AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR",c="AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR"},2183:(e,o,t)=>{t.d(o,{getAccessToken:()=>f});var r=t(9558),n=t(5812),s=t.n(n);t(806);const i=require("browser-tabs-lock");var a=t.n(i);const c=require("js-cookie");var R=t.n(c),u=(t(8041),t(9891),t(5097),t(8853),t(3195));const Lock=new(a()),GET_TOKEN_SILENTLY_LOCK_KEY="openstackuicore.lock.getTokenSilently",d="code",l="authInfo",_="idToken",E=async(e,o)=>{if(e===d&&g()){if(!o)throw m(),Error(u.AUTH_ERROR_MISSING_REFRESH_TOKEN);let e=await(async(e,o=5,t=1e3)=>{for(let r=0;r<o;r++)try{return await e()}catch(e){if(!e.message||!e.message.startsWith(u.AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR)||r===o-1)throw e;const n=t*Math.pow(2,r);console.log(`retryWithBackoff retry ${r+1}/${o} in ${n}ms`),await new Promise((e=>setTimeout(e,n)))}})((()=>T(o))),{access_token:t,expires_in:r,refresh_token:n,id_token:s}=e;return void 0===n&&(n=null),w(t,r,n,s),t}throw m(),Error(u.AUTH_ERROR_ACCESS_TOKEN_EXPIRED)},p=async()=>{console.log("openstack-uicore-foundation::Security::methods::_getAccessToken");let e=O();if(!e)throw console.log("openstack-uicore-foundation::Security::methods::_getAccessToken AUTH_ERROR_MISSING_AUTH_INFO"),Error(u.AUTH_ERROR_MISSING_AUTH_INFO);let{accessToken:o,expiresIn:t,accessTokenUpdatedAt:r,refreshToken:n}=e,i=y();const a=s()().unix();let c=a-r;return t-=60,console.log(`openstack-uicore-foundation::Security::methods::_getAccessToken now ${a} accessTokenUpdatedAt ${r} expiresIn ${t} timeElapsedSecs ${c}`),(c>=t||null==o)&&(console.log("openstack-uicore-foundation::Security::methods::_getAccessToken access token expired, refreshing it ..."),o=await E(i,n)),o},f=async()=>{if("undefined"!=typeof navigator&&navigator.locks)return await navigator.locks.request(GET_TOKEN_SILENTLY_LOCK_KEY,(async e=>(console.log("openstack-uicore-foundation::Security::methods::getAccessToken web lock api",e),await p())));if(!await(0,r.retryPromise)((()=>Lock.acquireLock(GET_TOKEN_SILENTLY_LOCK_KEY,6e3)),10))throw Error(u.AUTH_ERROR_LOCK_ACQUIRE_ERROR);try{return await p()}finally{await Lock.releaseLock(GET_TOKEN_SILENTLY_LOCK_KEY)}},T=async e=>{let o=k(),t=S();const n={grant_type:"refresh_token",client_id:encodeURI(t),refresh_token:e},s=new AbortController,i=setTimeout((()=>s.abort()),1e4);let a,c;try{a=await fetch(`${o}/oauth2/token`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(n),signal:s.signal})}catch(e){throw console.log("refreshAccessToken network error:",e.message),Error(`${u.AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR}: ${e.message}`)}finally{clearTimeout(i)}if(!a.ok){if(console.log(`refreshAccessToken server error: ${a.status} - ${a.statusText}`),a.status>=500||408===a.status||429===a.status)throw Error(`${u.AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR}: ${a.status} - ${a.statusText}`);throw(0,r.setSessionClearingState)(!0),Error(`${u.AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR}: ${a.status} - ${a.statusText}`)}try{c=await a.json()}catch(e){throw Error(`${u.AUTH_ERROR_REFRESH_TOKEN_NETWORK_ERROR}: invalid JSON response from IDP`)}let{access_token:R,refresh_token:d,expires_in:l,id_token:_}=c;if(!R)throw(0,r.setSessionClearingState)(!0),Error(`${u.AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR}: missing access_token in refresh response`);return{access_token:R,refresh_token:d,expires_in:l,id_token:_}},w=(e,o,t=null,n=null)=>{let s=O(),i={accessToken:e,expiresIn:o,accessTokenUpdatedAt:Math.floor(Date.now()/1e3)};null==t&&s&&(t=s.refreshToken),null==n&&s&&(n=s.idToken),t&&(i.refreshToken=t),n?(i[_]=n,R().set(_,n,{secure:!0,sameSite:"Lax"})):R().remove(_),(0,r.putOnLocalStorage)(l,JSON.stringify(i))},O=()=>{try{let e=(0,r.getFromLocalStorage)(l,!1);return e?JSON.parse(e):null}catch(e){return null}},m=()=>{"undefined"!=typeof window&&((0,r.removeFromLocalStorage)(l),R().remove(_))},S=()=>"undefined"!=typeof window?window.OAUTH2_CLIENT_ID:null,y=()=>"undefined"!=typeof window&&window.OAUTH2_FLOW||"token id_token",g=()=>"undefined"==typeof window||new Boolean(window.OAUTH2_USE_REFRESH_TOKEN||!0),k=()=>"undefined"!=typeof window?window.IDP_BASE_URL:null},9087:(e,o,t)=>{t(2462),t(1116),t(806);var r=t(8041),n=t.n(r);t(9236),t(6842),t(9558),t(5097),t(2183),t(3209);n().escapeQuerySpace=!1;const s=e=>o=>({type:e,payload:o});s("RESET_LOADING"),s("START_LOADING"),s("STOP_LOADING")},3209:(e,o,t)=>{},8853:()=>{require("spark-md5"),require("crypto-js/sha256"),require("crypto-js/enc-base64url"),require("crypto-js/enc-hex"),"undefined"!=typeof window&&(window.crypto||window.msCrypto)},9558:(e,o,t)=>{t.d(o,{getFromLocalStorage:()=>n,putOnLocalStorage:()=>r,removeFromLocalStorage:()=>s,retryPromise:()=>a,setSessionClearingState:()=>i});t(5812),t(8041);const r=(e,o)=>{"undefined"!=typeof window&&window.localStorage.setItem(e,o)},n=(e,o)=>{if("undefined"!=typeof window){let t=window.localStorage.getItem(e);return o&&(console.log(`getFromLocalStorage removing key ${e}`),s(e)),t}return null},s=e=>{"undefined"!=typeof window&&window.localStorage.removeItem(e)},i=e=>{"undefined"!=typeof window&&(window.clearing_session_state=e)},a=async(e,o=3)=>{for(let t=0;t<o;t++)if(await e())return!0;return!1}},1116:e=>{e.exports=require("@babel/runtime/helpers/defineProperty")},2462:e=>{e.exports=require("@babel/runtime/helpers/objectWithoutProperties")},6842:e=>{e.exports=require("i18n-react/dist/i18n-react")},9891:e=>{e.exports=require("idtoken-verifier")},5812:e=>{e.exports=require("moment-timezone")},9825:e=>{e.exports=require("prop-types")},2015:e=>{e.exports=require("react")},806:e=>{e.exports=require("superagent/lib/client")},9236:e=>{e.exports=require("sweetalert2")},8041:e=>{e.exports=require("urijs")}},o={};function t(r){var n=o[r];if(void 0!==n)return n.exports;var s=o[r]={exports:{}};return e[r](s,s.exports,t),s.exports}(()=>{t.n=e=>{var o=e&&e.__esModule?()=>e.default:()=>e;return t.d(o,{a:o}),o}})(),(()=>{t.d=(e,o)=>{for(var r in o)t.o(o,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:o[r]})}})(),(()=>{t.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o)})(),(()=>{t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})();var r={};t.r(r),t.d(r,{default:()=>E});var n=t(1116),s=t.n(n),i=t(2015),a=t.n(i),c=t(9825),R=t.n(c),u=t(806),d=t.n(u),l=t(2183);class _ extends a().Component{constructor(...e){super(...e),s()(this,"trackEnter",(async()=>{const{apiBaseUrl:e,summitId:o,sourceId:t,sourceName:r}=this.props,n=this.getLocation();try{const s=await(0,l.getAccessToken)();d().put(`${e}/api/v1/summits/${o}/metrics/enter`).send({access_token:s,type:r,source_id:t,location:n}).end((()=>console.log("ENTER PAGE")))}catch(e){console.log(e)}})),s()(this,"trackLeave",(async()=>{const{apiBaseUrl:e,summitId:o,sourceId:t,sourceName:r}=this.props,n=this.getLocation();try{const s=await(0,l.getAccessToken)();d().post(`${e}/api/v1/summits/${o}/metrics/leave`).send({access_token:s,type:r,source_id:t,location:n}).end((()=>console.log("LEFT PAGE")))}catch(e){console.log(e)}})),s()(this,"onBeforeUnload",(async()=>{const{apiBaseUrl:e,summitId:o,sourceId:t,sourceName:r}=this.props,n=this.getLocation();try{const s=await(0,l.getAccessToken)();return void navigator.sendBeacon(`${e}/api/v1/summits/${o}/metrics/leave?access_token=${s}&type=${r}&source_id=${t}&location=${n}`,{})}catch(e){console.log(e)}})),s()(this,"getLocation",(()=>"undefined"!=typeof window?encodeURIComponent(window.location.href):""))}componentDidMount(){const{trackEnter:e,onBeforeUnload:o}=this;e(),"undefined"!=typeof window&&window.addEventListener("beforeunload",o)}componentWillUnmount(){const{trackLeave:e,onBeforeUnload:o}=this;e(),"undefined"!=typeof window&&window.removeEventListener("beforeunload",o)}render(){return null}}_.propTypes={sourceName:R().string,sourceId:R().number,summitId:R().number.isRequired,apiBaseUrl:R().string.isRequired},_.defaultProps={sourceId:0,sourceName:"GENERAL"};const E=_;return r})()));
//# sourceMappingURL=attendance-tracker.js.map