From f0221b185ecd40df8cc9dc6cba0db57bc8df90e0 Mon Sep 17 00:00:00 2001 From: Jay Francess Manuel Date: Mon, 15 Jun 2026 12:51:09 +0800 Subject: [PATCH] Renovate mynordic-oauth-test app --- README.md | 22 + main.js | 14 +- msalConfig.js | 4 +- mynordic-oauth-test/.envrc | 17 + .../dist/assets/Configuration-DmI3R7F5.js | 1 + .../dist/assets/main-BeSCdD2b.js | 1 + .../dist/assets/sso-CFKbQoP1.js | 1 + mynordic-oauth-test/dist/index.html | 20 + .../dist/mynordic/from-portal/index.html | 16 + mynordic-oauth-test/dist/mynordic/sso.html | 12 + mynordic-oauth-test/index.html | 19 + mynordic-oauth-test/main.js | 336 +++++++ mynordic-oauth-test/msalConfig.js | 43 + .../mynordic/from-portal/index.html | 15 + mynordic-oauth-test/mynordic/sso.html | 17 + mynordic-oauth-test/package-lock.json | 849 ++++++++++++++++++ mynordic-oauth-test/package.json | 20 + mynordic-oauth-test/vite.config.js | 78 ++ package-lock.json | 15 +- package.json | 3 + vite.config.js | 46 +- 21 files changed, 1536 insertions(+), 13 deletions(-) create mode 100644 mynordic-oauth-test/.envrc create mode 100644 mynordic-oauth-test/dist/assets/Configuration-DmI3R7F5.js create mode 100644 mynordic-oauth-test/dist/assets/main-BeSCdD2b.js create mode 100644 mynordic-oauth-test/dist/assets/sso-CFKbQoP1.js create mode 100644 mynordic-oauth-test/dist/index.html create mode 100644 mynordic-oauth-test/dist/mynordic/from-portal/index.html create mode 100644 mynordic-oauth-test/dist/mynordic/sso.html create mode 100644 mynordic-oauth-test/index.html create mode 100644 mynordic-oauth-test/main.js create mode 100644 mynordic-oauth-test/msalConfig.js create mode 100644 mynordic-oauth-test/mynordic/from-portal/index.html create mode 100644 mynordic-oauth-test/mynordic/sso.html create mode 100644 mynordic-oauth-test/package-lock.json create mode 100644 mynordic-oauth-test/package.json create mode 100644 mynordic-oauth-test/vite.config.js diff --git a/README.md b/README.md index f8bd9d9..57207c2 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,28 @@ production app. `https://.b2clogin.com/.onmicrosoft.com/`. For Entra External ID (CIAM) tenants the authority is typically just `https://.ciamlogin.com/`. +5. **Token configuration → Optional claims → ID** — add `login_hint` for the nrfCloud + SPA client. MSAL uses this claim as `logout_hint` so CIAM can end the server + session without showing “Pick an account” (especially after myNordic portal SSO). +6. **Authentication → Redirect URI** — register the SPA **logout** URL (e.g. + `http://localhost:8080/` or your nrfCloud origin) as a front-channel logout / + post-logout redirect URI, matching `postLogoutRedirectUri` in `msalConfig.js`. + +### Logout after myNordic portal SSO (nrfCloud) + +If users sign in on myNordic and land in nrfCloud via `login_hint` / silent SSO, +then log out from nrfCloud and CIAM shows **“Pick an account”** with **no accounts +listed**, the logout request did not identify the CIAM session. Typical causes: + +| Cause | Fix | +| ----- | --- | +| `logoutRedirect()` called with no `account` | Pass `msal.getAllAccounts()[0]` (or the active account). | +| No `logout_hint` on the end-session URL | Pass `logoutHint` (email from myNordic `login_hint`, or `account.idTokenClaims.login_hint`). | +| `login_hint` not in the ID token | Enable the optional claim on the **nrfCloud** app registration (see checklist item 5). | +| Missing post-logout redirect | Set `postLogoutRedirectUri` in MSAL config and register it in Azure. | + +The `mynordic-oauth-test` harness persists `login_hint` from the portal redirect +and sends it on logout. Mirror that in nrfCloud production code. ## 1 — Scaffold the test SPA diff --git a/main.js b/main.js index e1f8e73..5059fd8 100644 --- a/main.js +++ b/main.js @@ -43,8 +43,18 @@ document.getElementById("portal-login").addEventListener("click", () => { window.location.href = portalSignUpUrl.toString(); }); -document.getElementById("logout").addEventListener("click", () => { - msal.logoutRedirect(); +document.getElementById("logout").addEventListener("click", async () => { + const account = msal.getAllAccounts()[0]; + const logoutHint = + account?.idTokenClaims?.login_hint ?? account?.username ?? undefined; + + const request = { + postLogoutRedirectUri: msalConfig.auth.postLogoutRedirectUri, + }; + if (account) request.account = account; + if (logoutHint) request.logoutHint = logoutHint; + + await msal.logoutRedirect(request); }); init(); diff --git a/msalConfig.js b/msalConfig.js index 28fdc9f..ec45f17 100644 --- a/msalConfig.js +++ b/msalConfig.js @@ -2,12 +2,14 @@ const authority = B2C_AUTHORITY; const clientId = B2C_CLIENT_ID; const authorityHost = new URL(authority).hostname; +const appOrigin = "http://localhost:8080"; export const msalConfig = { auth: { clientId, authority, - redirectUri: "http://localhost:8080/mynordic/callback", + redirectUri: `${appOrigin}/mynordic/callback`, + postLogoutRedirectUri: `${appOrigin}/`, knownAuthorities: [authorityHost], }, cache: { diff --git a/mynordic-oauth-test/.envrc b/mynordic-oauth-test/.envrc new file mode 100644 index 0000000..cfbc418 --- /dev/null +++ b/mynordic-oauth-test/.envrc @@ -0,0 +1,17 @@ +# PROD ENV +export B2C_AUTHORITY="https://nordicsemiextprod.ciamlogin.com/" +export B2C_CLIENT_ID="7e241ef6-76de-4cc5-9f52-298222874afb" + +# DEV ENV +# export B2C_AUTHORITY="https://nordicsemiextdev.ciamlogin.com/" +# export B2C_CLIENT_ID="dd47d209-3cd3-4e75-86e5-d419ea0cdd05" + +# TEST USER +# export TEST_USER_EMAIL="jay.manuel+v5001NrfDev@nordicsemi.no" +# export TEST_USER_PASSWORD="Test@123" + +# export TEST_USER_EMAIL="akhila.veetil@nordicsemi.no" +# export TEST_USER_PASSWORD="Test@123" + +export TEST_USER_EMAIL="aallan.allanigue+dev@nordicsemi.no" +export TEST_USER_PASSWORD="A@11anigue" \ No newline at end of file diff --git a/mynordic-oauth-test/dist/assets/Configuration-DmI3R7F5.js b/mynordic-oauth-test/dist/assets/Configuration-DmI3R7F5.js new file mode 100644 index 0000000..5cd9b8a --- /dev/null +++ b/mynordic-oauth-test/dist/assets/Configuration-DmI3R7F5.js @@ -0,0 +1 @@ +(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=`msal.js.common`,t=`https://login.microsoftonline.com/common/`,n=`login.microsoftonline.com`,r=`common`,i=`adfs`,a=`dstsv2`,o=`${t}discovery/instance?api-version=1.1&authorization_endpoint=`,s=`.ciamlogin.com`,c=`.onmicrosoft.com`,l=`openid`,u=`profile`,d=`offline_access`,f=`email`,p=`S256`,m=`application/x-www-form-urlencoded;charset=utf-8`,h=`Not Available`,ee=`http://169.254.169.254/metadata/instance/compute/location`,te=`2020-06-01`,ne=2e3,re=`TryAutoDetect`,ie=`login.microsoft.com`,ae=[`login.microsoftonline.com`,`login.windows.net`,`login.microsoft.com`,`sts.windows.net`],oe=`invalid_instance`,se={GET:`GET`,POST:`POST`},g=[l,u,d],ce=[...g,f],le={CONTENT_TYPE:`Content-Type`,CONTENT_LENGTH:`Content-Length`,RETRY_AFTER:`Retry-After`,CCS_HEADER:`X-AnchorMailbox`,WWWAuthenticate:`WWW-Authenticate`,AuthenticationInfo:`Authentication-Info`,X_MS_REQUEST_ID:`x-ms-request-id`,X_MS_HTTP_VERSION:`x-ms-httpver`},ue={ACTIVE_ACCOUNT_FILTERS:`active-account-filters`},_={COMMON:`common`,ORGANIZATIONS:`organizations`,CONSUMERS:`consumers`},v={ACCESS_TOKEN:`access_token`,XMS_CC:`xms_cc`},de={LOGIN:`login`,SELECT_ACCOUNT:`select_account`,CONSENT:`consent`,NONE:`none`,CREATE:`create`,NO_SESSION:`no_session`},fe={CODE:`code`,IDTOKEN_TOKEN:`id_token token`,IDTOKEN_TOKEN_REFRESHTOKEN:`id_token token refresh_token`},pe={QUERY:`query`,FRAGMENT:`fragment`,FORM_POST:`form_post`},me={IMPLICIT_GRANT:`implicit`,AUTHORIZATION_CODE_GRANT:`authorization_code`,CLIENT_CREDENTIALS_GRANT:`client_credentials`,RESOURCE_OWNER_PASSWORD_GRANT:`password`,REFRESH_TOKEN_GRANT:`refresh_token`,DEVICE_CODE_GRANT:`device_code`,JWT_BEARER:`urn:ietf:params:oauth:grant-type:jwt-bearer`},he=`MSSTS`,ge=`ADFS`,_e=`Generic`,y={ID_TOKEN:`IdToken`,ACCESS_TOKEN:`AccessToken`,ACCESS_TOKEN_WITH_AUTH_SCHEME:`AccessToken_With_AuthScheme`,REFRESH_TOKEN:`RefreshToken`},ve=`appmetadata`,ye=`client_info`,be=`authority-metadata`,xe=3600*24,Se={CONFIG:`config`,CACHE:`cache`,NETWORK:`network`,HARDCODED_VALUES:`hardcoded_values`},Ce=`server-telemetry`,we=`unknown_error`,b={BEARER:`Bearer`,POP:`pop`,SSH:`ssh-cert`},Te=3600,Ee=`throttling`,De=`retry-after, h429`,Oe=`invalid_grant`,ke=`client_mismatch`,Ae={FAILED_AUTO_DETECTION:`1`,INTERNAL_CACHE:`2`,ENVIRONMENT_VARIABLE:`3`,IMDS:`4`},je={CONFIGURED_MATCHES_DETECTED:`1`,CONFIGURED_NO_AUTO_DETECTION:`2`,CONFIGURED_NOT_DETECTED:`3`,AUTO_DETECTION_REQUESTED_SUCCESSFUL:`4`,AUTO_DETECTION_REQUESTED_FAILED:`5`},Me={NOT_APPLICABLE:`0`,FORCE_REFRESH_OR_CLAIMS:`1`,NO_CACHED_ACCESS_TOKEN:`2`,CACHED_ACCESS_TOKEN_EXPIRED:`3`,PROACTIVELY_REFRESHED:`4`},Ne={Jwt:`JWT`,Jwk:`JWK`,Pop:`pop`},x=`client_id`,Pe=`redirect_uri`,Fe=`response_type`,Ie=`response_mode`,Le=`grant_type`,Re=`claims`,ze=`scope`,Be=`refresh_token`,Ve=`state`,He=`nonce`,Ue=`prompt`,We=`code`,Ge=`code_challenge`,Ke=`code_challenge_method`,qe=`code_verifier`,Je=`client-request-id`,Ye=`x-client-SKU`,Xe=`x-client-VER`,Ze=`x-client-OS`,Qe=`x-client-CPU`,$e=`x-client-current-telemetry`,et=`x-client-last-telemetry`,tt=`x-ms-lib-capability`,nt=`x-app-name`,rt=`x-app-ver`,it=`post_logout_redirect_uri`,at=`id_token_hint`,ot=`client_secret`,st=`client_assertion`,ct=`client_assertion_type`,lt=`token_type`,ut=`req_cnf`,dt=`return_spa_code`,ft=`nativebroker`,pt=`logout_hint`,mt=`login_hint`,ht=`domain_hint`,gt=`x-client-xtra-sku`,_t=`brk_client_id`,vt=`brk_redirect_uri`,yt=`instance_aware`,bt=`ear_jwk`,xt=`ear_jwe_crypto`,St=`resource`,Ct=`clidata`;function wt(e){return`See https://aka.ms/msal.js.errors#${e} for details`}var S=class e extends Error{constructor(t,n,r){let i=n||(t?wt(t):``),a=i?`${t}: ${i}`:t;super(a),Object.setPrototypeOf(this,e.prototype),this.errorCode=t||``,this.errorMessage=i||``,this.subError=r||``,this.name=`AuthError`}setCorrelationId(e){this.correlationId=e}};function Tt(e,t){return new S(e,t||wt(e))}var Et=class e extends S{constructor(t){super(t),this.name=`ClientConfigurationError`,Object.setPrototypeOf(this,e.prototype)}};function C(e){return new Et(e)}var w=class{static isEmptyObj(e){if(e)try{let t=JSON.parse(e);return Object.keys(t).length===0}catch{}return!0}static startsWith(e,t){return e.indexOf(t)===0}static endsWith(e,t){return e.length>=t.length&&e.lastIndexOf(t)===e.length-t.length}static queryStringToObject(e){let t={},n=e.split(`&`),r=e=>decodeURIComponent(e.replace(/\+/g,` `));return n.forEach(e=>{if(e.trim()){let[n,i]=e.split(/=(.+)/g,2);n&&i&&(t[r(n)]=r(i))}}),t}static trimArrayEntries(e){return e.map(e=>e.trim())}static removeEmptyStringsFromArray(e){return e.filter(e=>!!e)}static jsonParseHelper(e){try{return JSON.parse(e)}catch{return null}}},Dt=class e extends S{constructor(t,n){super(t,n),this.name=`ClientAuthError`,Object.setPrototypeOf(this,e.prototype)}};function T(e,t){return new Dt(e,t)}var Ot=`redirect_uri_empty`,kt=`authority_uri_insecure`,E=`url_parse_error`,At=`empty_url_error`,jt=`empty_input_scopes_error`,Mt=`invalid_claims`,Nt=`token_request_empty`,Pt=`logout_request_empty`,Ft=`pkce_params_missing`,It=`invalid_cloud_discovery_metadata`,Lt=`invalid_authority_metadata`,Rt=`untrusted_authority`,zt=`missing_ssh_jwk`,Bt=`missing_ssh_kid`,Vt=`cannot_set_OIDCOptions`,Ht=`cannot_allow_platform_broker`,Ut=`authority_mismatch`,Wt=`invalid_request_method_for_EAR`,Gt=`client_info_decoding_error`,Kt=`client_info_empty_error`,qt=`token_parsing_error`,Jt=`null_or_empty_token`,Yt=`endpoints_resolution_error`,Xt=`network_error`,Zt=`openid_config_error`,Qt=`hash_not_deserialized`,D=`invalid_state`,$t=`state_mismatch`,en=`state_not_found`,tn=`nonce_mismatch`,nn=`auth_time_not_found`,rn=`max_age_transpired`,an=`multiple_matching_appMetadata`,on=`request_cannot_be_made`,sn=`cannot_remove_empty_scope`,cn=`cannot_append_scopeset`,ln=`empty_input_scopeset`,un=`no_account_in_silent_request`,dn=`invalid_cache_record`,fn=`invalid_cache_environment`,pn=`no_account_found`,mn=`no_crypto_object`,hn=`token_refresh_required`,gn=`token_claims_cnf_required_for_signedjwt`,_n=`authorization_code_missing_from_server_response`,vn=`binding_key_not_removed`,yn=`end_session_endpoint_not_supported`,bn=`key_id_missing`,O=`method_not_implemented`,xn=`resource_parameter_required`,Sn=`misplaced_resource_parameter`,k=class e{constructor(e){let t=e?w.trimArrayEntries([...e]):[],n=t?w.removeEmptyStringsFromArray(t):[];if(!n||!n.length)throw C(jt);this.scopes=new Set,n.forEach(e=>this.scopes.add(e))}static fromString(t){return new e((t||``).split(` `))}static createSearchScopes(t){let n=new e(t&&t.length>0?t:[...g]);return n.containsOnlyOIDCScopes()?n.removeScope(d):n.removeOIDCScopes(),n}containsScope(t){let n=new e(this.printScopesLowerCase().split(` `));return t?n.scopes.has(t.toLowerCase()):!1}containsScopeSet(e){return!e||e.scopes.size<=0?!1:this.scopes.size>=e.scopes.size&&e.asArray().every(e=>this.containsScope(e))}containsOnlyOIDCScopes(){let e=0;return ce.forEach(t=>{this.containsScope(t)&&(e+=1)}),this.scopes.size===e}appendScope(e){e&&this.scopes.add(e.trim())}appendScopes(e){try{e.forEach(e=>this.appendScope(e))}catch{throw T(cn)}}removeScope(e){if(!e)throw T(sn);this.scopes.delete(e.trim())}removeOIDCScopes(){ce.forEach(e=>{this.scopes.delete(e)})}unionScopeSets(e){if(!e)throw T(ln);let t=new Set;return e.scopes.forEach(e=>t.add(e.toLowerCase())),this.scopes.forEach(e=>t.add(e.toLowerCase())),t}intersectingScopeSets(e){if(!e)throw T(ln);e.containsOnlyOIDCScopes()||e.removeOIDCScopes();let t=this.unionScopeSets(e),n=e.getScopeCount(),r=this.getScopeCount();return t.sizee.push(t)),e}printScopes(){return this.scopes?this.asArray().join(` `):``}printScopesLowerCase(){return this.printScopes().toLowerCase()}};function Cn(e,t,n){if(!t)return;let r=e.get(x);r&&e.has(`brk_client_id`)&&n?.addFields({embeddedClientId:r,embeddedRedirectUri:e.get(Pe)},t)}function wn(e,t){e.set(Fe,t)}function Tn(e,t){e.set(Ie,t||pe.QUERY)}function En(e){e.set(ft,`1`)}function Dn(e,t,n=!0,r=g){n&&!r.includes(`openid`)&&!t.includes(`openid`)&&r.push(`openid`);let i=new k(n?[...t||[],...r]:t||[]);e.set(ze,i.printScopes())}function On(e,t){e.set(x,t)}function kn(e,t){e.set(Pe,t)}function An(e,t){e.set(it,t)}function jn(e,t){e.set(at,t)}function Mn(e,t){e.set(ht,t)}function Nn(e,t){e.set(mt,t)}function Pn(e,t){e.set(le.CCS_HEADER,`UPN:${t}`)}function Fn(e,t){e.set(le.CCS_HEADER,`Oid:${t.uid}@${t.utid}`)}function In(e,t){e.set(`sid`,t)}function Ln(e,t,n,r){let i=r&&e.has(`brk_client_id`)?void 0:n;if(!w.isEmptyObj(t)||i&&i.length>0){let n=nr(t,i);try{JSON.parse(n)}catch{throw C(Mt)}e.set(Re,n)}}function Rn(e,t){e.set(Je,t)}function zn(e,t){e.set(Ye,t.sku),e.set(Xe,t.version),t.os&&e.set(Ze,t.os),t.cpu&&e.set(Qe,t.cpu)}function Bn(e,t){t?.appName&&e.set(nt,t.appName),t?.appVersion&&e.set(rt,t.appVersion)}function Vn(e,t){e.set(Ue,t)}function Hn(e,t){t&&e.set(Ve,t)}function Un(e,t){e.set(He,t)}function Wn(e,t,n){if(t&&n)e.set(Ge,t),e.set(Ke,n);else throw C(Ft)}function Gn(e,t){e.set(We,t)}function Kn(e,t){e.set(Be,t)}function qn(e,t){e.set(qe,t)}function Jn(e,t){e.set(ot,t)}function Yn(e,t){t&&e.set(st,t)}function Xn(e,t){t&&e.set(ct,t)}function Zn(e,t){e.set(Le,t)}function Qn(e){e.set(ye,`1`)}function $n(e){e.set(Ct,`1`)}function er(e){e.has(`instance_aware`)||e.set(yt,`true`)}function tr(e,t){Object.entries(t).forEach(([t,n])=>{!e.has(t)&&n&&e.set(t,n)})}function nr(e,t){let n;if(!e)n={};else try{n=JSON.parse(e)}catch{throw C(Mt)}return t&&t.length>0&&(n.hasOwnProperty(v.ACCESS_TOKEN)||(n[v.ACCESS_TOKEN]={}),n[v.ACCESS_TOKEN][v.XMS_CC]={values:t}),JSON.stringify(n)}function rr(e,t){t&&(e.set(lt,b.POP),e.set(ut,t))}function ir(e,t){t&&(e.set(lt,b.SSH),e.set(ut,t))}function ar(e,t){e.set($e,t.generateCurrentRequestHeaderValue()),e.set(et,t.generateLastRequestHeaderValue())}function or(e){e.set(tt,De)}function sr(e,t){e.set(pt,t)}function cr(e,t,n){e.has(`brk_client_id`)||e.set(_t,t),e.has(`brk_redirect_uri`)||e.set(vt,n)}function lr(e,t){e.set(bt,encodeURIComponent(t)),e.set(xt,`eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0`)}function ur(e,t){t&&e.set(St,t)}function dr(e){if(!e)return e;let t=e.toLowerCase();return w.endsWith(t,`?`)?t=t.slice(0,-1):w.endsWith(t,`?/`)&&(t=t.slice(0,-2)),w.endsWith(t,`/`)||(t+=`/`),t}function fr(e){return e.startsWith(`#/`)?e.substring(2):e.startsWith(`#`)||e.startsWith(`?`)?e.substring(1):e}function pr(e){if(!e||e.indexOf(`=`)<0)return null;try{let t=fr(e),n=Object.fromEntries(new URLSearchParams(t));if(n.code||n.ear_jwe||n.error||n.error_description||n.state)return n}catch{throw T(Qt)}return null}function mr(e){let t=[];return e.forEach((e,n)=>{t.push(`${n}=${encodeURIComponent(e)}`)}),t.join(`&`)}function hr(e){if(!e)return e;let t=e.split(`#`)[0];try{let e=new URL(t);return dr(e.origin+e.pathname+e.search)}catch{return dr(t)}}var A={createNewGuid:()=>{throw T(O)},base64Decode:()=>{throw T(O)},base64Encode:()=>{throw T(O)},base64UrlEncode:()=>{throw T(O)},encodeKid:()=>{throw T(O)},async getPublicKeyThumbprint(){throw T(O)},async removeTokenBindingKey(){throw T(O)},async clearKeystore(){throw T(O)},async signJwt(){throw T(O)},async hashString(){throw T(O)}},j;(function(e){e[e.Error=0]=`Error`,e[e.Warning=1]=`Warning`,e[e.Info=2]=`Info`,e[e.Verbose=3]=`Verbose`,e[e.Trace=4]=`Trace`})(j||={});var gr=50,_r=500,M=new Map;function vr(e,t){M.delete(e),M.set(e,t)}function yr(e,t){let n=Date.now(),r=M.get(e);if(r)vr(e,r);else if(r={logs:[],firstEventTime:n},M.set(e,r),M.size>gr){let e=M.keys().next().value;e&&M.delete(e)}r.logs.push({...t,milliseconds:n-r.firstEventTime}),r.logs.length>_r&&r.logs.shift()}function br(e){if(e.length!==6)return!1;for(let t=0;t=`a`&&n<=`z`||n>=`A`&&n<=`Z`||n>=`0`&&n<=`9`))return!1}return!0}var N=class e{constructor(t,n,r){this.level=j.Info;let i=()=>{},a=t||e.createDefaultLoggerOptions();this.localCallback=a.loggerCallback||i,this.piiLoggingEnabled=a.piiLoggingEnabled||!1,this.level=typeof a.logLevel==`number`?a.logLevel:j.Info,this.packageName=n||``,this.packageVersion=r||``}static createDefaultLoggerOptions(){return{loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:j.Info}}clone(t,n){return new e({loggerCallback:this.localCallback,piiLoggingEnabled:this.piiLoggingEnabled,logLevel:this.level},t,n)}logMessage(e,t){let n=t.correlationId;if(br(e)&&yr(n,{hash:e,level:t.logLevel,containsPii:t.containsPii||!1,milliseconds:0}),t.logLevel>this.level||!this.piiLoggingEnabled&&t.containsPii)return;let r=`${`[${new Date().toUTCString()}] : [${n}]`} : ${this.packageName}@${this.packageVersion} : ${j[t.logLevel]} - ${e}`;this.executeCallback(t.logLevel,r,t.containsPii||!1)}executeCallback(e,t,n){this.localCallback&&this.localCallback(e,t,n)}error(e,t){this.logMessage(e,{logLevel:j.Error,containsPii:!1,correlationId:t})}errorPii(e,t){this.logMessage(e,{logLevel:j.Error,containsPii:!0,correlationId:t})}warning(e,t){this.logMessage(e,{logLevel:j.Warning,containsPii:!1,correlationId:t})}warningPii(e,t){this.logMessage(e,{logLevel:j.Warning,containsPii:!0,correlationId:t})}info(e,t){this.logMessage(e,{logLevel:j.Info,containsPii:!1,correlationId:t})}infoPii(e,t){this.logMessage(e,{logLevel:j.Info,containsPii:!0,correlationId:t})}verbose(e,t){this.logMessage(e,{logLevel:j.Verbose,containsPii:!1,correlationId:t})}verbosePii(e,t){this.logMessage(e,{logLevel:j.Verbose,containsPii:!0,correlationId:t})}trace(e,t){this.logMessage(e,{logLevel:j.Trace,containsPii:!1,correlationId:t})}tracePii(e,t){this.logMessage(e,{logLevel:j.Trace,containsPii:!0,correlationId:t})}isPiiLoggingEnabled(){return this.piiLoggingEnabled||!1}},xr=`@azure/msal-common`,P=`16.6.0`,F={None:`none`,AzurePublic:`https://login.microsoftonline.com`,AzurePpe:`https://login.windows-ppe.net`,AzureChina:`https://login.chinacloudapi.cn`,AzureGermany:`https://login.microsoftonline.de`,AzureUsGovernment:`https://login.microsoftonline.us`};function Sr(e,t){return!!e&&!!t&&e===t.split(`.`)[1]}function I(e,t,n,r){if(r){let{oid:t,sub:n,tid:i,name:a,tfp:o,acr:s,preferred_username:c,upn:l,login_hint:u}=r,d=i||o||s||``;return{tenantId:d,localAccountId:t||n||``,name:a,username:c||l||``,loginHint:u,isHomeTenant:Sr(d,e),upn:l}}else return{tenantId:n,localAccountId:t,username:``,isHomeTenant:Sr(n,e)}}function Cr(e,t,n,r){let i=e;if(t){let{isHomeTenant:n,...r}=t;i={...e,...r}}if(n){let{isHomeTenant:t,...a}=I(e.homeAccountId,e.localAccountId,e.tenantId,n);return i={...i,...a,idTokenClaims:n,idToken:r},i}return i}function wr(e,t){let n=Er(e);try{let e=t(n);return JSON.parse(e)}catch{throw T(qt)}}function Tr(e){if(!e.signin_state)return!1;let t=[`kmsi`,`dvc_dmjd`];return e.signin_state.some(e=>t.includes(e.trim().toLowerCase()))}function Er(e){if(!e)throw T(Jt);let t=/^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/.exec(e);if(!t||t.length<4)throw T(qt);return t[2]}function Dr(e,t){if(t===0||Date.now()-3e5>e+t)throw T(rn)}var L=class e{get urlString(){return this._urlString}constructor(t){if(this._urlString=t,!this._urlString)throw C(At);t.includes(`#`)||(this._urlString=e.canonicalizeUri(t))}static canonicalizeUri(e){if(e){let t=e.toLowerCase();return w.endsWith(t,`?`)?t=t.slice(0,-1):w.endsWith(t,`?/`)&&(t=t.slice(0,-2)),w.endsWith(t,`/`)||(t+=`/`),t}return e}validateAsUri(){let e;try{e=this.getUrlComponents()}catch{throw C(E)}if(!e.HostNameAndPort||!e.PathSegments)throw C(E);if(!e.Protocol||e.Protocol.toLowerCase()!==`https:`)throw C(kt)}static appendQueryString(e,t){return t?e.indexOf(`?`)<0?`${e}?${t}`:`${e}&${t}`:e}static removeHashFromUrl(t){return e.canonicalizeUri(t.split(`#`)[0])}replaceTenantPath(t){let n=this.getUrlComponents(),r=n.PathSegments;return t&&r.length!==0&&(r[0]===_.COMMON||r[0]===_.ORGANIZATIONS)&&(r[0]=t),e.constructAuthorityUriFromObject(n)}getUrlComponents(){let e=RegExp(`^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?`),t=this.urlString.match(e);if(!t)throw C(E);let n={Protocol:t[1],HostNameAndPort:t[4],AbsolutePath:t[5],QueryString:t[7]},r=n.AbsolutePath.split(`/`);return r=r.filter(e=>e&&e.length>0),n.PathSegments=r,n.QueryString&&n.QueryString.endsWith(`/`)&&(n.QueryString=n.QueryString.substring(0,n.QueryString.length-1)),n}static getDomainFromUrl(e){let t=RegExp(`^([^:/?#]+://)?([^/?#]*)`),n=e.match(t);if(!n)throw C(E);return n[2]}static getAbsoluteUrl(t,n){if(t[0]===`/`){let r=new e(n).getUrlComponents();return r.Protocol+`//`+r.HostNameAndPort+t}return t}static constructAuthorityUriFromObject(t){return new e(t.Protocol+`//`+t.HostNameAndPort+`/`+t.PathSegments.join(`/`))}},Or=[{host:`login.microsoftonline.com`},{host:`login.chinacloudapi.cn`,issuerHost:`login.partner.microsoftonline.cn`},{host:`login.microsoftonline.us`},{host:`login.sovcloud-identity.fr`},{host:`login.sovcloud-identity.de`},{host:`login.sovcloud-identity.sg`}];function kr(e,t){return{token_endpoint:`https://${e}/{tenantid}/oauth2/v2.0/token`,jwks_uri:`https://${e}/{tenantid}/discovery/v2.0/keys`,issuer:`https://${t}/{tenantid}/v2.0`,authorization_endpoint:`https://${e}/{tenantid}/oauth2/v2.0/authorize`,end_session_endpoint:`https://${e}/{tenantid}/oauth2/v2.0/logout`}}var Ar={endpointMetadata:Or.reduce((e,{host:t,issuerHost:n})=>(e[t]=kr(t,n||t),e),{}),instanceDiscoveryMetadata:{metadata:[{preferred_network:`login.microsoftonline.com`,preferred_cache:`login.windows.net`,aliases:[`login.microsoftonline.com`,`login.windows.net`,`login.microsoft.com`,`sts.windows.net`]},{preferred_network:`login.partner.microsoftonline.cn`,preferred_cache:`login.partner.microsoftonline.cn`,aliases:[`login.partner.microsoftonline.cn`,`login.chinacloudapi.cn`]},{preferred_network:`login.microsoftonline.de`,preferred_cache:`login.microsoftonline.de`,aliases:[`login.microsoftonline.de`]},{preferred_network:`login.microsoftonline.us`,preferred_cache:`login.microsoftonline.us`,aliases:[`login.microsoftonline.us`,`login.usgovcloudapi.net`]},{preferred_network:`login-us.microsoftonline.com`,preferred_cache:`login-us.microsoftonline.com`,aliases:[`login-us.microsoftonline.com`]},{preferred_network:`login.sovcloud-identity.fr`,preferred_cache:`login.sovcloud-identity.fr`,aliases:[`login.sovcloud-identity.fr`]},{preferred_network:`login.sovcloud-identity.de`,preferred_cache:`login.sovcloud-identity.de`,aliases:[`login.sovcloud-identity.de`]},{preferred_network:`login.sovcloud-identity.sg`,preferred_cache:`login.sovcloud-identity.sg`,aliases:[`login.sovcloud-identity.sg`]}]}},jr=Ar.endpointMetadata,R=Ar.instanceDiscoveryMetadata,Mr=new Set;R.metadata.forEach(e=>{e.aliases.forEach(e=>{Mr.add(e)})});function Nr(e,t,n){let r,i=e.canonicalAuthority;if(i){let a=new L(i).getUrlComponents().HostNameAndPort;r=Pr(t,n,a,e.cloudDiscoveryMetadata?.metadata)||Pr(t,n,a,R.metadata)||e.knownAuthorities}return r||[]}function Pr(e,t,n,r,i){if(e.trace(`1bmquz`,t),n&&r){let i=z(r,n);if(i)return e.trace(`1fotbt`,t),i.aliases;e.trace(`14avvj`,t)}return null}function Fr(e){return z(R.metadata,e)}function z(e,t){for(let n=0;n[e.tenantId,e])),dataBoundary:e.dataBoundary}}function Hr(e,t,n){let r;r=t.authorityType===V.Adfs?ge:t.protocolMode===H.OIDC?_e:he;let i,a;e.clientInfo&&n&&(i=zr(e.clientInfo,n),i.xms_tdbr&&(a=i.xms_tdbr===`EU`?`EU`:`None`));let o=e.environment||t&&t.getPreferredCache();if(!o)throw T(fn);let s=e.idTokenClaims?.preferred_username||e.idTokenClaims?.upn,c=e.idTokenClaims?.emails?e.idTokenClaims.emails[0]:null,l=s||c||``,u=e.idTokenClaims?.login_hint,d=i?.utid||Vr(e.idTokenClaims)||``,f=i?.uid||e.idTokenClaims?.oid||e.idTokenClaims?.sub||``,p;return p=e.tenantProfiles?e.tenantProfiles:[I(e.homeAccountId,f,d,e.idTokenClaims)],{homeAccountId:e.homeAccountId,environment:o,realm:d,localAccountId:f,username:l,authorityType:r,loginHint:u,clientInfo:e.clientInfo,name:e.idTokenClaims?.name||``,lastModificationTime:void 0,lastModificationApp:void 0,cloudGraphHostName:e.cloudGraphHostName,msGraphHost:e.msGraphHost,nativeAccountId:e.nativeAccountId,tenantProfiles:p,dataBoundary:a}}function Ur(e,t,n){let r=Array.from(e.tenantProfiles?.values()||[]);return r.length===0&&e.tenantId&&e.localAccountId&&r.push(I(e.homeAccountId,e.localAccountId,e.tenantId,e.idTokenClaims)),{authorityType:e.authorityType||`Generic`,homeAccountId:e.homeAccountId,localAccountId:e.localAccountId,nativeAccountId:e.nativeAccountId,realm:e.tenantId,environment:e.environment,username:e.username,loginHint:e.loginHint,name:e.name,cloudGraphHostName:t,msGraphHost:n,tenantProfiles:r,dataBoundary:e.dataBoundary}}function Wr(e,t,n,r,i,a){if(!(t===V.Adfs||t===V.Dsts)){if(e)try{let t=zr(e,r.base64Decode);if(t.uid&&t.utid)return`${t.uid}.${t.utid}`}catch{}n.warning(`1ub6wv`,i)}return a?.sub||``}function Gr(e){return e?e.hasOwnProperty(`homeAccountId`)&&e.hasOwnProperty(`environment`)&&e.hasOwnProperty(`realm`)&&e.hasOwnProperty(`localAccountId`)&&e.hasOwnProperty(`username`)&&e.hasOwnProperty(`authorityType`):!1}var Kr=class{constructor(e,t,n,r,i){this.clientId=e,this.cryptoImpl=t,this.commonLogger=n.clone(xr,P),this.staticAuthorityOptions=i,this.performanceClient=r}getAllAccounts(e={},t){return this.buildTenantProfiles(this.getAccountsFilteredBy(e,t),t,e)}getAccountInfoFilteredBy(e,t){if(Object.keys(e).length===0||Object.values(e).every(e=>e==null||e===``))return this.commonLogger.warning(`1skb02`,t),null;let n=this.getAllAccounts(e,t);return n.length>1?n.sort((e,t)=>{let n=+!!e.idTokenClaims;return+!!t.idTokenClaims-n})[0]:n.length===1?n[0]:null}getBaseAccountInfo(e,t){let n=this.getAccountsFilteredBy(e,t);return n.length>0?U(n[0]):null}buildTenantProfiles(e,t,n){return e.flatMap(e=>this.getTenantProfilesFromAccountEntity(e,t,n?.tenantId,n))}getTenantedAccountInfoByFilter(e,t,n,r,i){let a=null,o;if(i&&!this.tenantProfileMatchesFilter(n,i))return null;let s=this.getIdToken(e,r,t,n.tenantId);return s&&(o=wr(s.secret,this.cryptoImpl.base64Decode),!this.idTokenClaimsMatchTenantProfileFilter(o,i))?null:(a=Cr(e,n,o,s?.secret),a)}getTenantProfilesFromAccountEntity(e,t,n,r){let i=U(e),a=i.tenantProfiles||new Map,o=this.getTokenKeys();if(n){let e=a.get(n);if(e)a=new Map([[n,e]]);else return[]}let s=[];return a.forEach(e=>{let n=this.getTenantedAccountInfoByFilter(i,o,e,t,r);n&&s.push(n)}),s}tenantProfileMatchesFilter(e,t){return!(t.localAccountId&&!this.matchLocalAccountIdFromTenantProfile(e,t.localAccountId)||t.name&&e.name!==t.name||t.isHomeTenant!==void 0&&e.isHomeTenant!==t.isHomeTenant||t.username&&!(this.matchUsername(e.username,t.username)||!this.matchUsername(e.upn,t.username))||t.loginHint&&!this.matchLoginHintWithTenantProfile(e,t.loginHint)||t.upn&&e.upn!==t.upn)}idTokenClaimsMatchTenantProfileFilter(e,t){return!(t&&(t.localAccountId&&!this.matchLocalAccountIdFromTokenClaims(e,t.localAccountId)||t.loginHint&&!this.matchLoginHintFromTokenClaims(e,t.loginHint)||t.username&&!this.matchUsername(e.preferred_username,t.username)&&!this.matchUsername(e.upn,t.username)||t.name&&!this.matchName(e,t.name)||t.sid&&!this.matchSid(e,t.sid)))}async saveCacheRecord(e,t,n,r,i){if(!e)throw T(dn);try{e.account&&await this.setAccount(e.account,t,n,r),e.idToken&&i?.idToken!==!1&&await this.setIdTokenCredential(e.idToken,t,n),e.accessToken&&i?.accessToken!==!1&&await this.saveAccessToken(e.accessToken,t,n),e.refreshToken&&i?.refreshToken!==!1&&await this.setRefreshTokenCredential(e.refreshToken,t,n),e.appMetadata&&this.setAppMetadata(e.appMetadata,t)}catch(e){throw this.commonLogger?.error(`0j476p`,t),e instanceof S?e:Rr(e)}}async saveAccessToken(e,t,n){let r={clientId:e.clientId,credentialType:e.credentialType,environment:e.environment,homeAccountId:e.homeAccountId,realm:e.realm,tokenType:e.tokenType},i=this.getTokenKeys(),a=k.fromString(e.target);i.accessToken.forEach(e=>{if(!this.accessTokenKeyMatchesFilter(e,r,!1))return;let n=this.getAccessTokenCredential(e,t);n&&this.credentialMatchesFilter(n,r,t)&&k.fromString(n.target).intersectingScopeSets(a)&&this.removeAccessToken(e,t)}),await this.setAccessTokenCredential(e,t,n)}getAccountsFilteredBy(e,t){let n=this.getAccountKeys(),r=[];return n.forEach(n=>{let i=this.getAccount(n,t);if(!i||e.homeAccountId&&!this.matchHomeAccountId(i,e.homeAccountId)||e.environment&&!this.matchEnvironment(i,e.environment,t)||e.realm&&!this.matchRealm(i,e.realm)||e.nativeAccountId&&!this.matchNativeAccountId(i,e.nativeAccountId)||e.authorityType&&!this.matchAuthorityType(i,e.authorityType))return;let a={localAccountId:e?.localAccountId,name:e?.name,username:e?.username,loginHint:e?.loginHint,upn:e?.upn},o=i.tenantProfiles?.filter(e=>this.tenantProfileMatchesFilter(e,a));o&&o.length===0||r.push(i)}),r}credentialMatchesFilter(e,t,n){return!(t.clientId&&!this.matchClientId(e,t.clientId)||t.userAssertionHash&&!this.matchUserAssertionHash(e,t.userAssertionHash)||typeof t.homeAccountId==`string`&&!this.matchHomeAccountId(e,t.homeAccountId)||t.environment&&!this.matchEnvironment(e,t.environment,n)||t.realm&&!this.matchRealm(e,t.realm)||t.credentialType&&!this.matchCredentialType(e,t.credentialType)||t.familyId&&!this.matchFamilyId(e,t.familyId)||t.target&&!this.matchTarget(e,t.target)||e.credentialType===y.ACCESS_TOKEN_WITH_AUTH_SCHEME&&(t.tokenType&&!this.matchTokenType(e,t.tokenType)||t.tokenType===b.SSH&&t.keyId&&!this.matchKeyId(e,t.keyId)))}getAppMetadataFilteredBy(e,t){let n=this.getKeys(),r={};return n.forEach(n=>{if(!this.isAppMetadata(n))return;let i=this.getAppMetadata(n,t);i&&(e.environment&&!this.matchEnvironment(i,e.environment,t)||e.clientId&&!this.matchClientId(i,e.clientId)||(r[n]=i))}),r}getAuthorityMetadataByAlias(e,t){let n=this.getAuthorityMetadataKeys(),r=null;return n.forEach(n=>{if(!this.isAuthorityMetadata(n)||n.indexOf(this.clientId)===-1)return;let i=this.getAuthorityMetadata(n,t);i&&i.aliases.indexOf(e)!==-1&&(r=i)}),r}removeAllAccounts(e){this.getAllAccounts({},e).forEach(t=>{this.removeAccount(t,e)})}removeAccount(e,t){this.removeAccountContext(e,t),this.getAccountKeys().filter(t=>t.includes(e.homeAccountId)&&t.includes(e.environment)).forEach(e=>{this.removeItem(e,t),this.performanceClient.incrementFields({accountsRemoved:1},t)})}removeAccountContext(e,t){let n=this.getTokenKeys(),r=t=>t.includes(e.homeAccountId)&&t.includes(e.environment);n.idToken.filter(r).forEach(e=>{this.removeIdToken(e,t)}),n.accessToken.filter(r).forEach(e=>{this.removeAccessToken(e,t)}),n.refreshToken.filter(r).forEach(e=>{this.removeRefreshToken(e,t)})}removeAccessToken(e,t){let n=this.getAccessTokenCredential(e,t);if(n&&(this.removeItem(e,t),this.performanceClient.incrementFields({accessTokensRemoved:1},t),n.credentialType.toLowerCase()===y.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()&&n.tokenType===b.POP)){let e=n.keyId;e&&this.cryptoImpl.removeTokenBindingKey(e,t).catch(()=>{this.commonLogger.error(`0cx291`,t),this.performanceClient?.incrementFields({removeTokenBindingKeyFailure:1},t)})}}removeAppMetadata(e){return this.getKeys().forEach(t=>{this.isAppMetadata(t)&&this.removeItem(t,e)}),!0}getIdToken(e,t,n,r){this.commonLogger.trace(`1drz22`,t);let i={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:y.ID_TOKEN,clientId:this.clientId,realm:r},a=this.getIdTokensByFilter(i,t,n),o=a.size;if(o<1)return this.commonLogger.info(`1atvtd`,t),null;if(o>1){let n=a;if(!r){let r=new Map;a.forEach((t,n)=>{t.realm===e.tenantId&&r.set(n,t)});let i=r.size;if(i<1)return this.commonLogger.info(`0ooalx`,t),a.values().next().value??null;if(i===1)return this.commonLogger.info(`1eq2vc`,t),r.values().next().value??null;n=r}return this.commonLogger.info(`1ws328`,t),n.forEach((e,n)=>{this.removeIdToken(n,t)}),this.performanceClient.addFields({multiMatchedID:a.size},t),null}return this.commonLogger.info(`1sm769`,t),a.values().next().value??null}getIdTokensByFilter(e,t,n){let r=n&&n.idToken||this.getTokenKeys().idToken,i=new Map;return r.forEach(n=>{if(!this.idTokenKeyMatchesFilter(n,{clientId:this.clientId,...e}))return;let r=this.getIdTokenCredential(n,t);r&&this.credentialMatchesFilter(r,e,t)&&i.set(n,r)}),i}idTokenKeyMatchesFilter(e,t){let n=e.toLowerCase();return!(t.clientId&&n.indexOf(t.clientId.toLowerCase())===-1||t.homeAccountId&&n.indexOf(t.homeAccountId.toLowerCase())===-1)}removeIdToken(e,t){this.removeItem(e,t)}removeRefreshToken(e,t){this.removeItem(e,t)}getAccessToken(e,t,n,r){let i=t.correlationId;this.commonLogger.trace(`1t7hz1`,i);let a=k.createSearchScopes(t.scopes),o=t.authenticationScheme||b.BEARER,s=o&&o.toLowerCase()!==b.BEARER.toLowerCase()?y.ACCESS_TOKEN_WITH_AUTH_SCHEME:y.ACCESS_TOKEN,c={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:s,clientId:this.clientId,realm:r||e.tenantId,target:a,tokenType:o,keyId:t.sshKid},l=n&&n.accessToken||this.getTokenKeys().accessToken,u=[];l.forEach(e=>{if(this.accessTokenKeyMatchesFilter(e,c,!0)){let t=this.getAccessTokenCredential(e,i);t&&this.credentialMatchesFilter(t,c,i)&&u.push(t)}});let d=u.length;return d<1?(this.commonLogger.info(`1nckna`,i),null):d>1?(this.commonLogger.info(`1wkfwp`,i),u.forEach(e=>{this.removeAccessToken(this.generateCredentialKey(e),i)}),this.performanceClient.addFields({multiMatchedAT:u.length},i),null):(this.commonLogger.info(`06yt98`,i),u[0])}accessTokenKeyMatchesFilter(e,t,n){let r=e.toLowerCase();if(t.clientId&&r.indexOf(t.clientId.toLowerCase())===-1||t.homeAccountId&&r.indexOf(t.homeAccountId.toLowerCase())===-1||t.realm&&r.indexOf(t.realm.toLowerCase())===-1)return!1;if(t.target){let e=t.target.asArray();for(let t=0;t{if(!this.accessTokenKeyMatchesFilter(n,e,!0))return;let i=this.getAccessTokenCredential(n,t);i&&this.credentialMatchesFilter(i,e,t)&&r.push(i)}),r}getRefreshToken(e,t,n,r){this.commonLogger.trace(`0x53vi`,n);let i=t?`1`:void 0,a={homeAccountId:e.homeAccountId,environment:e.environment,credentialType:y.REFRESH_TOKEN,clientId:this.clientId,familyId:i},o=r&&r.refreshToken||this.getTokenKeys().refreshToken,s=[];o.forEach(e=>{if(this.refreshTokenKeyMatchesFilter(e,a)){let t=this.getRefreshTokenCredential(e,n);t&&this.credentialMatchesFilter(t,a,n)&&s.push(t)}});let c=s.length;return c<1?(this.commonLogger.info(`0dlw11`,n),null):(c>1&&this.performanceClient.addFields({multiMatchedRT:c},n),this.commonLogger.info(`0wcnep`,n),s[0])}refreshTokenKeyMatchesFilter(e,t){let n=e.toLowerCase();return!(t.familyId&&n.indexOf(t.familyId.toLowerCase())===-1||!t.familyId&&t.clientId&&n.indexOf(t.clientId.toLowerCase())===-1||t.homeAccountId&&n.indexOf(t.homeAccountId.toLowerCase())===-1)}readAppMetadataFromCache(e,t){let n={environment:e,clientId:this.clientId},r=this.getAppMetadataFilteredBy(n,t),i=Object.keys(r).map(e=>r[e]),a=i.length;if(a<1)return null;if(a>1)throw T(an);return i[0]}isAppMetadataFOCI(e,t){let n=this.readAppMetadataFromCache(e,t);return!!(n&&n.familyId===`1`)}matchHomeAccountId(e,t){return typeof e.homeAccountId==`string`&&t===e.homeAccountId}matchLocalAccountIdFromTokenClaims(e,t){return t===(e.oid||e.sub)}matchLocalAccountIdFromTenantProfile(e,t){return e.localAccountId===t}matchName(e,t){return t.toLowerCase()===e.name?.toLowerCase()}matchUsername(e,t){return!!(e&&typeof e==`string`&&t?.toLowerCase()===e.toLowerCase())}matchLoginHintWithTenantProfile(e,t){return e.loginHint===t||e.username===t||e.upn===t}matchUserAssertionHash(e,t){return!!(e.userAssertionHash&&t===e.userAssertionHash)}matchEnvironment(e,t,n){if(this.staticAuthorityOptions){let r=Nr(this.staticAuthorityOptions,this.commonLogger,n);if(r.includes(t)&&r.includes(e.environment))return!0}let r=this.getAuthorityMetadataByAlias(t,n);return!!(r&&r.aliases.indexOf(e.environment)>-1)}matchCredentialType(e,t){return e.credentialType&&t.toLowerCase()===e.credentialType.toLowerCase()}matchClientId(e,t){return!!(e.clientId&&t===e.clientId)}matchFamilyId(e,t){return!!(e.familyId&&t===e.familyId)}matchRealm(e,t){return e.realm?.toLowerCase()===t.toLowerCase()}matchNativeAccountId(e,t){return!!(e.nativeAccountId&&t===e.nativeAccountId)}matchLoginHintFromTokenClaims(e,t){return!!(e.login_hint===t||e.preferred_username===t||e.upn===t||e.emails&&e.emails.includes(t))}matchSid(e,t){return e.sid===t}matchAuthorityType(e,t){return!!(e.authorityType&&t.toLowerCase()===e.authorityType.toLowerCase())}matchTarget(e,t){return e.credentialType!==y.ACCESS_TOKEN&&e.credentialType!==y.ACCESS_TOKEN_WITH_AUTH_SCHEME||!e.target?!1:k.fromString(e.target).containsScopeSet(t)}matchTokenType(e,t){return!!(e.tokenType&&e.tokenType===t)}matchKeyId(e,t){return!!(e.keyId&&e.keyId===t)}isAppMetadata(e){return e.indexOf(ve)!==-1}isAuthorityMetadata(e){return e.indexOf(be)!==-1}generateAuthorityMetadataCacheKey(e){return`${be}-${this.clientId}-${e}`}static toObject(e,t){for(let n in t)e[n]=t[n];return e}},qr=class extends Kr{async setAccount(){throw T(O)}getAccount(){throw T(O)}async setIdTokenCredential(){throw T(O)}getIdTokenCredential(){throw T(O)}async setAccessTokenCredential(){throw T(O)}getAccessTokenCredential(){throw T(O)}async setRefreshTokenCredential(){throw T(O)}getRefreshTokenCredential(){throw T(O)}setAppMetadata(){throw T(O)}getAppMetadata(){throw T(O)}setServerTelemetry(){throw T(O)}getServerTelemetry(){throw T(O)}setAuthorityMetadata(){throw T(O)}getAuthorityMetadata(){throw T(O)}getAuthorityMetadataKeys(){throw T(O)}setThrottlingCache(){throw T(O)}getThrottlingCache(){throw T(O)}removeItem(){throw T(O)}getKeys(){throw T(O)}getAccountKeys(){throw T(O)}getTokenKeys(){throw T(O)}generateCredentialKey(){throw T(O)}generateAccountKey(){throw T(O)}},Jr={NotStarted:0,InProgress:1,Completed:2},Yr=class{generateId(){return`callback-id`}startMeasurement(e,t){return{end:()=>null,discard:()=>{},add:()=>{},increment:()=>{},event:{eventId:this.generateId(),status:Jr.InProgress,authority:``,libraryName:``,libraryVersion:``,clientId:``,name:e,startTimeMs:Date.now(),correlationId:t||``}}}endMeasurement(){return null}discardMeasurements(){}removePerformanceCallback(){return!0}addPerformanceCallback(){return``}emitEvents(){}addFields(){}incrementFields(){}cacheEventByCorrelationId(){}},Xr={tokenRenewalOffsetSeconds:300,preventCorsPreflight:!1},Zr={loggerCallback:()=>{},piiLoggingEnabled:!1,logLevel:j.Info,correlationId:``},Qr={async sendGetRequestAsync(){throw T(O)},async sendPostRequestAsync(){throw T(O)}},$r={sku:e,version:P,cpu:``,os:``},ei={clientSecret:``,clientAssertion:void 0},ti={azureCloudInstance:F.None,tenant:`${r}`},ni={application:{appName:``,appVersion:``}};function ri({authOptions:e,systemOptions:t,loggerOptions:n,storageInterface:r,networkInterface:i,cryptoInterface:a,clientCredentials:o,libraryInfo:s,telemetry:c,serverTelemetryManager:l,persistencePlugin:u,serializableCache:d}){let f={...Zr,...n};return{authOptions:ii(e),systemOptions:{...Xr,...t},loggerOptions:f,storageInterface:r||new qr(e.clientId,A,new N(f),new Yr),networkInterface:i||Qr,cryptoInterface:a||A,clientCredentials:o||ei,libraryInfo:{...$r,...s},telemetry:{...ni,...c},serverTelemetryManager:l||null,persistencePlugin:u||null,serializableCache:d||null}}function ii(e){return{clientCapabilities:[],azureCloudOptions:ti,instanceAware:!1,isMcp:!1,...e}}function ai(e){return e.authOptions.authority.options.protocolMode===H.OIDC}function oi(e,t,n){let r=si(e,n);return t?`${r}|${t}`:r}function si(e,t){if(!e)throw T(mn);let n={id:e.createNewGuid()};t&&(n.meta=t);let r=JSON.stringify(n);return e.base64Encode(r)}function ci(e,t){if(!e)throw T(mn);if(!t)throw T(D);try{let n=t.split(`|`),r=n[0],i=n.length>1?n.slice(1).join(`|`):``,a=e(r),o=JSON.parse(a);return{userRequestState:i||``,libraryState:o}}catch{throw T(D)}}var li=class e extends S{constructor(t,n,r){super(t.errorCode,t.errorMessage,t.subError),Object.setPrototypeOf(this,e.prototype),this.name=`NetworkError`,this.error=t,this.httpStatus=n,this.responseHeaders=r}};function W(e,t,n,r){return e.errorMessage=`${e.errorMessage}, additionalErrorInfo: error.name:${r?.name}, error.message:${r?.message}`,new li(e,t,n)}var ui={sendGetRequestAsync:()=>Promise.reject(T(O)),sendPostRequestAsync:()=>Promise.reject(T(O))},di=`acquireTokenFromCache`,fi=`acquireTokenByRefreshToken`,pi=`acquireTokenSilentAsync`,mi=`cryptoOptsGetPublicKeyThumbprint`,hi=`cryptoOptsSignJwt`,gi=`silentCacheClientAcquireToken`,_i=`silentIframeClientAcquireToken`,vi=`awaitConcurrentIframe`,yi=`silentRefreshClientAcquireToken`,bi=`standardInteractionClientGetDiscoveredAuthority`,xi=`nativeInteractionClientAcquireToken`,Si=`nativeInteractionClientAcquireToken`,Ci=`refreshTokenClientAcquireTokenByRefreshToken`,wi=`acquireTokenBySilentIframe`,Ti=`initializeBaseRequest`,Ei=`initializeSilentRequest`,Di=`initializeCache`,Oi=`silentIframeClientTokenHelper`,ki=`silentHandlerInitiateAuthRequest`,Ai=`silentHandlerMonitorIframeForHash`,ji=`silentHandlerLoadFrameSync`,Mi=`standardInteractionClientCreateAuthCodeClient`,Ni=`standardInteractionClientGetClientConfiguration`,Pi=`standardInteractionClientInitializeAuthorizationRequest`,Fi=`silentFlowClientAcquireCachedToken`,Ii=`getStandardParams`,Li=`handleCodeResponse`,Ri=`handleResponseEar`,zi=`handleResponsePlatformBroker`,Bi=`handleResponseCode`,Vi=`authClientAcquireToken`,Hi=`deserializeResponse`,Ui=`authorityFactoryCreateDiscoveredInstance`,Wi=`acquireTokenByCodeAsync`,Gi=`handleRedirectPromise`,Ki=`handleNativeRedirectPromise`,qi=`nativeMessageHandlerHandshake`,Ji=`removeHiddenIframe`,Yi=`importExistingCache`,Xi=`generatePkceCodes`,Zi=`generateCodeVerifier`,Qi=`generateCodeChallengeFromVerifier`,$i=`sha256Digest`,ea=`getRandomValues`,ta=`generateHKDF`,na=`generateBaseKey`,ra=`base64Decode`,ia=`urlEncodeArr`,aa=`encrypt`,oa=`decrypt`,sa=`generateEarKey`,ca=`decryptEarResponse`,la=`waitForBridgeLateResponse`;function ua(e){return`See https://aka.ms/msal.js.errors#${e} for details`}var da=class e extends S{constructor(t,n){super(t,ua(t),n),Object.setPrototypeOf(this,e.prototype),this.name=`BrowserAuthError`}};function G(e,t){return new da(e,t)}var fa={INVALID_GRANT_ERROR:`invalid_grant`,POPUP_WIDTH:483,POPUP_HEIGHT:600,POPUP_NAME_PREFIX:`msal`,MSAL_SKU:`msal.js.browser`},pa={CHANNEL_ID:`53ee284d-920a-4b59-9d30-a60315b26836`,PREFERRED_EXTENSION_ID:`ppnbnpeolgkicgegkbkbjmhlideopiji`,MATS_TELEMETRY:`MATS`,MICROSOFT_ENTRA_BROKERID:`MicrosoftEntra`,DOM_API_NAME:`DOM API`,PLATFORM_DOM_APIS:`get-token-and-sign-out`,PLATFORM_DOM_PROVIDER:`PlatformAuthDOMHandler`,PLATFORM_EXTENSION_PROVIDER:`PlatformAuthExtensionHandler`},ma={HandshakeRequest:`Handshake`,HandshakeResponse:`HandshakeResponse`,GetToken:`GetToken`,Response:`Response`},ha={LocalStorage:`localStorage`,SessionStorage:`sessionStorage`,MemoryStorage:`memoryStorage`},ga={GET:`GET`,POST:`POST`},_a={SIGNIN:`signin`,SIGNOUT:`signout`},va={ORIGIN_URI:`request.origin`,URL_HASH:`urlHash`,REQUEST_PARAMS:`request.params`,VERIFIER:`code.verifier`,INTERACTION_STATUS_KEY:`interaction.status`,NATIVE_REQUEST:`request.native`},ya={WRAPPER_SKU:`wrapper.sku`,WRAPPER_VER:`wrapper.version`},ba={acquireTokenRedirect:861,acquireTokenPopup:862,ssoSilent:863,acquireTokenSilent_authCode:864,handleRedirectPromise:865,acquireTokenByCode:866,acquireTokenSilent_silentFlow:61,logout:961,logoutPopup:962,hydrateCache:963,loadExternalTokens:964},xa={861:`acquireTokenRedirect`,862:`acquireTokenPopup`,863:`ssoSilent`,864:`acquireTokenSilent_authCode`,865:`handleRedirectPromise`,866:`acquireTokenByCode`,61:`acquireTokenSilent_silentFlow`,961:`logout`,962:`logoutPopup`,963:`hydrateCache`,964:`loadExternalTokens`},Sa=e=>typeof e==`number`&&e in xa?xa[e]:`unknown`,Ca;(function(e){e.Redirect=`redirect`,e.Popup=`popup`,e.Silent=`silent`,e.None=`none`})(Ca||={});var wa={scopes:g},Ta=`msal.db`,Ea=`${Ta}.keys`,K={Default:0,AccessToken:1,AccessTokenAndRefreshToken:2,RefreshToken:3,RefreshTokenAndNetwork:4,Skip:5},Da=[K.Default,K.Skip,K.RefreshTokenAndNetwork];function Oa(e){return encodeURIComponent(ka(e).replace(/=/g,``).replace(/\+/g,`-`).replace(/\//g,`_`))}function q(e){return Aa(e).replace(/=/g,``).replace(/\+/g,`-`).replace(/\//g,`_`)}function ka(e){return Aa(new TextEncoder().encode(e))}function Aa(e){let t=Array.from(e,e=>String.fromCodePoint(e)).join(``);return btoa(t)}var ja=`pkce_not_created`,Ma=`ear_jwk_empty`,Na=`ear_jwe_empty`,Pa=`crypto_nonexistent`,Fa=`empty_navigate_uri`,Ia=`hash_empty_error`,La=`no_state_in_hash`,Ra=`hash_does_not_contain_known_properties`,za=`unable_to_parse_state`,Ba=`state_interaction_type_mismatch`,Va=`interaction_in_progress`,Ha=`interaction_in_progress_cancelled`,Ua=`popup_window_error`,Wa=`empty_window_error`,Ga=`user_cancelled`,Ka=`redirect_bridge_empty_response`,qa=`redirect_in_iframe`,Ja=`block_iframe_reload`,Ya=`block_nested_popups`,Xa=`silent_logout_unsupported`,Za=`no_account_error`,Qa=`no_token_request_cache_error`,$a=`unable_to_parse_token_request_cache_error`,eo=`non_browser_environment`,to=`database_not_open`,no=`no_network_connectivity`,ro=`post_request_failed`,io=`get_request_failed`,ao=`failed_to_parse_response`,oo=`crypto_key_not_found`,so=`auth_code_required`,co=`auth_code_or_nativeAccountId_required`,lo=`spa_code_and_nativeAccountId_present`,uo=`database_unavailable`,fo=`unable_to_acquire_token_from_native_platform`,po=`native_handshake_timeout`,mo=`native_extension_not_installed`,ho=`native_connection_not_established`,go=`uninitialized_public_client_application`,_o=`native_prompt_not_supported`,vo=`invalid_base64_string`,yo=`invalid_pop_token_request`,bo=`failed_to_build_headers`,xo=`failed_to_parse_headers`,So=`failed_to_decrypt_ear_response`,Co=`timed_out`,wo=`empty_response`;function To(e){return new TextDecoder().decode(J(e))}function J(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`);switch(t.length%4){case 0:break;case 2:t+=`==`;break;case 3:t+=`=`;break;default:throw G(vo)}let n=atob(t);return Uint8Array.from(n,e=>e.codePointAt(0)||0)}var Eo=`RSASSA-PKCS1-v1_5`,Y=`AES-GCM`,Do=`HKDF`,Oo=`SHA-256`,ko=2048,Ao=new Uint8Array([1,0,1]),jo=`0123456789abcdef`,Mo=new Uint32Array(1),No=`raw`,Po=`encrypt`,Fo=`decrypt`,Io=`deriveKey`,Lo=`crypto_subtle_undefined`,Ro={name:Eo,hash:Oo,modulusLength:ko,publicExponent:Ao};function zo(e){if(!window)throw G(eo);if(!window.crypto)throw G(Pa);if(!e&&!window.crypto.subtle)throw G(Pa,Lo)}async function Bo(e){let t=new TextEncoder().encode(e);return window.crypto.subtle.digest(Oo,t)}function Vo(e){return window.crypto.getRandomValues(e)}function Ho(){return window.crypto.getRandomValues(Mo),Mo[0]}function Uo(){let e=Date.now(),t=Ho()*1024+(Ho()&1023),n=new Uint8Array(16),r=Math.trunc(t/2**30),i=t&2**30-1,a=Ho();n[0]=e/2**40,n[1]=e/2**32,n[2]=e/2**24,n[3]=e/2**16,n[4]=e/2**8,n[5]=e,n[6]=112|r>>>8,n[7]=r,n[8]=128|i>>>24,n[9]=i>>>16,n[10]=i>>>8,n[11]=i,n[12]=a>>>24,n[13]=a>>>16,n[14]=a>>>8,n[15]=a;let o=``;for(let e=0;e>>4),o+=jo.charAt(n[e]&15),(e===3||e===5||e===7||e===9)&&(o+=`-`);return o}async function Wo(e,t){return window.crypto.subtle.generateKey(Ro,e,t)}async function Go(e){return window.crypto.subtle.exportKey(`jwk`,e)}async function Ko(e,t,n){return window.crypto.subtle.importKey(`jwk`,e,Ro,t,n)}async function qo(e,t){return window.crypto.subtle.sign(Ro,e,t)}async function Jo(){let e=await Zo(),t={alg:`dir`,kty:`oct`,k:q(new Uint8Array(e))};return ka(JSON.stringify(t))}async function Yo(e){let t=To(e),n=JSON.parse(t).k,r=J(n);return window.crypto.subtle.importKey(No,r,Y,!1,[Fo])}async function Xo(e,t){let n=t.split(`.`);if(n.length!==5)throw G(So,`jwe_length`);let r=await Yo(e).catch(()=>{throw G(So,`import_key`)});try{let e=new TextEncoder().encode(n[0]),t=J(n[2]),i=J(n[3]),a=J(n[4]),o=a.byteLength*8,s=new Uint8Array(i.length+a.length);s.set(i),s.set(a,i.length);let c=await window.crypto.subtle.decrypt({name:Y,iv:t,tagLength:o,additionalData:e},r,s);return new TextDecoder().decode(c)}catch{throw G(So,`decrypt`)}}async function Zo(){let e=await window.crypto.subtle.generateKey({name:Y,length:256},!0,[Po,Fo]);return window.crypto.subtle.exportKey(No,e)}async function Qo(e){return window.crypto.subtle.importKey(No,e,Do,!1,[Io])}async function $o(e,t,n){return window.crypto.subtle.deriveKey({name:Do,salt:t,hash:Oo,info:new TextEncoder().encode(n)},e,{name:Y,length:256},!1,[Po,Fo])}async function es(e,t,n){let r=new TextEncoder().encode(t),i=window.crypto.getRandomValues(new Uint8Array(16)),a=await $o(e,i,n),o=await window.crypto.subtle.encrypt({name:Y,iv:new Uint8Array(12)},a,r);return{data:q(new Uint8Array(o)),nonce:q(i)}}async function ts(e,t,n,r){let i=J(r),a=await $o(e,J(t),n),o=await window.crypto.subtle.decrypt({name:Y,iv:new Uint8Array(12)},a,i);return new TextDecoder().decode(o)}async function ns(e){let t=await Bo(e);return q(new Uint8Array(t))}var rs=class e extends S{constructor(t,n){super(t,n),this.name=`BrowserConfigurationAuthError`,Object.setPrototypeOf(this,e.prototype)}};function is(e){return new rs(e,ua(e))}var as=`storage_not_supported`,os=`in_mem_redirect_unavailable`;function ss(){let e=window.location.hash,t=window.location.search,n=!1,r=!1,i=``,a;if(e&&e.length>1){let t=e.charAt(0)===`#`?e.substring(1):e,r=new URLSearchParams(t);r.has(`state`)&&(n=!0,i=t,a=r)}if(t&&t.length>1){let e=t.charAt(0)===`?`?t.substring(1):t,n=new URLSearchParams(e);n.has(`state`)&&(r=!0,i=e,a=n)}if(n&&r&&(i=`${t.charAt(0)===`?`?t.substring(1):t}${e.charAt(0)===`#`?e.substring(1):e}`,a=new URLSearchParams(i)),!i||!a)throw G(wo);let o=a.get(`state`);if(!o)throw G(La);let{libraryState:s}=ci(To,o),{id:c,meta:l}=s;if(!c||!l)throw G(za,`missing_library_state`);return{params:a,payload:i,urlHash:e,urlQuery:t,hasResponseInHash:n,hasResponseInQuery:r,libraryState:{id:c,meta:l}}}function cs(e){e.location.hash=``,typeof e.history.replaceState==`function`&&e.history.replaceState(null,``,`${e.location.origin}${e.location.pathname}${e.location.search}`)}function ls(e){let t=e.split(`#`);t.shift(),window.location.hash=t.length>0?t.join(`#`):``}function X(){return window.parent!==window}function us(){if(X())return!1;try{let{libraryState:e}=ss(),{meta:t}=e;return t.interactionType===Ca.Popup}catch{return!1}}var Z=null;function ds(e,t){Z&&=(e.verbose(`18y01k`,t),clearTimeout(Z.timeoutId),Z.channel.close(),Z.reject(G(Ha)),null)}async function fs(e,t,n,r,i,a){return new Promise((o,s)=>{t.verbose(`1rf6em`,r.correlationId);let c=r.correlationId;i.addFields({redirectBridgeTimeoutMs:e,lateResponseExperimentEnabled:a?.iframeTimeoutTelemetry||!1},c);let{libraryState:l}=ci(n.base64Decode,r.state||``),u=new BroadcastChannel(l.id),d,f=!1,p,m,h=window.setTimeout(()=>{Z=null,a?.iframeTimeoutTelemetry?(m=i.startMeasurement(la,c),f=!0,p=window.setTimeout(()=>{m?.end({success:!1}),clearTimeout(p),u.close()},6e4)):u.close(),s(G(Co,`redirect_bridge_timeout`))},e);Z={timeoutId:h,channel:u,reject:s},u.onmessage=e=>{d=e.data.payload;let t=e?.data&&typeof e.data.v==`number`?e.data.v:void 0;if(f){m?.end({success:!!d}),clearTimeout(p),u.close();return}i.addFields({redirectBridgeMessageVersion:t},c),Z=null,clearTimeout(h),u.close(),d?o(d):s(G(Ka))}})}function ps(){return typeof window<`u`&&window.location?window.location.href.split(`?`)[0].split(`#`)[0]:``}function ms(){let e=new L(window.location.href).getUrlComponents();return`${e.Protocol}//${e.HostNameAndPort}/`}function hs(){if(pr(window.location.hash)&&X())throw G(Ja)}function gs(e){if(X()&&!e)throw G(qa)}function _s(){if(us())throw G(Ya)}function vs(){if(typeof window>`u`)throw G(eo)}function ys(e){if(!e)throw G(go)}function bs(e){vs(),hs(),_s(),ys(e)}function xs(e,t){if(bs(e),gs(t.system.allowRedirectInIframe),t.cache.cacheLocation===ha.MemoryStorage)throw is(os)}function Ss(e){let t=document.createElement(`link`);t.rel=`preconnect`,t.href=new URL(e).origin,t.crossOrigin=`anonymous`,document.head.appendChild(t),window.setTimeout(()=>{try{document.head.removeChild(t)}catch{}},1e4)}function Cs(){return Uo()}var Q=`msal`,$=`browser`,ws=`${Q}.${$}.log.level`,Ts=`${Q}.${$}.log.pii`;`${Q}${$}`;var Es=`${Q}.${$}.platform.auth.dom`,Ds=`${Q}.version`,Os=`account.keys`,ks=`token.keys`,As=`${Q}.${$}.sso.capable`;function js(e=3){return e<1?`${Q}.${Os}`:`${Q}.${e}.${Os}`}function Ms(e,t=3){return t<1?`${Q}.${ks}.${e}`:`${Q}.${t}.${ks}.${e}`}var Ns=class e{navigateInternal(t,n){return e.defaultNavigateWindow(t,n)}navigateExternal(t,n){return e.defaultNavigateWindow(t,n)}static defaultNavigateWindow(e,t){return t.noHistory?window.location.replace(e):window.location.assign(e),new Promise((e,n)=>{setTimeout(()=>{n(G(Co,`failed_to_redirect`))},t.timeout)})}},Ps=class{async sendGetRequestAsync(e,t){let n,r={},i=0,a=Fs(t);try{n=await fetch(e,{method:ga.GET,headers:a})}catch(e){throw W(G(window.navigator.onLine?io:no),void 0,void 0,e)}r=Is(n.headers);try{return i=n.status,{headers:r,body:await n.json(),status:i}}catch(e){throw W(G(ao),i,r,e)}}async sendPostRequestAsync(e,t){let n=t&&t.body||``,r=Fs(t),i,a=0,o={};try{i=await fetch(e,{method:ga.POST,headers:r,body:n})}catch(e){throw W(G(window.navigator.onLine?ro:no),void 0,void 0,e)}o=Is(i.headers);try{return a=i.status,{headers:o,body:await i.json(),status:a}}catch(e){throw W(G(ao),a,o,e)}}};function Fs(e){try{let t=new Headers;if(!(e&&e.headers))return t;let n=e.headers;return Object.entries(n).forEach(([e,n])=>{t.append(e,n)}),t}catch(e){throw W(G(bo),void 0,void 0,e)}}function Is(e){try{let t={};return e.forEach((e,n)=>{t[n]=e}),t}catch{throw G(xo)}}var Ls=3e4,Rs=2e3;function zs({auth:e,cache:n,system:r,experimental:i,telemetry:a},o){let s={clientId:``,authority:`${t}`,knownAuthorities:[],cloudDiscoveryMetadata:``,authorityMetadata:``,redirectUri:typeof window<`u`&&window.location?window.location.href.split(`?`)[0].split(`#`)[0]:``,postLogoutRedirectUri:``,clientCapabilities:[],OIDCOptions:{responseMode:pe.FRAGMENT,defaultScopes:[l,u,d]},azureCloudOptions:{azureCloudInstance:F.None,tenant:``},instanceAware:!1,isMcp:!1,verifySSO:!1},c={cacheLocation:ha.SessionStorage,cacheRetentionDays:5},f={loggerCallback:()=>{},logLevel:j.Info,piiLoggingEnabled:!1},p={...Xr,loggerOptions:f,networkClient:o?new Ps:ui,navigationClient:new Ns,popupBridgeTimeout:r?.popupBridgeTimeout||6e4,iframeBridgeTimeout:r?.iframeBridgeTimeout||1e4,redirectNavigationTimeout:Ls,allowRedirectInIframe:!1,navigatePopups:!0,allowPlatformBroker:!1,nativeBrokerHandshakeTimeout:r?.nativeBrokerHandshakeTimeout||2e3,protocolMode:H.AAD,...r,loggerOptions:r?.loggerOptions||f},m={application:{appName:``,appVersion:``},client:new Yr},h={iframeTimeoutTelemetry:!1};if(r?.protocolMode!==H.OIDC&&e?.OIDCOptions&&new N(p.loggerOptions).warning(JSON.stringify(C(Vt)),``),r?.protocolMode&&r.protocolMode===H.OIDC&&p?.allowPlatformBroker)throw C(Ht);return{auth:{...s,...e,OIDCOptions:{...s.OIDCOptions,...e?.OIDCOptions}},cache:{...c,...n},system:p,experimental:{...h,...i},telemetry:{...m,...a}}}export{Fa as $,Tt as $i,Gr as $n,En as $r,ra as $t,ts as A,Oe as Aa,tn as Ai,gi as An,cr as Ar,K as At,Ko as B,je as Ba,It as Bi,bi as Bn,Jn as Br,Sa as Bt,bs as C,a as Ca,D as Ci,Ei as Cn,A as Cr,Ga as Ct,as as D,ee as Da,Xt as Di,Ci as Dn,fr as Dr,ba as Dt,fs as E,se as Ea,Sn as Ei,qi as En,hr as Er,q as Et,Jo as F,fe as Fa,en as Fi,_i as Fn,Yn as Fr,ya as Ft,To as G,we as Ga,Ft as Gi,oi as Gn,lr as Gr,Wi as Gt,qo as H,pe as Ha,Pt as Hi,ia as Hn,qn as Hr,da as Ht,Qo as I,g as Ia,gn as Ii,Oi as In,Xn as Ir,Ca as It,oo as J,Rt as Ji,Kr as Jn,jn as Jr,di as Jt,co as K,Ee as Ka,Ot as Ki,ri as Kn,tr as Kr,fi as Kt,Wo as L,ue as La,hn as Li,yi as Ln,nr as Lr,ma as Lt,es as M,Ne as Ma,on as Mi,ki as Mn,Pn as Mr,Ea as Mt,Go as N,ae as Na,xn as Ni,ji as Nn,Ln as Nr,wa as Nt,is as O,ne as Oa,pn as Oi,Ji as On,Bn as Or,ha as Ot,Zo as P,h as Pa,$t as Pi,Ai as Pn,$n as Pr,_a as Pt,Ma as Q,S as Qi,U as Qn,sr as Qr,vi as Qt,Vo as R,de as Ra,Ut as Ri,Mi as Rn,On as Rr,pa as Rt,Ss as S,Te as Sa,fn as Si,Di as Sn,N as Sr,go as St,ls as T,le as Ta,O as Ti,Si as Tn,mr as Tr,Oa as Tt,zo as U,p as Ua,zt as Ui,li as Un,Rn as Ur,G as Ut,Bo as V,Ae as Va,Wt as Vi,Pi as Vn,Wn as Vr,Da as Vt,J as W,Ce as Wa,Bt as Wi,ci as Wn,Mn as Wr,ua as Wt,uo as X,w as Xi,Ur as Xn,zn as Xr,Vi as Xt,to as Y,T as Yi,Hr as Yn,er as Yr,pi as Yt,Na as Z,C as Zi,Wr as Zn,Nn as Zr,Ui as Zt,Cs as _,ke as _a,nn as _i,Bi as _n,Cr as _r,Ba as _t,ws as a,gt as aa,Kn as ai,aa as an,B as ar,ho as at,X as b,n as ba,yn as bi,Yi as bn,P as br,za as bt,Q as c,c as ca,wn as ci,Zi as cn,jr as cr,_o as ct,js as d,be as da,In as di,Xi as dn,z as dr,La as dt,_t as ea,Un as ei,mi as en,H as er,Wa as et,Ms as f,xe as fa,ir as fi,ea as fn,L as fr,Qa as ft,cs as g,s as ga,k as gi,Gi as gn,I as gr,lo as gt,ds as h,Se as ha,Cn as hi,Ki as hn,Tr as hr,Xa as ht,Ns as i,dt as ia,kn as ii,Hi as in,Br as ir,yo as it,Xo as j,oe as ja,Zt as ji,Fi as jn,Fn as jr,Ta as jt,Uo as k,te as ka,un as ki,$i as kn,Gn as kr,fa as kt,As as l,i as la,Dn as li,sa as ln,Mr as lr,Za as lt,vs as m,b as ma,or as mi,Li as mn,wr as mr,Ua as mt,Ls as n,x as na,An as ni,oa as nn,V as nr,Ia as nt,Ts as o,_ as oa,ur as oi,na as on,Rr as or,mo as ot,ys as p,re as pa,Hn as pi,Ii as pn,Dr as pr,ja as pt,so as q,m as qa,Nt as qi,ai as qn,Zn as qr,wi as qt,zs as r,yt as ra,Vn as ri,ca as rn,zr as rr,Va as rt,Es as s,o as sa,Tn as si,Qi as sn,Ir as sr,po as st,Rs as t,vt as ta,rr as ti,hi as tn,Vr as tr,Ra as tt,Ds as u,ve as ua,ar as ui,ta as un,Fr as ur,no as ut,ps as v,Me as va,_n as vi,Ri as vn,F as vr,Co as vt,xs as w,me as wa,bn as wi,xi as wn,pr as wr,ka as wt,ss as x,r as xa,Yt as xi,Ti as xn,j as xr,$a as xt,ms as y,y as ya,vn as yi,zi as yn,xr as yr,fo as yt,ns as z,ie as za,Lt as zi,Ni as zn,Qn as zr,va as zt}; \ No newline at end of file diff --git a/mynordic-oauth-test/dist/assets/main-BeSCdD2b.js b/mynordic-oauth-test/dist/assets/main-BeSCdD2b.js new file mode 100644 index 0000000..db0eec5 --- /dev/null +++ b/mynordic-oauth-test/dist/assets/main-BeSCdD2b.js @@ -0,0 +1 @@ +import{$ as e,$i as t,$n as n,$r as r,$t as i,A as a,Ai as o,An as s,Ar as c,At as l,B as u,Ba as d,Bi as f,Bn as p,Br as m,Bt as h,C as ee,Ca as te,Ci as ne,Cn as re,Cr as ie,Ct as ae,D as oe,Da as se,Di as ce,Dn as le,Dr as ue,Dt as g,E as de,Ea as fe,Ei as pe,En as me,Er as he,Et as ge,F as _e,Fa as ve,Fi as ye,Fn as be,Fr as xe,Ft as Se,G as _,Ga as Ce,Gi as we,Gn as Te,Gr as Ee,Gt as De,H as Oe,Ha as ke,Hi as Ae,Hn as je,Hr as Me,Ht as Ne,I as Pe,Ia as Fe,Ii as Ie,In as Le,Ir as Re,It as v,J as ze,Ji as Be,Jn as Ve,Jr as He,Jt as Ue,K as We,Ka as Ge,Ki as Ke,Kn as qe,Kr as y,Kt as Je,L as Ye,La as Xe,Li as Ze,Ln as Qe,Lr as $e,Lt as et,M as tt,Ma as nt,Mi as rt,Mn as it,Mr as at,Mt as ot,N as st,Na as ct,Ni as lt,Nn as ut,Nr as dt,Nt as ft,O as pt,Oa as mt,Oi as ht,On as gt,Or as _t,Ot as b,P as vt,Pi as yt,Pn as bt,Pr as xt,Pt as x,Q as St,Qi as S,Qn as Ct,Qr as wt,Qt as Tt,R as Et,Ra as C,Ri as Dt,Rn as w,Rr as Ot,Rt as T,S as kt,Sa as At,Si as jt,Sn as Mt,Sr as Nt,St as Pt,T as Ft,Ta as E,Ti as It,Tn as Lt,Tr as Rt,Tt as zt,U as Bt,Ua as Vt,Ui as Ht,Un as Ut,Ur as Wt,Ut as D,V as Gt,Va as Kt,Vi as qt,Vn as Jt,Vr as Yt,Vt as Xt,W as Zt,Wa as Qt,Wi as $t,Wn as en,Wr as tn,Wt as nn,X as rn,Xi as an,Xn as on,Xr as sn,Xt as cn,Y as ln,Yi as O,Yn as un,Yr as dn,Yt as fn,Z as pn,Zi as k,Zn as mn,Zr as hn,Zt as gn,_ as _n,_i as vn,_n as yn,_r as bn,_t as xn,a as Sn,aa as Cn,ai as wn,an as Tn,ar as En,at as Dn,b as On,ba as kn,bi as An,bn as jn,br as Mn,bt as Nn,c as Pn,ca as Fn,ci as In,cn as Ln,cr as Rn,ct as zn,d as Bn,di as Vn,dn as Hn,dr as Un,dt as Wn,ei as Gn,en as Kn,er as A,et as qn,f as Jn,fa as Yn,fi as Xn,fn as Zn,fr as j,ft as Qn,g as $n,gi as er,gn as tr,gr as nr,gt as rr,h as ir,ha as M,hi as ar,hn as or,hr as N,ht as sr,ia as cr,ii as lr,in as ur,ir as dr,it as fr,j as pr,ji as mr,jn as hr,jr as gr,jt as _r,k as vr,ka as yr,ki as br,kn as xr,kr as Sr,kt as P,l as Cr,la as wr,li as Tr,ln as Er,lr as Dr,lt as Or,m as kr,ma as F,mi as Ar,mn as jr,mr as I,mt as Mr,na as Nr,ni as Pr,nn as Fr,nr as L,nt as Ir,o as Lr,oa as Rr,oi as zr,on as Br,or as Vr,ot as Hr,p as Ur,pi as Wr,pn as Gr,pr as Kr,pt as qr,q as Jr,qa as Yr,qi as Xr,qn as Zr,qr as Qr,qt as $r,r as ei,ri as ti,rn as ni,rr as ri,rt as ii,s as ai,sa as oi,si,sn as ci,st as li,ta as ui,ti as di,tn as fi,tr as pi,tt as mi,u as hi,ua as gi,ui as _i,un as vi,ur as yi,ut as bi,v as R,va as z,vi as xi,vn as Si,vr as Ci,vt as wi,w as Ti,wa as Ei,wi as Di,wn as Oi,wr as ki,wt as Ai,xa as ji,xi as B,xn as Mi,xr as Ni,xt as Pi,y as Fi,ya as V,yi as Ii,yn as Li,yr as Ri,yt as zi,z as Bi,za as Vi,zi as Hi,zn as Ui,zr as Wi,zt as H}from"./Configuration-DmI3R7F5.js";var Gi=class{constructor(e,t){this.cache=e,this.hasChanged=t}get cacheHasChanged(){return this.hasChanged}get tokenCache(){return this.cache}};function U(){return Math.round(new Date().getTime()/1e3)}function Ki(e){return e.getTime()/1e3}function qi(e){return e?new Date(Number(e)*1e3):new Date}function Ji(e,t){let n=Number(e)||0;return U()+t>n}function Yi(e,t){let n=Number(e)+t*24*60*60*1e3;return Date.now()>n}function Xi(e){return Number(e)>U()}function Zi(e,t,n,r,i){return{credentialType:V.ID_TOKEN,homeAccountId:e,environment:t,clientId:r,secret:n,realm:i,lastUpdatedAt:Date.now().toString()}}function Qi(e,t,n,r,i,a,o,s,c,l,u,d,f){let p={homeAccountId:e,credentialType:V.ACCESS_TOKEN,secret:n,cachedAt:U().toString(),expiresOn:o.toString(),extendedExpiresOn:s.toString(),environment:t,clientId:r,realm:i,target:a,tokenType:u||F.BEARER,lastUpdatedAt:Date.now().toString()};if(d&&(p.userAssertionHash=d),l&&(p.refreshOn=l.toString()),p.tokenType?.toLowerCase()!==F.BEARER.toLowerCase())switch(p.credentialType=V.ACCESS_TOKEN_WITH_AUTH_SCHEME,p.tokenType){case F.POP:let e=I(n,c);if(!e?.cnf?.kid)throw O(Ie);p.keyId=e.cnf.kid;break;case F.SSH:p.keyId=f}return p}function $i(e,t,n,r,i,a,o){let s={credentialType:V.REFRESH_TOKEN,homeAccountId:e,environment:t,clientId:r,secret:n,lastUpdatedAt:Date.now().toString()};return a&&(s.userAssertionHash=a),i&&(s.familyId=i),o&&(s.expiresOn=o.toString()),s}function ea(e){return e.hasOwnProperty(`homeAccountId`)&&e.hasOwnProperty(`environment`)&&e.hasOwnProperty(`credentialType`)&&e.hasOwnProperty(`clientId`)&&e.hasOwnProperty(`secret`)}function ta(e){return e?ea(e)&&e.hasOwnProperty(`realm`)&&e.hasOwnProperty(`target`)&&(e.credentialType===V.ACCESS_TOKEN||e.credentialType===V.ACCESS_TOKEN_WITH_AUTH_SCHEME):!1}function na(e){return e?ea(e)&&e.hasOwnProperty(`realm`)&&e.credentialType===V.ID_TOKEN:!1}function ra(e){return e?ea(e)&&e.credentialType===V.REFRESH_TOKEN:!1}function ia(e,t){let n=e.indexOf(Qt)===0,r=!0;return t&&(r=t.hasOwnProperty(`failedRequests`)&&t.hasOwnProperty(`errors`)&&t.hasOwnProperty(`cacheHits`)),n&&r}function aa(e,t){let n=!1;e&&(n=e.indexOf(Ge)===0);let r=!0;return t&&(r=t.hasOwnProperty(`throttleTime`)),n&&r}function oa({environment:e,clientId:t}){return[gi,e,t].join(`-`).toLowerCase()}function sa(e,t){return t?e.indexOf(`appmetadata`)===0&&t.hasOwnProperty(`clientId`)&&t.hasOwnProperty(`environment`):!1}function ca(e,t){return t?e.indexOf(`authority-metadata`)===0&&t.hasOwnProperty(`aliases`)&&t.hasOwnProperty(`preferred_cache`)&&t.hasOwnProperty(`preferred_network`)&&t.hasOwnProperty(`canonical_authority`)&&t.hasOwnProperty(`authorization_endpoint`)&&t.hasOwnProperty(`token_endpoint`)&&t.hasOwnProperty(`issuer`)&&t.hasOwnProperty(`aliasesFromNetwork`)&&t.hasOwnProperty(`endpointsFromNetwork`)&&t.hasOwnProperty(`expiresAt`)&&t.hasOwnProperty(`jwks_uri`):!1}function la(){return U()+Yn}function ua(e,t,n){e.authorization_endpoint=t.authorization_endpoint,e.token_endpoint=t.token_endpoint,e.end_session_endpoint=t.end_session_endpoint,e.issuer=t.issuer,e.endpointsFromNetwork=n,e.jwks_uri=t.jwks_uri}function da(e,t,n){e.aliases=t.aliases,e.preferred_cache=t.preferred_cache,e.preferred_network=t.preferred_network,e.aliasesFromNetwork=n}function fa(e){return e.expiresAt<=U()}var pa=`networkClientSendPostRequestAsync`,ma=`refreshTokenClientExecutePostToTokenEndpoint`,ha=`authorizationCodeClientExecutePostToTokenEndpoint`,ga=`refreshTokenClientExecuteTokenRequest`,_a=`refreshTokenClientAcquireToken`,va=`refreshTokenClientAcquireTokenWithCachedRefreshToken`,ya=`refreshTokenClientCreateTokenRequestBody`,ba=`silentFlowClientGenerateResultFromCacheRecord`,xa=`getAuthCodeUrl`,Sa=`handleCodeResponseFromServer`,Ca=`authClientExecuteTokenRequest`,wa=`authClientCreateTokenRequestBody`,Ta=`updateTokenEndpointAuthority`,Ea=`popTokenGenerateCnf`,Da=`handleServerTokenResponse`,Oa=`authorityResolveEndpointsAsync`,ka=`authorityGetCloudDiscoveryMetadataFromNetwork`,Aa=`authorityUpdateCloudDiscoveryMetadata`,ja=`authorityGetEndpointMetadataFromNetwork`,Ma=`authorityUpdateEndpointMetadata`,Na=`authorityUpdateMetadataWithRegionalInformation`,Pa=`regionDiscoveryDetectRegion`,Fa=`regionDiscoveryGetRegionFromIMDS`,Ia=`regionDiscoveryGetCurrentVersion`,La=`cacheManagerGetRefreshToken`,Ra=`setUserData`,W=(e,t,n,r,i)=>(...a)=>{n.trace(`1plfzx`,i);let o=r.startMeasurement(t,i);i&&r.incrementFields({[`ext.${t}CallCount`]:1},i);try{let t=e(...a);return o.end({success:!0}),n.trace(`1g8n6a`,i),t}catch(e){n.trace(`0cfd8i`,i);try{n.trace(JSON.stringify(e),i)}catch{n.trace(`00dty7`,i)}throw o.end({success:!1},e),e}},G=(e,t,n,r,i)=>(...a)=>{n.trace(`1plfzx`,i);let o=r.startMeasurement(t,i);return i&&r.incrementFields({[`ext.${t}CallCount`]:1},i),e(...a).then(e=>(n.trace(`1g8n6a`,i),o.end({success:!0}),e)).catch(e=>{n.trace(`0cfd8i`,i);try{n.trace(JSON.stringify(e),i)}catch{n.trace(`00dty7`,i)}throw o.end({success:!1},e),e})},za={SW:`sw`},Ba=class{constructor(e,t){this.cryptoUtils=e,this.performanceClient=t}async generateCnf(e,t){let n=await G(this.generateKid.bind(this),Ea,t,this.performanceClient,e.correlationId)(e),r=this.cryptoUtils.base64UrlEncode(JSON.stringify(n));return{kid:n.kid,reqCnfString:r}}async generateKid(e){return{kid:await this.cryptoUtils.getPublicKeyThumbprint(e),xms_ksl:za.SW}}async signPopToken(e,t,n){return this.signPayload(e,t,n)}async signPayload(e,t,n,r){let{resourceRequestMethod:i,resourceRequestUri:a,shrClaims:o,shrNonce:s,shrOptions:c}=n,l=(a?new j(a):void 0)?.getUrlComponents();return this.cryptoUtils.signJwt({at:e,ts:U(),m:i?.toUpperCase(),u:l?.HostNameAndPort,nonce:s||this.cryptoUtils.createNewGuid(),p:l?.AbsolutePath,q:l?.QueryString?[[],l.QueryString]:void 0,client_claims:o||void 0,...r},t,c,n.correlationId)}},Va=`no_tokens_found`,Ha=`native_account_unavailable`,Ua=`refresh_token_expired`,Wa=`ux_not_allowed`,Ga=[`interaction_required`,`consent_required`,`login_required`,`bad_token`,Wa,`interrupted_user`],Ka=[`message_only`,`additional_action`,`basic_action`,`user_password_expired`,`consent_required`,`bad_token`,`ux_not_allowed`,`interrupted_user`],K=class e extends S{constructor(t,n,r,i,a,o,s,c){super(t,n,r),Object.setPrototypeOf(this,e.prototype),this.timestamp=i||``,this.traceId=a||``,this.correlationId=o||``,this.claims=s||``,this.name=`InteractionRequiredAuthError`,this.errorNo=c}};function qa(e,t,n){let r=!!e&&Ga.indexOf(e)>-1,i=!!n&&Ka.indexOf(n)>-1,a=!!t&&Ga.some(e=>t.indexOf(e)>-1);return r||a||i}function Ja(e,t){return new K(e,t)}var Ya=class e extends S{constructor(t,n,r,i,a){super(t,n,r),this.name=`ServerError`,this.errorNo=i,this.status=a,Object.setPrototypeOf(this,e.prototype)}},Xa=class e{constructor(e,t,n,r,i,a,o){this.clientId=e,this.cacheStorage=t,this.cryptoObj=n,this.logger=r,this.performanceClient=i,this.serializableCache=a,this.persistencePlugin=o}validateTokenResponse(e,t,n){if(e.error||e.error_description||e.suberror){let r=`Error(s): ${e.error_codes||`Not Available`} - Timestamp: ${e.timestamp||`Not Available`} - Description: ${e.error_description||`Not Available`} - Correlation ID: ${e.correlation_id||`Not Available`} - Trace ID: ${e.trace_id||`Not Available`}`,i=e.error_codes?.length?e.error_codes[0]:void 0,a=new Ya(e.error,r,e.suberror,i,e.status);if(n&&e.status&&e.status>=500&&e.status<=599){this.logger.warning(`16ks7j`,t);return}else if(n&&e.status&&e.status>=400&&e.status<=499){this.logger.warning(`0g61x3`,t);return}throw qa(e.error,e.error_description,e.suberror)?new K(e.error,e.error_description,e.suberror,e.timestamp||``,e.trace_id||``,e.correlation_id||``,e.claims||``,i):a}}async handleServerTokenResponse(t,n,r,i,a,s,c,l,u,d){let f;if(t.id_token){if(f=I(t.id_token||``,this.cryptoObj.base64Decode),s&&s.nonce&&f.nonce!==s.nonce)throw O(o);if(i.maxAge||i.maxAge===0){let e=f.auth_time;if(!e)throw O(vn);Kr(e,i.maxAge)}}this.homeAccountIdentifier=mn(t.client_info||``,n.authorityType,this.logger,this.cryptoObj,i.correlationId,f);let p;s&&s.state&&(p=en(this.cryptoObj.base64Decode,s.state)),t.key_id=t.key_id||i.sshKid||void 0;let m=this.generateCacheRecord(t,n,r,i,f,c,s),h;try{if(this.persistencePlugin&&this.serializableCache&&(this.logger.verbose(`0jbz5k`,i.correlationId),h=new Gi(this.serializableCache,!0),await this.persistencePlugin.beforeCacheAccess(h)),l&&!u&&m.account&&this.cacheStorage.getAllAccounts({homeAccountId:m.account.homeAccountId,environment:m.account.environment},i.correlationId).length<1)return this.logger.warning(`1gmt66`,i.correlationId),this.performanceClient?.addFields({acntLoggedOut:!0},i.correlationId),await e.generateAuthenticationResult(this.cryptoObj,n,m,!1,i,this.performanceClient,f,p,void 0,d);await this.cacheStorage.saveCacheRecord(m,i.correlationId,N(f||{}),a,i.storeInCache)}finally{this.persistencePlugin&&this.serializableCache&&h&&(this.logger.verbose(`1bh17u`,i.correlationId),await this.persistencePlugin.afterCacheAccess(h))}return e.generateAuthenticationResult(this.cryptoObj,n,m,!1,i,this.performanceClient,f,p,t,d)}generateCacheRecord(e,t,n,r,i,a,o){let s=t.getPreferredCache();if(!s)throw O(jt);let c=pi(i),l,u;e.id_token&&i&&(l=Zi(this.homeAccountIdentifier,s,e.id_token,this.clientId,c||``),u=Za(this.cacheStorage,t,this.homeAccountIdentifier,this.cryptoObj.base64Decode,r.correlationId,i,e.client_info,s,c,o,void 0,this.logger,this.performanceClient));let d=null;if(e.access_token){let i=e.scope?er.fromString(e.scope):new er(r.scopes||[]),o=(typeof e.expires_in==`string`?parseInt(e.expires_in,10):e.expires_in)||0,l=(typeof e.ext_expires_in==`string`?parseInt(e.ext_expires_in,10):e.ext_expires_in)||0,u=(typeof e.refresh_in==`string`?parseInt(e.refresh_in,10):e.refresh_in)||void 0,f=n+o,p=f+l,m=u&&u>0?n+u:void 0;d=Qi(this.homeAccountIdentifier,s,e.access_token,this.clientId,c||t.tenant||``,i.printScopes(),f,p,this.cryptoObj.base64Decode,m,e.token_type,a,e.key_id);let h=r.resource||null;h&&(d.resource=h)}let f=null;if(e.refresh_token){let t;e.refresh_token_expires_in&&(t=n+(typeof e.refresh_token_expires_in==`string`?parseInt(e.refresh_token_expires_in,10):e.refresh_token_expires_in),this.performanceClient?.addFields({ntwkRtExpiresOnSeconds:t},r.correlationId)),f=$i(this.homeAccountIdentifier,s,e.refresh_token,this.clientId,e.foci,a,t)}let p=null;return e.foci&&(p={clientId:this.clientId,environment:s,familyId:e.foci}),{account:u,idToken:l,accessToken:d,refreshToken:f,appMetadata:p}}static async generateAuthenticationResult(e,t,n,r,i,a,o,s,c,l){let u=``,d=[],f=null,p,m,h=``;if(n.accessToken){if(n.accessToken.tokenType===F.POP&&!i.popKid){let t=new Ba(e,a),{secret:r,keyId:o}=n.accessToken;if(!o)throw O(Di);u=await t.signPopToken(r,o,i)}else u=n.accessToken.secret;d=er.fromString(n.accessToken.target).asArray(),f=qi(n.accessToken.expiresOn),p=qi(n.accessToken.extendedExpiresOn),n.accessToken.refreshOn&&(m=qi(n.accessToken.refreshOn))}n.appMetadata&&(h=n.appMetadata.familyId===`1`?`1`:``);let ee=o?.oid||o?.sub||``,te=o?.tid||``;c?.spa_accountid&&n.account&&(n.account.nativeAccountId=c?.spa_accountid);let ne=n.account?bn(Ct(n.account),void 0,o,n.idToken?.secret):null;return{authority:t.canonicalAuthority,uniqueId:ee,tenantId:te,scopes:d,account:ne,idToken:n?.idToken?.secret||``,idTokenClaims:o||{},accessToken:u,fromCache:r,expiresOn:f,extExpiresOn:p,refreshOn:m,correlationId:i.correlationId,requestId:l||``,familyId:h,tokenType:n.accessToken?.tokenType||``,state:s?s.userRequestState:``,cloudGraphHostName:n.account?.cloudGraphHostName||``,msGraphHost:n.account?.msGraphHost||``,code:c?.spa_code,fromPlatformBroker:!1}}};function Za(e,t,n,r,i,a,o,s,c,l,u,d,f){d?.verbose(`09jz0t`,i);let p=s||t.getPreferredCache(),m=e.getAccountsFilteredBy({homeAccountId:n,environment:p},i);f?.addFields({cacheMatchedAccounts:m.length},i),m.length>1&&d?.warning(`0x7ad1`,i);let h=(m.length===1?m[0]:null)||un({homeAccountId:n,idTokenClaims:a,clientInfo:o,environment:s,cloudGraphHostName:l?.cloud_graph_host_name,msGraphHost:l?.msgraph_host,nativeAccountId:u},t,r),ee=h.tenantProfiles||[],te=c||h.realm;if(te&&!ee.find(e=>e.tenantId===te)){let e=nr(n,h.localAccountId,te,a);ee.push(e)}return h.tenantProfiles=ee,h}var q={HOME_ACCOUNT_ID:`home_account_id`,UPN:`UPN`};async function Qa(e,t,n){return typeof e==`string`?e:e({clientId:t,tokenEndpoint:n})}function $a(e,t,n){return{clientId:e,authority:t.authority,scopes:t.scopes,homeAccountIdentifier:n,claims:t.claims,authenticationScheme:t.authenticationScheme,resourceRequestMethod:t.resourceRequestMethod,resourceRequestUri:t.resourceRequestUri,shrClaims:t.shrClaims,sshKid:t.sshKid,embeddedClientId:t.embeddedClientId||t.extraParameters?.clientId}}var eo=class e{static generateThrottlingStorageKey(e){return`${Ge}.${JSON.stringify(e)}`}static preProcess(t,n,r){let i=e.generateThrottlingStorageKey(n),a=t.getThrottlingCache(i,r);if(a){if(a.throttleTime=500&&e.status<600}static checkResponseForRetryAfter(e){return e.headers?e.headers.hasOwnProperty(E.RETRY_AFTER)&&(e.status<200||e.status>=300):!1}static calculateThrottleTime(e){let t=e<=0?0:e,n=Date.now()/1e3;return Math.floor(Math.min(n+(t||60),n+At)*1e3)}static removeThrottle(e,t,n,r){let i=$a(t,n,r),a=this.generateThrottlingStorageKey(i);e.removeItem(a,n.correlationId)}};function to(e,t,n){let r={};if(r[E.CONTENT_TYPE]=Yr,!t&&n)switch(n.type){case q.HOME_ACCOUNT_ID:try{let e=dr(n.credential);r[E.CCS_HEADER]=`Oid:${e.uid}@${e.utid}`}catch{e.verbose(`1qhtee`,``)}break;case q.UPN:r[E.CCS_HEADER]=`UPN: ${n.credential}`;break}return r}function no(e,t,n,r){let i=new Map;return e.embeddedClientId&&c(i,t,n),e.extraQueryParameters&&y(i,e.extraQueryParameters),Wt(i,e.correlationId),ar(i,e.correlationId,r),Rt(i)}async function ro(e,t,n,r,i,a,o,s,c,l){let u=await io(r,e,{body:t,headers:n},i,a,o,s,c);return l&&u.status<500&&u.status!==429&&l.clearTelemetryCache(),u}async function io(e,t,n,r,i,a,o,s){eo.preProcess(i,e,r);let c;try{c=await G(a.sendPostRequestAsync.bind(a),pa,o,s,r)(t,n);let e=c.headers||{};s?.addFields({refreshTokenSize:c.body.refresh_token?.length||0,httpVerToken:e[E.X_MS_HTTP_VERSION]||``,requestId:e[E.X_MS_REQUEST_ID]||``},r)}catch(e){if(e instanceof Ut){let t=e.responseHeaders;throw t&&s?.addFields({httpVerToken:t[E.X_MS_HTTP_VERSION]||``,requestId:t[E.X_MS_REQUEST_ID]||``,contentTypeHeader:t[E.CONTENT_TYPE]||void 0,contentLengthHeader:t[E.CONTENT_LENGTH]||void 0,httpStatus:e.httpStatus},r),e.error}throw e instanceof S?e:O(ce)}return eo.postProcess(i,e,c,r),c}function ao(e){return e.hasOwnProperty(`authorization_endpoint`)&&e.hasOwnProperty(`token_endpoint`)&&e.hasOwnProperty(`issuer`)&&e.hasOwnProperty(`jwks_uri`)}function oo(e){return e.hasOwnProperty(`tenant_discovery_endpoint`)&&e.hasOwnProperty(`metadata`)}function so(e){return e.hasOwnProperty(`error`)&&e.hasOwnProperty(`error_description`)}var co=class e{constructor(e,t,n,r){this.networkInterface=e,this.logger=t,this.performanceClient=n,this.correlationId=r}async detectRegion(t,n){let r=t;if(r)n.region_source=Kt.ENVIRONMENT_VARIABLE;else{let t=e.IMDS_OPTIONS;try{let e=await G(this.getRegionFromIMDS.bind(this),Fa,this.logger,this.performanceClient,this.correlationId)(yr,t);if(e.status===200&&(r=e.body,n.region_source=Kt.IMDS),e.status===400){let e=await G(this.getCurrentVersion.bind(this),Ia,this.logger,this.performanceClient,this.correlationId)(t);if(!e)return n.region_source=Kt.FAILED_AUTO_DETECTION,null;let i=await G(this.getRegionFromIMDS.bind(this),Fa,this.logger,this.performanceClient,this.correlationId)(e,t);i.status===200&&(r=i.body,n.region_source=Kt.IMDS)}}catch{return n.region_source=Kt.FAILED_AUTO_DETECTION,null}}return r||(n.region_source=Kt.FAILED_AUTO_DETECTION),r||null}async getRegionFromIMDS(e,t){return this.networkInterface.sendGetRequestAsync(`${se}?api-version=${e}&format=text`,t,mt)}async getCurrentVersion(e){try{let t=await this.networkInterface.sendGetRequestAsync(`${se}?format=json`,e);return t.status===400&&t.body&&t.body[`newest-versions`]&&t.body[`newest-versions`].length>0?t.body[`newest-versions`][0]:null}catch{return null}}};co.IMDS_OPTIONS={headers:{Metadata:`true`}};var lo=class e{constructor(e,t,n,r,i,a,o,s){this.canonicalAuthority=e,this._canonicalAuthority.validateAsUri(),this.networkInterface=t,this.cacheManager=n,this.authorityOptions=r,this.regionDiscoveryMetadata={region_used:void 0,region_source:void 0,region_outcome:void 0},this.logger=i,this.performanceClient=o,this.correlationId=a,this.managedIdentity=s||!1,this.regionDiscovery=new co(t,this.logger,this.performanceClient,this.correlationId)}getAuthorityType(e){if(e.HostNameAndPort.endsWith(`.ciamlogin.com`))return L.Ciam;let t=e.PathSegments;if(t.length)switch(t[0].toLowerCase()){case wr:return L.Adfs;case te:return L.Dsts}return L.Default}get authorityType(){return this.getAuthorityType(this.canonicalAuthorityUrlComponents)}get protocolMode(){return this.authorityOptions.protocolMode}get options(){return this.authorityOptions}get canonicalAuthority(){return this._canonicalAuthority.urlString}set canonicalAuthority(e){this._canonicalAuthority=new j(e),this._canonicalAuthority.validateAsUri(),this._canonicalAuthorityUrlComponents=null}get canonicalAuthorityUrlComponents(){return this._canonicalAuthorityUrlComponents||=this._canonicalAuthority.getUrlComponents(),this._canonicalAuthorityUrlComponents}get hostnameAndPort(){return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase()}get tenant(){return this.canonicalAuthorityUrlComponents.PathSegments[0]}get authorizationEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.authorization_endpoint);throw O(B)}get tokenEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.token_endpoint);throw O(B)}get deviceCodeEndpoint(){if(this.discoveryComplete())return this.replacePath(this.metadata.token_endpoint.replace(`/token`,`/devicecode`));throw O(B)}get endSessionEndpoint(){if(this.discoveryComplete()){if(!this.metadata.end_session_endpoint)throw O(An);return this.replacePath(this.metadata.end_session_endpoint)}else throw O(B)}get selfSignedJwtAudience(){if(this.discoveryComplete())return this.replacePath(this.metadata.issuer);throw O(B)}get jwksUri(){if(this.discoveryComplete())return this.replacePath(this.metadata.jwks_uri);throw O(B)}canReplaceTenant(t){return t.PathSegments.length===1&&!e.reservedTenantDomains.has(t.PathSegments[0])&&this.getAuthorityType(t)===L.Default&&this.protocolMode!==A.OIDC}replaceTenant(e){return e.replace(/{tenant}|{tenantid}/g,this.tenant)}replacePath(e){let t=e,n=new j(this.metadata.canonical_authority).getUrlComponents(),r=n.PathSegments;return this.canonicalAuthorityUrlComponents.PathSegments.forEach((e,i)=>{let a=r[i];if(i===0&&this.canReplaceTenant(n)){let e=new j(this.metadata.authorization_endpoint).getUrlComponents().PathSegments[0];a!==e&&(this.logger.verbose(`1q3g2x`,this.correlationId),a=e)}e!==a&&(t=t.replace(`/${a}/`,`/${e}/`))}),this.replaceTenant(t)}get defaultOpenIdConfigurationEndpoint(){let e=this.hostnameAndPort;return this.canonicalAuthority.endsWith(`v2.0/`)||this.authorityType===L.Adfs||this.protocolMode===A.OIDC&&!this.isAliasOfKnownMicrosoftAuthority(e)?`${this.canonicalAuthority}.well-known/openid-configuration`:`${this.canonicalAuthority}v2.0/.well-known/openid-configuration`}discoveryComplete(){return!!this.metadata}async resolveEndpointsAsync(){let e=this.getCurrentMetadataEntity(),t=await G(this.updateCloudDiscoveryMetadata.bind(this),Aa,this.logger,this.performanceClient,this.correlationId)(e);this.canonicalAuthority=this.canonicalAuthority.replace(this.hostnameAndPort,e.preferred_network);let n=await G(this.updateEndpointMetadata.bind(this),Ma,this.logger,this.performanceClient,this.correlationId)(e);this.updateCachedMetadata(e,t,{source:n}),this.performanceClient?.addFields({cloudDiscoverySource:t,authorityEndpointSource:n},this.correlationId)}getCurrentMetadataEntity(){let e=this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort,this.correlationId);return e||={aliases:[],preferred_cache:this.hostnameAndPort,preferred_network:this.hostnameAndPort,canonical_authority:this.canonicalAuthority,authorization_endpoint:``,token_endpoint:``,end_session_endpoint:``,issuer:``,aliasesFromNetwork:!1,endpointsFromNetwork:!1,expiresAt:la(),jwks_uri:``},e}updateCachedMetadata(e,t,n){t!==M.CACHE&&n?.source!==M.CACHE&&(e.expiresAt=la(),e.canonical_authority=this.canonicalAuthority);let r=this.cacheManager.generateAuthorityMetadataCacheKey(e.preferred_cache,this.correlationId);this.cacheManager.setAuthorityMetadata(r,e,this.correlationId),this.metadata=e}async updateEndpointMetadata(e){let t=this.updateEndpointMetadataFromLocalSources(e);if(t)return t.source===M.HARDCODED_VALUES&&this.authorityOptions.azureRegionConfiguration?.azureRegion&&t.metadata&&(ua(e,await G(this.updateMetadataWithRegionalInformation.bind(this),Na,this.logger,this.performanceClient,this.correlationId)(t.metadata),!1),e.canonical_authority=this.canonicalAuthority),t.source;let n=await G(this.getEndpointMetadataFromNetwork.bind(this),ja,this.logger,this.performanceClient,this.correlationId)();if(n)return this.authorityOptions.azureRegionConfiguration?.azureRegion&&(n=await G(this.updateMetadataWithRegionalInformation.bind(this),Na,this.logger,this.performanceClient,this.correlationId)(n)),ua(e,n,!0),M.NETWORK;throw O(mr,this.defaultOpenIdConfigurationEndpoint)}updateEndpointMetadataFromLocalSources(e){this.logger.verbose(`1fi0kc`,this.correlationId);let t=this.getEndpointMetadataFromConfig();if(t)return this.logger.verbose(`06t0uj`,this.correlationId),ua(e,t,!1),{source:M.CONFIG};this.logger.verbose(`151k0p`,this.correlationId);let n=this.getEndpointMetadataFromHardcodedValues();if(n)return ua(e,n,!1),{source:M.HARDCODED_VALUES,metadata:n};this.logger.verbose(`1imop5`,this.correlationId);let r=fa(e);return this.isAuthoritySameType(e)&&e.endpointsFromNetwork&&!r?(this.logger.verbose(`16uq31`,``),{source:M.CACHE}):(r&&this.logger.verbose(`0uoibc`,``),null)}isAuthoritySameType(e){return new j(e.canonical_authority).getUrlComponents().PathSegments.length===this.canonicalAuthorityUrlComponents.PathSegments.length}getEndpointMetadataFromConfig(){if(this.authorityOptions.authorityMetadata)try{return JSON.parse(this.authorityOptions.authorityMetadata)}catch{throw k(Hi)}return null}async getEndpointMetadataFromNetwork(){let e={},t=this.defaultOpenIdConfigurationEndpoint;this.logger.verbose(`1y65x6`,this.correlationId);try{let n=await this.networkInterface.sendGetRequestAsync(t,e);return ao(n.body)?n.body:(this.logger.verbose(`1koyv8`,this.correlationId),null)}catch{return this.logger.verbose(`0a9wik`,this.correlationId),null}}getEndpointMetadataFromHardcodedValues(){return this.hostnameAndPort in Rn?Rn[this.hostnameAndPort]:null}async updateMetadataWithRegionalInformation(t){let n=this.authorityOptions.azureRegionConfiguration?.azureRegion;if(n){if(n!==`TryAutoDetect`)return this.regionDiscoveryMetadata.region_outcome=d.CONFIGURED_NO_AUTO_DETECTION,this.regionDiscoveryMetadata.region_used=n,e.replaceWithRegionalInformation(t,n);let r=await G(this.regionDiscovery.detectRegion.bind(this.regionDiscovery),Pa,this.logger,this.performanceClient,this.correlationId)(this.authorityOptions.azureRegionConfiguration?.environmentRegion,this.regionDiscoveryMetadata);if(r)return this.regionDiscoveryMetadata.region_outcome=d.AUTO_DETECTION_REQUESTED_SUCCESSFUL,this.regionDiscoveryMetadata.region_used=r,e.replaceWithRegionalInformation(t,r);this.regionDiscoveryMetadata.region_outcome=d.AUTO_DETECTION_REQUESTED_FAILED}return t}async updateCloudDiscoveryMetadata(e){let t=this.updateCloudDiscoveryMetadataFromLocalSources(e);if(t)return t;let n=await G(this.getCloudDiscoveryMetadataFromNetwork.bind(this),ka,this.logger,this.performanceClient,this.correlationId)();if(n)return da(e,n,!0),M.NETWORK;throw k(Be)}updateCloudDiscoveryMetadataFromLocalSources(e){this.logger.verbose(`0jhlgt`,this.correlationId),this.logger.verbosePii(`1fy7uz`,this.correlationId),this.logger.verbosePii(`08zabj`,this.correlationId),this.logger.verbosePii(`1o1kv3`,this.correlationId);let t=this.getCloudDiscoveryMetadataFromConfig();if(t)return this.logger.verbose(`1nakio`,this.correlationId),da(e,t,!1),M.CONFIG;this.logger.verbose(`1x74aj`,this.correlationId);let n=yi(this.hostnameAndPort);if(n)return this.logger.verbose(`0by47c`,this.correlationId),da(e,n,!1),M.HARDCODED_VALUES;this.logger.verbose(`0r2fzy`,this.correlationId);let r=fa(e);return this.isAuthoritySameType(e)&&e.aliasesFromNetwork&&!r?(this.logger.verbose(`1uffgh`,``),M.CACHE):(r&&this.logger.verbose(`0uoibc`,``),null)}getCloudDiscoveryMetadataFromConfig(){if(this.authorityType===L.Ciam)return this.logger.verbose(`04y84h`,this.correlationId),e.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);if(this.authorityOptions.cloudDiscoveryMetadata){this.logger.verbose(`0gszr3`,this.correlationId);try{this.logger.verbose(`1iifkx`,this.correlationId);let e=Un(JSON.parse(this.authorityOptions.cloudDiscoveryMetadata).metadata,this.hostnameAndPort);if(this.logger.verbose(`0q67e3`,``),e)return this.logger.verbose(`0hzfao`,this.correlationId),e;this.logger.verbose(`1ajz3u`,this.correlationId)}catch{throw this.logger.verbose(`1wq5tu`,this.correlationId),k(f)}}return this.isInKnownAuthorities()?(this.logger.verbose(`0mt9al`,this.correlationId),e.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)):null}async getCloudDiscoveryMetadataFromNetwork(){let t=`${oi}${this.canonicalAuthority}oauth2/v2.0/authorize`,n={},r=null;try{let e=await this.networkInterface.sendGetRequestAsync(t,n),i,a;if(oo(e.body))i=e.body,a=i.metadata,this.logger.verbosePii(`1vglyt`,this.correlationId);else if(so(e.body)){if(this.logger.warning(`062uto`,this.correlationId),i=e.body,i.error===`invalid_instance`)return this.logger.error(`1x90tm`,this.correlationId),null;this.logger.warning(`0wchdm`,this.correlationId),this.logger.warning(`1s5mpv`,this.correlationId),this.logger.warning(`1yhqpw`,this.correlationId),a=[]}else return this.logger.error(`0768g0`,this.correlationId),null;this.logger.verbose(`1lrobr`,this.correlationId),r=Un(a,this.hostnameAndPort)}catch(e){return e instanceof S?this.logger.error(`0vwhc7`,this.correlationId):this.logger.error(`0s2z41`,this.correlationId),null}return r||=(this.logger.warning(`0jp28q`,this.correlationId),this.logger.verbose(`130sd8`,this.correlationId),e.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)),r}isInKnownAuthorities(){return this.authorityOptions.knownAuthorities.filter(e=>e&&j.getDomainFromUrl(e).toLowerCase()===this.hostnameAndPort).length>0}static generateAuthority(e,t){let n;if(t&&t.azureCloudInstance!==Ci.None){let e=t.tenant?t.tenant:ji;n=`${t.azureCloudInstance}/${e}/`}return n||e}static createCloudDiscoveryMetadataFromHost(e){return{preferred_network:e,preferred_cache:e,aliases:[e]}}getPreferredCache(){if(this.managedIdentity)return kn;if(this.discoveryComplete())return this.metadata.preferred_cache;throw O(B)}isAlias(e){return this.metadata.aliases.indexOf(e)>-1}isAliasOfKnownMicrosoftAuthority(e){return Dr.has(e)}static isPublicCloudAuthority(e){return ct.indexOf(e)>=0}static buildRegionalAuthorityString(e,t,n){let r=new j(e);r.validateAsUri();let i=r.getUrlComponents(),a=`${t}.${i.HostNameAndPort}`;this.isPublicCloudAuthority(i.HostNameAndPort)&&(a=`${t}.${Vi}`);let o=j.constructAuthorityUriFromObject({...r.getUrlComponents(),HostNameAndPort:a}).urlString;return n?`${o}?${n}`:o}static replaceWithRegionalInformation(t,n){let r={...t};return r.authorization_endpoint=e.buildRegionalAuthorityString(r.authorization_endpoint,n),r.token_endpoint=e.buildRegionalAuthorityString(r.token_endpoint,n),r.end_session_endpoint&&=e.buildRegionalAuthorityString(r.end_session_endpoint,n),r}static transformCIAMAuthority(e){let t=e,n=new j(e).getUrlComponents();if(n.PathSegments.length===0&&n.HostNameAndPort.endsWith(`.ciamlogin.com`)){let e=n.HostNameAndPort.split(`.`)[0];t=`${t}${e}${Fn}`}return t}};lo.reservedTenantDomains=new Set([`{tenant}`,`{tenantid}`,Rr.COMMON,Rr.CONSUMERS,Rr.ORGANIZATIONS]);function uo(e){let t=new j(e).getUrlComponents().PathSegments.slice(-1)[0]?.toLowerCase();switch(t){case Rr.COMMON:case Rr.ORGANIZATIONS:case Rr.CONSUMERS:return;default:return t}}function fo(e){return e.endsWith(`/`)?e:`${e}/`}function po(e){let t=e.cloudDiscoveryMetadata,n;if(t)try{n=JSON.parse(t)}catch{throw k(f)}return{canonicalAuthority:e.authority?fo(e.authority):void 0,knownAuthorities:e.knownAuthorities,cloudDiscoveryMetadata:n}}async function mo(e,t,n,r,i,a,o){let s=new lo(lo.transformCIAMAuthority(fo(e)),t,n,r,i,a,o);try{return await G(s.resolveEndpointsAsync.bind(s),Oa,i,o,a)(),s}catch{throw O(B)}}var ho=class{constructor(e,t){this.includeRedirectUri=!0,this.config=qe(e),this.logger=new Nt(this.config.loggerOptions,Ri,Mn),this.cryptoUtils=this.config.cryptoInterface,this.cacheManager=this.config.storageInterface,this.networkClient=this.config.networkInterface,this.serverTelemetryManager=this.config.serverTelemetryManager,this.authority=this.config.authOptions.authority,this.performanceClient=t,this.oidcDefaultScopes=this.config.authOptions.authority.options.OIDCOptions?.defaultScopes}async acquireToken(e,t,n){if(!e.code)throw O(rt);n&&n.cloud_instance_host_name&&await G(this.updateTokenEndpointAuthority.bind(this),Ta,this.logger,this.performanceClient,e.correlationId)(n.cloud_instance_host_name,e.correlationId);let r=U(),i=await G(this.executeTokenRequest.bind(this),Ca,this.logger,this.performanceClient,e.correlationId)(this.authority,e,this.serverTelemetryManager),a=i.headers?.[E.X_MS_REQUEST_ID],o=new Xa(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.performanceClient,this.config.serializableCache,this.config.persistencePlugin);return o.validateTokenResponse(i.body,e.correlationId),G(o.handleServerTokenResponse.bind(o),Da,this.logger,this.performanceClient,e.correlationId)(i.body,this.authority,r,e,t,n,void 0,void 0,void 0,a)}getLogoutUri(e){if(!e)throw k(Ae);let t=this.createLogoutUrlQueryString(e);return j.appendQueryString(this.authority.endSessionEndpoint,t)}async executeTokenRequest(e,t,n){let r=no(t,this.config.authOptions.clientId,this.config.authOptions.redirectUri,this.performanceClient),i=j.appendQueryString(e.tokenEndpoint,r),a=await G(this.createTokenRequestBody.bind(this),wa,this.logger,this.performanceClient,t.correlationId)(t),o;if(t.clientInfo)try{let e=ri(t.clientInfo,this.cryptoUtils.base64Decode);o={credential:`${e.uid}.${e.utid}`,type:q.HOME_ACCOUNT_ID}}catch{this.logger.verbose(`0wznt3`,t.correlationId)}let s=to(this.logger,this.config.systemOptions.preventCorsPreflight,o||t.ccsCredential),c=$a(this.config.authOptions.clientId,t);return G(ro,ha,this.logger,this.performanceClient,t.correlationId)(i,a,s,c,t.correlationId,this.cacheManager,this.networkClient,this.logger,this.performanceClient,n)}async createTokenRequestBody(e){let t=new Map;if(Ot(t,e.embeddedClientId||e.extraParameters?.client_id||this.config.authOptions.clientId),this.includeRedirectUri)lr(t,e.redirectUri);else if(!e.redirectUri)throw k(Ke);if(Tr(t,e.scopes,!0,this.oidcDefaultScopes),zr(t,e.resource),Sr(t,e.code),sn(t,this.config.libraryInfo),_t(t,this.config.telemetry.application),Ar(t),this.serverTelemetryManager&&!Zr(this.config)&&_i(t,this.serverTelemetryManager),e.codeVerifier&&Me(t,e.codeVerifier),this.config.clientCredentials.clientSecret&&m(t,this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion){let n=this.config.clientCredentials.clientAssertion;xe(t,await Qa(n.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),Re(t,n.assertionType)}if(Qr(t,Ei.AUTHORIZATION_CODE_GRANT),Wi(t),e.authenticationScheme===F.POP){let n=new Ba(this.cryptoUtils,this.performanceClient),r;r=e.popKid?this.cryptoUtils.encodeKid(e.popKid):(await G(n.generateCnf.bind(n),Ea,this.logger,this.performanceClient,e.correlationId)(e,this.logger)).reqCnfString,di(t,r)}else if(e.authenticationScheme===F.SSH)if(e.sshJwk)Xn(t,e.sshJwk);else throw k(Ht);let n;if(e.clientInfo)try{let t=ri(e.clientInfo,this.cryptoUtils.base64Decode);n={credential:`${t.uid}.${t.utid}`,type:q.HOME_ACCOUNT_ID}}catch{this.logger.verbose(`0wznt3`,e.correlationId)}else n=e.ccsCredential;if(this.config.systemOptions.preventCorsPreflight&&n)switch(n.type){case q.HOME_ACCOUNT_ID:try{gr(t,dr(n.credential))}catch{this.logger.verbose(`1qhtee`,e.correlationId)}break;case q.UPN:at(t,n.credential);break}return e.embeddedClientId&&c(t,this.config.authOptions.clientId,this.config.authOptions.redirectUri),e.extraParameters&&y(t,e.extraParameters),e.enableSpaAuthorizationCode&&(!e.extraParameters||!e.extraParameters.return_spa_code)&&y(t,{[cr]:`1`}),ar(t,e.correlationId,this.performanceClient),dt(t,e.claims,this.config.authOptions.clientCapabilities,e.skipBrokerClaims),Rt(t)}createLogoutUrlQueryString(e){let t=new Map;return e.postLogoutRedirectUri&&Pr(t,e.postLogoutRedirectUri),e.correlationId&&Wt(t,e.correlationId),e.idTokenHint&&He(t,e.idTokenHint),e.state&&Wr(t,e.state),e.logoutHint&&wt(t,e.logoutHint),e.extraQueryParameters&&y(t,e.extraQueryParameters),this.config.authOptions.instanceAware&&dn(t),Rt(t)}async updateTokenEndpointAuthority(e,t){let n=await mo(`https://${e}/${this.authority.tenant}/`,this.networkClient,this.cacheManager,this.authority.options,this.logger,t,this.performanceClient);this.authority=n}},go=300,_o=class{constructor(e,t){this.config=qe(e),this.logger=new Nt(this.config.loggerOptions,Ri,Mn),this.cryptoUtils=this.config.cryptoInterface,this.cacheManager=this.config.storageInterface,this.networkClient=this.config.networkInterface,this.serverTelemetryManager=this.config.serverTelemetryManager,this.authority=this.config.authOptions.authority,this.performanceClient=t}async acquireToken(e,t){let n=U(),r=await G(this.executeTokenRequest.bind(this),ga,this.logger,this.performanceClient,e.correlationId)(e,this.authority),i=r.headers?.[E.X_MS_REQUEST_ID],a=new Xa(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.performanceClient,this.config.serializableCache,this.config.persistencePlugin);return a.validateTokenResponse(r.body,e.correlationId),G(a.handleServerTokenResponse.bind(a),Da,this.logger,this.performanceClient,e.correlationId)(r.body,this.authority,n,e,t,void 0,void 0,!0,e.forceCache,i)}async acquireTokenByRefreshToken(e,t){if(!e)throw k(Xr);if(!e.account)throw O(br);if(this.cacheManager.isAppMetadataFOCI(e.account.environment,e.correlationId))try{return await G(this.acquireTokenWithCachedRefreshToken.bind(this),va,this.logger,this.performanceClient,e.correlationId)(e,!0,t)}catch(n){let r=n instanceof K&&n.errorCode===`no_tokens_found`,i=n instanceof Ya&&n.errorCode===`invalid_grant`&&n.subError===`client_mismatch`;if(r||i)return G(this.acquireTokenWithCachedRefreshToken.bind(this),va,this.logger,this.performanceClient,e.correlationId)(e,!1,t);throw n}return G(this.acquireTokenWithCachedRefreshToken.bind(this),va,this.logger,this.performanceClient,e.correlationId)(e,!1,t)}async acquireTokenWithCachedRefreshToken(e,t,n){let r=W(this.cacheManager.getRefreshToken.bind(this.cacheManager),La,this.logger,this.performanceClient,e.correlationId)(e.account,t,e.correlationId,void 0);if(!r)throw Ja(Va);if(r.expiresOn){let t=e.refreshTokenExpirationOffsetSeconds||go;if(this.performanceClient?.addFields({cacheRtExpiresOnSeconds:Number(r.expiresOn),rtOffsetSeconds:t},e.correlationId),Ji(r.expiresOn,t))throw Ja(Ua)}let i={...e,refreshToken:r.secret,authenticationScheme:e.authenticationScheme||F.BEARER,ccsCredential:{credential:e.account.homeAccountId,type:q.HOME_ACCOUNT_ID}};try{return await G(this.acquireToken.bind(this),_a,this.logger,this.performanceClient,e.correlationId)(i,n)}catch(t){if(t instanceof K&&t.subError===`bad_token`){this.logger.verbose(`1pg3ap`,e.correlationId);let t=this.cacheManager.generateCredentialKey(r);this.cacheManager.removeRefreshToken(t,e.correlationId)}throw t}}async executeTokenRequest(e,t){let n=no(e,this.config.authOptions.clientId,this.config.authOptions.redirectUri,this.performanceClient),r=j.appendQueryString(t.tokenEndpoint,n),i=await G(this.createTokenRequestBody.bind(this),ya,this.logger,this.performanceClient,e.correlationId)(e),a=to(this.logger,this.config.systemOptions.preventCorsPreflight,e.ccsCredential),o=$a(this.config.authOptions.clientId,e);return G(ro,ma,this.logger,this.performanceClient,e.correlationId)(r,i,a,o,e.correlationId,this.cacheManager,this.networkClient,this.logger,this.performanceClient,this.serverTelemetryManager)}async createTokenRequestBody(e){let t=new Map;if(Ot(t,e.embeddedClientId||e.extraParameters?.client_id||this.config.authOptions.clientId),e.redirectUri&&lr(t,e.redirectUri),Tr(t,e.scopes,!0,this.config.authOptions.authority.options.OIDCOptions?.defaultScopes),Qr(t,Ei.REFRESH_TOKEN_GRANT),Wi(t),sn(t,this.config.libraryInfo),_t(t,this.config.telemetry.application),Ar(t),this.serverTelemetryManager&&!Zr(this.config)&&_i(t,this.serverTelemetryManager),wn(t,e.refreshToken),this.config.clientCredentials.clientSecret&&m(t,this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion){let n=this.config.clientCredentials.clientAssertion;xe(t,await Qa(n.assertion,this.config.authOptions.clientId,e.resourceRequestUri)),Re(t,n.assertionType)}if(e.authenticationScheme===F.POP){let n=new Ba(this.cryptoUtils,this.performanceClient),r;r=e.popKid?this.cryptoUtils.encodeKid(e.popKid):(await G(n.generateCnf.bind(n),Ea,this.logger,this.performanceClient,e.correlationId)(e,this.logger)).reqCnfString,di(t,r)}else if(e.authenticationScheme===F.SSH)if(e.sshJwk)Xn(t,e.sshJwk);else throw k(Ht);if(this.config.systemOptions.preventCorsPreflight&&e.ccsCredential)switch(e.ccsCredential.type){case q.HOME_ACCOUNT_ID:try{gr(t,dr(e.ccsCredential.credential))}catch{this.logger.verbose(`1qhtee`,e.correlationId)}break;case q.UPN:at(t,e.ccsCredential.credential);break}return e.embeddedClientId&&c(t,this.config.authOptions.clientId,this.config.authOptions.redirectUri),e.extraParameters&&y(t,{...e.extraParameters}),ar(t,e.correlationId,this.performanceClient),dt(t,e.claims,this.config.authOptions.clientCapabilities,e.skipBrokerClaims),Rt(t)}},vo=class{constructor(e,t){this.config=qe(e),this.logger=new Nt(this.config.loggerOptions,Ri,Mn),this.cryptoUtils=this.config.cryptoInterface,this.cacheManager=this.config.storageInterface,this.networkClient=this.config.networkInterface,this.serverTelemetryManager=this.config.serverTelemetryManager,this.authority=this.config.authOptions.authority,this.performanceClient=t}async acquireCachedToken(e){let t=z.NOT_APPLICABLE;if(e.forceRefresh||!an.isEmptyObj(e.claims))throw this.setCacheOutcome(z.FORCE_REFRESH_OR_CLAIMS,e.correlationId),O(Ze);if(!e.account)throw O(br);let n=e.account.tenantId||uo(e.authority),r=this.cacheManager.getTokenKeys(),i=this.cacheManager.getAccessToken(e.account,e,r,n);if(!i)throw this.setCacheOutcome(z.NO_CACHED_ACCESS_TOKEN,e.correlationId),O(Ze);if(Xi(i.cachedAt)||Ji(i.expiresOn,this.config.systemOptions.tokenRenewalOffsetSeconds))throw this.setCacheOutcome(z.CACHED_ACCESS_TOKEN_EXPIRED,e.correlationId),O(Ze);if(e.resource){if(i.resource!==e.resource)throw this.setCacheOutcome(z.NO_CACHED_ACCESS_TOKEN,e.correlationId),O(Ze)}else i.refreshOn&&Ji(i.refreshOn,0)&&(t=z.PROACTIVELY_REFRESHED);let a=e.authority||this.authority.getPreferredCache(),o={account:this.cacheManager.getAccount(this.cacheManager.generateAccountKey(e.account),e.correlationId),accessToken:i,idToken:this.cacheManager.getIdToken(e.account,e.correlationId,r,n),refreshToken:null,appMetadata:this.cacheManager.readAppMetadataFromCache(a,e.correlationId)};return this.setCacheOutcome(t,e.correlationId),this.config.serverTelemetryManager&&this.config.serverTelemetryManager.incrementCacheHits(),[await G(this.generateResultFromCacheRecord.bind(this),ba,this.logger,this.performanceClient,e.correlationId)(o,e),t]}setCacheOutcome(e,t){this.serverTelemetryManager?.setCacheOutcome(e),this.performanceClient?.addFields({cacheOutcome:e},t),e!==z.NOT_APPLICABLE&&this.logger.info(`09ingz`,t)}async generateResultFromCacheRecord(e,t){let n;if(e.idToken&&(n=I(e.idToken.secret,this.config.cryptoInterface.base64Decode)),t.maxAge||t.maxAge===0){let e=n?.auth_time;if(!e)throw O(vn);Kr(e,t.maxAge)}return Xa.generateAuthenticationResult(this.cryptoUtils,this.authority,e,!0,t,this.performanceClient,n)}};function yo(e,t,n,r){let i=t.correlationId,a=new Map;if(Ot(a,t.embeddedClientId||t.extraQueryParameters?.client_id||e.clientId),Tr(a,[...t.scopes||[],...t.extraScopesToConsent||[]],!0,e.authority.options.OIDCOptions?.defaultScopes),zr(a,t.resource),lr(a,t.redirectUri),Wt(a,i),si(a,t.responseMode),Wi(a),xt(a),t.prompt&&(ti(a,t.prompt),r?.addFields({prompt:t.prompt},i)),t.domainHint&&(tn(a,t.domainHint),r?.addFields({domainHintFromRequest:!0},i)),t.prompt!==C.SELECT_ACCOUNT)if(t.sid&&t.prompt===C.NONE)n.verbose(`1tvqyx`,t.correlationId),Vn(a,t.sid),r?.addFields({sidFromRequest:!0},i);else if(t.account){let e=wo(t.account),o=To(t.account);if(o&&t.domainHint&&(n.warning(`0wkg3v`,t.correlationId),o=null),o){n.verbose(`1eyfsw`,t.correlationId),hn(a,o),r?.addFields({loginHintFromClaim:!0},i);try{gr(a,dr(t.account.homeAccountId))}catch{n.verbose(`12ugck`,t.correlationId)}}else if(e&&t.prompt===C.NONE){n.verbose(`1rmd8s`,t.correlationId),Vn(a,e),r?.addFields({sidFromClaim:!0},i);try{gr(a,dr(t.account.homeAccountId))}catch{n.verbose(`12ugck`,t.correlationId)}}else if(t.loginHint)n.verbose(`0y3007`,t.correlationId),hn(a,t.loginHint),at(a,t.loginHint),r?.addFields({loginHintFromRequest:!0},i);else if(t.account.username){n.verbose(`02f507`,t.correlationId),hn(a,t.account.username),r?.addFields({loginHintFromUpn:!0},i);try{gr(a,dr(t.account.homeAccountId))}catch{n.verbose(`12ugck`,t.correlationId)}}}else t.loginHint&&(n.verbose(`0g01ey`,t.correlationId),hn(a,t.loginHint),at(a,t.loginHint),r?.addFields({loginHintFromRequest:!0},i));else n.verbose(`169k9v`,t.correlationId);return t.nonce&&Gn(a,t.nonce),t.state&&Wr(a,t.state),t.embeddedClientId&&c(a,e.clientId,e.redirectUri),dt(a,t.claims,e.clientCapabilities,t.skipBrokerClaims),e.instanceAware&&(!t.extraQueryParameters||!Object.keys(t.extraQueryParameters).includes(`instance_aware`))&&dn(a),a}function bo(e,t){let n=Rt(t);return j.appendQueryString(e.authorizationEndpoint,n)}function xo(e,t){if(So(e,t),!e.code)throw O(xi);return e}function So(e,t){if(!e.state||!t)throw e.state?O(ye,`Cached State`):O(ye,`Server State`);let n,r;try{n=decodeURIComponent(e.state)}catch{throw O(ne,e.state)}try{r=decodeURIComponent(t)}catch{throw O(ne,e.state)}if(n!==r)throw O(yt);if(e.error||e.error_description||e.suberror){let t=Co(e);throw qa(e.error,e.error_description,e.suberror)?new K(e.error||``,e.error_description,e.suberror,e.timestamp||``,e.trace_id||``,e.correlation_id||``,e.claims||``,t):new Ya(e.error||``,e.error_description,e.suberror,t)}}function Co(e){let t=e.error_uri?.lastIndexOf(`code=`);return t&&t>=0?e.error_uri?.substring(t+5):void 0}function wo(e){return e.idTokenClaims?.sid||null}function To(e){return e.loginHint||e.idTokenClaims?.login_hint||null}function Eo(e,t){if(e){if(t.resource&&(Do(t.extraParameters)||Do(t.extraQueryParameters)))throw O(pe);if(!t.resource)throw O(lt)}}function Do(e){return e?Object.prototype.hasOwnProperty.call(e,`resource`):!1}var Oo=`unexpected_error`,ko=`,`,Ao=`|`;function jo(e){let{skus:t,libraryName:n,libraryVersion:r,extensionName:i,extensionVersion:a}=e,o=new Map([[0,[n,r]],[2,[i,a]]]),s=[];if(t?.length){if(s=t.split(ko),s.length<4)return t}else s=Array.from({length:4},()=>Ao);return o.forEach((e,t)=>{e.length===2&&e[0]?.length&&e[1]?.length&&Mo({skuArr:s,index:t,skuName:e[0],skuVersion:e[1]})}),s.join(ko)}function Mo(e){let{skuArr:t,index:n,skuName:r,skuVersion:i}=e;n>=t.length||(t[n]=[r,i].join(Ao))}var No=class e{constructor(e,t){this.cacheOutcome=z.NOT_APPLICABLE,this.cacheManager=t,this.apiId=e.apiId,this.correlationId=e.correlationId,this.wrapperSKU=e.wrapperSKU||``,this.wrapperVer=e.wrapperVer||``,this.telemetryCacheKey=Qt+`-`+e.clientId}generateCurrentRequestHeaderValue(){let e=`${this.apiId},${this.cacheOutcome}`,t=[this.wrapperSKU,this.wrapperVer],n=this.getNativeBrokerErrorCode();n?.length&&t.push(`broker_error=${n}`);let r=t.join(`,`);return[5,[e,this.getRegionDiscoveryFields()].join(`,`),r].join(`|`)}generateLastRequestHeaderValue(){let t=this.getLastRequests(),n=e.maxErrorsToSend(t),r=t.failedRequests.slice(0,2*n).join(`,`),i=t.errors.slice(0,n).join(`,`),a=t.errors.length,o=[a,n=50&&(t.failedRequests.shift(),t.failedRequests.shift(),t.errors.shift()),t.failedRequests.push(this.apiId,this.correlationId),e instanceof Error&&e&&e.toString()?e instanceof S?e.subError?t.errors.push(e.subError):e.errorCode?t.errors.push(e.errorCode):t.errors.push(e.toString()):t.errors.push(e.toString()):t.errors.push(Ce),this.cacheManager.setServerTelemetry(this.telemetryCacheKey,t,this.correlationId)}incrementCacheHits(){let e=this.getLastRequests();return e.cacheHits+=1,this.cacheManager.setServerTelemetry(this.telemetryCacheKey,e,this.correlationId),e.cacheHits}getLastRequests(){return this.cacheManager.getServerTelemetry(this.telemetryCacheKey,this.correlationId)||{failedRequests:[],errors:[],cacheHits:0}}clearTelemetryCache(){let t=this.getLastRequests(),n=e.maxErrorsToSend(t);if(n===t.errors.length)this.cacheManager.removeItem(this.telemetryCacheKey,this.correlationId);else{let e={failedRequests:t.failedRequests.slice(n*2),errors:t.errors.slice(n),cacheHits:0};this.cacheManager.setServerTelemetry(this.telemetryCacheKey,e,this.correlationId)}}static maxErrorsToSend(e){let t,n=0,r=0,i=e.errors.length;for(t=0;t{let n=window.indexedDB.open(this.dbName,this.version);n.addEventListener(`upgradeneeded`,e=>{e.target.result.createObjectStore(this.tableName)}),n.addEventListener(`success`,t=>{let n=t;this.db=n.target.result,this.dbOpen=!0,e()}),n.addEventListener(`error`,()=>t(D(rn)))})}closeConnection(){let e=this.db;e&&this.dbOpen&&(e.close(),this.dbOpen=!1)}async validateDbIsOpen(){if(!this.dbOpen)return this.open()}async getItem(e){return await this.validateDbIsOpen(),new Promise((t,n)=>{if(!this.db)return n(D(ln));let r=this.db.transaction([this.tableName],`readonly`).objectStore(this.tableName).get(e);r.addEventListener(`success`,e=>{let n=e;this.closeConnection(),t(n.target.result)}),r.addEventListener(`error`,e=>{this.closeConnection(),n(e)})})}async setItem(e,t){return await this.validateDbIsOpen(),new Promise((n,r)=>{if(!this.db)return r(D(ln));let i=this.db.transaction([this.tableName],`readwrite`).objectStore(this.tableName).put(t,e);i.addEventListener(`success`,()=>{this.closeConnection(),n()}),i.addEventListener(`error`,e=>{this.closeConnection(),r(e)})})}async removeItem(e){return await this.validateDbIsOpen(),new Promise((t,n)=>{if(!this.db)return n(D(ln));let r=this.db.transaction([this.tableName],`readwrite`).objectStore(this.tableName).delete(e);r.addEventListener(`success`,()=>{this.closeConnection(),t()}),r.addEventListener(`error`,e=>{this.closeConnection(),n(e)})})}async getKeys(){return await this.validateDbIsOpen(),new Promise((e,t)=>{if(!this.db)return t(D(ln));let n=this.db.transaction([this.tableName],`readonly`).objectStore(this.tableName).getAllKeys();n.addEventListener(`success`,t=>{let n=t;this.closeConnection(),e(n.target.result)}),n.addEventListener(`error`,e=>{this.closeConnection(),t(e)})})}async containsKey(e){return await this.validateDbIsOpen(),new Promise((t,n)=>{if(!this.db)return n(D(ln));let r=this.db.transaction([this.tableName],`readonly`).objectStore(this.tableName).count(e);r.addEventListener(`success`,e=>{let n=e;this.closeConnection(),t(n.target.result===1)}),r.addEventListener(`error`,e=>{this.closeConnection(),n(e)})})}async deleteDatabase(){return this.db&&this.dbOpen&&this.closeConnection(),new Promise((e,t)=>{let n=window.indexedDB.deleteDatabase(_r),r=setTimeout(()=>t(!1),200);n.addEventListener(`success`,()=>(clearTimeout(r),e(!0))),n.addEventListener(`blocked`,()=>(clearTimeout(r),e(!0))),n.addEventListener(`error`,()=>(clearTimeout(r),t(!1)))})}},Bo=class{constructor(){this.cache=new Map}async initialize(){}getItem(e){return this.cache.get(e)||null}getUserData(e){return this.getItem(e)}setItem(e,t){this.cache.set(e,t)}async setUserData(e,t){this.setItem(e,t)}removeItem(e){this.cache.delete(e)}getKeys(){let e=[];return this.cache.forEach((t,n)=>{e.push(n)}),e}containsKey(e){return this.cache.has(e)}clear(){this.cache.clear()}decryptData(){return Promise.resolve(null)}},Vo=class{constructor(e){this.inMemoryCache=new Bo,this.indexedDBCache=new zo,this.logger=e}handleDatabaseAccessError(e,t){if(e instanceof Ne&&e.errorCode===`database_unavailable`)this.logger.error(`1wx7zz`,t);else throw e}async getItem(e,t){let n=this.inMemoryCache.getItem(e);if(!n)try{return this.logger.verbose(`0naxpl`,t),await this.indexedDBCache.getItem(e)}catch(e){this.handleDatabaseAccessError(e,t)}return n}async setItem(e,t,n){this.inMemoryCache.setItem(e,t);try{await this.indexedDBCache.setItem(e,t)}catch(e){this.handleDatabaseAccessError(e,n)}}async removeItem(e,t){this.inMemoryCache.removeItem(e);try{await this.indexedDBCache.removeItem(e)}catch(e){this.handleDatabaseAccessError(e,t)}}async getKeys(e){let t=this.inMemoryCache.getKeys();if(t.length===0)try{return this.logger.verbose(`1iqrbq`,e),await this.indexedDBCache.getKeys()}catch(t){this.handleDatabaseAccessError(t,e)}return t}async containsKey(e,t){let n=this.inMemoryCache.containsKey(e);if(!n)try{return this.logger.verbose(`03zl2j`,t),await this.indexedDBCache.containsKey(e)}catch(e){this.handleDatabaseAccessError(e,t)}return n}clearInMemory(e){this.logger.verbose(`03r21p`,e),this.inMemoryCache.clear(),this.logger.verbose(`0uksk1`,e)}async clearPersistent(e){try{this.logger.verbose(`0rdqut`,e);let t=await this.indexedDBCache.deleteDatabase();return t&&this.logger.verbose(`149ouc`,e),t}catch(t){return this.handleDatabaseAccessError(t,e),!1}}},Ho=class e{constructor(e,t,n){this.logger=e,Bt(n??!1),this.cache=new Vo(this.logger),this.performanceClient=t}createNewGuid(){return vr()}base64Encode(e){return Ai(e)}base64Decode(e){return _(e)}base64UrlEncode(e){return zt(e)}encodeKid(e){return this.base64UrlEncode(JSON.stringify({kid:e}))}async getPublicKeyThumbprint(t){let n=this.performanceClient?.startMeasurement(Kn,t.correlationId),r=await Ye(e.EXTRACTABLE,e.POP_KEY_USAGES),i=await st(r.publicKey),a=Uo({e:i.e,kty:i.kty,n:i.n}),o=await this.hashString(a),s=await u(await st(r.privateKey),!1,[`sign`]);return await this.cache.setItem(o,{privateKey:s,publicKey:r.publicKey,requestMethod:t.resourceRequestMethod,requestUri:t.resourceRequestUri},t.correlationId),n&&n.end({success:!0}),o}async removeTokenBindingKey(e,t){if(await this.cache.removeItem(e,t),await this.cache.containsKey(e,t))throw O(Ii)}async clearKeystore(e){this.cache.clearInMemory(e);try{return await this.cache.clearPersistent(e),!0}catch(t){return t instanceof Error?this.logger.error(`1owpn8`,e):this.logger.error(`0yrmwo`,e),!1}}async signJwt(e,t,n,r){let i=this.performanceClient?.startMeasurement(fi,r),a=await this.cache.getItem(t,r||``);if(!a)throw D(ze);let o=await st(a.publicKey),s=Uo(o),c=zt(JSON.stringify({kid:t})),l=zt(Ro.getShrHeaderString({...n?.header,alg:o.alg,kid:c}));e.cnf={jwk:JSON.parse(s)};let u=`${l}.${zt(JSON.stringify(e))}`,d=new TextEncoder().encode(u),f=await Oe(a.privateKey,d),p=`${u}.${ge(new Uint8Array(f))}`;return i&&i.end({success:!0}),p}async hashString(e){return Bi(e)}};Ho.POP_KEY_USAGES=[`sign`,`verify`],Ho.EXTRACTABLE=!0;function Uo(e){return JSON.stringify(e,Object.keys(e).sort())}var Wo=`acquireTokenSilent`,Go=`acquireTokenByCode`,Ko=`acquireTokenPopup`,qo=`acquireTokenPreRedirect`,Jo=`acquireTokenRedirect`,Yo=`ssoSilent`,Xo=`initializeClientApplication`,Zo=`localStorageUpdated`,Qo=`ssoCapable`,$o=1440*60*1e3,es={Lax:`Lax`,None:`None`},ts=class{initialize(){return Promise.resolve()}getItem(e){let t=encodeURIComponent(e),n=document.cookie.split(`;`);for(let e=0;e{let n=e.trim(),r=n.indexOf(`=`),i=r===-1?n:n.substring(0,r);try{t.push(decodeURIComponent(i))}catch{}}),t}containsKey(e){return this.getKeys().includes(e)}decryptData(){return Promise.resolve(null)}};function ns(e){return new Date(new Date().getTime()+e*$o).toUTCString()}function rs(e,t){let n=e.getItem(Bn(t));return n?JSON.parse(n):[]}function J(e,t,n){let r=t.getItem(Jn(e,n));if(r){let e=JSON.parse(r);if(e&&e.hasOwnProperty(`idToken`)&&e.hasOwnProperty(`accessToken`)&&e.hasOwnProperty(`refreshToken`))return e}return{idToken:[],accessToken:[],refreshToken:[]}}function is(e){return e.hasOwnProperty(`id`)&&e.hasOwnProperty(`nonce`)&&e.hasOwnProperty(`data`)}var as=`msal.cache.encryption`,os=`msal.broadcast.cache`,ss=class{constructor(e,t,n){if(!window.localStorage)throw pt(oe);this.memoryStorage=new Bo,this.initialized=!1,this.clientId=e,this.logger=t,this.performanceClient=n,this.broadcast=new BroadcastChannel(os)}async initialize(e){let t=new ts,n=t.getItem(as),r={key:``,id:``};if(n)try{r=JSON.parse(n)}catch{}if(r.key&&r.id){let t=W(Zt,i,this.logger,this.performanceClient,e)(r.key);this.encryptionCookie={id:r.id,key:await G(Pe,vi,this.logger,this.performanceClient,e)(t)}}else{let n=vr(),r=await G(vt,Br,this.logger,this.performanceClient,e)(),i=W(ge,je,this.logger,this.performanceClient,e)(new Uint8Array(r));this.encryptionCookie={id:n,key:await G(Pe,vi,this.logger,this.performanceClient,e)(r)};let a={id:n,key:i};t.setItem(as,JSON.stringify(a),0,!0,es.None)}await G(this.importExistingCache.bind(this),jn,this.logger,this.performanceClient,e)(e),this.broadcast.addEventListener(`message`,t=>{this.updateCache(t,e)}),this.initialized=!0}getItem(e){return window.localStorage.getItem(e)}getUserData(e){if(!this.initialized)throw D(Pt);return this.memoryStorage.getItem(e)}async decryptData(e,t,n){if(!this.initialized||!this.encryptionCookie)throw D(Pt);if(t.id!==this.encryptionCookie.id)return this.performanceClient.incrementFields({encryptedCacheExpiredCount:1},n),null;let r=await G(a,Fr,this.logger,this.performanceClient,n)(this.encryptionCookie.key,t.nonce,this.getContext(e),t.data);if(!r)return null;try{return{...JSON.parse(r),lastUpdatedAt:t.lastUpdatedAt}}catch{return this.performanceClient.incrementFields({encryptedCacheCorruptionCount:1},n),null}}setItem(e,t){window.localStorage.setItem(e,t)}async setUserData(e,t,n,r,i){if(!this.initialized||!this.encryptionCookie)throw D(Pt);if(i)this.setItem(e,t);else{let{data:i,nonce:a}=await G(tt,Tn,this.logger,this.performanceClient,n)(this.encryptionCookie.key,t,this.getContext(e)),o={id:this.encryptionCookie.id,nonce:a,data:i,lastUpdatedAt:r};this.setItem(e,JSON.stringify(o))}this.memoryStorage.setItem(e,t),this.broadcast.postMessage({key:e,value:t,context:this.getContext(e)})}removeItem(e){this.memoryStorage.containsKey(e)&&(this.memoryStorage.removeItem(e),this.broadcast.postMessage({key:e,value:null,context:this.getContext(e)})),window.localStorage.removeItem(e)}getKeys(){return Object.keys(window.localStorage)}containsKey(e){return window.localStorage.hasOwnProperty(e)}clear(){this.memoryStorage.clear(),rs(this).forEach(e=>this.removeItem(e));let e=J(this.clientId,this);e.idToken.forEach(e=>this.removeItem(e)),e.accessToken.forEach(e=>this.removeItem(e)),e.refreshToken.forEach(e=>this.removeItem(e)),this.getKeys().forEach(e=>{(e.startsWith(`msal`)||e.indexOf(this.clientId)!==-1)&&this.removeItem(e)})}async importExistingCache(e){if(!this.encryptionCookie)return;let t=rs(this);t=await this.importArray(t,e),t.length?this.setItem(Bn(),JSON.stringify(t)):this.removeItem(Bn());let n=J(this.clientId,this);n.idToken=await this.importArray(n.idToken,e),n.accessToken=await this.importArray(n.accessToken,e),n.refreshToken=await this.importArray(n.refreshToken,e),n.idToken.length||n.accessToken.length||n.refreshToken.length?this.setItem(Jn(this.clientId),JSON.stringify(n)):this.removeItem(Jn(this.clientId))}async getItemFromEncryptedCache(e,t){if(!this.encryptionCookie)return null;let n=this.getItem(e);if(!n)return null;let r;try{r=JSON.parse(n)}catch{return null}return is(r)?r.id===this.encryptionCookie.id?(this.performanceClient.incrementFields({encryptedCacheCount:1},t),G(a,Fr,this.logger,this.performanceClient,t)(this.encryptionCookie.key,r.nonce,this.getContext(e),r.data)):(this.performanceClient.incrementFields({encryptedCacheExpiredCount:1},t),null):(this.performanceClient.incrementFields({unencryptedCacheCount:1},t),n)}async importArray(e,t){let n=[],r=[];return e.forEach(e=>{let i=this.getItemFromEncryptedCache(e,t).then(t=>{t?(this.memoryStorage.setItem(e,t),n.push(e)):this.removeItem(e)});r.push(i)}),await Promise.all(r),n}getContext(e){let t=``;return e.includes(this.clientId)&&(t=this.clientId),t}updateCache(e,t){this.logger.trace(`17cxcm`,t);let n=this.performanceClient.startMeasurement(Zo);n.add({isBackground:!0});let{key:r,value:i,context:a}=e.data;if(!r){this.logger.error(`0e10qr`,t),n.end({success:!1,errorCode:`noKey`});return}if(a&&a!==this.clientId){this.logger.trace(`04rtdy`,t),n.end({success:!1,errorCode:`contextMismatch`});return}i?(this.memoryStorage.setItem(r,i),this.logger.verbose(`1vzsgt`,t)):(this.memoryStorage.removeItem(r),this.logger.verbose(`04ypih`,t)),n.end({success:!0})}},cs=class{constructor(){if(!window.sessionStorage)throw pt(oe)}async initialize(){}getItem(e){return window.sessionStorage.getItem(e)}getUserData(e){return this.getItem(e)}setItem(e,t){window.sessionStorage.setItem(e,t)}async setUserData(e,t){this.setItem(e,t)}removeItem(e){window.sessionStorage.removeItem(e)}getKeys(){return Object.keys(window.sessionStorage)}containsKey(e){return window.sessionStorage.hasOwnProperty(e)}decryptData(){return Promise.resolve(null)}},Y={INITIALIZE_START:`msal:initializeStart`,INITIALIZE_END:`msal:initializeEnd`,ACTIVE_ACCOUNT_CHANGED:`msal:activeAccountChanged`,LOGIN_SUCCESS:`msal:loginSuccess`,ACQUIRE_TOKEN_START:`msal:acquireTokenStart`,BROKERED_REQUEST_START:`msal:brokeredRequestStart`,ACQUIRE_TOKEN_SUCCESS:`msal:acquireTokenSuccess`,BROKERED_REQUEST_SUCCESS:`msal:brokeredRequestSuccess`,ACQUIRE_TOKEN_FAILURE:`msal:acquireTokenFailure`,BROKERED_REQUEST_FAILURE:`msal:brokeredRequestFailure`,ACQUIRE_TOKEN_NETWORK_START:`msal:acquireTokenFromNetworkStart`,HANDLE_REDIRECT_START:`msal:handleRedirectStart`,HANDLE_REDIRECT_END:`msal:handleRedirectEnd`,POPUP_OPENED:`msal:popupOpened`,LOGOUT_START:`msal:logoutStart`,LOGOUT_SUCCESS:`msal:logoutSuccess`,LOGOUT_FAILURE:`msal:logoutFailure`,LOGOUT_END:`msal:logoutEnd`,RESTORE_FROM_BFCACHE:`msal:restoreFromBFCache`,BROKER_CONNECTION_ESTABLISHED:`msal:brokerConnectionEstablished`},ls=`@azure/msal-browser`,us=`5.10.0`;function ds(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}var fs=class extends Ve{constructor(e,t,n,r,i,a,o){super(e,n,r,i,o),this.cacheConfig=t,this.logger=r,this.internalStorage=new Bo,this.browserStorage=ps(e,t.cacheLocation,r,i),this.temporaryCacheStorage=ps(e,b.SessionStorage,r,i),this.cookieStorage=new ts,this.eventHandler=a}async initialize(e){this.performanceClient.addFields({cacheLocation:this.cacheConfig.cacheLocation,cacheRetentionDays:this.cacheConfig.cacheRetentionDays},e),await this.browserStorage.initialize(e),await this.migrateExistingCache(e),this.trackVersionChanges(e)}async migrateExistingCache(e){let t=rs(this.browserStorage),n=J(this.clientId,this.browserStorage);this.performanceClient.addFields({preMigrateAcntCount:t.length,preMigrateATCount:n.accessToken.length,preMigrateITCount:n.idToken.length,preMigrateRTCount:n.refreshToken.length},e);for(let t=0;t<3;t++){let n=t;await this.removeStaleAccounts(t,n,e)}for(let t=0;t<3;t++){let n=t;await this.migrateIdTokens(t,n,e)}let r=this.getKMSIValues();for(let t=0;t<3;t++)await this.migrateAccessTokens(t,r,e),await this.migrateRefreshTokens(t,r,e);t=rs(this.browserStorage),n=J(this.clientId,this.browserStorage),this.performanceClient.addFields({postMigrateAcntCount:t.length,postMigrateATCount:n.accessToken.length,postMigrateITCount:n.idToken.length,postMigrateRTCount:n.refreshToken.length},e)}async updateOldEntry(e,t){let n=this.browserStorage.getItem(e),r=this.validateAndParseJson(n||``);if(!r)return this.browserStorage.removeItem(e),null;if(!r.lastUpdatedAt)r.lastUpdatedAt=Date.now().toString(),this.setItem(e,JSON.stringify(r),t);else if(Yi(r.lastUpdatedAt,this.cacheConfig.cacheRetentionDays))return this.browserStorage.removeItem(e),this.performanceClient.incrementFields({expiredCacheRemovedCount:1},t),null;let i=is(r)?await this.browserStorage.decryptData(e,r,t):r;return!i||!ea(i)?(this.performanceClient.incrementFields({invalidCacheCount:1},t),null):(ta(i)||ra(i))&&i.expiresOn&&Ji(i.expiresOn,300)?(this.browserStorage.removeItem(e),this.performanceClient.incrementFields({expiredCacheRemovedCount:1},t),null):i}async removeStaleAccounts(e,t,n){let r=rs(this.browserStorage,e);if(r.length!==0){for(let e of[...r]){this.performanceClient.incrementFields({oldAcntCount:1},n);let i=this.browserStorage.getItem(e),a=this.validateAndParseJson(i||``);if(!a){ds(r,e);continue}if(a.lastUpdatedAt)Yi(a.lastUpdatedAt,this.cacheConfig.cacheRetentionDays)&&(await this.removeAccountOldSchema(e,a,t,n),ds(r,e));else{a.lastUpdatedAt=Date.now().toString(),this.setItem(e,JSON.stringify(a),n);continue}}this.setAccountKeys(r,n,e)}}async removeAccountOldSchema(e,t,n,r){let i=(is(t)?await this.browserStorage.decryptData(e,t,r):t)?.homeAccountId;if(i){let e=this.getTokenKeys(n);[...e.idToken].filter(e=>e.includes(i)).forEach(t=>{this.browserStorage.removeItem(t),ds(e.idToken,t)}),[...e.accessToken].filter(e=>e.includes(i)).forEach(t=>{this.browserStorage.removeItem(t),ds(e.accessToken,t)}),[...e.refreshToken].filter(e=>e.includes(i)).forEach(t=>{this.browserStorage.removeItem(t),ds(e.refreshToken,t)}),this.setTokenKeys(e,r,n)}this.performanceClient.incrementFields({expiredAcntRemovedCount:1},r),this.browserStorage.removeItem(e)}getKMSIValues(){let e={},t=this.getTokenKeys().idToken;for(let n of t){let t=this.browserStorage.getUserData(n);if(t){let n=JSON.parse(t),r=I(n.secret,_);r&&(e[n.homeAccountId]=N(r))}}return e}async migrateIdTokens(e,t,n){let r=J(this.clientId,this.browserStorage,e);if(r.idToken.length===0)return;let i=J(this.clientId,this.browserStorage,3),a=rs(this.browserStorage),o=rs(this.browserStorage,t);for(let e of[...r.idToken]){this.performanceClient.incrementFields({oldITCount:1},n);let t=await this.updateOldEntry(e,n);if(!t){ds(r.idToken,e);continue}let s=a.find(e=>e.includes(t.homeAccountId)),c=o.find(e=>e.includes(t.homeAccountId)),l=null;if(s)l=this.getAccount(s,n);else if(c){let e=this.browserStorage.getItem(c),t=this.validateAndParseJson(e||``);l=t&&is(t)?await this.browserStorage.decryptData(c,t,n):t}if(!l){this.performanceClient.incrementFields({skipITMigrateCount:1},n);continue}let u=I(t.secret,_),d=this.generateCredentialKey(t),f=this.getIdTokenCredential(d,n),p=Object.keys(u).includes(`signin_state`),m=f&&Object.keys(I(f.secret,_)||{}).includes(`signin_state`);if(!f||t.lastUpdatedAt>f.lastUpdatedAt&&(p||!m)){let e=l.tenantProfiles||[],r=pi(u)||l.realm;if(r&&!e.find(e=>e.tenantId===r)){let t=nr(l.homeAccountId,l.localAccountId,r,u);e.push(t)}l.tenantProfiles=e;let o=this.generateAccountKey(Ct(l)),s=N(u);await this.setUserData(o,JSON.stringify(l),n,l.lastUpdatedAt,s),a.includes(o)||a.push(o),await this.setUserData(d,JSON.stringify(t),n,t.lastUpdatedAt,s),this.performanceClient.incrementFields({migratedITCount:1},n),i.idToken.includes(d)||i.idToken.push(d)}}this.setTokenKeys(r,n,e),this.setTokenKeys(i,n),this.setAccountKeys(a,n)}async migrateAccessTokens(e,t,n){let r=J(this.clientId,this.browserStorage,e);if(r.accessToken.length===0)return;let i=J(this.clientId,this.browserStorage,3);for(let e of[...r.accessToken]){this.performanceClient.incrementFields({oldATCount:1},n);let a=await this.updateOldEntry(e,n);if(!a){ds(r.accessToken,e);continue}if(!(a.homeAccountId in t)){this.performanceClient.incrementFields({skipATMigrateCount:1},n);continue}let o=this.generateCredentialKey(a),s=t[a.homeAccountId];if(!i.accessToken.includes(o))await this.setUserData(o,JSON.stringify(a),n,a.lastUpdatedAt,s),this.performanceClient.incrementFields({migratedATCount:1},n),i.accessToken.push(o);else{let e=this.getAccessTokenCredential(o,n);(!e||a.lastUpdatedAt>e.lastUpdatedAt)&&(await this.setUserData(o,JSON.stringify(a),n,a.lastUpdatedAt,s),this.performanceClient.incrementFields({migratedATCount:1},n))}}this.setTokenKeys(r,n,e),this.setTokenKeys(i,n)}async migrateRefreshTokens(e,t,n){let r=J(this.clientId,this.browserStorage,e);if(r.refreshToken.length===0)return;let i=J(this.clientId,this.browserStorage,3);for(let e of[...r.refreshToken]){this.performanceClient.incrementFields({oldRTCount:1},n);let a=await this.updateOldEntry(e,n);if(!a){ds(r.refreshToken,e);continue}if(!(a.homeAccountId in t)){this.performanceClient.incrementFields({skipRTMigrateCount:1},n);continue}let o=this.generateCredentialKey(a),s=t[a.homeAccountId];if(!i.refreshToken.includes(o))await this.setUserData(o,JSON.stringify(a),n,a.lastUpdatedAt,s),this.performanceClient.incrementFields({migratedRTCount:1},n),i.refreshToken.push(o);else{let e=this.getRefreshTokenCredential(o,n);(!e||a.lastUpdatedAt>e.lastUpdatedAt)&&(await this.setUserData(o,JSON.stringify(a),n,a.lastUpdatedAt,s),this.performanceClient.incrementFields({migratedRTCount:1},n))}}this.setTokenKeys(r,n,e),this.setTokenKeys(i,n)}trackVersionChanges(e){let t=this.browserStorage.getItem(hi);t&&(this.logger.info(`1wuc87`,e),this.performanceClient.addFields({previousLibraryVersion:t},e)),t!==`5.10.0`&&this.setItem(hi,us,e)}validateAndParseJson(e){if(!e)return null;try{let t=JSON.parse(e);return t&&typeof t==`object`?t:null}catch{return null}}setItem(e,t,n){let r=[,,,,].fill(0),i=[];for(let a=0;a<=20;a++)try{if(this.browserStorage.setItem(e,t),a>0)for(let e=0;e<=3;e++){let t=r.slice(0,e).reduce((e,t)=>e+t,0);if(t>=a)break;let o=a>t+r[e]?t+r[e]:a;a>t&&r[e]>0&&this.removeAccessTokenKeys(i.slice(t,o),n,e)}break}catch(o){let s=Vr(o);if(s.errorCode===`cache_quota_exceeded`&&a<20){if(!i.length)for(let n=0;n<=3;n++)if(e===Jn(this.clientId,n)){let e=JSON.parse(t).accessToken;i.push(...e),r[n]=e.length}else{let e=this.getTokenKeys(n).accessToken;i.push(...e),r[n]=e.length}if(i.length<=a)throw s;this.removeAccessToken(i[a],n,!1)}else throw s}}async setUserData(e,t,n,r,i){let a=[,,,,].fill(0),o=[];for(let s=0;s<=20;s++)try{if(await G(this.browserStorage.setUserData.bind(this.browserStorage),Ra,this.logger,this.performanceClient,n)(e,t,n,r,i),s>0)for(let e=0;e<=3;e++){let t=a.slice(0,e).reduce((e,t)=>e+t,0);if(t>=s)break;let r=s>t+a[e]?t+a[e]:s;s>t&&a[e]>0&&this.removeAccessTokenKeys(o.slice(t,r),n,e)}break}catch(e){let t=Vr(e);if(t.errorCode===`cache_quota_exceeded`&&s<20){if(!o.length)for(let e=0;e<=3;e++){let t=this.getTokenKeys(e).accessToken;o.push(...t),a[e]=t.length}if(o.length<=s)throw t;this.removeAccessToken(o[s],n,!1)}else throw t}}getAccount(e,t){this.logger.trace(`1lfvm6`,t);let r=this.browserStorage.getUserData(e);if(!r)return this.removeAccountKeyFromMap(e,t),null;let i=this.validateAndParseJson(r);if(!i||!n(i))return null;let a=Ve.toObject({},i);return this.performanceClient.addFields({accountCachedBy:h(a.cachedByApiId)},t),a}async setAccount(e,t,n,r){this.logger.trace(`1bz3wr`,t);let i=this.generateAccountKey(Ct(e)),a=Date.now().toString();e.lastUpdatedAt=a,e.cachedByApiId=r,await this.setUserData(i,JSON.stringify(e),t,a,n),this.addAccountKeyToMap(i,t),this.performanceClient.addFields({kmsi:n},t)}setAccountKeys(e,t,n=3){e.length===0?this.removeItem(Bn(n)):this.setItem(Bn(n),JSON.stringify(e),t)}getAccountKeys(){return rs(this.browserStorage)}addAccountKeyToMap(e,t){this.logger.trace(`0rb85k`,t),this.logger.tracePii(`1l9bdo`,t);let n=this.getAccountKeys();return n.indexOf(e)===-1?(n.push(e),this.setItem(Bn(),JSON.stringify(n),t),this.logger.verbose(`0xia39`,t),!0):(this.logger.verbose(`0161kk`,t),!1)}removeAccountKeyFromMap(e,t){this.logger.trace(`1jpigu`,t),this.logger.tracePii(`1xzspl`,t);let n=this.getAccountKeys(),r=n.indexOf(e);r>-1?(n.splice(r,1),this.setAccountKeys(n,t)):this.logger.trace(`1dytu2`,t)}removeAccount(e,t){let n=this.getActiveAccount(t);n?.homeAccountId===e.homeAccountId&&n?.environment===e.environment&&this.setActiveAccount(null,t),super.removeAccount(e,t),this.removeAccountKeyFromMap(this.generateAccountKey(e),t),this.browserStorage.getKeys().forEach(t=>{t.includes(e.homeAccountId)&&t.includes(e.environment)&&this.browserStorage.removeItem(t)})}removeIdToken(e,t){super.removeIdToken(e,t);let n=this.getTokenKeys(),r=n.idToken.indexOf(e);r>-1&&(this.logger.info(`05udv9`,t),n.idToken.splice(r,1),this.setTokenKeys(n,t))}removeAccessToken(e,t,n=!0){super.removeAccessToken(e,t),n&&this.removeAccessTokenKeys([e],t)}removeAccessTokenKeys(e,t,n=3){this.logger.trace(`17o18n`,t);let r=this.getTokenKeys(n),i=0;if(e.forEach(e=>{let t=r.accessToken.indexOf(e);t>-1&&(r.accessToken.splice(t,1),i++)}),i>0){this.logger.info(`15i5d5`,t),this.setTokenKeys(r,t,n);return}}removeRefreshToken(e,t){super.removeRefreshToken(e,t);let n=this.getTokenKeys(),r=n.refreshToken.indexOf(e);r>-1&&(this.logger.info(`1f4fq3`,t),n.refreshToken.splice(r,1),this.setTokenKeys(n,t))}getTokenKeys(e=3){return J(this.clientId,this.browserStorage,e)}setTokenKeys(e,t,n=3){if(e.idToken.length===0&&e.accessToken.length===0&&e.refreshToken.length===0){this.removeItem(Jn(this.clientId,n));return}else this.setItem(Jn(this.clientId,n),JSON.stringify(e),t)}getIdTokenCredential(e,t){let n=this.browserStorage.getUserData(e);if(!n)return this.logger.trace(`1jukz6`,t),this.removeIdToken(e,t),null;let r=this.validateAndParseJson(n);return!r||!na(r)?(this.logger.trace(`1jukz6`,t),null):(this.logger.trace(`01ju66`,t),r)}async setIdTokenCredential(e,t,n){this.logger.trace(`13hjll`,t);let r=this.generateCredentialKey(e),i=Date.now().toString();e.lastUpdatedAt=i,await this.setUserData(r,JSON.stringify(e),t,i,n);let a=this.getTokenKeys();a.idToken.indexOf(r)===-1&&(this.logger.info(`07jy92`,t),a.idToken.push(r),this.setTokenKeys(a,t))}getAccessTokenCredential(e,t){let n=this.browserStorage.getUserData(e);if(!n)return this.logger.trace(`0bqvx8`,t),this.removeAccessTokenKeys([e],t),null;let r=this.validateAndParseJson(n);return!r||!ta(r)?(this.logger.trace(`0bqvx8`,t),null):(this.logger.trace(`1o81rl`,t),r)}async setAccessTokenCredential(e,t,n){this.logger.trace(`1pondb`,t);let r=this.generateCredentialKey(e),i=Date.now().toString();e.lastUpdatedAt=i,await this.setUserData(r,JSON.stringify(e),t,i,n);let a=this.getTokenKeys(),o=a.accessToken.indexOf(r);o!==-1&&a.accessToken.splice(o,1),this.logger.trace(`1onhey`,t),a.accessToken.push(r),this.setTokenKeys(a,t)}getRefreshTokenCredential(e,t){let n=this.browserStorage.getUserData(e);if(!n)return this.logger.trace(`0jlizt`,t),this.removeRefreshToken(e,t),null;let r=this.validateAndParseJson(n);return!r||!ra(r)?(this.logger.trace(`0jlizt`,t),null):(this.logger.trace(`0nokxi`,t),r)}async setRefreshTokenCredential(e,t,n){this.logger.trace(`0tcg8d`,t);let r=this.generateCredentialKey(e),i=Date.now().toString();e.lastUpdatedAt=i,await this.setUserData(r,JSON.stringify(e),t,i,n);let a=this.getTokenKeys();a.refreshToken.indexOf(r)===-1&&(this.logger.info(`0eckjs`,t),a.refreshToken.push(r),this.setTokenKeys(a,t))}getAppMetadata(e,t){let n=this.browserStorage.getItem(e);if(!n)return this.logger.trace(`1q101h`,t),null;let r=this.validateAndParseJson(n);return!r||!sa(e,r)?(this.logger.trace(`1q101h`,t),null):(this.logger.trace(`19pvg2`,t),r)}setAppMetadata(e,t){this.logger.trace(`0cyma6`,t);let n=oa(e);this.setItem(n,JSON.stringify(e),t)}getServerTelemetry(e,t){let n=this.browserStorage.getItem(e);if(!n)return this.logger.trace(`0jk19c`,t),null;let r=this.validateAndParseJson(n);return!r||!ia(e,r)?(this.logger.trace(`0jk19c`,t),null):(this.logger.trace(`12jguk`,t),r)}setServerTelemetry(e,t,n){this.logger.trace(`1poh61`,n),this.setItem(e,JSON.stringify(t),n)}getAuthorityMetadata(e,t){let n=this.internalStorage.getItem(e);if(!n)return this.logger.trace(`1r39oe`,t),null;let r=this.validateAndParseJson(n);return r&&ca(e,r)?(this.logger.trace(`1ohvk3`,t),r):null}getAuthorityMetadataKeys(){return this.internalStorage.getKeys().filter(e=>this.isAuthorityMetadata(e))}setWrapperMetadata(e,t){this.internalStorage.setItem(Se.WRAPPER_SKU,e),this.internalStorage.setItem(Se.WRAPPER_VER,t)}getWrapperMetadata(){return[this.internalStorage.getItem(Se.WRAPPER_SKU)||``,this.internalStorage.getItem(Se.WRAPPER_VER)||``]}setAuthorityMetadata(e,t,n){this.logger.trace(`07w8n2`,n),this.internalStorage.setItem(e,JSON.stringify(t))}getActiveAccount(e){let t=this.generateCacheKey(Xe.ACTIVE_ACCOUNT_FILTERS),n=this.browserStorage.getItem(t);if(!n)return this.logger.trace(`08gw0e`,e),null;let r=this.validateAndParseJson(n);return r?(this.logger.trace(`1t3ch7`,e),this.getAccountInfoFilteredBy({homeAccountId:r.homeAccountId,localAccountId:r.localAccountId,tenantId:r.tenantId},e)):(this.logger.trace(`0me1up`,e),null)}setActiveAccount(e,t){let n=this.generateCacheKey(Xe.ACTIVE_ACCOUNT_FILTERS);if(e){this.logger.verbose(`0rsj80`,t);let r={homeAccountId:e.homeAccountId,localAccountId:e.localAccountId,tenantId:e.tenantId};this.setItem(n,JSON.stringify(r),t)}else this.logger.verbose(`1bp5z5`,t),this.browserStorage.removeItem(n);this.eventHandler.emitEvent(Y.ACTIVE_ACCOUNT_CHANGED,t)}getThrottlingCache(e,t){let n=this.browserStorage.getItem(e);if(!n)return this.logger.trace(`1h4wa6`,t),null;let r=this.validateAndParseJson(n);return!r||!aa(e,r)?(this.logger.trace(`1h4wa6`,t),null):(this.logger.trace(`0of6n8`,t),r)}setThrottlingCache(e,t,n){this.logger.trace(`0wfgh6`,n),this.setItem(e,JSON.stringify(t),n)}getTemporaryCache(e,t,n){this.logger.trace(`1ordf8`,t);let r=n?this.generateCacheKey(e):e;return this.temporaryCacheStorage.getItem(r)}setTemporaryCache(e,t,n){let r=n?this.generateCacheKey(e):e;this.temporaryCacheStorage.setItem(r,t)}removeItem(e){this.browserStorage.removeItem(e)}removeTemporaryItem(e){this.temporaryCacheStorage.removeItem(e)}getKeys(){return this.browserStorage.getKeys()}clear(e){this.removeAllAccounts(e),this.removeAppMetadata(e),this.temporaryCacheStorage.getKeys().forEach(e=>{(e.indexOf(`msal`)!==-1||e.indexOf(this.clientId)!==-1)&&this.removeTemporaryItem(e)}),this.browserStorage.getKeys().forEach(e=>{(e.indexOf(`msal`)!==-1||e.indexOf(this.clientId)!==-1)&&this.browserStorage.removeItem(e)}),this.internalStorage.clear()}generateCacheKey(e){return an.startsWith(e,`msal`)?e:`${Pn}.${this.clientId}.${e}`}generateCredentialKey(e){let t=e.credentialType===V.REFRESH_TOKEN&&e.familyId||e.clientId,n=e.tokenType&&e.tokenType.toLowerCase()!==F.BEARER.toLowerCase()?e.tokenType.toLowerCase():``;return[`${Pn}.3`,e.homeAccountId,e.environment,e.credentialType,t,e.realm||``,e.target||``,n].join(`|`).toLowerCase()}generateAccountKey(e){let t=e.homeAccountId.split(`.`)[1];return[`${Pn}.3`,e.homeAccountId,e.environment,t||e.tenantId||``].join(`|`).toLowerCase()}resetRequestCache(e){this.logger.trace(`0h0ynu`,e),this.removeTemporaryItem(this.generateCacheKey(H.REQUEST_PARAMS)),this.removeTemporaryItem(this.generateCacheKey(H.VERIFIER)),this.removeTemporaryItem(this.generateCacheKey(H.ORIGIN_URI)),this.removeTemporaryItem(this.generateCacheKey(H.URL_HASH)),this.removeTemporaryItem(this.generateCacheKey(H.NATIVE_REQUEST)),this.setInteractionInProgress(!1,void 0)}cacheAuthorizeRequest(e,t,n){this.logger.trace(`1tzef5`,t);let r=Ai(JSON.stringify(e));if(this.setTemporaryCache(H.REQUEST_PARAMS,r,!0),n){let e=Ai(n);this.setTemporaryCache(H.VERIFIER,e,!0)}}getCachedRequest(e){this.logger.trace(`0uen20`,e);let t=this.getTemporaryCache(H.REQUEST_PARAMS,e,!0);if(!t)throw D(Qn);let n=this.getTemporaryCache(H.VERIFIER,e,!0),r,i=``;try{r=JSON.parse(_(t)),n&&(i=_(n))}catch{throw this.logger.errorPii(`0ewsey`,e),this.logger.error(`0tvdic`,e),D(Pi)}return[r,i]}getCachedNativeRequest(){this.logger.trace(`1yxcdm`,``);let e=this.getTemporaryCache(H.NATIVE_REQUEST,``,!0);return e?this.validateAndParseJson(e)||(this.logger.error(`0rrkip`,``),null):(this.logger.trace(`0mnxd4`,``),null)}isInteractionInProgress(e){let t=this.getInteractionInProgress()?.clientId;return e?t===this.clientId:!!t}getInteractionInProgress(){let e=`${Pn}.${H.INTERACTION_STATUS_KEY}`,t=this.getTemporaryCache(e,``,!1);try{return t?JSON.parse(t):null}catch{return this.logger.error(`0jjyys`,``),this.removeTemporaryItem(e),this.resetRequestCache(``),$n(window),null}}setInteractionInProgress(e,t=x.SIGNIN,n=!1,r=``){let i=`${Pn}.${H.INTERACTION_STATUS_KEY}`;if(e){if(this.getInteractionInProgress())if(n)this.logger.warning(`1pmscr`,r),ir(this.logger,r),this.removeTemporaryItem(i);else throw D(ii);this.setTemporaryCache(i,JSON.stringify({clientId:this.clientId,type:t}),!1)}else !e&&this.getInteractionInProgress()?.clientId===this.clientId&&this.removeTemporaryItem(i)}async hydrateCache(e,t){let n=Zi(e.account.homeAccountId,e.account.environment,e.idToken,this.clientId,e.tenantId),r=Qi(e.account.homeAccountId,e.account.environment,e.accessToken,this.clientId,e.tenantId,e.scopes.join(` `),e.expiresOn?Ki(e.expiresOn):0,e.extExpiresOn?Ki(e.extExpiresOn):0,_,void 0,e.tokenType,void 0,t.sshKid);t.resource&&(r.resource=t.resource);let i={idToken:n,accessToken:r};return this.saveCacheRecord(i,e.correlationId,N(I(e.idToken,_)),g.hydrateCache)}async saveCacheRecord(e,t,n,r,i){try{await super.saveCacheRecord(e,t,n,r,i)}catch(e){if(e instanceof En&&this.performanceClient&&t)try{let e=this.getTokenKeys();this.performanceClient.addFields({cacheRtCount:e.refreshToken.length,cacheIdCount:e.idToken.length,cacheAtCount:e.accessToken.length},t)}catch{}throw e}}};function ps(e,t,n,r){try{switch(t){case b.LocalStorage:return new ss(e,n,r);case b.SessionStorage:return new cs;case b.MemoryStorage:default:break}}catch(e){n.error(e,``)}return new Bo}var ms=(e,t,n,r)=>new fs(e,{cacheLocation:b.MemoryStorage,cacheRetentionDays:5},ie,t,n,r);function hs(e,t,n,r,i){return e.verbose(`1yd030`,r),n?t.getAllAccounts(i,r):[]}function gs(e,t,n,r){t.trace(`0u7b90`,r);let i=n.getAccountInfoFilteredBy(e,r);return i?(t.verbose(`0btgll`,r),i):(t.verbose(`0ltaj5`,r),null)}function _s(e,t,n){t.setActiveAccount(e,n)}function vs(e,t){return e.getActiveAccount(t)}var ys=`msal.broadcast.event`,bs=class{constructor(e){this.eventCallbacks=new Map,this.logger=e||new Nt({}),typeof BroadcastChannel<`u`&&(this.broadcastChannel=new BroadcastChannel(ys)),this.invokeCrossTabCallbacks=this.invokeCrossTabCallbacks.bind(this)}addEventCallback(e,t,n){if(typeof window<`u`){let r=n||_n();return this.eventCallbacks.has(r)?(this.logger.error(`1578i0`,``),null):(this.eventCallbacks.set(r,[e,t||[]]),this.logger.verbose(`1cnec4`,``),r)}return null}removeEventCallback(e){this.eventCallbacks.delete(e),this.logger.verbose(`12zotd`,``)}emitEvent(e,t,n,r,i){let a={eventType:e,interactionType:n||null,payload:r||null,error:i||null,correlationId:t,timestamp:Date.now()};switch(e){case Y.LOGIN_SUCCESS:case Y.LOGOUT_SUCCESS:case Y.ACTIVE_ACCOUNT_CHANGED:this.broadcastChannel?.postMessage(a)}this.invokeCallbacks(a)}invokeCallbacks(e){this.eventCallbacks.forEach(([t,n],r)=>{(n.length===0||n.includes(e.eventType))&&(this.logger.verbose(`15jpwk`,``),t.apply(null,[e]))})}invokeCrossTabCallbacks(e){let t=e.data;this.invokeCallbacks(t)}subscribeCrossTab(){this.broadcastChannel?.addEventListener(`message`,this.invokeCrossTabCallbacks)}unsubscribeCrossTab(){this.broadcastChannel?.removeEventListener(`message`,this.invokeCrossTabCallbacks)}},xs=class{constructor(e,t,n,r,i,a,o,s,c){this.config=e,this.browserStorage=t,this.browserCrypto=n,this.networkClient=this.config.system.networkClient,this.eventHandler=i,this.navigationClient=a,this.platformAuthProvider=c,this.correlationId=s,this.logger=r.clone(P.MSAL_SKU,us),this.performanceClient=o}};function Ss(e,t,n,r){n.verbose(`0bd1la`,r);let i=e||t||``;return j.getAbsoluteUrl(i,R())}function X(e,t,n,r,i,a){return i.verbose(`1p12tq`,n),new No({clientId:t,correlationId:n,apiId:e,forceRefresh:a||!1,wrapperSKU:r.getWrapperMetadata()[0],wrapperVer:r.getWrapperMetadata()[1]},r)}async function Z(e,t,n,r,i,a,o,s,c){let l=s&&s.hasOwnProperty(`instance_aware`)?s.instance_aware:void 0,u={protocolMode:e.system.protocolMode,OIDCOptions:e.auth.OIDCOptions,knownAuthorities:e.auth.knownAuthorities,cloudDiscoveryMetadata:e.auth.cloudDiscoveryMetadata,authorityMetadata:e.auth.authorityMetadata},d=a||e.auth.authority,f=l?.length?l===`true`:e.auth.instanceAware,p=c&&f?e.auth.authority.replace(j.getDomainFromUrl(d),c.environment):d,m=lo.generateAuthority(p,o||e.auth.azureCloudOptions),h=await G(mo,gn,i,n,t)(m,e.system.networkClient,r,u,i,t,n);if(c&&!h.isAlias(c.environment))throw k(Dt);return h}async function Cs(e,t,n,r,i){if(i)try{e.removeAccount(i,r),n.verbose(`0s4z6h`,r)}catch{n.error(`0mgg1d`,r)}else try{n.verbose(`0zj631`,r),e.clear(r),await t.clearKeystore(r)}catch{n.error(`12ih0c`,r)}}async function ws(e,t,n,r,i){let a=e.authority||t.auth.authority,o=[...e&&e.scopes||[]],s={...e,correlationId:e.correlationId,authority:a,scopes:o};if(!s.authenticationScheme)s.authenticationScheme=F.BEARER,r.verbose(`1l4fwv`,i);else{if(s.authenticationScheme===F.SSH){if(!e.sshJwk)throw k(Ht);if(!e.sshKid)throw k($t)}r.verbose(`1ecmns`,i)}return s}async function Ts(e,t,n,r,i){let a=await G(ws,Mi,i,r,e.correlationId)(e,n,r,i,e.correlationId);return{...e,...a,account:t,forceRefresh:e.forceRefresh||!1}}function Es(e,t){let n,r=e.httpMethod;if(t===A.EAR){if(r&&r!==fe.POST)throw k(qt);n=fe.POST}else n=r||fe.GET;return n}var Ds=class extends xs{initializeLogoutRequest(e){this.logger.verbose(`0546u4`,this.correlationId);let t={correlationId:this.correlationId,...e};if(e)if(e.logoutHint)this.logger.verbose(`12k4l4`,this.correlationId);else if(e.account){let n=this.getLogoutHintFromIdTokenClaims(e.account);n&&(this.logger.verbose(`0st5di`,this.correlationId),t.logoutHint=n)}else this.logger.verbose(`0pdtc3`,this.correlationId);else this.logger.verbose(`07ndze`,this.correlationId);return!e||e.postLogoutRedirectUri!==null?e&&e.postLogoutRedirectUri?(this.logger.verbose(`1vamm6`,t.correlationId),t.postLogoutRedirectUri=j.getAbsoluteUrl(e.postLogoutRedirectUri,R())):this.config.auth.postLogoutRedirectUri===null?this.logger.verbose(`15m5g7`,t.correlationId):this.config.auth.postLogoutRedirectUri?(this.logger.verbose(`1f4xlz`,t.correlationId),t.postLogoutRedirectUri=j.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri,R())):(this.logger.verbose(`17s5rf`,t.correlationId),t.postLogoutRedirectUri=j.getAbsoluteUrl(R(),R())):this.logger.verbose(`0ljv63`,t.correlationId),t}getLogoutHintFromIdTokenClaims(e){let t=e.idTokenClaims;if(t){if(t.login_hint)return t.login_hint;this.logger.verbose(`0mvp54`,this.correlationId)}else this.logger.verbose(`1e7bdp`,this.correlationId);return null}async createAuthCodeClient(e){return new ho(await G(this.getClientConfiguration.bind(this),Ui,this.logger,this.performanceClient,this.correlationId)(e),this.performanceClient)}async getClientConfiguration(e){let{serverTelemetryManager:t,requestAuthority:n,requestAzureCloudOptions:r,requestExtraQueryParameters:i,account:a}=e,o=e.authority||await G(Z,`standardInteractionClientGetDiscoveredAuthority`,this.logger,this.performanceClient,this.correlationId)(this.config,this.correlationId,this.performanceClient,this.browserStorage,this.logger,n,r,i,a),s=this.config.system.loggerOptions;return{authOptions:{clientId:this.config.auth.clientId,authority:o,clientCapabilities:this.config.auth.clientCapabilities,redirectUri:this.config.auth.redirectUri,isMcp:this.config.auth.isMcp},systemOptions:{tokenRenewalOffsetSeconds:this.config.system.tokenRenewalOffsetSeconds,preventCorsPreflight:!0},loggerOptions:{loggerCallback:s.loggerCallback,piiLoggingEnabled:s.piiLoggingEnabled,logLevel:s.logLevel,correlationId:this.correlationId},cryptoInterface:this.browserCrypto,networkInterface:this.networkClient,storageInterface:this.browserStorage,serverTelemetryManager:t,libraryInfo:{sku:P.MSAL_SKU,version:us,cpu:``,os:``},telemetry:this.config.telemetry}}};async function Os(e,t,n,r,i,a,o,s){let c=Ss(e.redirectUri,n.auth.redirectUri,a,s);new URL(c).origin!==new URL(window.location.href).origin&&(a.warning(`08qbvw`,s),o.addFields({isRedirectUriCrossOrigin:!0},s));let l={interactionType:t},u=Te(r,e&&e.state||``,l),d={...await G(ws,Mi,a,o,s)({...e,correlationId:s},n,o,a,s),redirectUri:c,state:u,nonce:e.nonce||vr(),responseMode:n.auth.OIDCOptions.responseMode},f={...d,httpMethod:Es(d,n.system.protocolMode)};if(e.loginHint||e.sid)return f;let p=e.account||i.getActiveAccount(s);return p&&(a.verbose(`1eqlb3`,s),a.verbosePii(`0tf99t`,s),f.account=p),f}function ks(e,t){if(!t)return null;try{return en(e.base64Decode,t).libraryState.meta}catch{throw O(ne)}}function As(e,t,n,r){let i=ki(e);if(!i)throw ue(e)?(n.error(`13pl0s`,r),n.errorPii(`1097vx`,r),D(mi)):(n.error(`18h0l1`,r),D(Ir));return i}function js(e,t,n){if(!e.state)throw D(Wn);let r=ks(t,e.state);if(!r)throw D(Nn);if(r.interactionType!==n)throw D(xn)}var Ms=class{constructor(e,t,n,r,i){this.authModule=e,this.browserStorage=t,this.authCodeRequest=n,this.logger=r,this.performanceClient=i}async handleCodeResponse(e,t,n){let r;try{r=xo(e,t.state)}catch(e){throw e instanceof Ya&&e.subError===`user_cancelled`?D(ae):e}return G(this.handleCodeResponseFromServer.bind(this),Sa,this.logger,this.performanceClient,t.correlationId)(r,t,n)}async handleCodeResponseFromServer(e,t,n,r=!0){if(this.logger.trace(`0mf2hb`,t.correlationId),this.authCodeRequest.code=e.code,r&&(e.nonce=t.nonce||void 0),e.state=t.state,e.client_info)this.authCodeRequest.clientInfo=e.client_info;else{let e=this.createCcsCredentials(t);e&&(this.authCodeRequest.ccsCredential=e)}return await G(this.authModule.acquireToken.bind(this.authModule),cn,this.logger,this.performanceClient,t.correlationId)(this.authCodeRequest,n,e)}createCcsCredentials(e){return e.account?{credential:e.account.homeAccountId,type:q.HOME_ACCOUNT_ID}:e.loginHint?{credential:e.loginHint,type:q.UPN}:null}},Ns=`ContentError`,Ps=`PageException`,Fs=`user_switch`,Is=`USER_INTERACTION_REQUIRED`,Ls=`USER_CANCEL`,Rs=`NO_NETWORK`,zs=`ACCOUNT_UNAVAILABLE`,Bs=`UX_NOT_ALLOWED`,Vs=-2147186943,Q=class e extends S{constructor(t,n,r){super(t,n||nn(t)),Object.setPrototypeOf(this,e.prototype),this.name=`NativeAuthError`,this.ext=r}};function Hs(e){if(e.ext&&e.ext.status&&e.ext.status===`DISABLED`||e.ext&&e.ext.error&&e.ext.error===Vs)return!0;switch(e.errorCode){case Ns:case Ps:return!0;default:return!1}}function Us(e,t,n){if(n&&n.status)switch(n.status){case zs:return Ja(Ha,nn(e));case Is:return new K(e,t);case Ls:return D(ae);case Rs:return D(bi);case Bs:return Ja(Wa)}return new Q(e,t,n)}var Ws=class extends Ds{async acquireToken(e){let t=X(g.acquireTokenSilent_silentFlow,this.config.auth.clientId,this.correlationId,this.browserStorage,this.logger),n=new vo(await G(this.getClientConfiguration.bind(this),Ui,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:t,requestAuthority:e.authority,requestAzureCloudOptions:e.azureCloudOptions,account:e.account}),this.performanceClient);this.logger.verbose(`0wa871`,this.correlationId);try{let t=(await G(n.acquireCachedToken.bind(n),hr,this.logger,this.performanceClient,e.correlationId)(e))[0];return this.performanceClient.addFields({fromCache:!0},e.correlationId),t}catch(e){throw e instanceof Ne&&e.errorCode===`crypto_key_not_found`&&this.logger.verbose(`06wena`,this.correlationId),e}}logout(e){this.logger.verbose(`1rkurh`,this.correlationId);let t=this.initializeLogoutRequest(e);return Cs(this.browserStorage,this.browserCrypto,this.logger,this.correlationId,t.account)}},Gs=class extends xs{constructor(e,t,n,r,i,a,o,s,c,l,u,d){super(e,t,n,r,i,a,s,d,c),this.apiId=o,this.accountId=l,this.platformAuthProvider=c,this.nativeStorageManager=u,this.silentCacheClient=new Ws(e,this.nativeStorageManager,n,r,i,a,s,d,c);let f=this.platformAuthProvider.getExtensionName();this.skus=No.makeExtraSkuString({libraryName:P.MSAL_SKU,libraryVersion:us,extensionName:f,extensionVersion:this.platformAuthProvider.getExtensionVersion()})}addRequestSKUs(e){e.extraParameters={...e.extraParameters,[Cn]:this.skus}}async acquireToken(e,t){this.logger.trace(`03qeos`,this.correlationId);let n=this.performanceClient.startMeasurement(Oi,this.correlationId),r=U(),i=X(this.apiId,this.config.auth.clientId,this.correlationId,this.browserStorage,this.logger);try{let a=await this.initializePlatformRequest(e);try{let e=await this.acquireTokensFromCache(this.accountId,a);return n.end({success:!0,isNativeBroker:!1,fromCache:!0}),e}catch(e){if(t===l.AccessToken)throw this.logger.info(`0eitbc`,this.correlationId),n.end({success:!1,brokerErrorCode:`cache_request_failed`}),e;this.logger.info(`0957j1`,this.correlationId)}let o=await this.platformAuthProvider.sendMessage(a);return await this.handleNativeResponse(o,a,r).then(e=>(n.end({success:!0,isNativeBroker:!0,requestId:e.requestId}),i.clearNativeBrokerErrorCode(),e)).catch(e=>{throw n.end({success:!1,errorCode:e.errorCode,subErrorCode:e.subError}),e})}catch(e){throw e instanceof Q&&i.setNativeBrokerErrorCode(e.errorCode),n.end({success:!1}),e}}createSilentCacheRequest(e,t){return{authority:e.authority,correlationId:this.correlationId,scopes:er.fromString(e.scope).asArray(),account:t,forceRefresh:!1}}async acquireTokensFromCache(e,t){if(!e)throw this.logger.warning(`1ndf3e`,this.correlationId),O(ht);let n=this.browserStorage.getBaseAccountInfo({nativeAccountId:e},this.correlationId);if(!n)throw O(ht);try{let e=this.createSilentCacheRequest(t,n),r=await this.silentCacheClient.acquireToken(e),i=this.browserStorage.getIdToken(n,this.correlationId,this.browserStorage.getTokenKeys(),n.tenantId),a=I(i?.secret||``,_),o=bn(n,void 0,a,i?.secret);return{...r,idToken:i?.secret||``,idTokenClaims:a,account:o}}catch(e){throw e}}async acquireTokenRedirect(e,t,n){this.logger.trace(`0luikq`,this.correlationId);let r=await this.initializePlatformRequest(e),i=n?.navigateToLoginRequestUrl??!0;try{await this.platformAuthProvider.sendMessage(r)}catch(e){if(e instanceof Q&&(X(this.apiId,this.config.auth.clientId,this.correlationId,this.browserStorage,this.logger).setNativeBrokerErrorCode(e.errorCode),Hs(e)))throw e}this.browserStorage.setTemporaryCache(H.NATIVE_REQUEST,JSON.stringify(r),!0);let a={apiId:g.acquireTokenRedirect,timeout:this.config.system.redirectNavigationTimeout,noHistory:!1},o=i?window.location.href:Ss(e.redirectUri,this.config.auth.redirectUri,this.logger,this.correlationId);t.end({success:!0}),await this.navigationClient.navigateExternal(o,a)}async handleRedirectPromise(){if(this.logger.trace(`1c5lhw`,this.correlationId),!this.browserStorage.isInteractionInProgress(!0))return this.logger.info(`0le6uv`,this.correlationId),null;let e=this.browserStorage.getCachedNativeRequest();if(!e)return this.logger.verbose(`0a6zjb`,this.correlationId),this.performanceClient?.addFields({errorCode:`no_cached_request`},this.correlationId),null;let{prompt:t,...n}=e;t&&this.logger.verbose(`0ac34v`,this.correlationId),this.browserStorage.removeItem(this.browserStorage.generateCacheKey(H.NATIVE_REQUEST));let r=U();try{this.logger.verbose(`003x5a`,this.correlationId);let e=await this.platformAuthProvider.sendMessage(n),t=await this.handleNativeResponse(e,n,r);return X(this.apiId,this.config.auth.clientId,this.correlationId,this.browserStorage,this.logger).clearNativeBrokerErrorCode(),this.performanceClient?.addFields({isNativeBroker:!0},this.correlationId),t}catch(e){throw e}}logout(){return this.logger.trace(`0u2sjm`,this.correlationId),Promise.reject(`Logout not implemented yet`)}async handleNativeResponse(e,t,n){this.logger.trace(`1bojln`,this.correlationId);let r=I(e.id_token,_),i=this.createHomeAccountIdentifier(e,r),a=this.browserStorage.getAccountInfoFilteredBy({nativeAccountId:t.accountId},this.correlationId)?.homeAccountId;if(t.extraParameters?.child_client_id&&e.account.id!==t.accountId)this.logger.info(`1ub1in`,this.correlationId);else if(i!==a&&e.account.id!==t.accountId)throw Us(Fs);let o=await Z(this.config,this.correlationId,this.performanceClient,this.browserStorage,this.logger,t.authority),s=Za(this.browserStorage,o,i,_,this.correlationId,r,e.client_info,o.getPreferredCache(),r.tid,void 0,e.account.id,this.logger,this.performanceClient);e.expires_in=Number(e.expires_in);let c=await this.generateAuthenticationResult(e,t,r,s,o.canonicalAuthority,n);return await this.cacheAccount(s,N(r)),await this.cacheNativeTokens(e,t,i,r,c.tenantId,n,o.getPreferredCache()),c}createHomeAccountIdentifier(e,t){return mn(e.client_info||``,L.Default,this.logger,this.browserCrypto,this.correlationId,t)}generateScopes(e,t){return t?er.fromString(t):er.fromString(e)}async generatePopAccessToken(e,t){if(t.tokenType===F.POP&&t.signPopToken){if(e.shr)return this.logger.trace(`0coqhu`,this.correlationId),e.shr;let n=new Ba(this.browserCrypto,this.performanceClient),r={resourceRequestMethod:t.resourceRequestMethod,resourceRequestUri:t.resourceRequestUri,shrClaims:t.shrClaims,shrNonce:t.shrNonce,correlationId:this.correlationId};if(!t.keyId)throw O(Di);return n.signPopToken(e.access_token,t.keyId,r)}else return e.access_token}async generateAuthenticationResult(e,t,n,r,i,a){let o=this.addTelemetryFromNativeResponse(e.properties.MATS),s=this.generateScopes(t.scope,e.scope),c=e.account.properties||{},l=c.UID||n.oid||n.sub||``,u=c.TenantId||n.tid||``,d=bn(Ct(r),void 0,n,e.id_token);d.nativeAccountId!==e.account.id&&(d.nativeAccountId=e.account.id);let f=await this.generatePopAccessToken(e,t),p=t.tokenType===F.POP?F.POP:F.BEARER;return{authority:i,uniqueId:l,tenantId:u,scopes:s.asArray(),account:d,idToken:e.id_token,idTokenClaims:n,accessToken:f,fromCache:o?this.isResponseFromCache(o):!1,expiresOn:qi(a+e.expires_in),tokenType:p,correlationId:this.correlationId,state:e.state,fromPlatformBroker:!0,...t.resource&&{resource:t.resource}}}async cacheAccount(e,t){await this.browserStorage.setAccount(e,this.correlationId,t,this.apiId),this.browserStorage.removeAccountContext(Ct(e),this.correlationId)}async cacheNativeTokens(e,t,n,r,i,a,o){let s=Zi(n,o,e.id_token||``,t.clientId,r.tid||``),c=a+(t.tokenType===F.POP?240:(typeof e.expires_in==`string`?parseInt(e.expires_in,10):e.expires_in)||0),l=this.generateScopes(e.scope,t.scope),u=Qi(n,o,e.access_token,t.clientId,r.tid||i,l.printScopes(),c,0,_,void 0,t.tokenType,void 0,t.keyId);s&&t.storeInCache?.idToken!==!1&&await this.browserStorage.setIdTokenCredential(s,this.correlationId,N(r));let d={accessToken:u};return this.nativeStorageManager.saveCacheRecord(d,this.correlationId,N(r),this.apiId,t.storeInCache)}getExpiresInValue(e,t){return e===F.POP?240:(typeof t==`string`?parseInt(t,10):t)||0}addTelemetryFromNativeResponse(e){let t=this.getMATSFromResponse(e);return t?(this.performanceClient.addFields({extensionId:this.platformAuthProvider.getExtensionId(),extensionVersion:this.platformAuthProvider.getExtensionVersion(),matsBrokerVersion:t.broker_version,matsAccountJoinOnStart:t.account_join_on_start,matsAccountJoinOnEnd:t.account_join_on_end,matsDeviceJoin:t.device_join,matsPromptBehavior:t.prompt_behavior,matsApiErrorCode:t.api_error_code,matsUiVisible:t.ui_visible,matsSilentCode:t.silent_code,matsSilentBiSubCode:t.silent_bi_sub_code,matsSilentMessage:t.silent_message,matsSilentStatus:t.silent_status,matsHttpStatus:t.http_status,matsHttpEventCount:t.http_event_count},this.correlationId),t):null}getMATSFromResponse(e){if(e)try{return JSON.parse(e)}catch{this.logger.error(`0b3l57`,this.correlationId)}return null}isResponseFromCache(e){return e.is_cached===void 0?(this.logger.verbose(`1okqev`,this.correlationId),!1):!!e.is_cached}async initializePlatformRequest(e){this.logger.trace(`1xdm2a`,this.correlationId);let t=await this.getCanonicalAuthority(e),n=e.skipBrokerClaims&&e.embeddedClientId?void 0:this.config.auth.clientCapabilities,{scopes:r,claims:i,...a}=e,o=new er(r||[]);o.appendScopes(Fe);let s=n&&n.length?$e(i,n):i,c={...a,claims:s,accountId:this.accountId,clientId:this.config.auth.clientId,authority:t.urlString,scope:o.printScopes(),redirectUri:Ss(e.redirectUri,this.config.auth.redirectUri,this.logger,this.correlationId),prompt:this.getPrompt(e.prompt),correlationId:this.correlationId,tokenType:e.authenticationScheme,windowTitleSubstring:document.title,extraParameters:{...e.extraParameters},extendedExpiryToken:!1,keyId:e.popKid};if(c.signPopToken&&e.popKid)throw D(fr);if(this.handleExtraBrokerParams(c),c.extraParameters=c.extraParameters||{},c.extraParameters.telemetry=T.MATS_TELEMETRY,e.authenticationScheme===F.POP){let t={resourceRequestUri:e.resourceRequestUri,resourceRequestMethod:e.resourceRequestMethod,shrClaims:e.shrClaims,shrNonce:e.shrNonce,correlationId:this.correlationId},n=new Ba(this.browserCrypto,this.performanceClient),r;if(c.keyId)r=this.browserCrypto.base64UrlEncode(JSON.stringify({kid:c.keyId})),c.signPopToken=!1;else{let e=await G(n.generateCnf.bind(n),Ea,this.logger,this.performanceClient,this.correlationId)(t,this.logger);r=e.reqCnfString,c.keyId=e.kid,c.signPopToken=!0}c.reqCnf=r}return this.addRequestSKUs(c),c}async getCanonicalAuthority(e){let t=e.authority||this.config.auth.authority,{azureCloudOptions:n,account:r}=e;r&&await Z(this.config,this.correlationId,this.performanceClient,this.browserStorage,this.logger,t,n,void 0,r);let i=new j(t);return i.validateAsUri(),i}getPrompt(e){switch(this.apiId){case g.ssoSilent:case g.acquireTokenSilent_silentFlow:return this.logger.trace(`12n1y2`,this.correlationId),C.NONE}if(!e){this.logger.trace(`0uid1p`,this.correlationId);return}switch(e){case C.NONE:case C.CONSENT:case C.LOGIN:return this.logger.trace(`0i0hco`,this.correlationId),e;default:throw this.logger.trace(`0w3tpw`,this.correlationId),D(zn)}}handleExtraBrokerParams(e){let t=e.extraParameters&&e.extraParameters.hasOwnProperty(`brk_client_id`)&&e.extraParameters.hasOwnProperty(`brk_redirect_uri`)&&e.extraParameters.hasOwnProperty(`client_id`);if(!e.embeddedClientId&&!t)return;let n=``,r=e.redirectUri;e.embeddedClientId?(e.redirectUri=this.config.auth.redirectUri,n=e.embeddedClientId):e.extraParameters&&(e.redirectUri=e.extraParameters[ui],n=e.extraParameters[Nr]),e.extraParameters={child_client_id:n,child_redirect_uri:r},this.performanceClient?.addFields({embeddedClientId:n,embeddedRedirectUri:r},this.correlationId)}},Ks=new Map([[`e`,`AAD`],[`m`,`MSA`]]);function qs(e){if(!e)return null;try{let t=(/%(?:[0-9A-Fa-f]{2})/.test(e)?decodeURIComponent(e):e).split(`|`);return t.length<5?null:{accountType:Ks.get(t[0]?.trim()||``)||``,error:t[1]?.trim()||``,subError:t[2]?.trim()||``,cloudInstance:t[3]?.trim()||``,callerDataBoundary:t[4]?.trim()||``}}catch{return null}}function Js(e,t,n){let r=qs(e.clientdata);r?.accountType&&n.addFields({accountType:r.accountType},t),r?.error&&n.addFields({serverErrorNo:r.error},t),r?.subError&&n.addFields({serverSubErrorNo:r.subError},t)}async function Ys(e,t,n,i,a){let o=yo({...e.auth,authority:t},n,i,a);if(sn(o,{sku:P.MSAL_SKU,version:us,os:``,cpu:``}),e.system.protocolMode!==A.OIDC&&_t(o,e.telemetry.application),n.platformBroker&&(r(o),a.addFields({isPlatformAuthorizeRequest:!0},n.correlationId),n.authenticationScheme===F.POP)){let e=new Ho(i,a),t=new Ba(e,a),r;r=n.popKid?e.encodeKid(n.popKid):(await G(t.generateCnf.bind(t),Ea,i,a,n.correlationId)(n,i)).reqCnfString,di(o,r)}return ar(o,n.correlationId,a),o}async function Xs(e,t,n,r,i){if(!n.codeChallenge)throw k(we);let a=await G(Ys,Gr,r,i,n.correlationId)(e,t,n,r,i);return In(a,ve.CODE),Yt(a,n.codeChallenge,Vt),y(a,{...n.extraQueryParameters,...n.extraParameters}),bo(t,a)}async function Zs(e,t,n,r,i,a){if(!r.earJwk)throw D(St);let o=await Ys(t,n,r,i,a);In(o,ve.IDTOKEN_TOKEN_REFRESHTOKEN),Ee(o,r.earJwk),Yt(o,r.codeChallenge,Vt),y(o,{...r.extraParameters});let s=new Map;return y(s,r.extraQueryParameters||{}),Wt(s,r.correlationId),$s(e,bo(n,s),o)}async function Qs(e,t,n,r,i,a){let o=await Ys(t,n,r,i,a);In(o,ve.CODE),Yt(o,r.codeChallenge,r.codeChallengeMethod||`S256`),y(o,{...r.extraParameters});let s=new Map;return y(s,r.extraQueryParameters||{}),Wt(s,r.correlationId),$s(e,bo(n,s),o)}function $s(e,t,n){let r=e.createElement(`form`);return r.method=`post`,r.action=t,n.forEach((t,n)=>{let i=e.createElement(`input`);i.hidden=!0,i.name=n,i.value=t,r.appendChild(i)}),e.body.appendChild(r),r}async function ec(e,t,n,r,i,a,o,s,c,l){if(s.verbose(`11qcow`,e.correlationId),!l)throw D(Dn);let u=new Ho(s,c),d=new Gs(r,i,u,s,o,r.system.navigationClient,n,c,l,t,a,e.correlationId),{userRequestState:f}=en(u.base64Decode,e.state);return G(d.acquireToken.bind(d),Oi,s,c,e.correlationId)({...e,state:f,prompt:void 0})}async function tc(e,t,n,r,i,a,o,s,c,l,u,d){if(eo.removeThrottle(o,i.auth.clientId,e),Js(t,e.correlationId,u),t.accountId)return G(ec,Li,l,u,e.correlationId)(e,t.accountId,r,i,o,s,c,l,u,d);let f=new Ms(a,o,{...e,code:t.code||``,codeVerifier:n},l,u);return await G(f.handleCodeResponse.bind(f),jr,l,u,e.correlationId)(t,e,r)}async function nc(e,t,n,r,i,a,o,s,c,l,u){if(eo.removeThrottle(a,r.auth.clientId,e),Js(t,e.correlationId,l),So(t,e.state),!t.ear_jwe)throw D(pn);if(!e.earJwk)throw D(St);let d=JSON.parse(await G(pr,ni,c,l,e.correlationId)(e.earJwk,t.ear_jwe));if(d.accountId)return G(ec,Li,c,l,e.correlationId)(e,d.accountId,n,r,a,o,s,c,l,u);let f=new Xa(r.auth.clientId,a,new Ho(c,l),c,l,null,null);f.validateTokenResponse(d,e.correlationId);let p={code:``,state:e.state,nonce:e.nonce,client_info:d.client_info,cloud_graph_host_name:d.cloud_graph_host_name,cloud_instance_host_name:d.cloud_instance_host_name,cloud_instance_name:d.cloud_instance_name,msgraph_host:d.msgraph_host};return await G(f.handleServerTokenResponse.bind(f),Da,c,l,e.correlationId)(d,i,U(),e,n,p,void 0,void 0,void 0,void 0)}var rc=32;async function ic(e,t,n){let r=W(ac,Ln,t,e,n)(e,t,n);return{verifier:r,challenge:await G(oc,ci,t,e,n)(r,e,t,n)}}function ac(e,t,n){try{let r=new Uint8Array(rc);return W(Et,Zn,t,e,n)(r),ge(r)}catch{throw D(qr)}}async function oc(e,t,n,r){try{let i=await G(Gt,xr,n,t,r)(e);return ge(new Uint8Array(i))}catch{throw D(qr)}}var sc=class e{constructor(e,t,n,r){this.logger=e,this.handshakeTimeoutMs=t,this.extensionId=r,this.resolvers=new Map,this.handshakeResolvers=new Map,this.messageChannel=new MessageChannel,this.windowListener=this.onWindowMessage.bind(this),this.performanceClient=n,this.handshakeEvent=this.performanceClient.startMeasurement(me),this.platformAuthType=T.PLATFORM_EXTENSION_PROVIDER}async sendMessage(e){this.logger.trace(`0on4p2`,e.correlationId);let t={method:et.GetToken,request:e},n={channel:T.CHANNEL_ID,extensionId:this.extensionId,responseId:vr(),body:t};this.logger.trace(`1qadfi`,e.correlationId),this.logger.tracePii(`1xm533`,e.correlationId),this.messageChannel.port1.postMessage(n);let r=await new Promise((e,t)=>{this.resolvers.set(n.responseId,{resolve:e,reject:t})});return this.validatePlatformBrokerResponse(r)}static async createProvider(t,n,r,i){t.trace(`15zfnw`,i);try{let a=new e(t,n,r,T.PREFERRED_EXTENSION_ID);return await a.sendHandshakeRequest(i),a}catch{let a=new e(t,n,r);return await a.sendHandshakeRequest(i),a}}async sendHandshakeRequest(e){this.logger.trace(`1dpg9o`,e),window.addEventListener(`message`,this.windowListener,!1);let t={channel:T.CHANNEL_ID,extensionId:this.extensionId,responseId:vr(),body:{method:et.HandshakeRequest}};return this.handshakeEvent.add({extensionId:this.extensionId,extensionHandshakeTimeoutMs:this.handshakeTimeoutMs}),this.messageChannel.port1.onmessage=e=>{this.onChannelMessage(e)},window.postMessage(t,window.origin,[this.messageChannel.port2]),new Promise((e,n)=>{this.handshakeResolvers.set(t.responseId,{resolve:e,reject:n}),this.timeoutId=window.setTimeout(()=>{window.removeEventListener(`message`,this.windowListener,!1),this.messageChannel.port1.close(),this.messageChannel.port2.close(),this.handshakeEvent.end({extensionHandshakeTimedOut:!0,success:!1}),n(D(li)),this.handshakeResolvers.delete(t.responseId)},this.handshakeTimeoutMs)})}onWindowMessage(e){let t=_n();if(this.logger.trace(`0jpn5u`,t),e.source!==window)return;let n=e.data;if(!(!n.channel||n.channel!==T.CHANNEL_ID)&&!(n.extensionId&&n.extensionId!==this.extensionId)&&n.body.method===et.HandshakeRequest){let e=this.handshakeResolvers.get(n.responseId);if(!e){this.logger.trace(`07buhm`,t);return}this.logger.verbose(n.extensionId?`0xrkug`:`No extension installed`,t),clearTimeout(this.timeoutId),this.messageChannel.port1.close(),this.messageChannel.port2.close(),window.removeEventListener(`message`,this.windowListener,!1),this.handshakeEvent.end({success:!1,extensionInstalled:!1}),e.reject(D(Hr))}}onChannelMessage(e){let n=_n();this.logger.trace(`1py8yf`,n);let r=e.data,i=this.resolvers.get(r.responseId),a=this.handshakeResolvers.get(r.responseId);try{let e=r.body.method;if(e===et.Response){if(!i)return;let e=r.body.response;if(this.logger.trace(`19hpgm`,n),this.logger.tracePii(`179a24`,n),e.status!==`Success`)i.reject(Us(e.code,e.description,e.ext));else if(e.result)e.result.code&&e.result.description?i.reject(Us(e.result.code,e.result.description,e.result.ext)):i.resolve(e.result);else throw t(Oo,`Event does not contain result.`);this.resolvers.delete(r.responseId)}else if(e===et.HandshakeResponse){if(!a){this.logger.trace(`082qnt`,n);return}clearTimeout(this.timeoutId),window.removeEventListener(`message`,this.windowListener,!1),this.extensionId=r.extensionId,this.extensionVersion=r.body.version,this.logger.verbose(`0yf5ib`,n),this.handshakeEvent.end({extensionInstalled:!0,success:!0}),a.resolve(),this.handshakeResolvers.delete(r.responseId)}}catch(e){this.logger.error(`0xf978`,n),this.logger.errorPii(`04i99o`,n),this.logger.errorPii(`0xdvsy`,n),i?i.reject(e):a&&a.reject(e)}}validatePlatformBrokerResponse(e){if(e.hasOwnProperty(`access_token`)&&e.hasOwnProperty(`id_token`)&&e.hasOwnProperty(`client_info`)&&e.hasOwnProperty(`account`)&&e.hasOwnProperty(`scope`)&&e.hasOwnProperty(`expires_in`))return e;throw t(Oo,`Response missing expected properties.`)}getExtensionId(){return this.extensionId}getExtensionVersion(){return this.extensionVersion}getExtensionName(){return this.getExtensionId()===T.PREFERRED_EXTENSION_ID?`chrome`:this.getExtensionId()?.length?`unknown`:void 0}},cc=class e{constructor(e,t,n){this.logger=e,this.performanceClient=t,this.correlationId=n,this.platformAuthType=T.PLATFORM_DOM_PROVIDER}static async createProvider(t,n,r){if(t.trace(`12mj4a`,r),window.navigator?.platformAuthentication&&(await window.navigator.platformAuthentication.getSupportedContracts(T.MICROSOFT_ENTRA_BROKERID))?.includes(T.PLATFORM_DOM_APIS))return t.trace(`1h5q1r`,r),new e(t,n,r)}getExtensionId(){return T.MICROSOFT_ENTRA_BROKERID}getExtensionVersion(){return``}getExtensionName(){return T.DOM_API_NAME}async sendMessage(e){this.logger.trace(`02bcil`,e.correlationId);try{let t=this.initializePlatformDOMRequest(e),n=await window.navigator.platformAuthentication.executeGetToken(t);return this.validatePlatformBrokerResponse(n,e.correlationId)}catch(t){throw this.logger.error(`11im7g`,e.correlationId),t}}initializePlatformDOMRequest(e){this.logger.trace(`15d6yv`,e.correlationId);let{accountId:t,clientId:n,authority:r,scope:i,redirectUri:a,correlationId:o,state:s,storeInCache:c,embeddedClientId:l,extraParameters:u,...d}=e,f=this.getDOMExtraParams(d,o);return{accountId:t,brokerId:this.getExtensionId(),authority:r,clientId:n,correlationId:o||this.correlationId,extraParameters:{...u,...f},isSecurityTokenService:!1,redirectUri:a,scope:i,state:s,storeInCache:c,embeddedClientId:l}}validatePlatformBrokerResponse(e,n){if(e.hasOwnProperty(`isSuccess`)){if(e.hasOwnProperty(`accessToken`)&&e.hasOwnProperty(`idToken`)&&e.hasOwnProperty(`clientInfo`)&&e.hasOwnProperty(`account`)&&e.hasOwnProperty(`scopes`)&&e.hasOwnProperty(`expiresIn`))return this.logger.trace(`0h4vei`,n),this.convertToPlatformBrokerResponse(e,n);if(e.hasOwnProperty(`error`)){let t=e;if(t.isSuccess===!1&&t.error&&t.error.code)throw this.logger.trace(`0g92vm`,n),Us(t.error.code,t.error.description,{error:parseInt(t.error.errorCode),protocol_error:t.error.protocolError,status:t.error.status,properties:t.error.properties})}}throw t(Oo,`Response missing expected properties.`)}convertToPlatformBrokerResponse(e,t){return this.logger.trace(`14913t`,t),{access_token:e.accessToken,id_token:e.idToken,client_info:e.clientInfo,account:e.account,expires_in:e.expiresIn,scope:e.scopes,state:e.state||``,properties:e.properties||{},extendedLifetimeToken:e.extendedLifetimeToken??!1,shr:e.proofOfPossessionPayload}}getDOMExtraParams(e,t){try{let t={};for(let[n,r]of Object.entries(e))r&&(typeof r==`object`?t[n]=JSON.stringify(r):t[n]=String(r));return t}catch{return this.logger.error(`0eu9o3`,t),this.logger.errorPii(`17rpl5`,t),{}}}};async function lc(e,t,n,r){e.trace(`134j0v`,n);let i=uc();e.trace(`04c81g`,n);let a;try{i&&(a=await cc.createProvider(e,t,n)),a||=(e.trace(`0l3na8`,n),await sc.createProvider(e,r||2e3,t,n))}catch(t){e.trace(`0icbd7`,t)}return a}function uc(){let e;try{return e=window[b.SessionStorage],e?.getItem(ai)===`true`}catch{return!1}}function dc(e,t,n,r,i){if(t.trace(`0uko3r`,n),!e.system.allowPlatformBroker)return t.trace(`04hozs`,n),!1;if(!r)return t.trace(`0kvv1r`,n),!1;if(i)switch(i){case F.BEARER:case F.POP:return t.trace(`18tev1`,n),!0;default:return t.trace(`1dd2nh`,n),!1}return!0}var fc=class extends Ds{constructor(e,t,n,r,i,a,o,s,c,l){super(e,t,n,r,i,a,o,c,l),this.nativeStorage=s,this.eventHandler=i}acquireToken(e,t){let n;try{if(n={popupName:this.generatePopupName(e.scopes||Fe,e.authority||this.config.auth.authority),popupWindowAttributes:e.popupWindowAttributes||{},popupWindowParent:e.popupWindowParent??window},this.performanceClient.addFields({isAsyncPopup:!this.config.system.navigatePopups},this.correlationId),this.config.system.navigatePopups){let r={...e,httpMethod:Es(e,this.config.system.protocolMode)};return this.logger.verbose(`1f9ok3`,this.correlationId),n.popup=this.openSizedPopup(`about:blank`,n),this.acquireTokenPopupAsync(r,n,t)}else return this.logger.verbose(`162h4u`,this.correlationId),this.acquireTokenPopupAsync(e,n,t)}catch(e){return Promise.reject(e)}}logout(e){try{this.logger.verbose(`068rup`,this.correlationId);let t=this.initializeLogoutRequest(e),n={popupName:this.generateLogoutPopupName(t),popupWindowAttributes:e?.popupWindowAttributes||{},popupWindowParent:e?.popupWindowParent??window},r=e&&e.authority,i=e&&e.mainWindowRedirectUri;return this.config.system.navigatePopups?(this.logger.verbose(`1a28da`,this.correlationId),n.popup=this.openSizedPopup(`about:blank`,n),this.logoutPopupAsync(t,n,r,i)):(this.logger.verbose(`1phd8u`,this.correlationId),this.logoutPopupAsync(t,n,r,i))}catch(e){return Promise.reject(e)}}async acquireTokenPopupAsync(e,t,n){this.logger.verbose(`1g77pg`,this.correlationId);let r=await G(Os,Jt,this.logger,this.performanceClient,this.correlationId)(e,v.Popup,this.config,this.browserCrypto,this.browserStorage,this.logger,this.performanceClient,this.correlationId);return t.popup&&kt(r.authority),r.platformBroker=dc(this.config,this.logger,this.correlationId,this.platformAuthProvider,e.authenticationScheme),this.config.system.protocolMode===A.EAR?this.executeEarFlow(r,t,n):this.executeCodeFlow(r,t,n)}async executeCodeFlow(e,t,n){let r=e.correlationId,i=X(g.acquireTokenPopup,this.config.auth.clientId,this.correlationId,this.browserStorage,this.logger),a=n||await G(ic,`generatePkceCodes`,this.logger,this.performanceClient,r)(this.performanceClient,this.logger,r),o={...e,codeChallenge:a.challenge};try{let n=await G(this.createAuthCodeClient.bind(this),w,this.logger,this.performanceClient,r)({serverTelemetryManager:i,requestAuthority:o.authority,requestAzureCloudOptions:o.azureCloudOptions,requestExtraQueryParameters:o.extraQueryParameters,account:o.account});if(o.httpMethod===fe.POST)return await this.executeCodeFlowWithPost(o,t,n,a.verifier);{let i=await G(Xs,xa,this.logger,this.performanceClient,r)(this.config,n.authority,o,this.logger,this.performanceClient),s=this.initiateAuthRequest(i,t);this.eventHandler.emitEvent(Y.POPUP_OPENED,r,v.Popup,{popupWindow:s},null);let c=await de(this.config.system.popupBridgeTimeout,this.logger,this.browserCrypto,e,this.performanceClient),l=W(As,ur,this.logger,this.performanceClient,this.correlationId)(c,this.config.auth.OIDCOptions.responseMode,this.logger,this.correlationId);return await G(tc,yn,this.logger,this.performanceClient,r)(e,l,a.verifier,g.acquireTokenPopup,this.config,n,this.browserStorage,this.nativeStorage,this.eventHandler,this.logger,this.performanceClient,this.platformAuthProvider)}}catch(e){throw t.popup?.close(),e instanceof S&&(e.setCorrelationId(this.correlationId),i.cacheFailedRequest(e)),e}}async executeEarFlow(e,t,n){let{correlationId:r,authority:i,azureCloudOptions:a,extraQueryParameters:o,account:s}=e,c=await G(Z,p,this.logger,this.performanceClient,r)(this.config,this.correlationId,this.performanceClient,this.browserStorage,this.logger,i,a,o,s),l=await G(_e,Er,this.logger,this.performanceClient,r)(),u=n||await G(ic,`generatePkceCodes`,this.logger,this.performanceClient,r)(this.performanceClient,this.logger,r),d={...e,earJwk:l,codeChallenge:u.challenge};(await Zs((t.popup||this.openPopup(`about:blank`,t)).document,this.config,c,d,this.logger,this.performanceClient)).submit();let f=await G(de,bt,this.logger,this.performanceClient,r)(this.config.system.popupBridgeTimeout,this.logger,this.browserCrypto,d,this.performanceClient),m=W(As,ur,this.logger,this.performanceClient,this.correlationId)(f,this.config.auth.OIDCOptions.responseMode,this.logger,this.correlationId);if(!m.ear_jwe&&m.code){let t=await G(this.createAuthCodeClient.bind(this),w,this.logger,this.performanceClient,r)({serverTelemetryManager:X(g.acquireTokenPopup,this.config.auth.clientId,r,this.browserStorage,this.logger),requestAuthority:e.authority,requestAzureCloudOptions:e.azureCloudOptions,requestExtraQueryParameters:e.extraQueryParameters,account:e.account,authority:c});return G(tc,yn,this.logger,this.performanceClient,r)(d,m,u.verifier,g.acquireTokenPopup,this.config,t,this.browserStorage,this.nativeStorage,this.eventHandler,this.logger,this.performanceClient,this.platformAuthProvider)}else return G(nc,Si,this.logger,this.performanceClient,r)(d,m,g.acquireTokenPopup,this.config,c,this.browserStorage,this.nativeStorage,this.eventHandler,this.logger,this.performanceClient,this.platformAuthProvider)}async executeCodeFlowWithPost(e,t,n,r){let i=e.correlationId,a=await G(Z,p,this.logger,this.performanceClient,i)(this.config,this.correlationId,this.performanceClient,this.browserStorage,this.logger);(await Qs((t.popup||this.openPopup(`about:blank`,t)).document,this.config,a,e,this.logger,this.performanceClient)).submit();let o=await G(de,bt,this.logger,this.performanceClient,i)(this.config.system.popupBridgeTimeout,this.logger,this.browserCrypto,e,this.performanceClient),s=W(As,ur,this.logger,this.performanceClient,this.correlationId)(o,this.config.auth.OIDCOptions.responseMode,this.logger,this.correlationId);return G(tc,yn,this.logger,this.performanceClient,i)(e,s,r,g.acquireTokenPopup,this.config,n,this.browserStorage,this.nativeStorage,this.eventHandler,this.logger,this.performanceClient,this.platformAuthProvider)}async logoutPopupAsync(e,t,n,r){this.logger.verbose(`0b7yrk`,this.correlationId),this.eventHandler.emitEvent(Y.LOGOUT_START,this.correlationId,v.Popup,e);let i=X(g.logoutPopup,this.config.auth.clientId,this.correlationId,this.browserStorage,this.logger);try{await Cs(this.browserStorage,this.browserCrypto,this.logger,this.correlationId,e.account);let a=await G(this.createAuthCodeClient.bind(this),w,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:i,requestAuthority:n,account:e.account||void 0});try{a.authority.endSessionEndpoint}catch{if(e.account?.homeAccountId&&e.postLogoutRedirectUri&&a.authority.protocolMode===A.OIDC){if(this.eventHandler.emitEvent(Y.LOGOUT_SUCCESS,e.correlationId,v.Popup,e),r){let e={apiId:g.logoutPopup,timeout:this.config.system.redirectNavigationTimeout,noHistory:!1},t=j.getAbsoluteUrl(r,R());await this.navigationClient.navigateInternal(t,e)}t.popup?.close();return}}e.state=Te(this.browserCrypto,e.state||``,{interactionType:v.Popup});let o=a.getLogoutUri(e);this.eventHandler.emitEvent(Y.LOGOUT_SUCCESS,e.correlationId,v.Popup,e);let s=this.openPopup(o,t);if(this.eventHandler.emitEvent(Y.POPUP_OPENED,e.correlationId,v.Popup,{popupWindow:s},null),await de(this.config.system.popupBridgeTimeout,this.logger,this.browserCrypto,e,this.performanceClient).catch(()=>{}),r){let e={apiId:g.logoutPopup,timeout:this.config.system.redirectNavigationTimeout,noHistory:!1},t=j.getAbsoluteUrl(r,R());this.logger.verbose(`0qcur2`,this.correlationId),this.logger.verbosePii(`0oj7lk`,this.correlationId),await this.navigationClient.navigateInternal(t,e)}else this.logger.verbose(`03zgcf`,this.correlationId)}catch(e){throw t.popup?.close(),e instanceof S&&(e.setCorrelationId(this.correlationId),i.cacheFailedRequest(e)),this.eventHandler.emitEvent(Y.LOGOUT_FAILURE,this.correlationId,v.Popup,null,e),this.eventHandler.emitEvent(Y.LOGOUT_END,this.correlationId,v.Popup),e}this.eventHandler.emitEvent(Y.LOGOUT_END,this.correlationId,v.Popup)}initiateAuthRequest(t,n){if(t)return this.logger.infoPii(`1kcr9k`,this.correlationId),this.openPopup(t,n);throw this.logger.error(`1l7hyp`,this.correlationId),D(e)}openPopup(e,t){try{let n;if(t.popup?(n=t.popup,this.logger.verbosePii(`0cgeo7`,this.correlationId),n.location.assign(e)):t.popup===void 0&&(this.logger.verbosePii(`0c2awd`,this.correlationId),n=this.openSizedPopup(e,t)),!n)throw D(qn);return n.focus&&n.focus(),this.currentWindow=n,n}catch{throw this.logger.error(`0dxfb9`,this.correlationId),D(Mr)}}openSizedPopup(e,{popupName:t,popupWindowAttributes:n,popupWindowParent:r}){let i=r.screenLeft?r.screenLeft:r.screenX,a=r.screenTop?r.screenTop:r.screenY,o=r.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,s=r.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,c=n.popupSize?.width,l=n.popupSize?.height,u=n.popupPosition?.top,d=n.popupPosition?.left;return(!c||c<0||c>o)&&(this.logger.verbose(`08vfmo`,this.correlationId),c=P.POPUP_WIDTH),(!l||l<0||l>s)&&(this.logger.verbose(`09cxa0`,this.correlationId),l=P.POPUP_HEIGHT),(!u||u<0||u>s)&&(this.logger.verbose(`1qh4wo`,this.correlationId),u=Math.max(0,s/2-P.POPUP_HEIGHT/2+a)),(!d||d<0||d>o)&&(this.logger.verbose(`1sz3en`,this.correlationId),d=Math.max(0,o/2-P.POPUP_WIDTH/2+i)),r.open(e,t,`width=${c}, height=${l}, top=${u}, left=${d}, scrollbars=yes`)}generatePopupName(e,t){return`${P.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${e.join(`-`)}.${t}.${this.correlationId}`}generateLogoutPopupName(e){let t=e.account&&e.account.homeAccountId;return`${P.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${t}.${this.correlationId}`}};function pc(){if(typeof window>`u`||window.performance===void 0||typeof window.performance.getEntriesByType!=`function`)return;let e=window.performance.getEntriesByType(`navigation`);return(e.length?e[0]:void 0)?.type}var mc=class extends Ds{constructor(e,t,n,r,i,a,o,s,c,l){super(e,t,n,r,i,a,o,c,l),this.nativeStorage=s}async acquireToken(e){let t=await G(Os,Jt,this.logger,this.performanceClient,this.correlationId)(e,v.Redirect,this.config,this.browserCrypto,this.browserStorage,this.logger,this.performanceClient,this.correlationId);t.platformBroker=dc(this.config,this.logger,this.correlationId,this.platformAuthProvider,e.authenticationScheme);let n=e=>{e.persisted&&(this.logger.verbose(`0udvtt`,this.correlationId),this.browserStorage.resetRequestCache(this.correlationId),this.eventHandler.emitEvent(Y.RESTORE_FROM_BFCACHE,this.correlationId,v.Redirect))},r=this.getRedirectStartPage(e.redirectStartPage);this.logger.verbosePii(`0zao0a`,this.correlationId),this.browserStorage.setTemporaryCache(H.ORIGIN_URI,r,!0),window.addEventListener(`pageshow`,n);try{this.config.system.protocolMode===A.EAR?await this.executeEarFlow(t):await this.executeCodeFlow(t)}catch(e){throw e instanceof S&&e.setCorrelationId(this.correlationId),window.removeEventListener(`pageshow`,n),e}}async executeCodeFlow(e){let t=e.correlationId,n=X(g.acquireTokenRedirect,this.config.auth.clientId,this.correlationId,this.browserStorage,this.logger),r=await G(ic,Hn,this.logger,this.performanceClient,t)(this.performanceClient,this.logger,t),i={...e,codeChallenge:r.challenge};this.browserStorage.cacheAuthorizeRequest(i,this.correlationId,r.verifier);try{if(i.httpMethod===fe.POST)return await this.executeCodeFlowWithPost(i);{let t=await G(this.createAuthCodeClient.bind(this),w,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:n,requestAuthority:i.authority,requestAzureCloudOptions:i.azureCloudOptions,requestExtraQueryParameters:i.extraQueryParameters,account:i.account}),r=await G(Xs,xa,this.logger,this.performanceClient,e.correlationId)(this.config,t.authority,i,this.logger,this.performanceClient);return await this.initiateAuthRequest(r)}}catch(e){throw e instanceof S&&(e.setCorrelationId(this.correlationId),n.cacheFailedRequest(e)),e}}async executeEarFlow(e){let{correlationId:t,authority:n,azureCloudOptions:r,extraQueryParameters:i,account:a}=e,o=await G(Z,p,this.logger,this.performanceClient,t)(this.config,this.correlationId,this.performanceClient,this.browserStorage,this.logger,n,r,i,a),s=await G(_e,Er,this.logger,this.performanceClient,t)(),c=await G(ic,Hn,this.logger,this.performanceClient,t)(this.performanceClient,this.logger,t),l={...e,earJwk:s,codeChallenge:c.challenge};return this.browserStorage.cacheAuthorizeRequest(l,this.correlationId,c.verifier),(await Zs(document,this.config,o,l,this.logger,this.performanceClient)).submit(),new Promise((e,t)=>{setTimeout(()=>{t(D(wi,`failed_to_redirect`))},this.config.system.redirectNavigationTimeout)})}async executeCodeFlowWithPost(e){let t=e.correlationId,n=await G(Z,p,this.logger,this.performanceClient,t)(this.config,this.correlationId,this.performanceClient,this.browserStorage,this.logger);return this.browserStorage.cacheAuthorizeRequest(e,this.correlationId),(await Qs(document,this.config,n,e,this.logger,this.performanceClient)).submit(),new Promise((e,t)=>{setTimeout(()=>{t(D(wi,`failed_to_redirect`))},this.config.system.redirectNavigationTimeout)})}async handleRedirectPromise(e,t,n,r){let i=X(g.handleRedirectPromise,this.config.auth.clientId,this.correlationId,this.browserStorage,this.logger),a=r?.navigateToLoginRequestUrl??!0;try{let[o,s]=this.getRedirectResponse(r?.hash||``);if(!o)return this.logger.info(`1qmv0q`,this.correlationId),this.browserStorage.resetRequestCache(this.correlationId),pc()===`back_forward`?this.logger.verbose(`1eqegq`,this.correlationId):n.event.errorCode=`no_server_response`,null;let c=this.browserStorage.getTemporaryCache(H.ORIGIN_URI,this.correlationId,!0)||``;if(he(c)===he(window.location.href)&&a)return this.logger.verbose(`11yred`,this.correlationId),c.indexOf(`#`)>-1&&Ft(c),await this.handleResponse(o,e,t,i);if(!a)return this.logger.verbose(`0v4sdv`,this.correlationId),await this.handleResponse(o,e,t,i);if(!On()||this.config.system.allowRedirectInIframe){this.browserStorage.setTemporaryCache(H.URL_HASH,s,!0);let n={apiId:g.handleRedirectPromise,timeout:this.config.system.redirectNavigationTimeout,noHistory:!0},r=!0;if(!c||c===`null`){let e=Fi();this.browserStorage.setTemporaryCache(H.ORIGIN_URI,e,!0),this.logger.warning(`1dutq1`,this.correlationId),r=await this.navigationClient.navigateInternal(e,n)}else this.logger.verbose(`08jpy1`,this.correlationId),r=await this.navigationClient.navigateInternal(c,n);if(!r)return await this.handleResponse(o,e,t,i)}return null}catch(e){throw e instanceof S&&(e.setCorrelationId(this.correlationId),i.cacheFailedRequest(e)),e}}getRedirectResponse(e){this.logger.verbose(`1c5i8m`,this.correlationId);let t=e;t||=this.config.auth.OIDCOptions.responseMode===ke.QUERY?window.location.search:window.location.hash;let n=ki(t);if(n){try{js(n,this.browserCrypto,v.Redirect)}catch(e){return e instanceof S&&this.logger.error(`0bkq6p`,this.correlationId),[null,``]}return $n(window),this.logger.verbose(`00uvho`,this.correlationId),[n,t]}let r=this.browserStorage.getTemporaryCache(H.URL_HASH,this.correlationId,!0);return this.browserStorage.removeItem(this.browserStorage.generateCacheKey(H.URL_HASH)),r&&(n=ki(r),n)?(this.logger.verbose(`001671`,this.correlationId),[n,r]):[null,``]}async handleResponse(e,t,n,r){if(!e.state)throw D(Wn);let{authority:i,azureCloudOptions:a,extraQueryParameters:o,account:s}=t;if(e.ear_jwe){let n=await G(Z,p,this.logger,this.performanceClient,t.correlationId)(this.config,this.correlationId,this.performanceClient,this.browserStorage,this.logger,i,a,o,s);return G(nc,Si,this.logger,this.performanceClient,t.correlationId)(t,e,g.acquireTokenRedirect,this.config,n,this.browserStorage,this.nativeStorage,this.eventHandler,this.logger,this.performanceClient,this.platformAuthProvider)}let c=await G(this.createAuthCodeClient.bind(this),w,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:r,requestAuthority:t.authority});return G(tc,yn,this.logger,this.performanceClient,t.correlationId)(t,e,n,g.acquireTokenRedirect,this.config,c,this.browserStorage,this.nativeStorage,this.eventHandler,this.logger,this.performanceClient,this.platformAuthProvider)}async initiateAuthRequest(t){if(this.logger.verbose(`0yaw2e`,this.correlationId),t){this.logger.infoPii(`1luf83`,this.correlationId);let e={apiId:g.acquireTokenRedirect,timeout:this.config.system.redirectNavigationTimeout,noHistory:!1},n=this.config.auth.onRedirectNavigate;if(typeof n==`function`)if(this.logger.verbose(`1nehvl`,this.correlationId),n(t)!==!1){this.logger.verbose(`1a0jxh`,this.correlationId),await this.navigationClient.navigateExternal(t,e);return}else{this.logger.verbose(`09k5h5`,this.correlationId);return}else{this.logger.verbose(`0klwf7`,this.correlationId),await this.navigationClient.navigateExternal(t,e);return}}else throw this.logger.info(`0rlh4e`,this.correlationId),D(e)}async logout(e){this.logger.verbose(`1rkurh`,this.correlationId);let t=this.initializeLogoutRequest(e),n=X(g.logout,this.config.auth.clientId,this.correlationId,this.browserStorage,this.logger);try{this.eventHandler.emitEvent(Y.LOGOUT_START,this.correlationId,v.Redirect,e),await Cs(this.browserStorage,this.browserCrypto,this.logger,this.correlationId,t.account);let r={apiId:g.logout,timeout:this.config.system.redirectNavigationTimeout,noHistory:!1},i=await G(this.createAuthCodeClient.bind(this),w,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:n,requestAuthority:e&&e.authority,requestExtraQueryParameters:e?.extraQueryParameters,account:e&&e.account||void 0});if(i.authority.protocolMode===A.OIDC)try{i.authority.endSessionEndpoint}catch{if(t.account?.homeAccountId){this.eventHandler.emitEvent(Y.LOGOUT_SUCCESS,this.correlationId,v.Redirect,t);return}}t.state=Te(this.browserCrypto,t.state||``,{interactionType:v.Redirect});let a=i.getLogoutUri(t);t.account?.homeAccountId&&this.eventHandler.emitEvent(Y.LOGOUT_SUCCESS,this.correlationId,v.Redirect,t);let o=this.config.auth.onRedirectNavigate;if(typeof o==`function`)if(o(a)!==!1){this.logger.verbose(`06v57e`,this.correlationId),this.browserStorage.getInteractionInProgress()||this.browserStorage.setInteractionInProgress(!0,x.SIGNOUT),await this.navigationClient.navigateExternal(a,r);return}else this.browserStorage.setInteractionInProgress(!1),this.logger.verbose(`0xqes1`,this.correlationId);else{this.browserStorage.getInteractionInProgress()||this.browserStorage.setInteractionInProgress(!0,x.SIGNOUT),await this.navigationClient.navigateExternal(a,r);return}}catch(e){throw e instanceof S&&(e.setCorrelationId(this.correlationId),n.cacheFailedRequest(e)),this.eventHandler.emitEvent(Y.LOGOUT_FAILURE,this.correlationId,v.Redirect,null,e),this.eventHandler.emitEvent(Y.LOGOUT_END,this.correlationId,v.Redirect),e}this.eventHandler.emitEvent(Y.LOGOUT_END,this.correlationId,v.Redirect)}getRedirectStartPage(e){let t=e||window.location.href;return j.getAbsoluteUrl(t,R())}};async function hc(t,n,r,i){if(!t)throw r.info(`1l7hyp`,i),D(e);return W(vc,ut,r,n,i)(t)}async function gc(e,t,n,r,i){let a=yc();if(!a.contentDocument)throw`No document associated with iframe!`;return(await Qs(a.contentDocument,e,t,n,r,i)).submit(),a}async function _c(e,t,n,r,i){let a=yc();if(!a.contentDocument)throw`No document associated with iframe!`;return(await Zs(a.contentDocument,e,t,n,r,i)).submit(),a}function vc(e){let t=yc();return t.src=e,t}function yc(){let e=document.createElement(`iframe`);return e.className=`msalSilentIframe`,e.style.visibility=`hidden`,e.style.position=`absolute`,e.style.width=e.style.height=`0`,e.style.border=`0`,e.setAttribute(`sandbox`,`allow-scripts allow-same-origin allow-forms`),e.setAttribute(`allow`,`local-network-access *`),document.body.appendChild(e),e}function bc(e){document.body===e.parentNode&&document.body.removeChild(e)}var xc=class extends Ds{constructor(e,t,n,r,i,a,o,s,c,l,u){super(e,t,n,r,i,a,s,l,u),this.apiId=o,this.nativeStorage=c}async acquireToken(e){!e.loginHint&&!e.sid&&(!e.account||!e.account.username)&&this.logger.warning(`1kl318`,this.correlationId);let t={...e};t.prompt?t.prompt!==C.NONE&&t.prompt!==C.NO_SESSION&&(this.logger.warning(`0bmctg`,this.correlationId),t.prompt=C.NONE):t.prompt=C.NONE;let n=await G(Os,Jt,this.logger,this.performanceClient,this.correlationId)(t,v.Silent,this.config,this.browserCrypto,this.browserStorage,this.logger,this.performanceClient,this.correlationId);return n.platformBroker=dc(this.config,this.logger,this.correlationId,this.platformAuthProvider,n.authenticationScheme),kt(n.authority),this.config.system.protocolMode===A.EAR?this.executeEarFlow(n):this.executeCodeFlow(n)}async executeCodeFlow(e){let t,n=X(this.apiId,this.config.auth.clientId,this.correlationId,this.browserStorage,this.logger);try{return t=await G(this.createAuthCodeClient.bind(this),w,this.logger,this.performanceClient,e.correlationId)({serverTelemetryManager:n,requestAuthority:e.authority,requestAzureCloudOptions:e.azureCloudOptions,requestExtraQueryParameters:e.extraQueryParameters,account:e.account}),await G(this.silentTokenHelper.bind(this),Le,this.logger,this.performanceClient,e.correlationId)(t,e)}catch(r){if(r instanceof S&&(r.setCorrelationId(this.correlationId),n.cacheFailedRequest(r)),!t||!(r instanceof S)||r.errorCode!==P.INVALID_GRANT_ERROR)throw r;return this.performanceClient.addFields({retryError:r.errorCode},this.correlationId),await G(this.silentTokenHelper.bind(this),Le,this.logger,this.performanceClient,this.correlationId)(t,e)}}async executeEarFlow(e){let{correlationId:t,authority:n,azureCloudOptions:r,extraQueryParameters:i,account:a}=e,o=await G(Z,p,this.logger,this.performanceClient,t)(this.config,this.correlationId,this.performanceClient,this.browserStorage,this.logger,n,r,i,a),s=await G(_e,Er,this.logger,this.performanceClient,t)(),c=await G(ic,Hn,this.logger,this.performanceClient,t)(this.performanceClient,this.logger,t),l={...e,earJwk:s,codeChallenge:c.challenge},u=await G(_c,it,this.logger,this.performanceClient,t)(this.config,o,l,this.logger,this.performanceClient),d=this.config.auth.OIDCOptions.responseMode,f;try{f=await G(de,bt,this.logger,this.performanceClient,t)(this.config.system.iframeBridgeTimeout,this.logger,this.browserCrypto,e,this.performanceClient,this.config.experimental)}finally{W(bc,gt,this.logger,this.performanceClient,t)(u)}let m=W(As,ur,this.logger,this.performanceClient,t)(f,d,this.logger,this.correlationId);if(!m.ear_jwe&&m.code){let n=await G(this.createAuthCodeClient.bind(this),w,this.logger,this.performanceClient,t)({serverTelemetryManager:X(this.apiId,this.config.auth.clientId,t,this.browserStorage,this.logger),requestAuthority:e.authority,requestAzureCloudOptions:e.azureCloudOptions,requestExtraQueryParameters:e.extraQueryParameters,account:e.account,authority:o});return G(tc,yn,this.logger,this.performanceClient,t)(l,m,c.verifier,this.apiId,this.config,n,this.browserStorage,this.nativeStorage,this.eventHandler,this.logger,this.performanceClient,this.platformAuthProvider)}else return G(nc,Si,this.logger,this.performanceClient,t)(l,m,this.apiId,this.config,o,this.browserStorage,this.nativeStorage,this.eventHandler,this.logger,this.performanceClient,this.platformAuthProvider)}async verifySso(e){let t={...e};t.prompt||=C.NONE;let n=await G(Os,Jt,this.logger,this.performanceClient,this.correlationId)(t,v.Silent,this.config,this.browserCrypto,this.browserStorage,this.logger,this.performanceClient,this.correlationId),r=await G(this.createAuthCodeClient.bind(this),w,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:X(this.apiId,this.config.auth.clientId,this.correlationId,this.browserStorage,this.logger),requestAuthority:n.authority,requestAzureCloudOptions:n.azureCloudOptions,requestExtraQueryParameters:n.extraQueryParameters,account:n.account}),{serverParams:i}=await this.silentAuthorizeHelper(r,n),a=n.correlationId;return So(i,n.state),i.code?(this.logger.verbose(`0kkkcj`,a),!0):(this.logger.warning(`0y34ti`,a),!1)}logout(){return Promise.reject(D(sr))}async silentTokenHelper(e,t){let{serverParams:n,pkceCodes:r}=await this.silentAuthorizeHelper(e,t);return G(tc,yn,this.logger,this.performanceClient,t.correlationId)(t,n,r.verifier,this.apiId,this.config,e,this.browserStorage,this.nativeStorage,this.eventHandler,this.logger,this.performanceClient,this.platformAuthProvider)}async silentAuthorizeHelper(e,t){let n=t.correlationId,r=await G(ic,Hn,this.logger,this.performanceClient,n)(this.performanceClient,this.logger,n),i={...t,codeChallenge:r.challenge},a;if(t.httpMethod===fe.POST)a=await G(gc,it,this.logger,this.performanceClient,n)(this.config,e.authority,i,this.logger,this.performanceClient);else{let t=await G(Xs,xa,this.logger,this.performanceClient,n)(this.config,e.authority,i,this.logger,this.performanceClient);a=await G(hc,it,this.logger,this.performanceClient,n)(t,this.performanceClient,this.logger,n)}let o=this.config.auth.OIDCOptions.responseMode,s;try{s=await G(de,bt,this.logger,this.performanceClient,n)(this.config.system.iframeBridgeTimeout,this.logger,this.browserCrypto,t,this.performanceClient,this.config.experimental)}finally{W(bc,gt,this.logger,this.performanceClient,n)(a)}return{serverParams:W(As,ur,this.logger,this.performanceClient,n)(s,o,this.logger,this.correlationId),pkceCodes:r,silentRequest:i}}},Sc=class extends Ds{async acquireToken(e){let t=await G(ws,Mi,this.logger,this.performanceClient,e.correlationId)(e,this.config,this.performanceClient,this.logger,this.correlationId),n={...e,...t};e.redirectUri&&(n.redirectUri=Ss(e.redirectUri,this.config.auth.redirectUri,this.logger,this.correlationId));let r=X(g.acquireTokenSilent_silentFlow,this.config.auth.clientId,this.correlationId,this.browserStorage,this.logger),i=await this.createRefreshTokenClient({serverTelemetryManager:r,authorityUrl:n.authority,azureCloudOptions:n.azureCloudOptions,account:n.account});return G(i.acquireTokenByRefreshToken.bind(i),le,this.logger,this.performanceClient,e.correlationId)(n,g.acquireTokenSilent_silentFlow).catch(e=>{throw e.setCorrelationId(this.correlationId),r.cacheFailedRequest(e),e})}logout(){return Promise.reject(D(sr))}async createRefreshTokenClient(e){return new _o(await G(this.getClientConfiguration.bind(this),Ui,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:e.serverTelemetryManager,requestAuthority:e.authorityUrl,requestAzureCloudOptions:e.azureCloudOptions,requestExtraQueryParameters:e.extraQueryParameters,account:e.account}),this.performanceClient)}},Cc=class extends ho{constructor(e,t){super(e,t),this.includeRedirectUri=!1}},wc=class extends Ds{constructor(e,t,n,r,i,a,o,s,c,l){super(e,t,n,r,i,a,s,c,l),this.apiId=o}async acquireToken(e){if(!e.code)throw D(Jr);let t=await G(Os,Jt,this.logger,this.performanceClient,this.correlationId)(e,v.Silent,this.config,this.browserCrypto,this.browserStorage,this.logger,this.performanceClient,this.correlationId),n=X(this.apiId,this.config.auth.clientId,this.correlationId,this.browserStorage,this.logger);try{let r={...t,code:e.code},i=new Cc(await G(this.getClientConfiguration.bind(this),Ui,this.logger,this.performanceClient,this.correlationId)({serverTelemetryManager:n,requestAuthority:t.authority,requestAzureCloudOptions:t.azureCloudOptions,requestExtraQueryParameters:t.extraQueryParameters,account:t.account}),this.performanceClient);this.logger.verbose(`1uic5e`,this.correlationId);let a=new Ms(i,this.browserStorage,r,this.logger,this.performanceClient);return await G(a.handleCodeResponseFromServer.bind(a),Sa,this.logger,this.performanceClient,this.correlationId)({code:e.code,msgraph_host:e.msGraphHost,cloud_graph_host_name:e.cloudGraphHostName,cloud_instance_host_name:e.cloudInstanceHostName},t,this.apiId,!1)}catch(e){throw e instanceof S&&(e.setCorrelationId(this.correlationId),n.cacheFailedRequest(e)),e}}logout(){return Promise.reject(D(sr))}};function Tc(e,t,n,r){let i=window.msal?.clientIds||[],a=i.length,o=i.filter(t=>t===e).length;o>1&&n.warning(`1e88vg`,r),t.add({msalInstanceCount:a,sameClientIdInstanceCount:o})}function Ec(e,t,n,r){try{ee(e),Eo(n.auth.isMcp,r)}catch(e){throw t.end({success:!1},e,r.account),e}}var Dc=class e{constructor(e){this.operatingContext=e,this.isBrowserEnvironment=this.operatingContext.isBrowserEnvironment(),this.config=e.getConfig(),this.initialized=!1,this.logger=this.operatingContext.getLogger(),this.networkClient=this.config.system.networkClient,this.navigationClient=this.config.system.navigationClient,this.redirectResponse=new Map,this.hybridAuthCodeResponses=new Map,this.performanceClient=this.config.telemetry.client,this.browserCrypto=this.isBrowserEnvironment?new Ho(this.logger,this.performanceClient):ie,this.eventHandler=new bs(this.logger),this.browserStorage=this.isBrowserEnvironment?new fs(this.config.auth.clientId,this.config.cache,this.browserCrypto,this.logger,this.performanceClient,this.eventHandler,po(this.config.auth)):ms(this.config.auth.clientId,this.logger,this.performanceClient,this.eventHandler);let t={cacheLocation:b.MemoryStorage,cacheRetentionDays:5};this.nativeInternalStorage=new fs(this.config.auth.clientId,t,this.browserCrypto,this.logger,this.performanceClient,this.eventHandler),this.activeSilentTokenRequests=new Map,this.trackStateChange=this.trackStateChange.bind(this),this.trackStateChangeWithMeasurement=this.trackStateChangeWithMeasurement.bind(this)}static async createController(t,n){let r=new e(t);return await r.initialize(n),r}trackStateChange(e,t){e&&(t.type===`visibilitychange`?(this.logger.info(`16v6hv`,e),this.performanceClient.incrementFields({visibilityChangeCount:1},e)):t.type===`online`?(this.logger.info(`0zirfd`,e),this.performanceClient.incrementFields({onlineStatusChangeCount:1},e)):t.type===`offline`&&(this.logger.info(`1xk9ef`,e),this.performanceClient.incrementFields({onlineStatusChangeCount:1},e)))}async initialize(e){let t=this.getRequestCorrelationId(e);if(this.logger.trace(`1f7joy`,t),this.initialized){this.logger.info(`061m5x`,t);return}if(!this.isBrowserEnvironment){this.logger.info(`19fvpi`,t),this.initialized=!0,this.eventHandler.emitEvent(Y.INITIALIZE_END,t);return}let n=this.config.system.allowPlatformBroker,r=this.performanceClient.startMeasurement(Xo,t);if(this.eventHandler.emitEvent(Y.INITIALIZE_START,t),this.logMultipleInstances(r,t),r.add({isMcp:this.config.auth.isMcp}),await G(this.browserStorage.initialize.bind(this.browserStorage),Mt,this.logger,this.performanceClient,t)(t),n)try{this.platformAuthProvider=await lc(this.logger,this.performanceClient,t,this.config.system.nativeBrokerHandshakeTimeout)}catch(e){this.logger.verbose(e,t)}this.config.cache.cacheLocation===b.LocalStorage&&this.eventHandler.subscribeCrossTab(),!this.config.system.navigatePopups&&await this.preGeneratePkceCodes(t),this.initialized=!0,this.eventHandler.emitEvent(Y.INITIALIZE_END,t),r.end({allowPlatformBroker:n,success:!0})}async handleRedirectPromise(e){if(this.logger.verbose(`02l8bm`,``),Ur(this.initialized),this.isBrowserEnvironment){let t=e?.hash||``,n=this.redirectResponse.get(t);return n===void 0?(n=this.handleRedirectPromiseInternal(e),this.redirectResponse.set(t,n),this.logger.verbose(`1wn9kp`,``)):this.logger.verbose(`0w0gm3`,``),n}return this.logger.verbose(`12xi63`,``),null}async handleRedirectPromiseInternal(e){if(!this.browserStorage.isInteractionInProgress(!0))return this.logger.info(`0le6uv`,``),null;if(this.browserStorage.getInteractionInProgress()?.type===x.SIGNOUT)return this.logger.verbose(`1ywcv2`,``),this.browserStorage.setInteractionInProgress(!1),Promise.resolve(null);let t=this.getAllAccounts(),n=this.browserStorage.getCachedNativeRequest(),r=n&&!e?.hash,i,a,o;try{if(r&&this.platformAuthProvider){let e=n?.correlationId||``;this.eventHandler.emitEvent(Y.HANDLE_REDIRECT_START,e,v.Redirect),i=this.performanceClient.startMeasurement(Jo,e),this.logger.trace(`12v7is`,e),i.add({isPlatformBrokerRequest:!0});let t=new Gs(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,g.handleRedirectPromise,this.performanceClient,this.platformAuthProvider,n.accountId,this.nativeInternalStorage,n.correlationId);a=G(t.handleRedirectPromise.bind(t),or,this.logger,this.performanceClient,i.event.correlationId)()}else{let[t,n]=this.browserStorage.getCachedRequest(``);o=t;let r=t.correlationId;this.eventHandler.emitEvent(Y.HANDLE_REDIRECT_START,r,v.Redirect),i=this.performanceClient.startMeasurement(Jo,r),this.logger.trace(`0znzs5`,r);let s=this.createRedirectClient(r);a=G(s.handleRedirectPromise.bind(s),tr,this.logger,this.performanceClient,i.event.correlationId)(t,n,i,e)}}catch(e){throw this.browserStorage.resetRequestCache(``),e}return a.then(e=>(e?(this.browserStorage.resetRequestCache(e.correlationId),this.eventHandler.emitEvent(Y.ACQUIRE_TOKEN_SUCCESS,e.correlationId,v.Redirect,e),this.logger.verbose(`0ui8f5`,e.correlationId),t.length{this.browserStorage.resetRequestCache(i.event.correlationId);let t=e;throw this.eventHandler.emitEvent(Y.ACQUIRE_TOKEN_FAILURE,i.event.correlationId,v.Redirect,null,t),this.eventHandler.emitEvent(Y.HANDLE_REDIRECT_END,i.event.correlationId,v.Redirect),i.end({success:!1},t),e})}async acquireTokenRedirect(e){let t=this.getRequestCorrelationId(e);this.logger.verbose(`0os66p`,t);let n=this.performanceClient.startMeasurement(qo,t);n.add({scenarioId:e.scenarioId});let r=this.config.auth.onRedirectNavigate;this.config.auth.onRedirectNavigate=t=>{let i=typeof r==`function`?r(t):void 0;return n.add({navigateCallbackResult:i!==!1}),n.event=n.end({success:!0},void 0,e.account)||n.event,i};try{Ti(this.initialized,this.config),Eo(this.config.auth.isMcp,e),this.browserStorage.setInteractionInProgress(!0,x.SIGNIN),this.eventHandler.emitEvent(Y.ACQUIRE_TOKEN_START,t,v.Redirect,e);let r;if(this.platformAuthProvider&&this.canUsePlatformBroker(e)){let i=new Gs(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,g.acquireTokenRedirect,this.performanceClient,this.platformAuthProvider,this.getNativeAccountId(e),this.nativeInternalStorage,t);r=G(i.acquireTokenRedirect.bind(i),Lt,this.logger,this.performanceClient,t)(e,n).catch(r=>{if(n.add({brokerErrorName:r.name,brokerErrorCode:r.errorCode}),r instanceof Q&&Hs(r))return this.platformAuthProvider=void 0,this.createRedirectClient(t).acquireToken(e);if(r instanceof K)return this.logger.verbose(`1ipyz4`,t),this.createRedirectClient(t).acquireToken(e);throw r})}else r=this.createRedirectClient(t).acquireToken(e);return await r}catch(r){throw this.browserStorage.resetRequestCache(t),n.event.status===2?this.performanceClient.startMeasurement(Jo,t).end({success:!1},r,e.account):n.end({success:!1},r,e.account),this.eventHandler.emitEvent(Y.ACQUIRE_TOKEN_FAILURE,t,v.Redirect,null,r),r}}acquireTokenPopup(e){let t=this.getRequestCorrelationId(e),n=this.performanceClient.startMeasurement(Ko,t);n.add({scenarioId:e.scenarioId});try{this.logger.verbose(`0ch87b`,t),Ec(this.initialized,n,this.config,e),this.browserStorage.setInteractionInProgress(!0,x.SIGNIN,e.overrideInteractionInProgress,t)}catch(e){return Promise.reject(e)}let r=this.getAllAccounts();this.eventHandler.emitEvent(Y.ACQUIRE_TOKEN_START,t,v.Popup,e);let i,a=this.getPreGeneratedPkceCodes(t);return this.canUsePlatformBroker(e)?(n.add({isPlatformBrokerRequest:!0}),i=this.acquireTokenNative({...e,correlationId:t},g.acquireTokenPopup).then(e=>(n.end({success:!0,isNativeBroker:!0},void 0,e.account),e)).catch(r=>{if(n.add({brokerErrorName:r.name,brokerErrorCode:r.errorCode}),r instanceof Q&&Hs(r))return this.platformAuthProvider=void 0,this.createPopupClient(t).acquireToken(e,a);if(r instanceof K)return this.logger.verbose(`0yy5fw`,t),this.createPopupClient(t).acquireToken(e,a);throw r})):i=this.createPopupClient(t).acquireToken(e,a),i.then(i=>{let a=r.length(this.eventHandler.emitEvent(Y.ACQUIRE_TOKEN_FAILURE,t,v.Popup,null,r),n.end({success:!1},r,e.account),Promise.reject(r))).finally(async()=>{this.browserStorage.setInteractionInProgress(!1),this.config.system.navigatePopups||await this.preGeneratePkceCodes(t)})}trackStateChangeWithMeasurement(e){let t=this.ssoSilentMeasurement||this.acquireTokenByCodeAsyncMeasurement;t&&(e.type===`visibilitychange`?(this.logger.info(`0yzimq`,t.event.correlationId),t.increment({visibilityChangeCount:1})):e.type===`online`?(this.logger.info(`1caf53`,t.event.correlationId),t.increment({onlineStatusChangeCount:1})):e.type===`offline`&&(this.logger.info(`0fdyk7`,t.event.correlationId),t.increment({onlineStatusChangeCount:1})))}addStateChangeListeners(e){document.addEventListener(`visibilitychange`,e),window.addEventListener(`online`,e),window.addEventListener(`offline`,e)}removeStateChangeListeners(e){document.removeEventListener(`visibilitychange`,e),window.removeEventListener(`online`,e),window.removeEventListener(`offline`,e)}getCachedSsoCapable(){try{let e=window.localStorage.getItem(Cr);if(e){let t=JSON.parse(e);if(t&&typeof t.ssoCapable==`boolean`&&t.expiresOn&&Date.now(){let t={...e,correlationId:r};this.createSilentIframeClient(r).verifySso(t).then(e=>{this.logger.verbose(`1gd1iv`,r);try{let t=JSON.stringify({ssoCapable:e,expiresOn:Date.now()+864e5});window.localStorage.setItem(n,t)}catch{this.logger.warning(`18lmoj`,r)}i.end({fromCache:!1,success:e},void 0)}).catch(e=>{this.logger.warning(`05g83w`,r);try{window.localStorage.removeItem(n)}catch{this.logger.warning(`0nlf9q`,r)}i.end({fromCache:!1,success:!1},e)})},0)}async ssoSilent(e){let t=this.getRequestCorrelationId(e),n={...e,correlationId:t};this.ssoSilentMeasurement=this.performanceClient.startMeasurement(Yo,t),this.ssoSilentMeasurement?.add({scenarioId:e.scenarioId,ssoCapable:this.getCachedSsoCapable()}),Ec(this.initialized,this.ssoSilentMeasurement,this.config,n),this.ssoSilentMeasurement?.increment({visibilityChangeCount:0,onlineStatusChangeCount:0}),this.addStateChangeListeners(this.trackStateChangeWithMeasurement);let r=this.getAllAccounts();this.logger.verbose(`0w1b45`,t),this.eventHandler.emitEvent(Y.ACQUIRE_TOKEN_START,t,v.Silent,n);let i;return this.canUsePlatformBroker(n)?(this.ssoSilentMeasurement?.add({isPlatformBrokerRequest:!0}),i=this.acquireTokenNative(n,g.ssoSilent).catch(e=>{if(this.ssoSilentMeasurement?.add({brokerErrorName:e.name,brokerErrorCode:e.errorCode}),e instanceof Q&&Hs(e))return this.platformAuthProvider=void 0,this.createSilentIframeClient(n.correlationId).acquireToken(n);throw e})):i=this.createSilentIframeClient(n.correlationId).acquireToken(n),i.then(e=>{let n=r.length{throw this.eventHandler.emitEvent(Y.ACQUIRE_TOKEN_FAILURE,t,v.Silent,null,n),this.ssoSilentMeasurement?.end({success:!1},n,e.account),n}).finally(()=>{this.removeStateChangeListeners(this.trackStateChangeWithMeasurement)})}async acquireTokenByCode(e){let t=this.getRequestCorrelationId(e);this.logger.trace(`0ch6ga`,t);let n=this.performanceClient.startMeasurement(Go,t);Ec(this.initialized,n,this.config,e),this.eventHandler.emitEvent(Y.ACQUIRE_TOKEN_START,t,v.Silent,e),n.add({scenarioId:e.scenarioId});try{if(e.code&&e.nativeAccountId)throw D(rr);if(e.code){let r=e.code,i=this.hybridAuthCodeResponses.get(r);return i?(this.logger.verbose(`0qgp28`,t),n.discard()):(this.logger.verbose(`06eh73`,t),i=this.acquireTokenByCodeAsync({...e,correlationId:t}).then(e=>(this.eventHandler.emitEvent(Y.ACQUIRE_TOKEN_SUCCESS,t,v.Silent,e),this.hybridAuthCodeResponses.delete(r),n.end({success:!0,accessTokenSize:e.accessToken.length,idTokenSize:e.idToken.length},void 0,e.account),e)).catch(e=>{throw this.hybridAuthCodeResponses.delete(r),this.eventHandler.emitEvent(Y.ACQUIRE_TOKEN_FAILURE,t,v.Silent,null,e),n.end({success:!1},e),e}),this.hybridAuthCodeResponses.set(r,i)),await i}else if(e.nativeAccountId)if(this.canUsePlatformBroker(e,e.nativeAccountId)){n.add({isPlatformBrokerRequest:!0});let r=await this.acquireTokenNative({...e,correlationId:t},g.acquireTokenByCode,e.nativeAccountId).catch(e=>{throw n.add({brokerErrorName:e.name,brokerErrorCode:e.errorCode}),e instanceof Q&&Hs(e)&&(this.platformAuthProvider=void 0),e});return n.end({success:!0},void 0,r.account),r}else throw D(zi);else throw D(We)}catch(e){throw this.eventHandler.emitEvent(Y.ACQUIRE_TOKEN_FAILURE,t,v.Silent,null,e),n.end({success:!1},e),e}}async acquireTokenByCodeAsync(e){let t=this.getRequestCorrelationId(e);return this.logger.trace(`10d9hy`,t),this.acquireTokenByCodeAsyncMeasurement=this.performanceClient.startMeasurement(De,t),this.acquireTokenByCodeAsyncMeasurement?.increment({visibilityChangeCount:0,onlineStatusChangeCount:0}),this.addStateChangeListeners(this.trackStateChangeWithMeasurement),await this.createSilentAuthCodeClient(t).acquireToken(e).then(e=>(this.acquireTokenByCodeAsyncMeasurement?.end({success:!0,fromCache:e.fromCache}),e)).catch(e=>{throw this.acquireTokenByCodeAsyncMeasurement?.end({success:!1},e),e}).finally(()=>{this.removeStateChangeListeners(this.trackStateChangeWithMeasurement)})}async acquireTokenFromCache(e,t){switch(t){case l.Default:case l.AccessToken:case l.AccessTokenAndRefreshToken:let t=this.createSilentCacheClient(e.correlationId);return G(t.acquireToken.bind(t),s,this.logger,this.performanceClient,e.correlationId)(e);default:throw O(Ze)}}async acquireTokenByRefreshToken(e,t){switch(t){case l.Default:case l.AccessTokenAndRefreshToken:case l.RefreshToken:case l.RefreshTokenAndNetwork:let t=this.createSilentRefreshClient(e.correlationId);return G(t.acquireToken.bind(t),Qe,this.logger,this.performanceClient,e.correlationId)(e);default:throw O(Ze)}}async acquireTokenBySilentIframe(e){let t=this.createSilentIframeClient(e.correlationId);return G(t.acquireToken.bind(t),be,this.logger,this.performanceClient,e.correlationId)(e)}async logoutRedirect(e){let t=this.getRequestCorrelationId(e);return Ti(this.initialized,this.config),this.browserStorage.setInteractionInProgress(!0,x.SIGNOUT),this.createRedirectClient(t).logout(e)}logoutPopup(e){try{let t=this.getRequestCorrelationId(e);return ee(this.initialized),this.browserStorage.setInteractionInProgress(!0,x.SIGNOUT),this.createPopupClient(t).logout(e).finally(()=>{this.browserStorage.setInteractionInProgress(!1)})}catch(e){return Promise.reject(e)}}async clearCache(e){if(!this.isBrowserEnvironment)return;let t=this.getRequestCorrelationId(e);return this.createSilentCacheClient(t).logout(e)}getAllAccounts(e){return hs(this.logger,this.browserStorage,this.isBrowserEnvironment,this.getRequestCorrelationId(),e)}getAccount(e){return gs(e,this.logger,this.browserStorage,this.getRequestCorrelationId())}setActiveAccount(e){_s(e,this.browserStorage,this.getRequestCorrelationId())}getActiveAccount(){return vs(this.browserStorage,this.getRequestCorrelationId())}async hydrateCache(e,t){this.logger.verbose(`16jycr`,e.correlationId);let n=on(e.account,e.cloudGraphHostName,e.msGraphHost);if(await this.browserStorage.setAccount(n,e.correlationId,N(e.idTokenClaims),g.hydrateCache),e.fromPlatformBroker){this.logger.verbose(`1i5atf`,e.correlationId);let n=Zi(e.account.homeAccountId,e.account.environment,e.idToken,this.config.auth.clientId,e.tenantId),r=Qi(e.account.homeAccountId,e.account.environment,e.accessToken,this.config.auth.clientId,e.tenantId,e.scopes.join(` `),e.expiresOn?Ki(e.expiresOn):0,e.extExpiresOn?Ki(e.extExpiresOn):0,_,void 0,e.tokenType,void 0,t.sshKid);t.resource&&(r.resource=t.resource);let i=N(e.idTokenClaims);await this.browserStorage.setIdTokenCredential(n,e.correlationId,i),await this.nativeInternalStorage.setAccessTokenCredential(r,e.correlationId,i)}else return this.browserStorage.hydrateCache(e,t)}async acquireTokenNative(e,t,n,r){let i=this.getRequestCorrelationId(e);if(this.logger.trace(`0b9y3p`,i),!this.platformAuthProvider)throw D(Dn);let a=new Gs(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,t,this.performanceClient,this.platformAuthProvider,n||this.getNativeAccountId(e),this.nativeInternalStorage,i);return G(a.acquireToken.bind(a),Oi,this.logger,this.performanceClient,i)(e,r)}canUsePlatformBroker(e,t){let n=this.getRequestCorrelationId(e);if(this.logger.trace(`1n9lbl`,n),!this.platformAuthProvider)return this.logger.trace(`0vnu11`,n),!1;if(!dc(this.config,this.logger,n,this.platformAuthProvider,e.authenticationScheme))return this.logger.trace(`0yoy1g`,n),!1;if(e.prompt)switch(e.prompt){case C.NONE:case C.CONSENT:case C.LOGIN:this.logger.trace(`0vdv8e`,n);break;default:return this.logger.trace(`0pdzw6`,n),!1}return!t&&!this.getNativeAccountId(e)?(this.logger.trace(`16lbtk`,n),!1):!0}getNativeAccountId(e){let t=e.account||this.getAccount({loginHint:e.loginHint,sid:e.sid})||(!e.loginHint&&!e.sid?this.getActiveAccount():null);return t&&t.nativeAccountId||``}createPopupClient(e){return new fc(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,this.performanceClient,this.nativeInternalStorage,e,this.platformAuthProvider)}createRedirectClient(e){return new mc(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,this.performanceClient,this.nativeInternalStorage,e,this.platformAuthProvider)}createSilentIframeClient(e){return new xc(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,g.ssoSilent,this.performanceClient,this.nativeInternalStorage,e,this.platformAuthProvider)}createSilentCacheClient(e){return new Ws(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,this.performanceClient,e,this.platformAuthProvider)}createSilentRefreshClient(e){return new Sc(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,this.performanceClient,e,this.platformAuthProvider)}createSilentAuthCodeClient(e){return new wc(this.config,this.browserStorage,this.browserCrypto,this.logger,this.eventHandler,this.navigationClient,g.acquireTokenByCode,this.performanceClient,e,this.platformAuthProvider)}addEventCallback(e,t){return this.eventHandler.addEventCallback(e,t)}removeEventCallback(e){this.eventHandler.removeEventCallback(e)}addPerformanceCallback(e){return kr(),this.performanceClient.addPerformanceCallback(e)}removePerformanceCallback(e){return this.performanceClient.removePerformanceCallback(e)}getLogger(){return this.logger}setLogger(e){this.logger=e}initializeWrapperLibrary(e,t){this.browserStorage.setWrapperMetadata(e,t)}setNavigationClient(e){this.navigationClient=e}getConfiguration(){return this.config}getPerformanceClient(){return this.performanceClient}isBrowserEnv(){return this.isBrowserEnvironment}getRequestCorrelationId(e){return e?.correlationId?e.correlationId:this.isBrowserEnvironment?vr():``}async loginRedirect(e){let t=this.getRequestCorrelationId(e);return this.logger.verbose(`0lz9hf`,t),this.acquireTokenRedirect({correlationId:t,...e||ft})}loginPopup(e){let t=this.getRequestCorrelationId(e);return this.logger.verbose(`0qw7v5`,t),this.acquireTokenPopup({correlationId:t,...e||ft})}async acquireTokenSilent(e){let t=this.getRequestCorrelationId(e),n=this.performanceClient.startMeasurement(Wo,t);n.add({cacheLookupPolicy:e.cacheLookupPolicy,scenarioId:e.scenarioId,ssoCapable:this.getCachedSsoCapable()}),Ec(this.initialized,n,this.config,e),this.logger.verbose(`0x1c4s`,t);let r=e.account||this.getActiveAccount();if(!r)throw D(Or);return this.acquireTokenSilentDeduped(e,r,t).then(r=>(n.end({success:!0,fromCache:r.fromCache,accessTokenSize:r.accessToken.length,idTokenSize:r.idToken.length},void 0,r.account),{...r,state:e.state,correlationId:t})).catch(e=>{throw e instanceof S&&e.setCorrelationId(t),n.end({success:!1},e,r),e})}async acquireTokenSilentDeduped(e,t,n){let r=$a(this.config.auth.clientId,{...e,authority:e.authority||this.config.auth.authority,correlationId:n},t.homeAccountId),i=JSON.stringify(r),a=this.activeSilentTokenRequests.get(i);if(a===void 0){this.logger.verbose(`0fcjbk`,n),this.performanceClient.addFields({deduped:!1},n);let r=G(this.acquireTokenSilentAsync.bind(this),fn,this.logger,this.performanceClient,n)({...e,correlationId:n},t);return this.activeSilentTokenRequests.set(i,r),r.finally(()=>{this.activeSilentTokenRequests.delete(i)})}else return this.logger.verbose(`1yq7nb`,n),this.performanceClient.addFields({deduped:!0},n),a}async acquireTokenSilentAsync(e,t){let n=t=>this.trackStateChange(e.correlationId,t);this.eventHandler.emitEvent(Y.ACQUIRE_TOKEN_START,e.correlationId,v.Silent,e),e.correlationId&&this.performanceClient.incrementFields({visibilityChangeCount:0,onlineStatusChangeCount:0},e.correlationId),this.addStateChangeListeners(n);let r=await G(Ts,re,this.logger,this.performanceClient,e.correlationId)(e,t,this.config,this.performanceClient,this.logger),i=e.cacheLookupPolicy||l.Default;return this.acquireTokenSilentNoIframe(r,i).catch(async t=>{if(Oc(t,i)){let n=`${t.errorCode}${t.subError?`|${t.subError}`:``}`;if(this.performanceClient.addFields({silentRefreshReason:n},e.correlationId),!this.activeIframeRequest){let e;return this.activeIframeRequest=[new Promise(t=>{e=t}),r.correlationId],this.logger.verbose(`0rh08z`,r.correlationId),G(this.acquireTokenBySilentIframe.bind(this),$r,this.logger,this.performanceClient,r.correlationId)(r).then(t=>(e(!0),t)).catch(t=>{throw e(!1),t}).finally(()=>{this.activeIframeRequest=void 0})}else if(i!==l.Skip){let[e,n]=this.activeIframeRequest;this.logger.verbose(`1w8fso`,r.correlationId);let a=this.performanceClient.startMeasurement(Tt,r.correlationId);a.add({awaitIframeCorrelationId:n});let o=await e;if(a.end({success:o}),o)return this.logger.verbose(`0ywzzi`,r.correlationId),this.acquireTokenSilentNoIframe(r,i);throw this.logger.info(`17y14q`,r.correlationId),t}else return this.logger.warning(`1bd4p8`,r.correlationId),G(this.acquireTokenBySilentIframe.bind(this),$r,this.logger,this.performanceClient,r.correlationId)(r)}else throw t}).then(t=>(this.eventHandler.emitEvent(Y.ACQUIRE_TOKEN_SUCCESS,e.correlationId,v.Silent,t),e.correlationId&&this.performanceClient.addFields({fromCache:t.fromCache,isNativeBroker:t.fromPlatformBroker},e.correlationId),t)).catch(t=>{throw this.eventHandler.emitEvent(Y.ACQUIRE_TOKEN_FAILURE,e.correlationId,v.Silent,null,t),t}).finally(()=>{this.removeStateChangeListeners(n)})}async acquireTokenSilentNoIframe(e,t){return dc(this.config,this.logger,e.correlationId,this.platformAuthProvider,e.authenticationScheme)&&e.account.nativeAccountId?(this.logger.verbose(`0sczo4`,e.correlationId),this.performanceClient.addFields({isPlatformBrokerRequest:!0},e.correlationId),this.acquireTokenNative(e,g.acquireTokenSilent_silentFlow,e.account.nativeAccountId,t).catch(async t=>{throw this.performanceClient.addFields({brokerErrorName:t.name,brokerErrorCode:t.errorCode},e.correlationId),t instanceof Q&&Hs(t)?(this.logger.verbose(`07rkmb`,e.correlationId),this.platformAuthProvider=void 0,O(Ze)):t})):(this.logger.verbose(`0ox81t`,e.correlationId),t===l.AccessToken&&this.logger.verbose(`0fvwxe`,e.correlationId),G(this.acquireTokenFromCache.bind(this),Ue,this.logger,this.performanceClient,e.correlationId)(e,t).catch(n=>{if(t===l.AccessToken)throw n;return this.eventHandler.emitEvent(Y.ACQUIRE_TOKEN_NETWORK_START,e.correlationId,v.Silent,e),G(this.acquireTokenByRefreshToken.bind(this),Je,this.logger,this.performanceClient,e.correlationId)(e,t)}))}async preGeneratePkceCodes(e){return this.logger.verbose(`1x6uj6`,e),this.pkceCode=await G(ic,Hn,this.logger,this.performanceClient,e)(this.performanceClient,this.logger,e),Promise.resolve()}getPreGeneratedPkceCodes(e){let t=this.pkceCode?{...this.pkceCode}:void 0;return this.pkceCode=void 0,t?this.logger.verbose(`12js1o`,e):this.logger.verbose(`1oe9ci`,e),this.performanceClient.addFields({usePreGeneratedPkce:!!t},e),t}logMultipleInstances(e,t){let n=this.config.auth.clientId;window&&(window.msal=window.msal||{},window.msal.clientIds=window.msal.clientIds||[],window.msal.clientIds.length>0&&this.logger.verbose(`1qtz3l`,t),window.msal.clientIds.push(n),Tc(n,e,this.logger,t))}};function Oc(e,t){let n=!(e instanceof K&&e.subError!==`bad_token`),r=e.errorCode===P.INVALID_GRANT_ERROR||e.errorCode===`token_refresh_required`,i=n&&r||e.errorCode===`no_tokens_found`||e.errorCode===`refresh_token_expired`,a=Xt.includes(t);return i&&a}var kc=class e{static loggerCallback(e,t){switch(e){case Ni.Error:console.error(t);return;case Ni.Info:console.info(t);return;case Ni.Verbose:console.debug(t);return;case Ni.Warning:console.warn(t);return;default:console.log(t);return}}constructor(t){this.browserEnvironment=typeof window<`u`,this.config=ei(t,this.browserEnvironment);let n;try{n=window[b.SessionStorage]}catch{}let r=n?.getItem(Sn),i=n?.getItem(Lr)?.toLowerCase(),a=i===`true`?!0:i===`false`?!1:void 0,o={...this.config.system.loggerOptions},s=r&&Object.keys(Ni).includes(r)?Ni[r]:void 0;s&&(o.loggerCallback=e.loggerCallback,o.logLevel=s),a!==void 0&&(o.piiLoggingEnabled=a),this.logger=new Nt(o,ls,us),this.available=!1}getConfig(){return this.config}getLogger(){return this.logger}isAvailable(){return this.available}isBrowserEnvironment(){return this.browserEnvironment}},Ac=class e extends kc{getModuleName(){return e.MODULE_NAME}getId(){return e.ID}async initialize(e){return this.available=typeof window<`u`,this.available}};Ac.MODULE_NAME=``,Ac.ID=`StandardOperatingContext`;var jc=class{constructor(e,t){this.controller=t||new Dc(new Ac(e))}async initialize(e){return this.controller.initialize(e)}async acquireTokenPopup(e){return this.controller.acquireTokenPopup(e)}acquireTokenRedirect(e){return this.controller.acquireTokenRedirect(e)}acquireTokenSilent(e){return this.controller.acquireTokenSilent(e)}acquireTokenByCode(e){return this.controller.acquireTokenByCode(e)}addEventCallback(e,t){return this.controller.addEventCallback(e,t)}removeEventCallback(e){return this.controller.removeEventCallback(e)}addPerformanceCallback(e){return this.controller.addPerformanceCallback(e)}removePerformanceCallback(e){return this.controller.removePerformanceCallback(e)}getAccount(e){return this.controller.getAccount(e)}getAllAccounts(e){return this.controller.getAllAccounts(e)}handleRedirectPromise(e){return this.controller.handleRedirectPromise(e)}loginPopup(e){return this.controller.loginPopup(e)}loginRedirect(e){return this.controller.loginRedirect(e)}logoutRedirect(e){return this.controller.logoutRedirect(e)}logoutPopup(e){return this.controller.logoutPopup(e)}ssoSilent(e){return this.controller.ssoSilent(e)}getLogger(){return this.controller.getLogger()}setLogger(e){this.controller.setLogger(e)}setActiveAccount(e){this.controller.setActiveAccount(e)}getActiveAccount(){return this.controller.getActiveAccount()}initializeWrapperLibrary(e,t){return this.controller.initializeWrapperLibrary(e,t)}setNavigationClient(e){this.controller.setNavigationClient(e)}getConfiguration(){return this.controller.getConfiguration()}async hydrateCache(e,t){return this.controller.hydrateCache(e,t)}clearCache(e){return this.controller.clearCache(e)}},Mc=`https://nordicsemiextprod.ciamlogin.com/`,Nc=`7e241ef6-76de-4cc5-9f52-298222874afb`,Pc=new URL(Mc).hostname,Fc=`http://localhost:8080`,Ic=`${Fc}/mynordic/from-portal`,Lc=`${Fc}/mynordic/sso.html`,Rc={auth:{clientId:Nc,authority:Mc,redirectUri:Ic,postLogoutRedirectUri:`${Fc}/`,knownAuthorities:[Pc]},cache:{cacheLocation:`localStorage`}},zc={scopes:[`openid`,`profile`]},Bc={scopes:[`openid`,`profile`],redirectUri:Lc},$=new jc(Rc),Vc=[`login_hint`,`loginHint`,`sid`],Hc=`nrfcloud_sso_hints`,Uc=`nrfcloud_sso_method`;function Wc(){let e=new URLSearchParams(window.location.search);return{loginHint:e.get(`login_hint`)?.trim()||e.get(`loginHint`)?.trim()||null,sid:e.get(`sid`)?.trim()||null}}function Gc(e){(e.loginHint||e.sid)&&sessionStorage.setItem(Hc,JSON.stringify(e))}function Kc(){let e=Wc();if(e.loginHint||e.sid)return Gc(e),e;try{let e=sessionStorage.getItem(Hc);return e?JSON.parse(e):{loginHint:null,sid:null}}catch{return{loginHint:null,sid:null}}}function qc(){let e=new URL(window.location.href),t=!1;for(let n of Vc)e.searchParams.has(n)&&(e.searchParams.delete(n),t=!0);t&&window.history.replaceState({},document.title,e.pathname+e.search)}function Jc({loginHint:e,sid:t}){let n={...Bc,...zc,loginHint:e};return t&&(n.sid=t),n}function Yc({loginHint:e,sid:t}){let n={...zc};return e&&(n.loginHint=e),t&&(n.sid=t),n}function Xc(e){return e==null?{note:`no error object`}:{type:e.constructor?.name??typeof e,name:e.name,message:e.message,errorCode:e.errorCode,errorMessage:e.errorMessage,subError:e.subError,correlationId:e.correlationId,stack:e.stack}}function Zc(e,t){console.error(e,Xc(t))}function Qc(){return window.location.pathname.replace(/\/$/,``)===`/mynordic/from-portal`}function $c(){let e=new URLSearchParams(window.location.search),t=new URLSearchParams(window.location.hash.replace(/^#/,``)),n=e.get(`error`)??t.get(`error`);return n?{error:n,description:e.get(`error_description`)??t.get(`error_description`)}:null}function el(e){return e instanceof K}function tl(){let e=$c();return e?[`consent_required`,`interaction_required`,`login_required`].includes(e.error):!1}async function nl(e=Wc()){rl(),ll(`Opening interactive sign-in for nrfCloud…`),await $.loginRedirect(e.loginHint?Yc(e):zc)}function rl(){let e=new URL(window.location.href);for(let t of[`error`,`error_description`,`error_uri`,`state`])e.searchParams.delete(t);let t=new URLSearchParams(e.hash.replace(/^#/,``)),n=!1;for(let e of[`error`,`error_description`,`error_uri`,`state`])t.has(e)&&(t.delete(e),n=!0);n&&(e.hash=t.toString()?`#${t}`:``),window.history.replaceState({},document.title,e.pathname+e.search+e.hash)}async function il({loginHint:e,sid:t}){Gc({loginHint:e,sid:t}),sessionStorage.setItem(Uc,`prompt=none`),ll(`Continuing myNordic session…`),await $.loginRedirect({...Yc({loginHint:e,sid:t}),prompt:`none`})}async function al({loginHint:e,sid:t}){Gc({loginHint:e,sid:t});try{sessionStorage.setItem(Uc,`ssoSilent`);let n=await $.ssoSilent(Jc({loginHint:e,sid:t}));return qc(),sl(n,`silent SSO (ssoSilent)`),!0}catch(e){Zc(`ssoSilent failed, trying prompt=none`,e)}return await il({loginHint:e,sid:t}),!0}async function ol(){await $.initialize();let e=null;try{e=await $.handleRedirectPromise()}catch(e){if(Zc(`handleRedirectPromise failed`,e),Qc()&&el(e)){await nl(Kc());return}cl(e);return}if(e){qc(),rl();let t=sessionStorage.getItem(Uc);sessionStorage.removeItem(Uc),sl(e,t===`ssoSilent`?`silent SSO (ssoSilent)`:t===`prompt=none`?`silent SSO (prompt=none)`:`sign-in`);return}if(Qc()&&tl()){let e=Kc();Zc(`loginRedirect (prompt=none) failed`,{errorCode:$c()?.error,errorMessage:$c()?.description}),rl(),await nl(e);return}let t=$.getAllAccounts();if(t.length>0){sl({account:t[0]},`restored from MSAL cache`);return}if(Qc()){let e=Kc();if(!e.loginHint){await nl(e);return}await al(e);return}ll(`Not authenticated. Open from myNordic or sign in.`)}function sl(e,t){let n=t?{...e,note:t}:e;document.getElementById(`output`).textContent=JSON.stringify(n,null,2),document.getElementById(`login`).hidden=!0,document.getElementById(`logout`).hidden=!1}function cl(e){ll(`Authentication failed: ${e.message??e}`),document.getElementById(`login`).hidden=!1,document.getElementById(`logout`).hidden=!0}function ll(e){document.getElementById(`output`).textContent=e}document.getElementById(`login`).addEventListener(`click`,()=>{$.loginRedirect(zc)});function ul(){let e=$.getAllAccounts()[0],{loginHint:t}=Kc(),n=e?.idTokenClaims?.login_hint??t??e?.username??void 0,r={postLogoutRedirectUri:Rc.auth.postLogoutRedirectUri};return e&&(r.account=e),n&&(r.logoutHint=n),r}document.getElementById(`logout`).addEventListener(`click`,async()=>{let e=ul();!e.account&&!e.logoutHint&&console.warn(`Logout without account or logoutHint — CIAM may show an empty account picker.`),await $.logoutRedirect(e)}),ol(); \ No newline at end of file diff --git a/mynordic-oauth-test/dist/assets/sso-CFKbQoP1.js b/mynordic-oauth-test/dist/assets/sso-CFKbQoP1.js new file mode 100644 index 0000000..4a9aa09 --- /dev/null +++ b/mynordic-oauth-test/dist/assets/sso-CFKbQoP1.js @@ -0,0 +1 @@ +import{Dt as e,It as t,Pt as n,c as r,i,n as a,x as o,y as s,zt as c}from"./Configuration-DmI3R7F5.js";async function l(l){let u;try{u=o()}catch(e){throw typeof window.history.replaceState==`function`&&window.history.replaceState(null,``,`${window.location.origin}${window.location.pathname}`),e}let{payload:d,urlHash:f,urlQuery:p,hasResponseInHash:m,hasResponseInQuery:h,libraryState:g}=u,{id:_,meta:v}=g;if(v.interactionType===t.Redirect){let t=l||new i,o=``,u=``,f=``,p=`${r}.${c.INTERACTION_STATUS_KEY}`;try{let e=window.sessionStorage.getItem(p),t=JSON.parse(e||``);if(u=t.clientId||``,f=t.type,u){let e=`${r}.${u}.${c.ORIGIN_URI}`;o=window.sessionStorage.getItem(e)||``}}catch{}let m={apiId:f===n.SIGNOUT?e.logout:e.handleRedirectPromise,noHistory:!0,timeout:a};if(u)try{window.sessionStorage.setItem(`${r}.${u}.${c.URL_HASH}`,d)}catch{}let h=o||s(),g=h.endsWith(`?`)?h.slice(0,-1):h;await t.navigateInternal(g,m);return}if(typeof window.history.replaceState==`function`){let e=`${window.location.origin}${window.location.pathname}`;!m&&f&&(e+=f),!h&&p&&(e+=p),window.history.replaceState(null,``,e)}let y=new BroadcastChannel(_);y.postMessage({v:1,payload:d}),y.close();try{window.close()}catch{}}l().catch(e=>{console.error(`Redirect bridge error:`,e)}); \ No newline at end of file diff --git a/mynordic-oauth-test/dist/index.html b/mynordic-oauth-test/dist/index.html new file mode 100644 index 0000000..8a44862 --- /dev/null +++ b/mynordic-oauth-test/dist/index.html @@ -0,0 +1,20 @@ + + + + + nrfCloud + + + + +

nrfCloud — Silent SSO receiver

+

+ After myNordic CIAM login, users are redirected to + /mynordic/from-portal?login_hint=… where this app runs + ssoSilent with that login_hint. +

+ + +
Not authenticated.
+ + diff --git a/mynordic-oauth-test/dist/mynordic/from-portal/index.html b/mynordic-oauth-test/dist/mynordic/from-portal/index.html new file mode 100644 index 0000000..fc9ce24 --- /dev/null +++ b/mynordic-oauth-test/dist/mynordic/from-portal/index.html @@ -0,0 +1,16 @@ + + + + + nrfCloud — Sign-in + + + + +

nrfCloud

+

Completing sign-in from myNordic…

+ + +
Signing in…
+ + diff --git a/mynordic-oauth-test/dist/mynordic/sso.html b/mynordic-oauth-test/dist/mynordic/sso.html new file mode 100644 index 0000000..7aaa644 --- /dev/null +++ b/mynordic-oauth-test/dist/mynordic/sso.html @@ -0,0 +1,12 @@ + + + + + SSO + + + + +

Processing authentication…

+ + diff --git a/mynordic-oauth-test/index.html b/mynordic-oauth-test/index.html new file mode 100644 index 0000000..219d4a4 --- /dev/null +++ b/mynordic-oauth-test/index.html @@ -0,0 +1,19 @@ + + + + + nrfCloud + + +

nrfCloud — Silent SSO receiver

+

+ After myNordic CIAM login, users are redirected to + /mynordic/from-portal?login_hint=… where this app runs + ssoSilent with that login_hint. +

+ + +
Not authenticated.
+ + + diff --git a/mynordic-oauth-test/main.js b/mynordic-oauth-test/main.js new file mode 100644 index 0000000..5969738 --- /dev/null +++ b/mynordic-oauth-test/main.js @@ -0,0 +1,336 @@ +import { + InteractionRequiredAuthError, + PublicClientApplication, +} from "@azure/msal-browser"; +import { loginRequest, msalConfig, ssoSilentRequest } from "./msalConfig.js"; + +const msal = new PublicClientApplication(msalConfig); + +const SSO_QUERY_KEYS = ["login_hint", "loginHint", "sid"]; +const SSO_HINTS_STORAGE_KEY = "nrfcloud_sso_hints"; +const SSO_METHOD_STORAGE_KEY = "nrfcloud_sso_method"; + +/** login_hint from myNordic redirect (e.g. ?login_hint=user@example.com). */ +function ssoHintsFromLocation() { + const params = new URLSearchParams(window.location.search); + const loginHint = + params.get("login_hint")?.trim() || params.get("loginHint")?.trim() || null; + const sid = params.get("sid")?.trim() || null; + return { loginHint, sid }; +} + +function persistSsoHints(hints) { + if (hints.loginHint || hints.sid) { + sessionStorage.setItem(SSO_HINTS_STORAGE_KEY, JSON.stringify(hints)); + } +} + +/** Keep login_hint across CIAM redirects (query params are stripped on error responses). */ +function loadSsoHints() { + const fromUrl = ssoHintsFromLocation(); + if (fromUrl.loginHint || fromUrl.sid) { + persistSsoHints(fromUrl); + return fromUrl; + } + try { + const stored = sessionStorage.getItem(SSO_HINTS_STORAGE_KEY); + return stored ? JSON.parse(stored) : { loginHint: null, sid: null }; + } catch { + return { loginHint: null, sid: null }; + } +} + +function clearSsoQueryParams() { + const url = new URL(window.location.href); + let changed = false; + for (const key of SSO_QUERY_KEYS) { + if (url.searchParams.has(key)) { + url.searchParams.delete(key); + changed = true; + } + } + if (changed) { + window.history.replaceState({}, document.title, url.pathname + url.search); + } +} + +function buildSilentSsoRequest({ loginHint, sid }) { + const request = { ...ssoSilentRequest, ...loginRequest, loginHint }; + if (sid) request.sid = sid; + return request; +} + +function buildInteractiveRequest({ loginHint, sid }) { + const request = { ...loginRequest }; + if (loginHint) request.loginHint = loginHint; + if (sid) request.sid = sid; + return request; +} + +/** MSAL AuthError fields are often non-enumerable — plain console.log(err) looks empty. */ +function msalErrorDetails(err) { + if (err == null) return { note: "no error object" }; + return { + type: err.constructor?.name ?? typeof err, + name: err.name, + message: err.message, + errorCode: err.errorCode, + errorMessage: err.errorMessage, + subError: err.subError, + correlationId: err.correlationId, + stack: err.stack, + }; +} + +function formatMsalError(err) { + const d = msalErrorDetails(err); + const parts = [d.errorCode, d.errorMessage, d.subError, d.message].filter(Boolean); + return parts.length > 0 ? parts.join(" — ") : "unknown error"; +} + +/** Multi-line text for alert / confirm (objects stringify as [object Object] otherwise). */ +function formatMsalErrorAlert(err) { + const d = msalErrorDetails(err); + return [ + `type: ${d.type ?? "unknown"}`, + d.errorCode ? `errorCode: ${d.errorCode}` : null, + d.subError ? `subError: ${d.subError}` : null, + d.errorMessage ? `errorMessage: ${d.errorMessage}` : null, + d.message ? `message: ${d.message}` : null, + d.correlationId ? `correlationId: ${d.correlationId}` : null, + ] + .filter(Boolean) + .join("\n"); +} + +function logMsalError(label, err) { + console.error(label, msalErrorDetails(err)); +} + +/** Set true to alert/debugger before loginRedirect fallbacks. */ +const DEBUG_SSO_PAUSE = false; + +async function pauseBeforeLoginRedirect(err, fallbackLabel) { + const details = formatMsalErrorAlert(err); + const summary = formatMsalError(err); + + setStatus(`ssoSilent failed — paused before ${fallbackLabel}\n${summary}`); + alert(`ssoSilent failed\n\n${details}`); + debugger; // DevTools open → execution stops here + + return confirm( + `Continue to ${fallbackLabel}?\n\n${summary}\n\nCancel to stay on this page.`, + ); +} + +function isCallbackPage() { + const path = window.location.pathname.replace(/\/$/, ""); + return path === "/mynordic/from-portal"; +} + +function authErrorFromUrl() { + const search = new URLSearchParams(window.location.search); + const hash = new URLSearchParams(window.location.hash.replace(/^#/, "")); + const error = search.get("error") ?? hash.get("error"); + if (!error) return null; + return { + error, + description: search.get("error_description") ?? hash.get("error_description"), + }; +} + +/** Silent flows cannot show consent UI — user must sign in interactively once per app. */ +function requiresInteractiveSignIn(err) { + return err instanceof InteractionRequiredAuthError; +} + +function urlRequiresInteractiveSignIn() { + const urlError = authErrorFromUrl(); + if (!urlError) return false; + return ["consent_required", "interaction_required", "login_required"].includes( + urlError.error, + ); +} + +async function startInteractiveSignIn(hints = ssoHintsFromLocation()) { + clearAuthErrorFromUrl(); + setStatus("Opening interactive sign-in for nrfCloud…"); + await msal.loginRedirect( + hints.loginHint ? buildInteractiveRequest(hints) : loginRequest, + ); +} + +function clearAuthErrorFromUrl() { + const url = new URL(window.location.href); + for (const key of ["error", "error_description", "error_uri", "state"]) { + url.searchParams.delete(key); + } + const hashParams = new URLSearchParams(url.hash.replace(/^#/, "")); + let hashChanged = false; + for (const key of ["error", "error_description", "error_uri", "state"]) { + if (hashParams.has(key)) { + hashParams.delete(key); + hashChanged = true; + } + } + if (hashChanged) { + url.hash = hashParams.toString() ? `#${hashParams}` : ""; + } + window.history.replaceState({}, document.title, url.pathname + url.search + url.hash); +} + +/** + * Top-level redirect reuses the CIAM session cookie (works when iframe ssoSilent cannot). + * @see https://learn.microsoft.com/en-us/entra/identity-platform/msal-js-sso#third-party-cookies + */ +async function attemptPromptNoneRedirect({ loginHint, sid }) { + persistSsoHints({ loginHint, sid }); + sessionStorage.setItem(SSO_METHOD_STORAGE_KEY, "prompt=none"); + setStatus("Continuing myNordic session…"); + await msal.loginRedirect({ + ...buildInteractiveRequest({ loginHint, sid }), + prompt: "none", + }); +} + +/** + * Cross-app SSO (strict order): + * 1. ssoSilent + * 2. loginRedirect + prompt=none (if step 1 fails) + * 3. interactive loginRedirect (if step 2 fails — handled in init after redirect) + * @see https://learn.microsoft.com/en-us/entra/identity-platform/msal-js-sso#sso-between-different-apps + */ +async function attemptCrossAppSignIn({ loginHint, sid }) { + persistSsoHints({ loginHint, sid }); + + try { + sessionStorage.setItem(SSO_METHOD_STORAGE_KEY, "ssoSilent"); + const result = await msal.ssoSilent(buildSilentSsoRequest({ loginHint, sid })); + clearSsoQueryParams(); + show(result, "silent SSO (ssoSilent)"); + return true; + } catch (err) { + logMsalError("ssoSilent failed, trying prompt=none", err); + if (DEBUG_SSO_PAUSE && !(await pauseBeforeLoginRedirect(err, "prompt=none"))) { + return false; + } + } + + await attemptPromptNoneRedirect({ loginHint, sid }); + return true; +} + +async function init() { + await msal.initialize(); + + // Complete loginRedirect fallback (PKCE is generated in this app). + let authResult = null; + try { + authResult = await msal.handleRedirectPromise(); + } catch (err) { + logMsalError("handleRedirectPromise failed", err); + if (isCallbackPage() && requiresInteractiveSignIn(err)) { + await startInteractiveSignIn(loadSsoHints()); + return; + } + showError(err); + return; + } + + if (authResult) { + clearSsoQueryParams(); + clearAuthErrorFromUrl(); + const method = sessionStorage.getItem(SSO_METHOD_STORAGE_KEY); + sessionStorage.removeItem(SSO_METHOD_STORAGE_KEY); + const note = + method === "ssoSilent" + ? "silent SSO (ssoSilent)" + : method === "prompt=none" + ? "silent SSO (prompt=none)" + : "sign-in"; + show(authResult, note); + return; + } + + // Step 3: loginRedirect (prompt=none) failed — interactive sign-in only (no second ssoSilent). + if (isCallbackPage() && urlRequiresInteractiveSignIn()) { + const hints = loadSsoHints(); + logMsalError("loginRedirect (prompt=none) failed", { + errorCode: authErrorFromUrl()?.error, + errorMessage: authErrorFromUrl()?.description, + }); + clearAuthErrorFromUrl(); + await startInteractiveSignIn(hints); + return; + } + + const accounts = msal.getAllAccounts(); + if (accounts.length > 0) { + show({ account: accounts[0] }, "restored from MSAL cache"); + return; + } + + // myNordic redirects here with ?login_hint= after CIAM login. + if (isCallbackPage()) { + const hints = loadSsoHints(); + if (!hints.loginHint) { + await startInteractiveSignIn(hints); + return; + } + await attemptCrossAppSignIn(hints); + return; + } + + setStatus("Not authenticated. Open from myNordic or sign in."); +} + +function show(result, note) { + const payload = note ? { ...result, note } : result; + document.getElementById("output").textContent = JSON.stringify(payload, null, 2); + document.getElementById("login").hidden = true; + document.getElementById("logout").hidden = false; +} + +function showError(err) { + setStatus(`Authentication failed: ${err.message ?? err}`); + document.getElementById("login").hidden = false; + document.getElementById("logout").hidden = true; +} + +function setStatus(message) { + document.getElementById("output").textContent = message; +} + +document.getElementById("login").addEventListener("click", () => { + msal.loginRedirect(loginRequest); +}); + +/** + * CIAM shows an empty "Pick an account" screen when logout has no account/logout_hint + * (common after myNordic portal SSO). See README → Logout after portal SSO. + */ +function buildLogoutRequest() { + const account = msal.getAllAccounts()[0]; + const { loginHint } = loadSsoHints(); + const logoutHint = + account?.idTokenClaims?.login_hint ?? loginHint ?? account?.username ?? undefined; + + const request = { + postLogoutRedirectUri: msalConfig.auth.postLogoutRedirectUri, + }; + if (account) request.account = account; + if (logoutHint) request.logoutHint = logoutHint; + return request; +} + +document.getElementById("logout").addEventListener("click", async () => { + const request = buildLogoutRequest(); + if (!request.account && !request.logoutHint) { + console.warn( + "Logout without account or logoutHint — CIAM may show an empty account picker.", + ); + } + await msal.logoutRedirect(request); +}); + +init(); diff --git a/mynordic-oauth-test/msalConfig.js b/mynordic-oauth-test/msalConfig.js new file mode 100644 index 0000000..7ecc551 --- /dev/null +++ b/mynordic-oauth-test/msalConfig.js @@ -0,0 +1,43 @@ +const authority = B2C_AUTHORITY; +const clientId = B2C_CLIENT_ID; + +const authorityHost = new URL(authority).hostname; +const appOrigin = "http://localhost:8080"; + +/** Interactive redirect — must match the origin that calls loginRedirect. */ +const redirectUri = `${appOrigin}/mynordic/from-portal`; + +/** + * MSAL v5 redirect bridge for ssoSilent (must call broadcastResponseToMainFrame). + * @see https://learn.microsoft.com/en-us/entra/msal/javascript/browser/redirect-bridge + * + * Register on the app registration: + * - http://localhost:8080/mynordic/from-portal + * - http://localhost:8080/mynordic/sso.html + */ +const ssoRedirectUri = `${appOrigin}/mynordic/sso.html`; + +/** Register under Authentication → Front-channel logout / Redirect URI. */ +const postLogoutRedirectUri = `${appOrigin}/`; + +export const msalConfig = { + auth: { + clientId, + authority, + redirectUri, + postLogoutRedirectUri, + knownAuthorities: [authorityHost], + }, + cache: { + cacheLocation: "localStorage", + }, +}; + +export const loginRequest = { + scopes: ["openid", "profile"], +}; + +export const ssoSilentRequest = { + scopes: ["openid", "profile"], + redirectUri: ssoRedirectUri, +}; diff --git a/mynordic-oauth-test/mynordic/from-portal/index.html b/mynordic-oauth-test/mynordic/from-portal/index.html new file mode 100644 index 0000000..1e02065 --- /dev/null +++ b/mynordic-oauth-test/mynordic/from-portal/index.html @@ -0,0 +1,15 @@ + + + + + nrfCloud — Sign-in + + +

nrfCloud

+

Completing sign-in from myNordic…

+ + +
Signing in…
+ + + diff --git a/mynordic-oauth-test/mynordic/sso.html b/mynordic-oauth-test/mynordic/sso.html new file mode 100644 index 0000000..a990ce0 --- /dev/null +++ b/mynordic-oauth-test/mynordic/sso.html @@ -0,0 +1,17 @@ + + + + + SSO + + +

Processing authentication…

+ + + diff --git a/mynordic-oauth-test/package-lock.json b/mynordic-oauth-test/package-lock.json new file mode 100644 index 0000000..52e5600 --- /dev/null +++ b/mynordic-oauth-test/package-lock.json @@ -0,0 +1,849 @@ +{ + "name": "mynordic-oauth-test", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "mynordic-oauth-test", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@azure/msal-browser": "^5.10.0", + "vite": "^8.0.11" + } + }, + "node_modules/@azure/msal-browser": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-5.10.0.tgz", + "integrity": "sha512-2Y4TlG5mCfxviHutfW50i8Xd8xhGKTgieL02vMYOE5ZbZrVM+drKSGD//tweRAmlmqqp+F9vrKoHWri/buzxWQ==", + "license": "MIT", + "dependencies": { + "@azure/msal-common": "16.6.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-16.6.0.tgz", + "integrity": "sha512-FemGljX0csPlBMUE5GUan7BfRn1emeMRUhHSARhqzLN6LA9nt+MgzmAQ1xVqdLm+6plVoxsq9mS5eoyKtpPSgA==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", + "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.128.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.128.0.tgz", + "integrity": "sha512-huv1Y/LzBJkBVHt3OlC7u0zHBW9qXf1FdD7sGmc1rXc2P1mTwHssYv7jyGx5KAACSCH+9B3Bhn6Z9luHRvf7pQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.18.tgz", + "integrity": "sha512-lIDyUAfD7U3+BWKzdxMbJcsYHuqXqmGz40aeRqvuAm3y5TkJSYTBW2RDrn65DJFPQqVjUAUqq5uz8urzQ8aBdQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.18.tgz", + "integrity": "sha512-apJq2ktnGp27nSInMR5Vcj8kY6xJzDAvfdIFlpDcAK/w4cDO58qVoi1YQsES/SKiFNge/6e4CUzgjfHduYqWpQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.18.tgz", + "integrity": "sha512-5Ofot8xbs+pxRHJqm9/9N/4sTQOvdrwEsmPE9pdLEEoAbdZtG6F2LMDfO1sp6ZAtXJuJV/21ew2srq3W8NXB5g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.18.tgz", + "integrity": "sha512-7h8eeOTT1eyqJyx64BFCnWZpNm486hGWt2sqeLLgDxA0xI1oGZ9H7gK1S85uNGmBhkdPwa/6reTxfFFKvIsebw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.18.tgz", + "integrity": "sha512-eRcm/HVt9U/JFu5RKAEKwGQYtDCKWLiaH6wOnsSEp6NMBb/3Os8LgHZlNyzMpFVNmiiMFlfb2zEnebfzJrHFmg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.18.tgz", + "integrity": "sha512-SOrT/cT4ukTmgnrEz/Hg3m7LBnuCLW9psDeMKrimRWY4I8DmnO7Lco8W2vtqPmMkbVu8iJ+g4GFLVLLOVjJ9DQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.18.tgz", + "integrity": "sha512-QWjdxN1HJCpBTAcZ5N5F7wju3gVPzRzSpmGzx7na0c/1qpN9CFil+xt+l9lV/1M6/gqHSNXCiqPfwhVJPeLnug==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.18.tgz", + "integrity": "sha512-ugCOyj7a4d9h3q9B+wXmf6g3a68UsjGh6dob5DHevHGMwDUbhsYNbSPxJsENcIttJZ9jv7qGM2UesLw5jqIhdg==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.18.tgz", + "integrity": "sha512-kKWRhbsotpXkGbcd5dllUWg5gEXcDAa8u5YnP9AV5DYNbvJHGzzuwv7dpmhc8NqKMJldl0a+x76IHbspEpEmdA==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.18.tgz", + "integrity": "sha512-uCo8ElcCIAMyYAZyuIZ81oFkhTSIllNvUCHCAlbhlN4ji3uC28h7IIdlXyIvGO7HsuqnV9p3rD/bpH7XhIyhRw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.18.tgz", + "integrity": "sha512-XNOQZtuE6yUIvx4rwGemwh8kpL1xvU41FXy/s9K7T/3JVcqGzo3NfKM2HrbrGgfPYGFW42f07Wk++aOC6B9NWA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.18.tgz", + "integrity": "sha512-tSn/kzrfa7tNOXr7sEacDBN4YsIqTyLqh45IO0nHDwtpKIDNDJr+VFojt+4klSpChxB29JLyduSsE0MKEwa65A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.18.tgz", + "integrity": "sha512-+J9YGmc+czgqlhYmwun3S3O0FIZhsH8ep2456xwjAdIOmuJxM7xz4P4PtrxU+Bz17a/5bqPA8o3HAAoX0teUdg==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.18.tgz", + "integrity": "sha512-zsu47DgU0FQzSwi6sU9dZoEdUv7pc1AptSEz/Z8HBg54sV0Pbs3N0+CrIbTsgiu6EyoaNN9CHboqbLaz9lhOyQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.18.tgz", + "integrity": "sha512-7H+3yqGgmnlDTRRhw/xpYY9J1kf4GC681nVc4GqKhExZTDrVVrV2tsOR9kso0fvgBdcTCcQShx4SLLoHgaLwhg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.18.tgz", + "integrity": "sha512-CUY5Mnhe64xQBGZEEXQ5WyZwsc1JU3vAZLIxtrsBt3LO6UOb+C8GunVKqe9sT8NeWb4lqSaoJtp2xo6GxT1MNw==", + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", + "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/nanoid": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", + "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rolldown": { + "version": "1.0.0-rc.18", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.18.tgz", + "integrity": "sha512-phmyKBpuBdRYDf4hgyynGAYn/rDDe+iZXKVJ7WX5b1zQzpLkP5oJRPGsfJuHdzPMlyyEO/4sPW6yfSx2gf7lVg==", + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.128.0", + "@rolldown/pluginutils": "1.0.0-rc.18" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0-rc.18", + "@rolldown/binding-darwin-arm64": "1.0.0-rc.18", + "@rolldown/binding-darwin-x64": "1.0.0-rc.18", + "@rolldown/binding-freebsd-x64": "1.0.0-rc.18", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.18", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.18", + "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.18", + "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.18", + "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.18", + "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.18", + "@rolldown/binding-linux-x64-musl": "1.0.0-rc.18", + "@rolldown/binding-openharmony-arm64": "1.0.0-rc.18", + "@rolldown/binding-wasm32-wasi": "1.0.0-rc.18", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.18", + "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.18" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "optional": true + }, + "node_modules/vite": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.11.tgz", + "integrity": "sha512-Jz1mxtUBR5xTT65VOdJZUUeoyLtqljmFkiUXhPTLZka3RDc9vpi/xXkyrnsdRcm2lIi3l3GPMnAidTsEGIj3Ow==", + "license": "MIT", + "dependencies": { + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.14", + "rolldown": "1.0.0-rc.18", + "tinyglobby": "^0.2.16" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.1.18", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + } + } +} diff --git a/mynordic-oauth-test/package.json b/mynordic-oauth-test/package.json new file mode 100644 index 0000000..22eec3f --- /dev/null +++ b/mynordic-oauth-test/package.json @@ -0,0 +1,20 @@ +{ + "name": "mynordic-oauth-test", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "type": "module", + "dependencies": { + "@azure/msal-browser": "^5.10.0", + "vite": "^8.0.11" + } +} diff --git a/mynordic-oauth-test/vite.config.js b/mynordic-oauth-test/vite.config.js new file mode 100644 index 0000000..8947c9b --- /dev/null +++ b/mynordic-oauth-test/vite.config.js @@ -0,0 +1,78 @@ +import { readFileSync, existsSync } from "node:fs"; +import { dirname, join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { defineConfig } from "vite"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +/** + * Reads `.envrc` next to this config. Supports `KEY="value"` and `export KEY="value"`. + * Does not replace keys already present in `process.env`. + */ +function loadEnvrc(baseDir = __dirname) { + const envrcPath = join(baseDir, ".envrc"); + if (!existsSync(envrcPath)) return; + const text = readFileSync(envrcPath, "utf8"); + for (const rawLine of text.split("\n")) { + const line = rawLine.trim(); + if (!line || line.startsWith("#")) continue; + const normalized = line.replace(/^export\s+/i, ""); + const eq = normalized.indexOf("="); + if (eq <= 0) continue; + const key = normalized.slice(0, eq).trim(); + if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) continue; + let value = normalized.slice(eq + 1).trim(); + if ( + (value.startsWith('"') && value.endsWith('"')) || + (value.startsWith("'") && value.endsWith("'")) + ) { + value = value.slice(1, -1); + } + if (process.env[key] === undefined) { + process.env[key] = value; + } + } +} + +loadEnvrc(); + +/** Serve /mynordic/from-portal (no trailing slash) — matches MSAL redirect URI exactly. */ +function mynordicRouteMiddleware(req, _res, next) { + const [pathname, search = ""] = (req.url ?? "").split("?"); + if (pathname === "/mynordic/from-portal") { + req.url = `/mynordic/from-portal/index.html${search ? `?${search}` : ""}`; + } + next(); +} + +function mynordicRoutePlugin() { + return { + name: "mynordic-routes", + configureServer(server) { + server.middlewares.use(mynordicRouteMiddleware); + }, + configurePreviewServer(server) { + server.middlewares.use(mynordicRouteMiddleware); + }, + }; +} + +export default defineConfig({ + plugins: [mynordicRoutePlugin()], + define: { + B2C_AUTHORITY: JSON.stringify(process.env.B2C_AUTHORITY ?? ""), + B2C_CLIENT_ID: JSON.stringify(process.env.B2C_CLIENT_ID ?? ""), + }, + build: { + rollupOptions: { + input: { + main: join(__dirname, "index.html"), + fromPortal: join(__dirname, "mynordic/from-portal/index.html"), + sso: join(__dirname, "mynordic/sso.html"), + }, + }, + }, + server: { + port: 8080, + }, +}); diff --git a/package-lock.json b/package-lock.json index 919d5bd..757f34f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,18 @@ { - "name": "mynordic-test-app", - "version": "1.0.0", + "name": "mynordic-test-spa", + "version": "0.0.0-development", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "mynordic-test-app", - "version": "1.0.0", + "name": "mynordic-test-spa", + "version": "0.0.0-development", "dependencies": { - "@azure/msal-browser": "^4.30.0", - "vite": "^8.0.1" + "@azure/msal-browser": "4.30.0", + "vite": "8.0.1" }, "devDependencies": { - "@playwright/test": "^1.58.2" + "@playwright/test": "1.58.2" } }, "node_modules/@azure/msal-browser": { @@ -682,7 +682,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, diff --git a/package.json b/package.json index 915b94b..fd63a00 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,9 @@ "type": "module", "scripts": { "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "dev:oauth-test": "npm run dev --prefix mynordic-oauth-test", "test": "npx playwright test" }, "dependencies": { diff --git a/vite.config.js b/vite.config.js index 9740d0f..cbe7256 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,9 +1,51 @@ +import { existsSync, readFileSync } from "node:fs"; +import { dirname, join } from "node:path"; +import { fileURLToPath } from "node:url"; import { defineConfig } from "vite"; +const __dirname = dirname(fileURLToPath(import.meta.url)); + +/** + * Reads `.envrc` in `baseDir`. Supports `KEY="value"` and `export KEY="value"`. + * Does not replace keys already present in `process.env`. + */ +function loadEnvrc(baseDir) { + const envrcPath = join(baseDir, ".envrc"); + if (!existsSync(envrcPath)) return; + const text = readFileSync(envrcPath, "utf8"); + for (const rawLine of text.split("\n")) { + const line = rawLine.trim(); + if (!line || line.startsWith("#")) continue; + const normalized = line.replace(/^export\s+/i, ""); + const eq = normalized.indexOf("="); + if (eq <= 0) continue; + const key = normalized.slice(0, eq).trim(); + if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) continue; + let value = normalized.slice(eq + 1).trim(); + if ( + (value.startsWith('"') && value.endsWith('"')) || + (value.startsWith("'") && value.endsWith("'")) + ) { + value = value.slice(1, -1); + } + if (process.env[key] === undefined) { + process.env[key] = value; + } + } +} + +loadEnvrc(__dirname); +loadEnvrc(join(__dirname, "mynordic-oauth-test")); + +const b2cAuthority = + process.env.B2C_AUTHORITY ?? process.env.AZURE_AD_CIAM_URL ?? ""; +const b2cClientId = + process.env.B2C_CLIENT_ID ?? process.env.AZURE_NRF_CLOUD_CLIENT_ID ?? ""; + export default defineConfig({ define: { - B2C_AUTHORITY: JSON.stringify(process.env.B2C_AUTHORITY), - B2C_CLIENT_ID: JSON.stringify(process.env.B2C_CLIENT_ID), + B2C_AUTHORITY: JSON.stringify(b2cAuthority), + B2C_CLIENT_ID: JSON.stringify(b2cClientId), }, server: { port: 8080,