@digital-realty/app-shell 13.0.7-IXUAT-11023.541065 → 13.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "",
3
+ "short_name": "",
4
+ "icons": [],
5
+ "theme_color": "#ffffff",
6
+ "background_color": "#ffffff",
7
+ "display": "standalone"
8
+ }
@@ -0,0 +1 @@
1
+ Visitor First Name,Visitor Last Name,Visitor Email Address,Visitor Phone Number
Binary file
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "",
3
+ "short_name": "",
4
+ "icons": [],
5
+ "theme_color": "#ffffff",
6
+ "background_color": "#ffffff",
7
+ "display": "standalone"
8
+ }
Binary file
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "",
3
+ "short_name": "",
4
+ "icons": [],
5
+ "theme_color": "#ffffff",
6
+ "background_color": "#ffffff",
7
+ "display": "standalone"
8
+ }
package/dist/bootstrap.js CHANGED
@@ -1 +1 @@
1
- import{__decorate as I}from"tslib";import{LitElement as P,html as p}from"lit";import{property as b}from"lit/decorators.js";import{ApplicationInsights as ee,DistributedTracingModes as te}from"@microsoft/applicationinsights-web";import{authedUser as R}from"@digital-realty/ix-account-switcher";import{UserManager as se}from"oidc-client-ts";import"@digital-realty/ix-app-logic/views/splash-screen.js";import{makeObservable as ne,action as oe,observable as ae,toJS as re}from"mobx";function i(){var e;const t=(e=window.gpConfig)==null?void 0:e["app-shell"];if(!t)throw new Error("App-shell config not loaded. Ensure config.json is fetched before app bootstrap.");return t}const{PortalInterxion:ie,PortalGlobalPortal:le,PortalServiceFabric:ce,PortalMarketplacePortal:pe}=i(),ue={strict:"strictly_necessary",performance:"performance",targeting:"targeting"},de={accept:"accept_all",reject:"reject_all",custom:"customize",no:"no_sell",bypass:"gpc_bypass"},y="globalportalappshell",d="user-authentication",E="redirect-url",ge="ui-cookie-policy",me="date-format",T="Global Portal",v="Service Fabric",N="Marketplace Portal",O="EMEA Customer Portal",k="x-auth",[g,he,_e,Ee]=["CREATE","UPDATE","READ","APPROVE"],[L,f,fe,Ce,x,Se,ft,we,U,Ct,Ae,Ie,M,D,V,St,Pe,wt,be,G,j,$,Re,H,ye,Te,B,ve]=["Cloud Connect","Cross Connect","Custom Roles","Customer Care","Customer Equipment Connection (CEC)","Customer Support","DCIM-enabled location data","Default System Roles","External User","Facility Access","Internal Roles","Internal User","Internet Exchange","Intra-Customer Connectivity (ICC)","IP Bandwidth","OSP Access","Permanent Badge","PoP/POE Room Access","Remote Hands","Remote Hands Package","Service Exchange Cloud Router","Service Exchange Port","Shipping & Receiving","Space & Power","Trouble Ticket","Visitor Access","User","ESG Reporting"],Ne=[be,Se,ye,Re,Te,Pe,Ce],Oe=[f,L,x,M,D,V,G,j,$,H],ke=[f,L,x,M,D,V,G,j,$,H],Le={LocationChanged:"location-changed",VaadinRouterLocationChanged:"vaadin-router-location-changed",CreateUserClicked:"create-user-clicked"},F={SessionStorage:{HasOutstandingChanges:"hasOutstandingChanges",ShowLastLoginPopup:"showLastLoginPopup"}},[xe,Ue,Me]=["Security","DCIM","Planned Site Maintenance"],De=[xe,Ue,Me],Ve=[{label:T,href:le,selected:!0},{label:N,href:pe},{label:O,href:ie},{label:v,href:ce,target:"_blank"}],z={appInsights:"_appInsights"},Ge=()=>{const{ApplicationInsightsInstrumentationKey:e,ApplicationInsightsCorrelationHeaderExcludedDomains:t}=i(),s=new ee({config:{instrumentationKey:e,enableCorsCorrelation:!0,enableRequestHeaderTracking:!0,enableResponseHeaderTracking:!0,enableAutoRouteTracking:!0,autoTrackPageVisitTime:!0,enableAjaxErrorStatusText:!0,enableAjaxPerfTracking:!0,enableUnhandledPromiseRejectionTracking:!0,isCookieUseDisabled:!0,distributedTracingMode:te.AI_AND_W3C,correlationHeaderExcludedDomains:t.split(",").map(n=>n.trim())}});return s.loadAppInsights(),s.trackPageView(),s.addTelemetryInitializer(n=>{n.tags["ai.cloud.role"]=y}),s},m=(e,t,s)=>(...n)=>{const[o,...a]=n;typeof o=="string"&&o.startsWith("[mobx]")&&t===4?s.trackException({exception:{message:a[0].message,stack:a[0].stack,name:o},severityLevel:4}):s.trackTrace({severityLevel:t,message:o},a),e.apply(console,[o,...a])},je=e=>{console.log=m(console.log,2,e),console.info=m(console.info,2,e),console.warn=m(console.warn,3,e),console.error=m(console.error,4,e),window.console=console},$e=()=>{const{ApplicationInsightsInstrumentationKey:e}=i();if(!e)return;const t=Ge();window[z.appInsights]=t,window.dispatchEvent(new Event("appInsightsInitialized")),je(t)},K=async e=>{const t=new TextEncoder().encode(e),s=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(s)).map(n=>n.toString(16).padStart(2,"0")).join("")};function He(){const{location:e}=window,t=`${e.protocol}//${e.hostname}${e.port?`:${e.port}`:""}`,{LoginAuthority:s,GlobalPortalClientId:n,GlobalPortalUIScopes:o,GlobalPlanBShellPostLogoutRedirectUrl:a}=i();return{authority:s,client_id:n,redirect_uri:`${t}/auth-callback`,response_type:"code",scope:o,post_logout_redirect_uri:a,monitorSession:!1}}const C=new se(He()),Be=e=>{const t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),s=decodeURIComponent(window.atob(t).split("").map(n=>`%${`00${n.charCodeAt(0).toString(16)}`.slice(-2)}`).join(""));return JSON.parse(s)},Fe=()=>{localStorage.removeItem(d)},l=()=>{const e=localStorage.getItem(d);return e?JSON.parse(e):null},J=()=>{var e;const t=localStorage.getItem(k);return t?(e=JSON.parse(t))==null?void 0:e.email:null},ze=async()=>{const e=l();if(!e)return null;const t=(e.profile.given_name||"")+(e.profile.family_name||"")+e.profile.sub;return await K(t)},W=()=>{const e=l();return e?e.id_token:null},Y=(e,t)=>{const s={...t,...e},n=Be(e.access_token);return s.profile.sub=n.sub,s.profile.account_number=n.account_number,s.expires_at=n.exp,s.is_federated=n.is_federated,n.previous_login_date&&(s.profile.previous_login_date=n.previous_login_date),R.setAccount({accountNumber:n.account_number,email:n.email,name:n.name,givenName:n.given_name,familyName:n.family_name,authTime:n.exp,accessToken:e.access_token,idToken:e.id_token}),localStorage.setItem(d,JSON.stringify(s)),s},Ke=e=>{Y(e,null)},q=()=>{const e=l();return e?e.access_token:null},Je=()=>{const e=l();return e&&e.is_federated!==null&&e.is_federated!==void 0?String(e.is_federated).toLowerCase()==="true":!1},We=()=>{const e=l();return e!=null&&e.expires_at?e.expires_at>Date.now()/1e3:!1},Ye=()=>{var e;const t=l();return((e=t==null?void 0:t.profile)==null?void 0:e.previous_login_date)||null},qe=["authenticate","auth-callback","logout"],Xe=e=>e.expires_at&&new Date(e.expires_at*1e3),Qe=e=>e.expires_at&&new Date(e.expires_at*1e3+i().TokenValidForOfflineUsePostExpiryInHours*60*60*1e3),X=()=>{if(!i().IsLoginEnabled)return!1;const e=l();if(!W())return!0;if(!e.expires_at)return!1;const t=new Date;return navigator.onLine?t>Xe(e):t>Qe(e)},Ze=()=>{const e=window.location.pathname.split("/");return qe.includes(e[e.length-1])},et=()=>{const e=window.location.pathname.split("/");return e[e.length-1]==="authenticate"?(i().IsLoginEnabled?C.signinRedirect():window.location.href="/",!0):!1},tt=()=>{let e="/";const t=localStorage.getItem(E);t&&(localStorage.removeItem(E),e=t),sessionStorage.setItem(F.SessionStorage.ShowLastLoginPopup,"true"),window.location.href=e},st=e=>{if(!e.id_token)throw new Error("Missing property:id_token");return e},S=e=>{const t=Ze();(!t||e)&&(t||localStorage.setItem(E,window.location.href),window.location.href="/authenticate")},nt=async e=>{const t=`${e.profile.sub}-${e.profile.customer_id}`,s=await K(t);return{...e,profile:{...e.profile,hashed_identifier:s}}},ot=()=>{const e=window.location.pathname.split("/");return e[e.length-1]==="auth-callback"?(C.signinRedirectCallback().then(st).then(nt).then(Ke).then(tt).catch(S),!0):!1};class at extends P{render(){return p` <ix-splash-screen></ix-splash-screen> `}}window.customElements.define("splash-screen",at);class rt{constructor(){this.permissions=[],this.loading=!1,this.getPermissions=async()=>{var t;const s=(t=R)==null?void 0:t.access_token;if(!s)return[];const{ApiBaseUrl:n}=i(),o=await fetch(`${n}/usermanagement/my-permissions?exclude_parents=false&exclude_siblings=true`,{headers:{Authorization:`Bearer ${s}`}});return o.ok?o.json():[]},ne(this,{permissions:ae,setPermissions:oe})}setPermissions(t){this.permissions=t.reduce((s,n)=>(s[n.permission_name]=n.privilege,s),{})}tryLoadPermissions(){try{this.loading||(this.loading=!0,this.getPermissions().then(t=>{this.setPermissions(t),this.loading=!1}).catch(()=>{this.loading=!1}))}catch(t){this.loading=!1}}clearPermissions(){this.setPermissions([])}hasExternalUserCreate(){return this.hasPermission(U,g)||this.hasPermission(B,g)}hasConnectivityCreate(){return this.hasPermission(f,g)}hasPrivilegeLevel(t,s){const n=[Ee,g,he,_e],o=n.findIndex(r=>r===t),a=n.findIndex(r=>r===s);return o>=a}hasPermission(t,s){let n=!1;const o=re(this.permissions),a=Object.keys(o).find(r=>r===t);return a&&(n=this.hasPrivilegeLevel(s,o[a])),n}}const w=new rt,Q=()=>{const e=new Headers;return e.append("Authorization",`Bearer ${q()}`),e},it=async()=>{const{ApiBaseUrl:e}=i(),t=`${e}/inventory/locations?location_type=Site&permission_type=Cross+Connect&permission_privilege=Read&page_size=1000`,s=[];let n=1;for(;;){const a=await fetch(`${t}&cursor=${n}`,{headers:Q()});if(!a.ok)return Promise.reject();const r=await a.json();if(s.push(...r.items),r.self===r.last)break;n++}const o=new Map;for(const a of s)o.has(a.account_number)?o.get(a.account_number).push(a.site_id):o.set(a.account_number,[a.site_id]);return o},lt=async e=>{const{ApiBaseUrl:t}=i(),s=new URLSearchParams;s.append("process","Cross_connect");const n=[...e.keys()],o=[...new Set([...e.values()].flat())];s.append("account_number",n.join(",")),s.append("site",o.join(","));const a=await fetch(`${t}/site-navigations/site-configurations?${s}`,{headers:Q()});return a.ok?await a.json():Promise.reject()},ct=async()=>{try{const e=await it();return(await lt(e)).some(t=>{var s;return t.portal==="GlobalPortal"&&!!((s=e.get(t.account_number))!=null&&s.includes(t.site))})}catch(e){return console.error("Failed to determine portal-managed inventory:",e),!1}};class A extends P{constructor(){super(),this._currentView="splash",this.appLoaded=!1,this._onPopState=()=>{i().IsLoginEnabled&&X()&&S()};try{$e()}catch(s){console.error("Telemetry initialization failed:",s)}const t=window.location.pathname;if(t==="/session-expired"){this._currentView="session-expired",this._loadView("session-expired");return}if(t==="/logout"){this._currentView="logout",this._loadView("logout");return}if(et()||ot()){this._currentView="splash";return}if(X()){this._currentView="splash",S();return}this._currentView="app",this._loadApp()}async _loadView(t){t==="session-expired"?await import("@digital-realty/ix-app-logic/views/session-expiry.js"):t==="logout"&&await import("./logout-DHu3NPe-.js")}connectedCallback(){super.connectedCallback(),window.addEventListener("popstate",this._onPopState)}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("popstate",this._onPopState)}_getAccountNumber(){var t,s,n;return(n=new URLSearchParams(window.location.search).get("selected_account_number"))!=null?n:(s=(t=l())==null?void 0:t.profile)==null?void 0:s.account_number}_isESGAccessOnly(t,s){const n=t.filter(o=>o.account_number===s);return n.length===1&&n[0].permission_name==="ESG Reporting"}async _applyGomFF(t){var s,n,o;const a=J(),r=structuredClone(window.gpConfig);if(!a||!r)return t;const h=((s=i().SuperusersWhitelist)!=null?s:"").split(",").map(Z=>Z.trim().toLowerCase()).includes(a.toLowerCase()),_=!!((n=t["ui-gom"])!=null&&n.enabled)&&!!((o=r["ui-launchpad"])!=null&&o.IsInventoryManagementEnabled),u=await ct();let c=!1;return(h&&u||_&&u)&&(c=!0),r["app-shell"].IsInventoryManagementEnabled=c,r["ui-launchpad"].IsInventoryManagementEnabled=c,window.gpConfig=Object.freeze(r),t["ui-gom"]?{...t,"ui-gom":{...t["ui-gom"],enabled:c}}:t}_applyMfeOverrides(t,s){const n={};for(const o of Object.keys(t))n[o]={...t[o],enabled:s.includes(o)};return n}async _loadApp(){var t;const{authedUser:s}=await import("@digital-realty/ix-account-switcher");await s.hydrateStore();const[n,o]=await Promise.allSettled([fetch("./registered-apps.json").then(c=>c.json()),w.getPermissions()]);if(n.status==="rejected"){console.error("Failed to load registered apps:",n.reason);return}if(o.status==="rejected"){console.error("Failed to load permissions:",o.reason);return}const{registeredApps:a}=n.value,r=o.value,h=(t=this._getAccountNumber())!=null?t:"",_=this._isESGAccessOnly(r,h)?this._applyMfeOverrides(a,["ui-esg"]):a,u=await this._applyGomFF(_);window.registeredApps=Object.freeze(u),w.setPermissions(r),await import("./app-V8jsWuSg.js"),this.appLoaded=!0}render(){switch(this._currentView){case"session-expired":return p`<ix-session-expiry></ix-session-expiry>`;case"logout":return p`<ixp-logout></ixp-logout>`;case"app":return this.appLoaded?p`<global-portal-app appTitle="DLR" showDrawer></global-portal-app>`:p`<splash-screen></splash-screen>`;default:return p`<splash-screen></splash-screen>`}}}I([b({type:String})],A.prototype,"_currentView",void 0),I([b({type:Boolean})],A.prototype,"appLoaded",void 0),window.customElements.define("gp-bootstrap",A);export{Le as A,k as B,fe as C,me as D,ve as E,ge as F,T as G,Oe as I,N as M,ke as O,De as R,Ne as S,B as U,W as a,ze as b,Fe as c,J as d,q as e,l as f,i as g,Y as h,Ye as i,Je as j,F as k,Ie as l,U as m,we as n,Ae as o,w as p,O as q,Ve as r,v as s,z as t,C as u,y as v,ue as w,We as x,de as y,d as z};
1
+ import{__decorate as S}from"tslib";import{LitElement as A,html as c}from"lit";import{property as w}from"lit/decorators.js";import{ApplicationInsights as Q,DistributedTracingModes as Z}from"@microsoft/applicationinsights-web";import{authedUser as I}from"@digital-realty/ix-account-switcher";import{UserManager as ee}from"oidc-client-ts";import"@digital-realty/ix-app-logic/views/splash-screen.js";import{makeObservable as te,action as se,observable as oe,toJS as re}from"mobx";function a(){var e;const t=(e=window.gpConfig)==null?void 0:e["app-shell"];if(!t)throw new Error("App-shell config not loaded. Ensure config.json is fetched before app bootstrap.");return t}const{PortalInterxion:ne,PortalGlobalPortal:ae,PortalServiceFabric:ie,PortalMarketplacePortal:le}=a(),ce={strict:"strictly_necessary",performance:"performance",targeting:"targeting"},pe={accept:"accept_all",reject:"reject_all",custom:"customize",no:"no_sell"},P="globalportalappshell",p="user-authentication",h="redirect-url",ue="ui-cookie-policy",de="date-format",R="Global Portal",b="Service Fabric",T="Marketplace Portal",N="EMEA Customer Portal",v="x-auth",[u,he,ge,me]=["CREATE","UPDATE","READ","APPROVE"],[y,g,_e,Ee,O,fe,_t,Ce,L,Et,Se,Ae,k,x,U,ft,we,Ct,Ie,M,D,V,Pe,G,Re,be,j,Te]=["Cloud Connect","Cross Connect","Custom Roles","Customer Care","Customer Equipment Connection (CEC)","Customer Support","DCIM-enabled location data","Default System Roles","External User","Facility Access","Internal Roles","Internal User","Internet Exchange","Intra-Customer Connectivity (ICC)","IP Bandwidth","OSP Access","Permanent Badge","PoP/POE Room Access","Remote Hands","Remote Hands Package","Service Exchange Cloud Router","Service Exchange Port","Shipping & Receiving","Space & Power","Trouble Ticket","Visitor Access","User","ESG Reporting"],Ne=[Ie,fe,Re,Pe,be,we,Ee],ve=[g,y,O,k,x,U,M,D,V,G],ye=[g,y,O,k,x,U,M,D,V,G],Oe={LocationChanged:"location-changed",VaadinRouterLocationChanged:"vaadin-router-location-changed",CreateUserClicked:"create-user-clicked"},H={SessionStorage:{HasOutstandingChanges:"hasOutstandingChanges",ShowLastLoginPopup:"showLastLoginPopup"}},[Le,ke,xe]=["Security","DCIM","Planned Site Maintenance"],Ue=[Le,ke,xe],Me=[{label:R,href:ae,selected:!0},{label:T,href:le},{label:N,href:ne},{label:b,href:ie,target:"_blank"}],B={appInsights:"_appInsights"},De=()=>{const{ApplicationInsightsInstrumentationKey:e,ApplicationInsightsCorrelationHeaderExcludedDomains:t}=a(),s=new Q({config:{instrumentationKey:e,enableCorsCorrelation:!0,enableRequestHeaderTracking:!0,enableResponseHeaderTracking:!0,enableAutoRouteTracking:!0,autoTrackPageVisitTime:!0,enableAjaxErrorStatusText:!0,enableAjaxPerfTracking:!0,enableUnhandledPromiseRejectionTracking:!0,isCookieUseDisabled:!0,distributedTracingMode:Z.AI_AND_W3C,correlationHeaderExcludedDomains:t.split(",").map(o=>o.trim())}});return s.loadAppInsights(),s.trackPageView(),s.addTelemetryInitializer(o=>{o.tags["ai.cloud.role"]=P}),s},d=(e,t,s)=>(...o)=>{const[r,...n]=o;typeof r=="string"&&r.startsWith("[mobx]")&&t===4?s.trackException({exception:{message:n[0].message,stack:n[0].stack,name:r},severityLevel:4}):s.trackTrace({severityLevel:t,message:r},n),e.apply(console,[r,...n])},Ve=e=>{console.log=d(console.log,2,e),console.info=d(console.info,2,e),console.warn=d(console.warn,3,e),console.error=d(console.error,4,e),window.console=console},Ge=()=>{const e=De();window[B.appInsights]=e,window.dispatchEvent(new Event("appInsightsInitialized")),Ve(e)},$=async e=>{const t=new TextEncoder().encode(e),s=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(s)).map(o=>o.toString(16).padStart(2,"0")).join("")};function je(){const{location:e}=window,t=`${e.protocol}//${e.hostname}${e.port?`:${e.port}`:""}`,{LoginAuthority:s,GlobalPortalClientId:o,GlobalPortalUIScopes:r,GlobalPlanBShellPostLogoutRedirectUrl:n}=a();return{authority:s,client_id:o,redirect_uri:`${t}/auth-callback`,response_type:"code",scope:r,post_logout_redirect_uri:n,monitorSession:!1}}const m=new ee(je()),He=e=>{const t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),s=decodeURIComponent(window.atob(t).split("").map(o=>`%${`00${o.charCodeAt(0).toString(16)}`.slice(-2)}`).join(""));return JSON.parse(s)},Be=()=>{localStorage.removeItem(p)},i=()=>{const e=localStorage.getItem(p);return e?JSON.parse(e):null},F=()=>{var e;const t=localStorage.getItem(v);return t?(e=JSON.parse(t))==null?void 0:e.email:null},$e=async()=>{const e=i();if(!e)return null;const t=(e.profile.given_name||"")+(e.profile.family_name||"")+e.profile.sub;return await $(t)},K=()=>{const e=i();return e?e.id_token:null},z=(e,t)=>{const s={...t,...e},o=He(e.access_token);return s.profile.sub=o.sub,s.profile.account_number=o.account_number,s.expires_at=o.exp,s.is_federated=o.is_federated,o.previous_login_date&&(s.profile.previous_login_date=o.previous_login_date),I.setAccount({accountNumber:o.account_number,email:o.email,name:o.name,givenName:o.given_name,familyName:o.family_name,authTime:o.exp,accessToken:e.access_token,idToken:e.id_token}),localStorage.setItem(p,JSON.stringify(s)),s},Fe=e=>{z(e,null)},Ke=()=>{const e=i();return e?e.access_token:null},ze=()=>{const e=i();return e&&e.is_federated!==null&&e.is_federated!==void 0?String(e.is_federated).toLowerCase()==="true":!1},Je=()=>{const e=i();return e!=null&&e.expires_at?e.expires_at>Date.now()/1e3:!1},We=()=>{var e;const t=i();return((e=t==null?void 0:t.profile)==null?void 0:e.previous_login_date)||null},Ye=["authenticate","auth-callback","logout"],qe=e=>e.expires_at&&new Date(e.expires_at*1e3),Xe=e=>e.expires_at&&new Date(e.expires_at*1e3+a().TokenValidForOfflineUsePostExpiryInHours*60*60*1e3),J=()=>{if(!a().IsLoginEnabled)return!1;const e=i();if(!K())return!0;if(!e.expires_at)return!1;const t=new Date;return navigator.onLine?t>qe(e):t>Xe(e)},Qe=()=>{const e=window.location.pathname.split("/");return Ye.includes(e[e.length-1])},Ze=()=>{const e=window.location.pathname.split("/");return e[e.length-1]==="authenticate"?(a().IsLoginEnabled?m.signinRedirect():window.location.href="/",!0):!1},et=()=>{let e="/";const t=localStorage.getItem(h);t&&(localStorage.removeItem(h),e=t),sessionStorage.setItem(H.SessionStorage.ShowLastLoginPopup,"true"),window.location.href=e},tt=e=>{if(!e.id_token)throw new Error("Missing property:id_token");return e},_=e=>{const t=Qe();(!t||e)&&(t||localStorage.setItem(h,window.location.href),window.location.href="/authenticate")},st=async e=>{const t=`${e.profile.sub}-${e.profile.customer_id}`,s=await $(t);return{...e,profile:{...e.profile,hashed_identifier:s}}},ot=()=>{const e=window.location.pathname.split("/");return e[e.length-1]==="auth-callback"?(m.signinRedirectCallback().then(tt).then(st).then(Fe).then(et).catch(_),!0):!1};class rt extends A{render(){return c` <ix-splash-screen></ix-splash-screen> `}}window.customElements.define("splash-screen",rt);var nt=Object.defineProperty,at=(e,t,s)=>t in e?nt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,E=(e,t,s)=>at(e,typeof t!="symbol"?t+"":t,s);class it{constructor(){E(this,"permissions",[]),E(this,"loading",!1),E(this,"getPermissions",async()=>{var t;const s=(t=I)==null?void 0:t.access_token;if(!s)return[];const{ApiBaseUrl:o}=a(),r=await fetch(`${o}/usermanagement/my-permissions?exclude_parents=false&exclude_siblings=true`,{headers:{Authorization:`Bearer ${s}`}});return r.ok?r.json():[]}),te(this,{permissions:oe,setPermissions:se})}setPermissions(t){this.permissions=t.reduce((s,o)=>(s[o.permission_name]=o.privilege,s),{})}tryLoadPermissions(){try{this.loading||(this.loading=!0,this.getPermissions().then(t=>{this.setPermissions(t),this.loading=!1}).catch(()=>{this.loading=!1}))}catch(t){this.loading=!1}}clearPermissions(){this.setPermissions([])}hasExternalUserCreate(){return this.hasPermission(L,u)||this.hasPermission(j,u)}hasConnectivityCreate(){return this.hasPermission(g,u)}hasPrivilegeLevel(t,s){const o=[me,u,he,ge],r=o.findIndex(l=>l===t),n=o.findIndex(l=>l===s);return r>=n}hasPermission(t,s){let o=!1;const r=re(this.permissions),n=Object.keys(r).find(l=>l===t);return n&&(o=this.hasPrivilegeLevel(s,r[n])),o}}const f=new it;class C extends A{constructor(){super(),this._currentView="splash",this.appLoaded=!1,this._onPopState=()=>{a().IsLoginEnabled&&J()&&_()};try{Ge()}catch(s){console.error("Telemetry initialization failed:",s)}const t=window.location.pathname;if(t==="/session-expired"){this._currentView="session-expired",this._loadView("session-expired");return}if(t==="/logout"){this._currentView="logout",this._loadView("logout");return}if(Ze()||ot()){this._currentView="splash";return}if(J()){this._currentView="splash",_();return}this._currentView="app",this._loadApp()}async _loadView(t){t==="session-expired"?await import("@digital-realty/ix-app-logic/views/session-expiry.js"):t==="logout"&&await import("./logout-CEMELcLl.js")}connectedCallback(){super.connectedCallback(),window.addEventListener("popstate",this._onPopState)}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("popstate",this._onPopState)}_getAccountNumber(){var t,s,o;return(o=new URLSearchParams(window.location.search).get("selected_account_number"))!=null?o:(s=(t=i())==null?void 0:t.profile)==null?void 0:s.account_number}_isESGAccessOnly(t,s){const o=t.filter(r=>r.account_number===s);return o.length===1&&o[0].permission_name==="ESG Reporting"}_applyGomFfBypass(t){var s;const o=F();if(!o||!((s=a().SuperusersWhitelist)!=null?s:"").split(",").map(n=>n.trim().toLowerCase()).includes(o.toLowerCase()))return t;const r=window.gpConfig;return r&&(window.gpConfig={...r,"app-shell":r["app-shell"]?{...r["app-shell"],IsInventoryManagementEnabled:!0}:r["app-shell"],"ui-launchpad":r["ui-launchpad"]?{...r["ui-launchpad"],IsInventoryManagementEnabled:!0}:r["ui-launchpad"]}),t["ui-gom"]?{...t,"ui-gom":{...t["ui-gom"],enabled:!0}}:t}_applyMfeOverrides(t,s){const o={};for(const r of Object.keys(t))o[r]={...t[r],enabled:s.includes(r)};return o}async _loadApp(){var t;const{authedUser:s}=await import("@digital-realty/ix-account-switcher");await s.hydrateStore();const[o,r]=await Promise.allSettled([fetch("./registered-apps.json").then(X=>X.json()),f.getPermissions()]);if(o.status==="rejected"){console.error("Failed to load registered apps:",o.reason);return}if(r.status==="rejected"){console.error("Failed to load permissions:",r.reason);return}const{registeredApps:n}=o.value,l=r.value,W=(t=this._getAccountNumber())!=null?t:"",Y=this._isESGAccessOnly(l,W)?this._applyMfeOverrides(n,["ui-esg"]):n,q=this._applyGomFfBypass(Y);window.registeredApps=Object.freeze(q),f.setPermissions(l),await import("./app-3ukRjcHW.js"),this.appLoaded=!0}render(){switch(this._currentView){case"session-expired":return c`<ix-session-expiry></ix-session-expiry>`;case"logout":return c`<ixp-logout></ixp-logout>`;case"app":return this.appLoaded?c`<global-portal-app appTitle="DLR" showDrawer></global-portal-app>`:c`<splash-screen></splash-screen>`;default:return c`<splash-screen></splash-screen>`}}}S([w({type:String})],C.prototype,"_currentView",void 0),S([w({type:Boolean})],C.prototype,"appLoaded",void 0),window.customElements.define("gp-bootstrap",C);export{Oe as A,ue as B,_e as C,de as D,Te as E,pe as F,R as G,ve as I,T as M,ye as O,Ue as R,Ne as S,j as U,K as a,$e as b,Be as c,F as d,Ke as e,i as f,a as g,z as h,We as i,ze as j,H as k,Ae as l,L as m,Ce as n,Se as o,f as p,N as q,Me as r,b as s,B as t,m as u,P as v,Je as w,p as x,v as y,ce as z};
@@ -0,0 +1,170 @@
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"><link rel="icon" type="image/png" href="assets/favicon.png"><script async="" src="https://cdn.jsdelivr.net/npm/es-module-shims@1.6.0/dist/es-module-shims.js"></script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@digital-realty/theme@2.2.7/dist/css/tw-reset-output.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@digital-realty/theme@2.2.7/dist/css/baseTheme.css"><script type="importmap">{
2
+ "imports": {
3
+ "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/PersistStore": "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/PersistStore.js",
4
+ "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/PersistStoreMap": "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/PersistStoreMap.js",
5
+ "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/StorageAdapter": "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/StorageAdapter.js",
6
+ "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/clearPersistedStore": "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/clearPersistedStore.js",
7
+ "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/configurePersistable": "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/configurePersistable.js",
8
+ "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/getPersistedStore": "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/getPersistedStore.js",
9
+ "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/hydrateStore": "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/hydrateStore.js",
10
+ "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/isHydrated": "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/isHydrated.js",
11
+ "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/isPersisting": "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/isPersisting.js",
12
+ "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/makePersistable": "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/makePersistable.js",
13
+ "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/pausePersisting": "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/pausePersisting.js",
14
+ "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/serializableProperty": "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/serializableProperty.js",
15
+ "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/startPersisting": "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/startPersisting.js",
16
+ "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/stopPersisting": "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/stopPersisting.js",
17
+ "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/types": "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/types.js",
18
+ "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/utils": "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/utils.js",
19
+ "workbox-window": "https://cdn.jsdelivr.net/npm/workbox-window@7.1.0/+esm",
20
+ "moment-timezone": "https://cdn.jsdelivr.net/npm/moment-timezone@0.5.45/+esm",
21
+ "graphql": "https://cdn.jsdelivr.net/npm/graphql@16.9.0/+esm",
22
+ "graphql-request": "https://cdn.jsdelivr.net/npm/graphql-request@7.1.0/+esm",
23
+ "@graphql-codegen/cli": "https://cdn.jsdelivr.net/npm/@graphql-codegen/cli@5.0.2",
24
+ "@graphql-codegen/client-preset": "https://cdn.jsdelivr.net/npm/@graphql-codegen/client-preset@4.3.3/+esm",
25
+ "@graphql-codegen/introspection": "https://cdn.jsdelivr.net/npm/@graphql-codegen/introspection@4.0.3/+esm",
26
+ "lodash.debounce": "https://cdn.jsdelivr.net/npm/lodash.debounce@4.0.8/+esm",
27
+ "crypto-js": "https://cdn.jsdelivr.net/npm/crypto-js@4.2.0/+esm",
28
+ "jwt-decode": "https://cdn.jsdelivr.net/npm/jwt-decode@4.0.0/+esm",
29
+ "oidc-client-ts": "https://cdn.jsdelivr.net/npm/oidc-client-ts@3.0.1/+esm",
30
+ "cross-fetch": "https://cdn.jsdelivr.net/npm/cross-fetch@4.0.0/+esm",
31
+ "react": "https://cdn.jsdelivr.net/npm/react@18.3.1/+esm",
32
+ "react-dom": "https://cdn.jsdelivr.net/npm/react-dom@18.3.1/+esm",
33
+ "lit-i18n": "https://cdn.jsdelivr.net/npm/lit-i18n@4.1.0/index.js",
34
+ "@open-wc/lit-helpers": "https://cdn.jsdelivr.net/npm/@open-wc/lit-helpers@0.7.0/index.js",
35
+ "i18next": "https://cdn.jsdelivr.net/npm/i18next@23.15.0/dist/esm/i18next.bundled.js",
36
+ "@microsoft/applicationinsights-web": "https://cdn.jsdelivr.net/npm/@microsoft/applicationinsights-web@3.3.2/+esm",
37
+ "entities": "https://cdn.jsdelivr.net/npm/entities@4.5.0/lib/esm/index.js",
38
+ "entities/": "https://cdn.jsdelivr.net/npm/entities@4.5.0/lib/esm/",
39
+ "uc.micro": "https://cdn.jsdelivr.net/npm/uc.micro@2.1.0/index.mjs",
40
+ "punycode.js": "https://cdn.jsdelivr.net/npm/punycode.js@2.3.1/punycode.es6.js",
41
+ "mdurl": "https://cdn.jsdelivr.net/npm/mdurl@2.0.0/index.mjs",
42
+ "linkify-it": "https://cdn.jsdelivr.net/npm/linkify-it@5.0.0/index.mjs",
43
+ "markdown-it": "https://cdn.jsdelivr.net/npm/markdown-it@14.1.0/index.mjs",
44
+ "date-fns": "https://cdn.jsdelivr.net/npm/date-fns@4.1.0/index.js",
45
+ "date-fns/": "https://cdn.jsdelivr.net/npm/date-fns@4.1.0/",
46
+ "uuid": "https://cdn.jsdelivr.net/npm/uuid@9.0.1/dist/esm-browser/index.js",
47
+ "http-request-mock": "https://cdn.jsdelivr.net/npm/http-request-mock@1.8.18/http-request-mock.esm.mjs",
48
+ "toastify-js": "https://cdn.jsdelivr.net/npm/toastify-js@1.12.0/src/toastify-es.js",
49
+ "validator": "https://cdn.jsdelivr.net/npm/validator@13.11.0/+esm",
50
+ "libphonenumber-js": "https://cdn.jsdelivr.net/npm/libphonenumber-js@1.10.59/min/index.js",
51
+ "@floating-ui/dom": "https://cdn.jsdelivr.net/npm/@floating-ui/dom@1.6.10/dist/floating-ui.dom.browser.min.mjs",
52
+ "@floating-ui/core": "https://cdn.jsdelivr.net/npm/@floating-ui/core@1.6.7/dist/floating-ui.core.browser.min.mjs",
53
+ "@lit/react": "https://cdn.jsdelivr.net/npm/@lit/react@1.0.5/index.js",
54
+ "@lit-app/state": "https://cdn.jsdelivr.net/npm/@lit-app/state@1.0.0/src/index.js",
55
+ "@lit-labs/motion": "https://cdn.jsdelivr.net/npm/@lit-labs/motion@1.0.7/index.js",
56
+ "lit": "https://cdn.jsdelivr.net/npm/lit@3.1.2/index.js",
57
+ "lit/": "https://cdn.jsdelivr.net/npm/lit@3.1.2/",
58
+ "lit-html/": "https://cdn.jsdelivr.net/npm/lit-html@3.1.2/",
59
+ "tslib": "https://cdn.jsdelivr.net/npm/tslib@1.9.1/tslib.es6.js",
60
+ "mobx": "https://cdn.jsdelivr.net/npm/mobx@6.12.0/dist/mobx.esm.production.min.js",
61
+ "mobx-persist-store": "https://cdn.jsdelivr.net/npm/mobx-persist-store@1.1.5/lib/esm5/index.js",
62
+ "moment": "https://cdn.jsdelivr.net/npm/moment@2.30.1/+esm",
63
+ "@material/web/": "https://cdn.jsdelivr.net/npm/@material/web@1.2.0/",
64
+ "@material/web/chips/chip-set": "https://cdn.jsdelivr.net/npm/@material/web@1.2.0/chips/chip-set.js",
65
+ "@vaadin/a11y-base": "https://cdn.jsdelivr.net/npm/@vaadin/a11y-base@24.6.2/index.js",
66
+ "@vaadin/a11y-base/": "https://cdn.jsdelivr.net/npm/@vaadin/a11y-base@24.6.2/",
67
+ "@vaadin/button": "https://cdn.jsdelivr.net/npm/@vaadin/button@24.6.2/src/vaadin-button.min.js",
68
+ "@vaadin/button/": "https://cdn.jsdelivr.net/npm/@vaadin/button@24.6.2/",
69
+ "@vaadin/checkbox/": "https://cdn.jsdelivr.net/npm/@vaadin/checkbox@24.6.2/",
70
+ "@vaadin/date-picker": "https://cdn.jsdelivr.net/npm/@vaadin/date-picker@24.6.2/vaadin-date-picker.js",
71
+ "@vaadin/date-picker/": "https://cdn.jsdelivr.net/npm/@vaadin/date-picker@24.6.2/",
72
+ "@vaadin/time-picker": "https://cdn.jsdelivr.net/npm/@vaadin/time-picker@24.6.2/src/vaadin-time-picker-combo-box.min.js",
73
+ "@vaadin/overlay/": "https://cdn.jsdelivr.net/npm/@vaadin/overlay@24.6.2/",
74
+ "@vaadin/component-base/": "https://cdn.jsdelivr.net/npm/@vaadin/component-base@24.6.2/",
75
+ "@vaadin/field-base/": "https://cdn.jsdelivr.net/npm/@vaadin/field-base@24.6.2/",
76
+ "@vaadin/grid": "https://cdn.jsdelivr.net/npm/@vaadin/grid@24.6.2/vaadin-grid.js",
77
+ "@vaadin/grid/": "https://cdn.jsdelivr.net/npm/@vaadin/grid@24.6.2/",
78
+ "@vaadin/icon/": "https://cdn.jsdelivr.net/npm/@vaadin/icon@24.6.2/",
79
+ "@vaadin/input-container/": "https://cdn.jsdelivr.net/npm/@vaadin/input-container@24.6.2/",
80
+ "@vaadin/lit-renderer": "https://cdn.jsdelivr.net/npm/@vaadin/lit-renderer@24.6.2/src/lit-renderer.js",
81
+ "@vaadin/router": "https://cdn.jsdelivr.net/npm/@vaadin/router@1.7.5/dist/vaadin-router.min.js",
82
+ "@vaadin/text-field/": "https://cdn.jsdelivr.net/npm/@vaadin/text-field@24.6.2/",
83
+ "@vaadin/vaadin-development-mode-detector/": "https://cdn.jsdelivr.net/npm/@vaadin/vaadin-development-mode-detector@2.0.6/",
84
+ "@vaadin/vaadin-lumo-styles/": "https://cdn.jsdelivr.net/npm/@vaadin/vaadin-lumo-styles@24.6.2/",
85
+ "@vaadin/vaadin-material-styles/": "https://cdn.jsdelivr.net/npm/@vaadin/vaadin-material-styles@24.6.2/",
86
+ "@vaadin/vaadin-themable-mixin/": "https://cdn.jsdelivr.net/npm/@vaadin/vaadin-themable-mixin@24.6.2/",
87
+ "@vaadin/vaadin-usage-statistics/": "https://cdn.jsdelivr.net/npm/@vaadin/vaadin-usage-statistics@2.1.2/",
88
+ "@adobe/lit-mobx": "https://cdn.jsdelivr.net/npm/@adobe/lit-mobx@2.2.2/lit-mobx.js",
89
+ "@polymer/polymer": "https://cdn.jsdelivr.net/npm/@polymer/polymer@3.5.2/polymer-element.js",
90
+ "@polymer/polymer/": "https://cdn.jsdelivr.net/npm/@polymer/polymer@3.5.2/",
91
+ "@polymer/lib/": "https://cdn.jsdelivr.net/npm/@polymer/polymer@3.5.2/lib/",
92
+ "@polymer/utils/": "https://cdn.jsdelivr.net/npm/@polymer/polymer@3.5.2/lib/utils/",
93
+ "@polymer/mixins/": "https://cdn.jsdelivr.net/npm/@polymer/polymer@3.5.2/lib/mixins/",
94
+ "@digital-realty/ix-tooltip/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-tooltip@1.2.1/dist/src/",
95
+ "@digital-realty/ix-accordion/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-accordion@1.1.11/dist/src/",
96
+ "@digital-realty/theme": "https://cdn.jsdelivr.net/npm/@digital-realty/theme@2.2.7/dist/index.js",
97
+ "@digital-realty/ix-widget": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-widget@2.2.14/dist/index.js",
98
+ "@digital-realty/ix-widget/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-widget@2.2.14/dist/",
99
+ "@digital-realty/ix-account-switcher": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-account-switcher@1.2.10/dist/index.js",
100
+ "@digital-realty/ix-account-switcher/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-account-switcher@1.2.10/",
101
+ "@digital-realty/ix-account-switcher/ix-account-switcher.js": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-account-switcher@1.2.10/dist/ix-account-switcher.js",
102
+ "@digital-realty/ix-filter-select/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-filter-select@1.2.4/dist/",
103
+ "@digital-realty/ix-button": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-button@3.4.3/dist/index.js",
104
+ "@digital-realty/ix-button/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-button@3.4.3/dist/",
105
+ "@digital-realty/ix-button/ix-button.js": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-button@3.4.3/dist/ix-button.js",
106
+ "@digital-realty/ix-card": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-card@1.1.1/dist/src/index.js",
107
+ "@digital-realty/ix-card/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-card@1.1.1/dist/src/",
108
+ "@digital-realty/ix-checkbox/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-checkbox@1.3.3/dist/",
109
+ "@digital-realty/ix-chip/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-chip@1.2.3/dist/",
110
+ "@digital-realty/ix-date/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-date@1.2.2/dist/",
111
+ "@digital-realty/ix-date-next/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-date-next@1.1.6/dist/",
112
+ "@digital-realty/ix-dialog/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-dialog@1.2.6/dist/",
113
+ "@digital-realty/ix-divider/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-divider@1.2.1/dist/",
114
+ "@digital-realty/ix-drawer/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-drawer@1.2.7/dist/",
115
+ "@digital-realty/ix-dropdown-tree": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-dropdown-tree@1.1.2/dist/index.js",
116
+ "@digital-realty/ix-dropdown-tree/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-dropdown-tree@1.1.2/dist/",
117
+ "@digital-realty/ix-email-list/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-email-list@1.3.3/dist/",
118
+ "@digital-realty/ix-fab/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-fab@1.2.2/dist/",
119
+ "@digital-realty/ix-field/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-field@1.2.2/dist/",
120
+ "@digital-realty/ix-file-uploader/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-file-uploader@1.2.7/dist/",
121
+ "@digital-realty/ix-generic-tree": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-generic-tree@2.1.5/dist/index.js",
122
+ "@digital-realty/ix-generic-tree/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-generic-tree@2.1.5/dist/",
123
+ "@digital-realty/ix-grid/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-grid@1.3.11/dist/",
124
+ "@digital-realty/grid": "https://cdn.jsdelivr.net/npm/@digital-realty/grid@1.1.2/vaadin-grid.js",
125
+ "@digital-realty/grid/": "https://cdn.jsdelivr.net/npm/@digital-realty/grid@1.1.2/",
126
+ "@digital-realty/ix-icon": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-icon@1.2.2/dist/index.js",
127
+ "@digital-realty/ix-icon/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-icon@1.2.2/dist/",
128
+ "@digital-realty/ix-icon-button/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-icon-button@1.2.2/dist/",
129
+ "@digital-realty/ix-label-tag/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-label-tag@2.3.2/dist/",
130
+ "@digital-realty/ix-list/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-list@1.2.2/dist/",
131
+ "@digital-realty/ix-menu/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-menu@1.2.2/dist/",
132
+ "@digital-realty/ix-message/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-message@2.3.2/dist/",
133
+ "@digital-realty/ix-multi-select/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-multi-select@1.2.3/dist/",
134
+ "@digital-realty/ix-phone-input/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-phone-input@2.3.2/dist/",
135
+ "@digital-realty/ix-phone-input/ix-phone-input.js": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-phone-input@2.3.2/esmDist/ix-phone-input.js",
136
+ "@digital-realty/ix-phone-number/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-phone-number@1.1.1/dist/src/",
137
+ "@digital-realty/ix-phone-number/ix-phone-number.js": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-phone-number@1.1.1/dist/src/ix-phone-number.js",
138
+ "@digital-realty/ix-pricing/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-pricing@2.3.2/dist/",
139
+ "@digital-realty/ix-progress/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-progress@1.3.2/dist/",
140
+ "@digital-realty/ix-radio/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-radio@1.2.1/dist/",
141
+ "@digital-realty/ix-search-bar/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-search-bar@2.3.3/dist/",
142
+ "@digital-realty/ix-select/ix-select-option.js": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-select@1.2.3/dist/selectoption/ix-select-option.js",
143
+ "@digital-realty/ix-select/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-select@1.2.3/dist/",
144
+ "@digital-realty/ix-slider/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-slider@1.2.2/dist/",
145
+ "@digital-realty/ix-switch/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-switch@2.3.2/dist/",
146
+ "@digital-realty/ix-switch-bar/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-switch-bar@2.3.2/dist/",
147
+ "@digital-realty/ix-switch-input/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-switch-input@2.3.3/dist/",
148
+ "@digital-realty/ix-tabs/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-tabs@1.2.2/dist/",
149
+ "@digital-realty/ix-textbox/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-textbox@2.3.3/dist/",
150
+ "@digital-realty/ix-tile-picker/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-tile-picker@2.3.3/dist/",
151
+ "@digital-realty/ix-time/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-time@1.2.2/dist/",
152
+ "@digital-realty/ix-timer/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-timer@3.4.2/dist/",
153
+ "@digital-realty/ix-toast/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-toast@1.2.2/dist/src/",
154
+ "@digital-realty/ix-tree/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-tree@3.3.4/dist/",
155
+ "@digital-realty/ix-wizard/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-wizard@1.2.4/dist/",
156
+ "@digital-realty/ix-intraportal-nav/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-intraportal-nav@1.2.1/dist/",
157
+ "@digital-realty/ix-app-logic/": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-app-logic@1.2.19/dist/src/",
158
+ "@digital-realty/ix-grid/IxGridNav": "https://cdn.jsdelivr.net/npm/@digital-realty/ix-grid@1.3.11/dist/IxGridNav.js"
159
+ },
160
+ "scopes": {
161
+ "https://cdn.jsdelivr.net/npm/": {
162
+ "@lit/reactive-element": "https://cdn.jsdelivr.net/npm/@lit/reactive-element@2.0.4/reactive-element.js",
163
+ "@lit/reactive-element/": "https://cdn.jsdelivr.net/npm/@lit/reactive-element@2.0.4/",
164
+ "lit-element/lit-element.js": "https://cdn.jsdelivr.net/npm/lit-element@4.0.4/lit-element.js",
165
+ "lit-html": "https://cdn.jsdelivr.net/npm/lit-html@3.1.2/lit-html.js",
166
+ "lit-html/": "https://cdn.jsdelivr.net/npm/lit-html@3.1.2/",
167
+ "@material/web/chips/chip-set": "https://cdn.jsdelivr.net/npm/@material/web@1.2.0/chips/chip-set.js"
168
+ }
169
+ }
170
+ }</script><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="DLR Portal"><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&amp;display=block"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Red+Hat+Display:wght@400;700&amp;display=swap"><link href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;1,500&amp;display=swap" rel="stylesheet"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/toastify-js@^1.12.0/src/toastify.min.css"><meta name="msapplication-TileColor" content="#0099cc"><meta name="msapplication-config" content="./assets/images/app-icons/browserconfig.xml"><meta name="theme-color" content="#ffffff"><meta name="format-detection" content="telephone=no"><base href="/"><script>window.process={env:{NODE_ENV:"production"}}</script><style>body,html{background-color:#f5f7ff}:host :root [data-theme=ix-theme],:host [data-theme=ix-theme],:root [data-theme=ix-theme]{--md-sys-color-on-surface-variant:#B8BFC8}vaadin-date-picker-overlay,vaadin-time-picker-overlay{z-index:99999}</style><title>Digital Realty | Global Portal</title></head><body data-theme="ix-theme"><gp-bootstrap></gp-bootstrap><noscript>Please enable JavaScript to view this website.</noscript><script crossorigin="anonymous" src="https://cdn.jsdelivr.net/npm/@webcomponents/webcomponentsjs@2.8.0/webcomponents-loader.js"></script><script type="module" src="./bootstrap.js"></script></body></html>
@@ -0,0 +1 @@
1
+ import{LitElement as g,html as m}from"lit";import{appState as i}from"@digital-realty/ix-app-logic/state/app-state.js";import{g as u,a as h,u as n,c as d}from"./bootstrap.js";import"tslib";import"lit/decorators.js";import"@microsoft/applicationinsights-web";import"@digital-realty/ix-account-switcher";import"oidc-client-ts";import"@digital-realty/ix-app-logic/views/splash-screen.js";import"mobx";var p=Object.defineProperty,S=(o,e,t)=>e in o?p(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,a=(o,e,t)=>S(o,typeof e!="symbol"?e+"":e,t);class c extends g{constructor(){super(...arguments),a(this,"isIdle",!1),a(this,"clearLocalStorageExcept",e=>{const t=new Set((typeof e=="string"?e.split(","):[]).map(r=>r.trim().toLowerCase())),s=[];Object.keys(window.localStorage).forEach(r=>{Array.from(t).some(l=>r.toLowerCase().includes(l))||s.push(r)}),s.forEach(r=>window.localStorage.removeItem(r))}),a(this,"clearGridSessionStorage",()=>{Object.keys(sessionStorage).filter(e=>e.startsWith("grid-")).forEach(e=>sessionStorage.removeItem(e))}),a(this,"logout",async()=>{const{PreserveLocalStorageItems:e,PreventLogoutOnTimeout:t}=u();i.lastActive=-1,await i.hydrateStore(),await i.getStoredData();const s=h();this.clearState(),this.clearLocalStorageExcept(e),this.clearGridSessionStorage(),sessionStorage.removeItem("accountSelection:lastAll"),sessionStorage.removeItem("accountSelection:lastFiltered"),this.unregisterServiceWorkers().then(async()=>{if(this.isIdle)try{t||await n.signoutSilent(s),window.location.href="/session-expired"}catch(r){window.location.href="/session-expired"}else{if(!s){await n.clearStaleState(),window.location.href="/authenticate";return}n.signoutRedirect(s)}})}),a(this,"unregisterServiceWorkers",async()=>{const e=await navigator.serviceWorker.getRegistrations();for(const t of e)t.unregister()}),a(this,"clearState",()=>{d()})}firstUpdated(){const{searchParams:e}=new URL(document.location.toString());this.isIdle=e.has("isIdle"),this.logout()}render(){return m` <splash-screen></splash-screen> `}}window.customElements.define("ixp-logout",c);export{c as Logout};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digital-realty/app-shell",
3
- "version": "13.0.7-IXUAT-11023.541065",
3
+ "version": "13.0.7",
4
4
  "license": "UNLICENSED",
5
5
  "contributors": [
6
6
  "DLR"
@@ -18,52 +18,101 @@
18
18
  "files": [
19
19
  "dist"
20
20
  ],
21
+ "workspaces": [
22
+ "../lib-components/packages/*"
23
+ ],
24
+ "scripts": {
25
+ "build:local": "npm run build --env=local",
26
+ "build:workspace": "npm run build",
27
+ "prepack": "npm run build",
28
+ "generate-import-map-localhost": "ix-import-map write-import-map --cdn=http://localhost:8081 && node build_scripts/inject-mfe-importmap.cjs",
29
+ "generate-import-map": "ix-import-map write-import-map --latest-packages=true && node build_scripts/inject-mfe-importmap.cjs",
30
+ "inject-mfe-importmap": "node build_scripts/inject-mfe-importmap.cjs",
31
+ "build": "run-s build:step:*",
32
+ "build:step:generate": "npm run generate-api:notifications && npm run compile-less-to-styles && npm run tailwindcss:build && npm run twlit:build",
33
+ "build:step:package": "rimraf dist && tsc && rollup -c rollup.config.mjs",
34
+ "serve:dist": "web-dev-server --config web-dist-server.config.mjs",
35
+ "ts:watch": "concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"npm run tailwindcss:watch\" \"npm run twlit:watch\"",
36
+ "start": "npm run start:pre-serve && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wds\" \"npm run tailwindcss:watch\" \"npm run twlit:watch\"",
37
+ "start:pre-serve": "rimraf lib && rollup -c preserve.rollup.config.mjs && tsc",
38
+ "start:serve": "web-dev-server",
39
+ "compile-less-to-styles": "rimraf --glob \"src/styles/*.js\" && node build_scripts/compile-less-to-styles.cjs",
40
+ "serve": "npm run build && prpl-server --root dist",
41
+ "test": "npm run test:prebuild && web-test-runner --coverage",
42
+ "test:prebuild": "rimraf lib && tsc && rollup -c preserve.rollup.config.mjs && npm run compile-less-to-styles && npm run tailwindcss:build && npm run twlit:build",
43
+ "test:watch": "tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wtr --watch\"",
44
+ "lint": "npm run lint:eslint && npm run lint:prettier",
45
+ "lint:eslint": "eslint --ext .js,.html .",
46
+ "lint:prettier": "prettier \"**/*.js\" --list-different || (echo '↑↑ these files are not prettier formatted ↑↑' && exit 1)",
47
+ "format": "npm run format:eslint && npm run format:prettier",
48
+ "format:eslint": "eslint --ext .js,.html . --fix",
49
+ "format:prettier": "prettier \"**/*.js\" --write",
50
+ "pipelines-npm-audit": "node build_scripts/pipelines-npm-audit.cjs",
51
+ "tailwindcss:build": "tailwind -i ./src/tailwindlib.css -o ./src/styles/tw.css",
52
+ "tailwindcss:watch": "tailwind -i ./src/tailwindlib.css -o ./src/styles/tw.css --watch",
53
+ "twlit:build": "ix-twlit --input ./src/styles/tw.css --output ./src/styles/tw.js",
54
+ "twlit:watch": "ix-twlit --input ./src/styles/tw.css --output ./src/styles/tw.js --watch",
55
+ "generate-api:notifications": "openapi-generator-cli generate -i src/components/notifications/api/notifications-api.yaml -g typescript-fetch -o src/components/notifications/api/notifications-api --additional-properties=typescriptThreePlus=true,importFileExtension=.js"
56
+ },
21
57
  "resolutions": {
22
58
  "ini": "1.3.6",
23
59
  "minimist": "1.2.5"
24
60
  },
25
61
  "dependencies": {
26
62
  "@adobe/lit-mobx": "^2.2.2",
27
- "@digital-realty/ix-account-switcher": "^1.3.9",
28
- "@digital-realty/ix-app-logic": "^2.1.6",
29
- "@digital-realty/ix-button": "^3.5.6",
30
- "@digital-realty/ix-date": "^1.3.4",
31
- "@digital-realty/ix-divider": "^1.3.4",
32
- "@digital-realty/ix-drawer": "^1.3.6",
33
- "@digital-realty/ix-icon": "^1.3.4",
34
- "@digital-realty/ix-icon-button": "1.3.4",
35
- "@digital-realty/ix-intraportal-nav": "^1.3.4",
36
- "@digital-realty/ix-menu": "1.3.4",
37
- "@digital-realty/ix-switch": "^2.4.4",
38
- "@digital-realty/ix-toast": "1.3.5",
39
- "@digital-realty/ix-tooltip": "^1.3.4",
40
- "@digital-realty/theme": "^3.1.4",
63
+ "@digital-realty/ix-account-switcher": "^1.1.6",
64
+ "@digital-realty/ix-app-logic": "^2.0.1",
65
+ "@digital-realty/ix-divider": "^1.2.3",
66
+ "@digital-realty/ix-icon": "^1.1.3",
67
+ "@digital-realty/ix-icon-button": "1.2.2",
68
+ "@digital-realty/ix-intraportal-nav": "^1.0.1",
69
+ "@digital-realty/ix-menu": "1.0.4",
70
+ "@digital-realty/ix-toast": "1.0.27",
71
+ "@digital-realty/ix-tooltip": "^1.1.3",
72
+ "@digital-realty/theme": "^3.0.1",
41
73
  "@floating-ui/dom": "^1.6.7",
42
74
  "@koa/cors": "^3.4.3",
43
75
  "@lit-labs/motion": "^1.0.7",
76
+ "@lit/react": "^1.0.5",
44
77
  "@lit/reactive-element": "^2.0.4",
45
78
  "@material/web": "2.4.0",
46
79
  "@microsoft/applicationinsights-web": "^2.5.10",
80
+ "@redux-offline/redux-offline": "^2.6.0",
47
81
  "@vaadin/grid": "^24.4.7",
48
82
  "@vaadin/router": "^1.7.2",
83
+ "@web/dev-server-import-maps": "^0.0.7",
49
84
  "@web/dev-server-rollup": "^0.3.19",
85
+ "@webcomponents/custom-elements": "^1.4.2",
86
+ "@webcomponents/webcomponentsjs": "^2.4.3",
87
+ "cross-fetch": "^4.0.0",
50
88
  "date-fns": "4.1.0",
89
+ "http-request-mock": "^1.8.28",
90
+ "http-status-codes": "^1.4.0",
51
91
  "lit": "^3.1.0",
52
92
  "lit-element": "^4.1.1",
53
93
  "lit-html": "^2.8.0",
94
+ "lodash.debounce": "^4.0.8",
54
95
  "markdown-it": "^14.1.0",
55
96
  "mobx": "^6.12.3",
56
97
  "mobx-persist-store": "^1.1.5",
98
+ "moment": "^2.29.1",
99
+ "moment-timezone": "^0.5.45",
100
+ "oidc-client": "^1.11.5",
57
101
  "oidc-client-ts": "^3.0.1",
58
102
  "path": "^0.12.7",
103
+ "react": "^18.2.0",
104
+ "react-dom": "^18.2.0",
105
+ "redux-persist": "^6.0.0",
106
+ "toastify-js": "^1.12.0",
59
107
  "tslib": "^2.8.1",
108
+ "uuid": "^10.0.0",
109
+ "validator": "^13.12.0",
60
110
  "workbox-window": "^7.3.0"
61
111
  },
62
112
  "devDependencies": {
63
113
  "@babel/eslint-parser": "^7.25.8",
64
114
  "@custom-elements-manifest/analyzer": "^0.10.3",
65
- "@digital-realty/ix-twlit": "1.2.4",
66
- "@esm-bundle/chai": "^4.3.4-fix.0",
115
+ "@digital-realty/ix-twlit": "1.0.1",
67
116
  "@open-wc/eslint-config": "^12.0.3",
68
117
  "@open-wc/testing": "^4.0.0",
69
118
  "@openapitools/openapi-generator-cli": "^2.13.4",
@@ -85,12 +134,10 @@
85
134
  "@web/storybook-builder": "^0.1.16",
86
135
  "@web/storybook-framework-web-components": "^0.1.2",
87
136
  "@web/test-runner": "^0.18.2",
88
- "@web/test-runner-commands": "^0.9.0",
89
137
  "@web/test-runner-junit-reporter": "^0.8.0",
90
138
  "@web/test-runner-playwright": "^0.11.1",
91
139
  "babel-plugin-template-html-minifier": "^4.1.0",
92
140
  "change-case": "^3.1.0",
93
- "concurrently": "^10.0.3",
94
141
  "deepmerge": "^4.3.1",
95
142
  "eslint": "^8.57.0",
96
143
  "eslint-config-prettier": "^9.1.0",
@@ -100,7 +147,6 @@
100
147
  "lint-staged": "^15.2.7",
101
148
  "minimist": "^1.2.8",
102
149
  "npm-run-all": "^4.1.5",
103
- "playwright": "^1.60.0",
104
150
  "prettier": "^3.3.2",
105
151
  "rimraf": "^5.0.9",
106
152
  "rollup": "^4.18.1",
@@ -109,37 +155,10 @@
109
155
  "rollup-plugin-modify": "^3.0.0",
110
156
  "rollup-plugin-workbox": "^8.1.0",
111
157
  "sinon": "^15.0.1",
112
- "tailwindcss": "^3.3.5",
113
- "typescript": "^5.5.4"
158
+ "tailwindcss": "^3.3.5"
114
159
  },
115
160
  "optionalDependencies": {
116
161
  "@rollup/rollup-darwin-x64": "^4.24.0",
117
162
  "@rollup/rollup-win32-x64-msvc": "^4.24.0"
118
- },
119
- "scripts": {
120
- "build:local": "pnpm run build --env=local",
121
- "build:workspace": "pnpm run build",
122
- "build": "run-s build:step:*",
123
- "build:step:generate": "pnpm run generate-api:notifications && pnpm run compile-less-to-styles && pnpm run tailwindcss:build && pnpm run twlit:build",
124
- "build:step:package": "rimraf dist && tsc && rollup -c rollup.config.mjs",
125
- "serve:dist": "web-dev-server --config web-dist-server.config.mjs",
126
- "ts:watch": "concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"pnpm run tailwindcss:watch\" \"pnpm run twlit:watch\"",
127
- "compile-less-to-styles": "rimraf --glob \"src/styles/*.js\" && node build_scripts/compile-less-to-styles.cjs",
128
- "serve": "pnpm run build && prpl-server --root dist",
129
- "test": "pnpm run test:prebuild && web-test-runner --coverage",
130
- "test:prebuild": "rimraf lib && tsc && rollup -c preserve.rollup.config.mjs && pnpm run compile-less-to-styles && pnpm run tailwindcss:build && pnpm run twlit:build",
131
- "test:watch": "tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wtr --watch\"",
132
- "lint": "pnpm run lint:eslint && pnpm run lint:prettier",
133
- "lint:eslint": "eslint --ext .js,.html .",
134
- "lint:prettier": "prettier \"**/*.js\" --list-different || (echo '↑↑ these files are not prettier formatted ↑↑' && exit 1)",
135
- "format": "pnpm run format:eslint && pnpm run format:prettier",
136
- "format:eslint": "eslint --ext .js,.html . --fix",
137
- "format:prettier": "prettier \"**/*.js\" --write",
138
- "pipelines-npm-audit": "node build_scripts/pipelines-npm-audit.cjs",
139
- "tailwindcss:build": "tailwind -i ./src/tailwindlib.css -o ./src/styles/tw.css",
140
- "tailwindcss:watch": "tailwind -i ./src/tailwindlib.css -o ./src/styles/tw.css --watch",
141
- "twlit:build": "ix-twlit --input ./src/styles/tw.css --output ./src/styles/tw.js",
142
- "twlit:watch": "ix-twlit --input ./src/styles/tw.css --output ./src/styles/tw.js --watch",
143
- "generate-api:notifications": "openapi-generator-cli generate -i src/components/notifications/api/notifications-api.yaml -g typescript-fetch -o src/components/notifications/api/notifications-api --additional-properties=typescriptThreePlus=true,importFileExtension=.js"
144
163
  }
145
- }
164
+ }