@reachfive/identity-ui 1.16.1 → 1.16.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,12 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [1.16.2] - 2022-08-03
11
+
12
+ ### Fixes
13
+
14
+ Upgrade identity-web-core-sdk version to 1.24.1
15
+
10
16
  ## [1.16.1] - 2022-07-29
11
17
 
12
18
  ### Fixes
@@ -288,7 +294,9 @@ The eye icon is now correctly displayed in the Auth widget.
288
294
 
289
295
  First version of the SDK Web UI.
290
296
 
291
- [Unreleased]: https://github.com/ReachFive/identity-web-ui-sdk/compare/v1.16.1...HEAD
297
+ [Unreleased]: https://github.com/ReachFive/identity-web-ui-sdk/compare/v1.16.2...HEAD
298
+
299
+ [1.16.2]: https://github.com/ReachFive/identity-web-ui-sdk/compare/v1.16.1...v1.16.2
292
300
 
293
301
  [1.16.1]: https://github.com/ReachFive/identity-web-ui-sdk/compare/v1.16.0...v1.16.1
294
302
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reachfive/identity-ui",
3
- "version": "1.16.1",
3
+ "version": "1.16.2",
4
4
  "description": "ReachFive Identity Web UI SDK",
5
5
  "author": "ReachFive",
6
6
  "repository": {
@@ -19,7 +19,7 @@
19
19
  },
20
20
  "dependencies": {
21
21
  "@hypnosphi/recompose": "0.30.5",
22
- "@reachfive/identity-core": "1.24.0",
22
+ "@reachfive/identity-core": "1.24.1",
23
23
  "@reachfive/zxcvbn": "1.0.0-alpha.2",
24
24
  "char-info": "0.3.2",
25
25
  "classnames": "2.2.6",
@@ -8348,10 +8348,10 @@
8348
8348
  * Parse the id token, if present, and add the payload to the AuthResult
8349
8349
  */function enrichAuthResult(response){if(response.idToken){try{var idTokenPayload=parseJwtTokenPayload(response.idToken);return _assign(_assign({},response),{idTokenPayload:idTokenPayload});}catch(e){logError('ID Token parsing error',e);}}return response;}var AuthResult;(function(AuthResult){function isAuthResult(thing){return thing&&(thing.accessToken||thing.idToken||thing.code);}AuthResult.isAuthResult=isAuthResult;})(AuthResult||(AuthResult={}));function popupSize(provider){switch(provider){case'amazon':return {width:715,height:525};case'facebook':return {width:650,height:400};case'google':return {width:560,height:630};case'kakaotalk':return {width:450,height:400};case'line':return {width:440,height:550};case'mailru':return {width:450,height:400};case'qq':return {width:450,height:400};case'twitter':return {width:800,height:440};case'vkontakte':return {width:655,height:430};case'yandex':return {width:655,height:700};default:return {width:400,height:550};}}function randomBase64String(){var randomValues=window.crypto.getRandomValues(new Uint8Array(32));return encodeToBase64(randomValues);}function computePkceParams(){var codeVerifier=randomBase64String();sessionStorage.setItem('verifier_key',codeVerifier);return computeCodeChallenge(codeVerifier).then(function(challenge){return {codeChallenge:challenge,codeChallengeMethod:'S256'};});}function computeCodeChallenge(verifier){var binaryChallenge=buffer_1.from(verifier,'utf-8');return new Promise(function(resolve){window.crypto.subtle.digest('SHA-256',binaryChallenge).then(function(hash){return resolve(encodeToBase64(hash));});});}/**
8350
8350
  * Identity Rest API Client
8351
- */var OAuthClient=/** @class */function(){function OAuthClient(props){this.config=props.config;this.http=props.http;this.eventManager=props.eventManager;this.authorizeUrl=this.config.baseUrl+"/oauth/authorize";this.customTokenUrl=this.config.baseUrl+"/identity/v1/custom-token/login";this.logoutUrl=this.config.baseUrl+"/identity/v1/logout";this.passwordlessVerifyUrl=this.config.baseUrl+"/identity/v1/passwordless/verify";this.popupRelayUrl=this.config.baseUrl+"/popup/relay";this.tokenUrl=this.config.baseUrl+"/oauth/token";this.passwordlessVerifyAuthCodeUrl='/verify-auth-code';this.passwordLoginUrl='/password/login';this.passwordlessStartUrl='/passwordless/start';this.sessionInfoUrl='/sso/data';this.signupUrl='/signup';this.signupTokenUrl='/signup-token';}OAuthClient.prototype.checkSession=function(opts){var _this=this;if(opts===void 0){opts={};}if(!this.config.sso)return Promise.reject(new Error("Cannot call 'checkSession' if SSO is not enabled."));var authParams=this.authParams(_assign(_assign({},opts),{responseType:'code',useWebMessage:true}));return this.getPkceParams(authParams).then(function(maybeChallenge){var params=_assign(_assign({},authParams),maybeChallenge);var authorizationUrl=_this.getAuthorizationUrl(params);return _this.getWebMessage(authorizationUrl,opts.redirectUri);});};OAuthClient.prototype.exchangeAuthorizationCodeWithPkce=function(params){var _this=this;return this.http.post(this.tokenUrl,{body:_assign({clientId:this.config.clientId,grantType:'authorization_code',codeVerifier:sessionStorage.getItem('verifier_key')},params)}).then(function(authResult){_this.eventManager.fireEvent('authenticated',authResult);return enrichAuthResult(authResult);});};OAuthClient.prototype.getSessionInfo=function(){return this.http.get(this.sessionInfoUrl,{query:{clientId:this.config.clientId},withCookies:true});};OAuthClient.prototype.loginFromSession=function(opts){var _this=this;if(opts===void 0){opts={};}if(!this.config.sso)return Promise.reject(new Error("Cannot call 'loginFromSession' if SSO is not enabled."));var authParams=this.authParams(_assign(_assign({},opts),{useWebMessage:false}));return this.getPkceParams(authParams).then(function(maybeChallenge){var params=_assign(_assign({},authParams),maybeChallenge);return _this.redirectThruAuthorization(params);});};OAuthClient.prototype.loginWithCredentials=function(params){var _this=this;if(navigator.credentials&&navigator.credentials.get){var request={password:true,mediation:params.mediation||'silent'};return navigator.credentials.get(request).then(function(credentials){if(!isUndefined_1(credentials)&&credentials instanceof PasswordCredential&&credentials.password){var loginParams={email:credentials.id,password:credentials.password,auth:params.auth};return _this.ropcPasswordLogin(loginParams);}return Promise.reject(new Error('Invalid credentials'));});}else {return Promise.reject(new Error('Unsupported Credentials Management API'));}};OAuthClient.prototype.loginWithCustomToken=function(params){var token=params.token,auth=params.auth;var queryString=toQueryString(_assign(_assign({},this.authParams(auth)),{token:token}));// Non existent endpoint URL
8352
- window.location.assign(this.customTokenUrl+"?"+queryString);};OAuthClient.prototype.loginWithPassword=function(params){var _this=this;var _a=params.auth,auth=_a===void 0?{}:_a,rest=__rest(params,["auth"]);var loginPromise=window.cordova?this.ropcPasswordLogin(params).then(function(authResult){return _this.storeCredentialsInBrowser(params).then(function(){return enrichAuthResult(authResult);});}):this.http.post(this.passwordLoginUrl,{body:_assign({clientId:this.config.clientId,scope:resolveScope(auth,this.config.scope)},rest)}).then(function(tkn){return _this.storeCredentialsInBrowser(params).then(function(){return tkn;});}).then(function(tkn){return _this.loginCallback(tkn,auth);});return loginPromise["catch"](function(err){if(err.error){_this.eventManager.fireEvent('login_failed',err);}return Promise.reject(err);});};OAuthClient.prototype.loginWithSocialProvider=function(provider,opts){var _this=this;if(opts===void 0){opts={};}if(this.config.orchestrationToken){var params=_assign(_assign({},this.orchestratedFlowParams(this.config.orchestrationToken,_assign(_assign({},opts),{useWebMessage:false}))),{provider:provider});if('cordova'in window){return this.loginWithCordovaInAppBrowser(params);}else if(params.display==='popup'){return this.loginWithPopup(params);}else {return this.redirectThruAuthorization(params);}}else {var authParams_1=this.authParams(_assign(_assign({},opts),{useWebMessage:false}),{acceptPopupMode:true});return this.getPkceParams(authParams_1).then(function(maybeChallenge){var params=_assign(_assign(_assign({},authParams_1),{provider:provider}),maybeChallenge);if('cordova'in window){return _this.loginWithCordovaInAppBrowser(params);}else if(params.display==='popup'){return _this.loginWithPopup(params);}else {return _this.redirectThruAuthorization(params);}});}};OAuthClient.prototype.loginWithIdToken=function(provider,idToken,nonce,opts){if(opts===void 0){opts={};}var authParams=this.authParams(_assign({},opts));if(opts.useWebMessage){var queryString=toQueryString(_assign(_assign({},authParams),{provider:provider,idToken:idToken,nonce:nonce}));return this.getWebMessage(this.authorizeUrl+"?"+queryString,opts.redirectUri).then();}else {return this.redirectThruAuthorization(_assign(_assign({},authParams),{provider:provider,idToken:idToken,nonce:nonce}));}};OAuthClient.prototype.googleOneTap=function(opts,nonce){var _this=this;if(opts===void 0){opts={};}if(nonce===void 0){nonce=randomBase64String();}var binaryNonce=buffer_1.from(nonce,'utf-8');return window.crypto.subtle.digest('SHA-256',binaryNonce).then(function(hash){var googleIdConfiguration={client_id:_this.config.googleClientId,callback:function callback(response){return _this.loginWithIdToken("google",response.credential,nonce,opts);},nonce:encodeToBase64(hash),// Enable auto sign-in
8351
+ */var OAuthClient=/** @class */function(){function OAuthClient(props){this.config=props.config;this.http=props.http;this.eventManager=props.eventManager;this.authorizeUrl=this.config.baseUrl+"/oauth/authorize";this.customTokenUrl=this.config.baseUrl+"/identity/v1/custom-token/login";this.logoutUrl=this.config.baseUrl+"/identity/v1/logout";this.passwordlessVerifyUrl=this.config.baseUrl+"/identity/v1/passwordless/verify";this.popupRelayUrl=this.config.baseUrl+"/popup/relay";this.tokenUrl=this.config.baseUrl+"/oauth/token";this.passwordlessVerifyAuthCodeUrl='/verify-auth-code';this.passwordLoginUrl='/password/login';this.passwordlessStartUrl='/passwordless/start';this.sessionInfoUrl='/sso/data';this.signupUrl='/signup';this.signupTokenUrl='/signup-token';}OAuthClient.prototype.checkSession=function(opts){var _this=this;if(opts===void 0){opts={};}if(!this.config.sso)return Promise.reject(new Error("Cannot call 'checkSession' if SSO is not enabled."));var authParams=this.authParams(_assign(_assign({},opts),{responseType:'code',useWebMessage:true}));return this.getPkceParams(authParams).then(function(maybeChallenge){var params=_assign(_assign({},authParams),maybeChallenge);var authorizationUrl=_this.getAuthorizationUrl(params);return _this.getWebMessage(authorizationUrl,_this.config.baseUrl,opts.redirectUri);});};OAuthClient.prototype.exchangeAuthorizationCodeWithPkce=function(params){var _this=this;return this.http.post(this.tokenUrl,{body:_assign({clientId:this.config.clientId,grantType:'authorization_code',codeVerifier:sessionStorage.getItem('verifier_key')},params)}).then(function(authResult){_this.eventManager.fireEvent('authenticated',authResult);return enrichAuthResult(authResult);});};OAuthClient.prototype.getSessionInfo=function(){return this.http.get(this.sessionInfoUrl,{query:{clientId:this.config.clientId},withCookies:true});};OAuthClient.prototype.loginFromSession=function(opts){var _this=this;if(opts===void 0){opts={};}if(!this.config.sso)return Promise.reject(new Error("Cannot call 'loginFromSession' if SSO is not enabled."));var authParams=this.authParams(_assign(_assign({},opts),{useWebMessage:false}));return this.getPkceParams(authParams).then(function(maybeChallenge){var params=_assign(_assign({},authParams),maybeChallenge);return _this.redirectThruAuthorization(params);});};OAuthClient.prototype.loginWithCredentials=function(params){var _this=this;if(navigator.credentials&&navigator.credentials.get){var request={password:true,mediation:params.mediation||'silent'};return navigator.credentials.get(request).then(function(credentials){if(!isUndefined_1(credentials)&&credentials instanceof PasswordCredential&&credentials.password){var loginParams={email:credentials.id,password:credentials.password,auth:params.auth};return _this.ropcPasswordLogin(loginParams);}return Promise.reject(new Error('Invalid credentials'));});}else {return Promise.reject(new Error('Unsupported Credentials Management API'));}};OAuthClient.prototype.loginWithCustomToken=function(params){var token=params.token,auth=params.auth;var queryString=toQueryString(_assign(_assign({},this.authParams(auth)),{token:token}));// Non existent endpoint URL
8352
+ window.location.assign(this.customTokenUrl+"?"+queryString);};OAuthClient.prototype.loginWithPassword=function(params){var _this=this;var _a=params.auth,auth=_a===void 0?{}:_a,rest=__rest(params,["auth"]);var loginPromise=window.cordova?this.ropcPasswordLogin(params).then(function(authResult){return _this.storeCredentialsInBrowser(params).then(function(){return enrichAuthResult(authResult);});}):this.http.post(this.passwordLoginUrl,{body:_assign({clientId:this.config.clientId,scope:resolveScope(auth,this.config.scope)},rest)}).then(function(tkn){return _this.storeCredentialsInBrowser(params).then(function(){return tkn;});}).then(function(tkn){return _this.loginCallback(tkn,auth);});return loginPromise["catch"](function(err){if(err.error){_this.eventManager.fireEvent('login_failed',err);}return Promise.reject(err);});};OAuthClient.prototype.loginWithSocialProvider=function(provider,opts){var _this=this;if(opts===void 0){opts={};}if(this.config.orchestrationToken){var params=_assign(_assign({},this.orchestratedFlowParams(this.config.orchestrationToken,_assign(_assign({},opts),{useWebMessage:false}))),{provider:provider});if('cordova'in window){return this.loginWithCordovaInAppBrowser(params);}else if(params.display==='popup'){return this.loginWithPopup(params);}else {return this.redirectThruAuthorization(params);}}else {var authParams_1=this.authParams(_assign(_assign({},opts),{useWebMessage:false}),{acceptPopupMode:true});return this.getPkceParams(authParams_1).then(function(maybeChallenge){var params=_assign(_assign(_assign({},authParams_1),{provider:provider}),maybeChallenge);if('cordova'in window){return _this.loginWithCordovaInAppBrowser(params);}else if(params.display==='popup'){return _this.loginWithPopup(params);}else {return _this.redirectThruAuthorization(params);}});}};OAuthClient.prototype.loginWithIdToken=function(provider,idToken,nonce,opts){if(opts===void 0){opts={};}var authParams=this.authParams(_assign({},opts));if(opts.useWebMessage){var queryString=toQueryString(_assign(_assign({},authParams),{provider:provider,idToken:idToken,nonce:nonce}));return this.getWebMessage(this.authorizeUrl+"?"+queryString,this.config.baseUrl,opts.redirectUri).then();}else {return this.redirectThruAuthorization(_assign(_assign({},authParams),{provider:provider,idToken:idToken,nonce:nonce}));}};OAuthClient.prototype.googleOneTap=function(opts,nonce){var _this=this;if(opts===void 0){opts={};}if(nonce===void 0){nonce=randomBase64String();}var binaryNonce=buffer_1.from(nonce,'utf-8');return window.crypto.subtle.digest('SHA-256',binaryNonce).then(function(hash){var googleIdConfiguration={client_id:_this.config.googleClientId,callback:function callback(response){return _this.loginWithIdToken("google",response.credential,nonce,opts);},nonce:encodeToBase64(hash),// Enable auto sign-in
8353
8353
  auto_select:true};window.google.accounts.id.initialize(googleIdConfiguration);// Activate Google One Tap
8354
- window.google.accounts.id.prompt();});};OAuthClient.prototype.instantiateOneTap=function(opts){var _this=this;var _a,_b;if(opts===void 0){opts={};}if((_a=this.config)===null||_a===void 0?void 0:_a.googleClientId){var script=document.createElement("script");script.src="https://accounts.google.com/gsi/client";script.onload=function(){return _this.googleOneTap(opts);};script.async=true;script.defer=true;(_b=document.querySelector("body"))===null||_b===void 0?void 0:_b.appendChild(script);}else {logError('Google configuration missing.');}};OAuthClient.prototype.logout=function(opts){if(opts===void 0){opts={};}if(navigator.credentials&&navigator.credentials.preventSilentAccess&&opts.removeCredentials===true){navigator.credentials.preventSilentAccess();}window.location.assign(this.logoutUrl+"?"+toQueryString(opts));};OAuthClient.prototype.refreshTokens=function(params){var result=this.http.post(this.tokenUrl,{body:_assign({clientId:this.config.clientId,grantType:'refresh_token',refreshToken:params.refreshToken},pick_1(params,'scope'))});return result.then(enrichAuthResult);};OAuthClient.prototype.signup=function(params){var _this=this;var data=params.data,auth=params.auth,redirectUrl=params.redirectUrl,returnToAfterEmailConfirmation=params.returnToAfterEmailConfirmation,saveCredentials=params.saveCredentials,captchaToken=params.captchaToken;var clientId=this.config.clientId;var scope=resolveScope(auth,this.config.scope);var loginParams=_assign(_assign({},data.phoneNumber?{phoneNumber:data.phoneNumber}:{email:data.email||""}),{password:data.password,saveCredentials:saveCredentials,auth:auth});var resultPromise=window.cordova?this.http.post(this.signupTokenUrl,{body:_assign(_assign({clientId:clientId,redirectUrl:redirectUrl,scope:scope},pick_1(auth,'origin')),{data:data,returnToAfterEmailConfirmation:returnToAfterEmailConfirmation,captchaToken:captchaToken})}).then(function(authResult){_this.eventManager.fireEvent('authenticated',authResult);return _this.storeCredentialsInBrowser(loginParams).then(function(){return enrichAuthResult(authResult);});}):this.http.post(this.signupUrl,{body:{clientId:clientId,redirectUrl:redirectUrl,scope:scope,data:data,returnToAfterEmailConfirmation:returnToAfterEmailConfirmation,captchaToken:captchaToken}}).then(function(tkn){return _this.storeCredentialsInBrowser(loginParams).then(function(){return tkn;});}).then(function(tkn){return _this.loginCallback(tkn,auth);});return resultPromise["catch"](function(err){if(err.error){_this.eventManager.fireEvent('signup_failed',err);}return Promise.reject(err);});};OAuthClient.prototype.startPasswordless=function(params,auth){var _this=this;if(auth===void 0){auth={};}var passwordlessPayload='stepUp'in params?Promise.resolve(params):this.resolveSingleFactorPasswordlessParams(params,auth);return passwordlessPayload.then(function(payload){return _this.http.post(_this.passwordlessStartUrl,{body:payload});});};OAuthClient.prototype.verifyPasswordless=function(params,auth){var _this=this;if(auth===void 0){auth={};}return 'challengeId'in params?Promise.resolve(this.loginWithVerificationCode(params)):this.http.post(this.passwordlessVerifyAuthCodeUrl,{body:params})["catch"](function(err){if(err.error)_this.eventManager.fireEvent('login_failed',err);return Promise.reject(err);}).then(function(){return _this.loginWithVerificationCode(params,auth);});};OAuthClient.prototype.getAuthorizationUrl=function(queryString){return this.authorizeUrl+"?"+toQueryString(queryString);};OAuthClient.prototype.getWebMessage=function(src,redirectUri){var _this=this;var iframe=document.createElement('iframe');// "wm" needed to make sure the randomized id is valid
8354
+ window.google.accounts.id.prompt();});};OAuthClient.prototype.instantiateOneTap=function(opts){var _this=this;var _a,_b;if(opts===void 0){opts={};}if((_a=this.config)===null||_a===void 0?void 0:_a.googleClientId){var script=document.createElement("script");script.src="https://accounts.google.com/gsi/client";script.onload=function(){return _this.googleOneTap(opts);};script.async=true;script.defer=true;(_b=document.querySelector("body"))===null||_b===void 0?void 0:_b.appendChild(script);}else {logError('Google configuration missing.');}};OAuthClient.prototype.logout=function(opts){if(opts===void 0){opts={};}if(navigator.credentials&&navigator.credentials.preventSilentAccess&&opts.removeCredentials===true){navigator.credentials.preventSilentAccess();}window.location.assign(this.logoutUrl+"?"+toQueryString(opts));};OAuthClient.prototype.refreshTokens=function(params){var result=this.http.post(this.tokenUrl,{body:_assign({clientId:this.config.clientId,grantType:'refresh_token',refreshToken:params.refreshToken},pick_1(params,'scope'))});return result.then(enrichAuthResult);};OAuthClient.prototype.signup=function(params){var _this=this;var data=params.data,auth=params.auth,redirectUrl=params.redirectUrl,returnToAfterEmailConfirmation=params.returnToAfterEmailConfirmation,saveCredentials=params.saveCredentials,captchaToken=params.captchaToken;var clientId=this.config.clientId;var scope=resolveScope(auth,this.config.scope);var loginParams=_assign(_assign({},data.phoneNumber?{phoneNumber:data.phoneNumber}:{email:data.email||""}),{password:data.password,saveCredentials:saveCredentials,auth:auth});var resultPromise=window.cordova?this.http.post(this.signupTokenUrl,{body:_assign(_assign({clientId:clientId,redirectUrl:redirectUrl,scope:scope},pick_1(auth,'origin')),{data:data,returnToAfterEmailConfirmation:returnToAfterEmailConfirmation,captchaToken:captchaToken})}).then(function(authResult){_this.eventManager.fireEvent('authenticated',authResult);return _this.storeCredentialsInBrowser(loginParams).then(function(){return enrichAuthResult(authResult);});}):this.http.post(this.signupUrl,{body:{clientId:clientId,redirectUrl:redirectUrl,scope:scope,data:data,returnToAfterEmailConfirmation:returnToAfterEmailConfirmation,captchaToken:captchaToken}}).then(function(tkn){return _this.storeCredentialsInBrowser(loginParams).then(function(){return tkn;});}).then(function(tkn){return _this.loginCallback(tkn,auth);});return resultPromise["catch"](function(err){if(err.error){_this.eventManager.fireEvent('signup_failed',err);}return Promise.reject(err);});};OAuthClient.prototype.startPasswordless=function(params,auth){var _this=this;if(auth===void 0){auth={};}var passwordlessPayload='stepUp'in params?Promise.resolve(params):this.resolveSingleFactorPasswordlessParams(params,auth);return passwordlessPayload.then(function(payload){return _this.http.post(_this.passwordlessStartUrl,{body:payload});});};OAuthClient.prototype.verifyPasswordless=function(params,auth){var _this=this;if(auth===void 0){auth={};}return 'challengeId'in params?Promise.resolve(this.loginWithVerificationCode(params)):this.http.post(this.passwordlessVerifyAuthCodeUrl,{body:params})["catch"](function(err){if(err.error)_this.eventManager.fireEvent('login_failed',err);return Promise.reject(err);}).then(function(){return _this.loginWithVerificationCode(params,auth);});};OAuthClient.prototype.getAuthorizationUrl=function(queryString){return this.authorizeUrl+"?"+toQueryString(queryString);};OAuthClient.prototype.getWebMessage=function(src,origin,redirectUri){var _this=this;var iframe=document.createElement('iframe');// "wm" needed to make sure the randomized id is valid
8355
8355
  var id="wm"+randomBase64String();iframe.setAttribute('width','0');iframe.setAttribute('height','0');iframe.setAttribute('style','display:none;');iframe.setAttribute('id',id);iframe.setAttribute('src',src);return new Promise(function(resolve,reject){var listener=function listener(event){// Verify the event's origin
8356
8356
  if(event.origin!==origin)return;// Verify the event's syntax
8357
8357
  var data=camelCaseProperties(event.data);if(data.type!=='authorization_response')return;// The iframe is no longer needed, clean it up ..
@@ -8361,7 +8361,7 @@
8361
8361
  window.cordova.InAppBrowser.open(url,'_system');return Promise.resolve(ref);}return Promise.reject(new Error('Cordova plugin "InAppBrowser" is required.'));});};OAuthClient.prototype.getAvailableBrowserTabPlugin=function(){return new Promise(function(resolve,reject){var cordova=window.cordova;if(!cordova||!cordova.plugins||!cordova.plugins.browsertab)return resolve(undefined);var plugin=cordova.plugins.browsertab;plugin.isAvailable(function(isAvailable){return resolve(isAvailable?plugin:undefined);},reject);});};OAuthClient.prototype.storeCredentialsInBrowser=function(params){if(!params.saveCredentials)return Promise.resolve();if(navigator.credentials&&navigator.credentials.create&&navigator.credentials.store){var credentialParams={password:{password:params.password,id:this.hasLoggedWithEmail(params)?params.email:params.phoneNumber}};return navigator.credentials.create(credentialParams).then(function(credentials){return !isUndefined_1(credentials)&&credentials?navigator.credentials.store(credentials).then(function(){}):Promise.resolve();});}else {logError('Unsupported Credentials Management API');return Promise.resolve();}};// TODO: Make passwordless able to handle web_message
8362
8362
  // Asana https://app.asana.com/0/982150578058310/1200173806808689/f
8363
8363
  OAuthClient.prototype.resolveSingleFactorPasswordlessParams=function(params,auth){if(auth===void 0){auth={};}var authType=params.authType,email=params.email,phoneNumber=params.phoneNumber,captchaToken=params.captchaToken;if(this.config.orchestrationToken){var authParams=this.orchestratedFlowParams(this.config.orchestrationToken,auth);return Promise.resolve(_assign(_assign({},authParams),{authType:authType,email:email,phoneNumber:phoneNumber,captchaToken:captchaToken}));}else {var authParams_2=this.authParams(auth);return this.getPkceParams(authParams_2).then(function(maybeChallenge){return _assign(_assign(_assign({},authParams_2),{authType:authType,email:email,phoneNumber:phoneNumber,captchaToken:captchaToken}),maybeChallenge);});}};OAuthClient.prototype.hasLoggedWithEmail=function(params){return params.email!==undefined;};// TODO: Shared among the clients
8364
- OAuthClient.prototype.loginCallback=function(tkn,auth){var _this=this;if(auth===void 0){auth={};}if(this.config.orchestrationToken){var authParams_3=_assign(_assign({},this.orchestratedFlowParams(this.config.orchestrationToken,auth)),pick_1(tkn,'tkn'));return Promise.resolve().then(function(_){return _this.redirectThruAuthorization(authParams_3);});}else {var authParams_4=this.authParams(auth);return this.getPkceParams(authParams_4).then(function(maybeChallenge){var params=_assign(_assign(_assign({},authParams_4),maybeChallenge),pick_1(tkn,'tkn'));if(auth.useWebMessage){return _this.getWebMessage(_this.getAuthorizationUrl(params),auth.redirectUri);}else {return _this.redirectThruAuthorization(params);}});}};// In an orchestrated flow, only parameters from the original request are to be considered,
8364
+ OAuthClient.prototype.loginCallback=function(tkn,auth){var _this=this;if(auth===void 0){auth={};}if(this.config.orchestrationToken){var authParams_3=_assign(_assign({},this.orchestratedFlowParams(this.config.orchestrationToken,auth)),pick_1(tkn,'tkn'));return Promise.resolve().then(function(_){return _this.redirectThruAuthorization(authParams_3);});}else {var authParams_4=this.authParams(auth);return this.getPkceParams(authParams_4).then(function(maybeChallenge){var params=_assign(_assign(_assign({},authParams_4),maybeChallenge),pick_1(tkn,'tkn'));if(auth.useWebMessage){return _this.getWebMessage(_this.getAuthorizationUrl(params),_this.config.baseUrl,auth.redirectUri);}else {return _this.redirectThruAuthorization(params);}});}};// In an orchestrated flow, only parameters from the original request are to be considered,
8365
8365
  // as well as parameters that depend on user action
8366
8366
  OAuthClient.prototype.orchestratedFlowParams=function(orchestrationToken,authOptions){if(authOptions===void 0){authOptions={};}var authParams=computeAuthOptions(authOptions);var correctedAuthParams=_assign({clientId:this.config.clientId,r5_request_token:orchestrationToken},pick_1(authParams,'responseType','redirectUri','clientId','persistent'));var uselessParams=difference_1(keys_1(authParams),keys_1(correctedAuthParams));if(uselessParams.length!==0)console.debug("Orchestrated flow: pruned parameters: "+uselessParams);return correctedAuthParams;};OAuthClient.prototype.authParams=function(opts,_a){var _b=(_a===void 0?{}:_a).acceptPopupMode,acceptPopupMode=_b===void 0?false:_b;var isConfidentialCodeWebMsg=!this.config.isPublic&&!!opts.useWebMessage&&(opts.responseType==='code'||opts.redirectUri);var overrideResponseType=isConfidentialCodeWebMsg?{responseType:'token',redirectUri:undefined}:{};return _assign({clientId:this.config.clientId},computeAuthOptions(_assign(_assign({},opts),overrideResponseType),{acceptPopupMode:acceptPopupMode},this.config.scope));};OAuthClient.prototype.getPkceParams=function(authParams){if(this.config.isPublic&&authParams.responseType==='code')return computePkceParams();else if(authParams.responseType==='token'&&this.config.pkceEnforced)return Promise.reject(new Error('Cannot use implicit flow when PKCE is enforced'));else return Promise.resolve({});};return OAuthClient;}();var EventManager=/** @class */function(){function EventManager(){this.listeners={};}EventManager.prototype.fire=function(name,data){this.getListeners(name).forEach(function(listener){try{listener(data);}catch(e){logError(e);}});};EventManager.prototype.on=function(name,listener){this.getListeners(name).push(listener);};EventManager.prototype.off=function(name,listener){pull_1(this.getListeners(name),listener);};EventManager.prototype.getListeners=function(name){var listeners=this.listeners[name];if(!listeners){listeners=this.listeners[name]=[];}return listeners;};return EventManager;}();function createEventManager(){var eventManager=new EventManager();return {on:function on(eventName,listener){eventManager.on(eventName,listener);},off:function off(eventName,listener){eventManager.off(eventName,listener);},fireEvent:function fireEvent(eventName,data){if(eventName==='authenticated'){var ar=enrichAuthResult(data);eventManager.fire(eventName,ar);}else {eventManager.fire(eventName,data);}}};}function createUrlParser(eventManager){return {checkUrlFragment:function checkUrlFragment(url){var authResult=this.parseUrlFragment(url);if(AuthResult.isAuthResult(authResult)){eventManager.fireEvent('authenticated',authResult);return true;}else if(ErrorResponse.isErrorResponse(authResult)){eventManager.fireEvent('authentication_failed',authResult);return true;}return false;},parseUrlFragment:function parseUrlFragment(url){if(url===void 0){url='';}var separatorIndex=url.indexOf('#');if(separatorIndex>=0){var parsed=parseQueryString(url.substr(separatorIndex+1));var expiresIn=parsed.expiresIn?parseInt(parsed.expiresIn,10):undefined;if(AuthResult.isAuthResult(parsed)){return _assign(_assign({},parsed),{expiresIn:expiresIn});}return ErrorResponse.isErrorResponse(parsed)?parsed:undefined;}return undefined;}};}function createHttpClient(config){function get(path,params){return request(path,_assign(_assign({},params),{method:'GET'}));}function remove(path,params){return request(path,_assign(_assign({},params),{method:'DELETE'}));}function post(path,params){return request(path,_assign(_assign({},params),{method:'POST'}));}function request(path,params){var _a=params.method,method=_a===void 0?'GET':_a,_b=params.query,query=_b===void 0?{}:_b,body=params.body,_c=params.accessToken,accessToken=_c===void 0?null:_c,_d=params.withCookies,withCookies=_d===void 0?false:_d;var fullPath=query&&!isEmpty_1(query)?path+"?"+toQueryString(query):path;var url=fullPath.startsWith('http')?fullPath:config.baseUrl+fullPath;var fetchOptions=_assign(_assign({method:method,headers:_assign(_assign(_assign({},accessToken&&{Authorization:'Bearer '+accessToken}),config.language&&{'Accept-Language':config.language}),body&&{'Content-Type':'application/json;charset=UTF-8'})},withCookies&&config.acceptCookies&&{credentials:'include'}),body&&{body:JSON.stringify(snakeCaseProperties(body))});return rawRequest(url,fetchOptions);}return {get:get,remove:remove,post:post,request:request};}/**
8367
8367
  * Low level HTTP client