@sap/generator-fiori
Version:
Create an SAPUI5 application using SAP Fiori elements or a freestyle approach
1 lines • 61.9 kB
JavaScript
"use strict";exports.id=544,exports.ids=[544],exports.modules={97141:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FE_APP_CONFIG_SUPPORTED_VERSIONS=t.FE_APP_CONFIG_CURRENT_VERSION=t.applicationTitle=void 0;const i=n(2340);t.applicationTitle=(0,i.t)("APPLICATION_TITLE"),t.FE_APP_CONFIG_CURRENT_VERSION="0.2",t.FE_APP_CONFIG_SUPPORTED_VERSIONS=["0.1",t.FE_APP_CONFIG_CURRENT_VERSION]},19445:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.featuresEnabled=void 0;const i=n(98434),r=n(33212);t.featuresEnabled={internal:()=>(0,i.isInternalFeaturesSettingEnabled)(),experimentalFeatures:()=>(0,i.isFeatureEnabled)(r.EXPERIMENTAL_FEATURES)}},13088:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(97141),t),r(n(60058),t),r(n(62026),t),r(n(19445),t)},60058:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0})},62026:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getUI5Uri=function getUI5Uri(e=""){const t=process.env.UI5_CDN_URL?.replace(/\/*$/,"");return e.includes("snapshot")?i.UI5_VERSION_PROPS.SNAPSHOT_URL:t||i.UI5_VERSION_PROPS.OFFICIAL_URL},t.capitalize=function capitalize(e){return e.replace(/\w\S*/g,(e=>e.replace(/^\w/,(e=>e.toUpperCase()))))};const i=n(33212)},59832:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.saveApiHubApiKey=async function saveApiHubApiKey(e,t=new r.ToolsLogger){let n;if(!(0,s.isAppStudio)()){const r=await(0,i.getService)({logger:t,entityName:"api-hub"}),s=new i.ApiHubSettings({apiKey:e});n=await r.write(s)}return Boolean(n)};const i=n(2218),r=n(76277),s=n(75199)},79276:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.AtoCatalog=void 0;const i=n(46099),r=n(77095),s=n(18640);t.AtoCatalog=class AtoCatalog{static async getATOData({system:e,credentials:t,log:n=console,connection:i,systemInstance:a}){let o,c;if(a){o={...a.config,service:s.ATO_CATALOG_URL_PATH};const e=a.serialize();c={username:e.username,password:e.password,serviceKeysContents:e.serviceKeys}}else o={...e,service:s.ATO_CATALOG_URL_PATH},t&&(c=t);const l=await new r.ODataClient({system:o,credentials:c,log:n,connection:i,autoAddTrailingSlash:!1}).get();return this.getAtoData(l)}static getAtoData(e){const t=(0,i.xmlToJson)(e)?.settings;if(!t)throw new Error("ATO settings unavailable");return{tenantType:t.tenantType,operationsType:t.operationsType,isExtensibilityDevSystem:!0===t.isExtensibilityDevelopmentSystem,devPackage:t.developmentPackage,devPrefix:t.developmentPrefix,isConfigured:t.isConfigured}}}},18640:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CATALOG_REQ_TYPE=t.Catalog=t.ODataVersion=t.ODATA_SKIP_QUERY=t.ODATA_COUNT_QUERY=t.ATO_CATALOG_URL_PATH=t.V2_ODATA_CATALOG_FILTER_FOR_S4_HANA_SERVICES=t.V4_RECOMMENDED_SERVICES_PATH_PROD=t.V4_SERVICES_PATH_PROD=t.V4_SERVICES_PATH_DEV=t.V2_RECOMMENDED_SERVICES_PATH=t.V2_SERVICES_PATH=t.V4_CATALOG_URL_PATH_PROD=t.V4_CATALOG_URL_PATH_DEV=t.V2_CATALOG_URL_PATH=void 0;const i=n(77095);var r,s;t.V2_CATALOG_URL_PATH="/sap/opu/odata/IWFND/CATALOGSERVICE;v=2",t.V4_CATALOG_URL_PATH_DEV="/sap/opu/odata4/iwfnd/config/default/iwfnd/catalog/0001",t.V4_CATALOG_URL_PATH_PROD="/sap/opu/odata4/iwfnd/config/default/iwfnd/catalog/0002",t.V2_SERVICES_PATH="/ServiceCollection",t.V2_RECOMMENDED_SERVICES_PATH="/RecommendedServiceCollection",t.V4_SERVICES_PATH_DEV="/ServiceGroups('%2FIWBEP%2FALL')?$expand=Systems($expand=Services)",t.V4_SERVICES_PATH_PROD="/ServiceGroups?$expand=DefaultSystem($expand=Services)",t.V4_RECOMMENDED_SERVICES_PATH_PROD="/ServiceGroups?$expand=DefaultSystem($expand=RecommendedServices)",t.V2_ODATA_CATALOG_FILTER_FOR_S4_HANA_SERVICES="?%24filter=((IsSapService%20eq%20true)and(ReleaseStatus%20eq%20%27RELEASED%27))or((IsSapService%20eq%20false))",t.ATO_CATALOG_URL_PATH="/sap/bc/adt/ato/settings",t.ODATA_COUNT_QUERY="$count=true",t.ODATA_SKIP_QUERY="$skiptoken",function(e){e.v2="2",e.v4="4"}(r||(t.ODataVersion=r={}));class Catalog extends i.ODataClient{}t.Catalog=Catalog,function(e){e[e.RECOMMENDED=0]="RECOMMENDED",e[e.LEGACY=1]="LEGACY"}(s||(t.CATALOG_REQ_TYPE=s={}))},34025:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.getCatalog=function getCatalog(e){return e.odataVersion===s.ODataVersion.v4?new s.V4Catalog(e):new s.V2Catalog(e)};const s=n(8617);r(n(18640),t),r(n(79276),t),r(n(74),t),r(n(59652),t),r(n(98276),t)},98276:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isS4HanaCloudSystem=function isS4HanaCloudSystem(e){return"CUSTOMER"===e.tenantType&&"C"===e.operationsType&&!0===e.isExtensibilityDevSystem&&""!==e.devPrefix&&""!==e.devPackage}},74:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.V2Catalog=void 0;const i=n(62284),r=n(79276),s=n(18640),a=n(98276);class V2Catalog extends s.Catalog{constructor({system:e,credentials:t,log:n=console,connection:r,postConnectionCallback:a,ignoreCertError:o}){if(t?.serviceKeys||t?.serviceKeysContents){const n=(0,i.getServiceInfo)(t);t.serviceInfo=n,e.url=n.url,n.catalogs?.abap?.path&&(e.service=n.catalogs.abap.path)}else e.service||(e.service=s.V2_CATALOG_URL_PATH);super({system:e,credentials:t,log:n,connection:r,postConnectionCallback:a,ignoreCertError:o})}async listServices(e=!1){let t;if(e)t=await this.get(s.V2_RECOMMENDED_SERVICES_PATH);else{let e=!1;try{await this.getConnection(),e=(0,a.isS4HanaCloudSystem)(await r.AtoCatalog.getATOData({system:this.system,connection:this.connection,log:this.log,credentials:this.credentials}))}catch(e){}t=await this.get(e?s.V2_SERVICES_PATH+s.V2_ODATA_CATALOG_FILTER_FOR_S4_HANA_SERVICES:s.V2_SERVICES_PATH)}if(!Array.isArray(t))throw new Error("Error parsing service list");return t}async findService({title:e,path:t}){let n=1;if(!e){const i=t.replace(/\/$/,"").split("/").pop().split(";");e=i[0];const r=i.slice(1);if(!e)throw new Error(`Cannot determine service title from path: ${t}`);r.forEach((e=>{const[t,i]=e.split("=");"v"===t&&(n=parseInt(i,10))}))}e=e.toUpperCase();const i=encodeURI(`/ServiceCollection/?$filter=Title eq '${e}' and TechnicalServiceVersion eq ${n}&$format=json`),r=await this.get(i);if(r.length>1){const e=r.filter((e=>e.ServiceUrl?.toUpperCase().includes(t.toUpperCase())));if(e.length>1)this.log.warn("Service filter was not sufficient to identify one service.");else if(e.length>0)return this.log.info(`Service filter chose service: ${e[0].TechnicalServiceName}`),e[0]}return r.length>0?r[0]:void 0}async getAnnotations({id:e,title:t,path:n}){if(!e&&!t&&!n)throw new Error("No filter parameters passed in");const i=await this.getServiceAnnotations({id:e,title:t,path:n}),r=[];if(i)for(const e of i){const t=`/Annotations(TechnicalName='${encodeURIComponent(e.TechnicalName)}',Version='${e.Version}')/$value/`,n=await this.get(t);n?r.push({TechnicalName:e.TechnicalName,Version:e.Version,Definitions:n,Uri:this.system.service+t}):this.log.warn(`No annotations found for TechnicalName=${e.TechnicalName}, Version=${e.Version}`)}return r}async getId({title:e,path:t}){const n=await this.findService({title:e,path:t});if(n)return n.ID}async getServiceType(e){let t;const n=await this.getId({path:e});if(n){const e=await this.get(`/ServiceTypeForHUBServices('${encodeURIComponent(n)}')`);e&&(t=e.ServiceType)}return t}async getServiceAnnotations({id:e,title:t,path:n}){return e||(e=await this.getId({title:t,path:n})),e?this.get(`/ServiceCollection('${encodeURIComponent(e)}')/Annotations?$format=json`):void 0}}t.V2Catalog=V2Catalog},59652:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.V4Catalog=void 0;const i=n(62284),r=n(18640);class V4Catalog extends r.Catalog{constructor({system:e,credentials:t,log:n=console,connection:s,postConnectionCallback:a,ignoreCertError:o}){if(t?.serviceKeys||t?.serviceKeysContents){const n=(0,i.getServiceInfo)(t);t.serviceInfo=n,e.url=n.url}e.service=r.V4_CATALOG_URL_PATH_PROD,super({system:e,credentials:t,log:n,connection:s,postConnectionCallback:a,ignoreCertError:o})}parseServiceData(e,t){if(e&&Array.isArray(e)){const n=t?"RecommendedServices":"Services",i=[];return e.forEach((({DefaultSystem:e,GroupId:t})=>{i.push(...e[n].map((e=>Object.assign(e,{GroupId:t}))))})),i}return[]}async listServices(e=!1){if(!this.services){const t=e?r.V4_RECOMMENDED_SERVICES_PATH_PROD:r.V4_SERVICES_PATH_PROD;this.services=[];const n=await this.get(`${t}&${r.ODATA_COUNT_QUERY}`);if(!Array.isArray(n.value))throw new Error("Error parsing service list");if(this.services=this.services.concat(this.parseServiceData(n.value,e)),n["@odata.nextLink"]){let i=parseInt(n["@odata.nextLink"]?.split("skiptoken=")[1]);for(;!isNaN(i)&&i>0;){const n=await this.get(`${t}&${r.ODATA_SKIP_QUERY}=${i}`);this.services.push(...this.parseServiceData(n.value,e)),i=parseInt(n["@odata.nextLink"]?.split("skiptoken=")[1])}}}return this.services}async getAnnotations(){return Promise.resolve([])}async getServiceType(){return Promise.resolve("")}}t.V4Catalog=V4Catalog},76202:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return r(t,e),t},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.newHttpClient=async function newHttpClient({system:e,credentials:t,log:n,existingConnection:i,autoAddTrailingSlash:r=!0,timeout:s,ignoreCertError:a,postConnectionCallback:d,disableSAML:p=!1}){const h=i||await(0,c.connect)({target:e,credentials:t,log:n,autoAddTrailingSlash:r,timeout:s,ignoreCertError:a,postConnectionCallback:d,disableSAML:p}),f=new o.AxiosHeaders;f.Cookie=h.cookies.toString(),h.xsrfToken&&(f["x-csrf-token"]=h.xsrfToken);const g={baseURL:new u.URL(e.service,e.url).toString(),headers:f,withCredentials:!0,httpsAgent:new l.default.Agent({rejectUnauthorized:!a})};h?.auth&&(g.auth=h.auth);o.default.defaults.headers.common.Accept="application/json,application/xml,text/plain,*/*";const y=o.default.create(g);return{connection:h,httpClient:y}};const o=s(n(29413)),c=n(49122),l=a(n(65692)),u=n(87016)},8617:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(77095),t),r(n(34025),t),r(n(65858),t),r(n(8090),t)},65858:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.prettyPrintMessage=function prettyPrintMessage(e,t,n){logLevel(e.severity,e.message,t),e.longtextUrl&&n.frontendUrl&&printUrl(e.longtextUrl,n.frontendUrl,t);e.details&&e.details.forEach((e=>{logLevel(e.severity,e.message,t)}))},t.prettyPrintError=function prettyPrintError(e,t,n){if(e){if(t.error(`Backend error message: ${e.message?.value}`),t.error("<<< Backend error details"),e.innererror?.errordetails&&printErrorDetails(e.innererror.errordetails,t,n),e.innererror?.Error_Resolution)for(const n in e.innererror.Error_Resolution)t.error(`${n}: ${e.innererror.Error_Resolution[n]}`);t.error(">>>")}},t.printErrorDetails=printErrorDetails;const r=i(n(27577)),s=(0,i(n(99171)).default)("ux-odata-client");function printUrl(e,t,n){n.info("Click this link for more information:");const i=t.concat(e).replace(/'/g,"%27");n.info(i)}function logLevel(e,t,n,i=!1){e?"success"===(e=e.toLowerCase())?n.info(r.default.greenBright(t)):("warning"===e&&(e="warn"),n[e](t)):i?n.error(t):n.info(t)}function printErrorDetails(e,t,n){e&&e.forEach((e=>{e.message.startsWith("<![CDATA")||("error"===e.severity?logLevel(e.severity,e.message,t,!0):s(e.message)),e.longtext_url&&n?.frontendUrl&&printUrl(e.longtext_url,n.frontendUrl,t)}))}},77095:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ODataClient=void 0;const r=n(66979),s=n(75199),a=n(76202),o=n(65858),c=n(67442),l=n(8090),u=n(46099),d=n(98947),p=i(n(16962));class ODataClient{constructor({system:e,credentials:t,log:n=console,connection:i,autoAddTrailingSlash:r=!0,timeout:s,ignoreCertError:a,postConnectionCallback:o,disableSAML:c=!1}){this.autoAddTrailingSlash=!0,this.system=e,this.credentials=t,this.log=n,this.connection=i,this.autoAddTrailingSlash=r,this.timeout=s,this.ignoreCertError=a,this.postConnectionCallback=o,this.disableSAML=c,this.initDebugLogger(),e&&l.TlsPatch.isPatchRequired(e.url)&&l.TlsPatch.apply(),this.validateSysAuthType(e,t)}initDebugLogger(){ODataClient.hasAxiosDebugLoggerConfig||((0,p.default)({request:(e,t)=>{e(`Request ${t.method?.toUpperCase()} ${this.buildFullUrl(t)}`),e(t)},response:(e,t)=>{e(`Response ${t.status} ${t.statusText} ${this.buildFullUrl(t.config)}`),e(t)},error:(e,t)=>{e(`Error ${t.response?.config?.method?.toUpperCase()} ${t.response?.status} ${this.buildFullUrl(t.response?.config??{})}\n`),e(t.response),e(t)}}),ODataClient.hasAxiosDebugLoggerConfig=!0)}buildFullUrl(e){return e.baseURL?`${e.baseURL}${e.url}`:`${e.url}`}validateSysAuthType(e,t){if(e.authenticationType=e.authenticationType||(0,u.guessAuthType)({credentials:t,fallback:!0}),!Object.values(r.AuthenticationType).includes(e.authenticationType))throw new d.UnknownSystemAuthenticationType(e.authenticationType)}logError(e,t){this.log.error(e.message),e.isAxiosError&&e.response.data.error&&(0,o.prettyPrintError)(e.response.data.error,this.log,t)}async getClient(){if(!this.client){(0,s.isAppStudio)()&&await(0,c.updateSystemConfig)(this.system);const{connection:e,httpClient:t}=await(0,a.newHttpClient)({system:this.system,credentials:this.credentials,log:this.log,existingConnection:this.connection,autoAddTrailingSlash:this.autoAddTrailingSlash,timeout:this.timeout,ignoreCertError:this.ignoreCertError,updateUserInfo:this.updateUserInfo,postConnectionCallback:this.postConnectionCallback,disableSAML:this.disableSAML});this.connection=e,this.client=t}return this.client}async getConnection(){return this.connection||await this.getClient(),this.connection}async metadata(e=!0){const t=this.system.service?.endsWith("/")?"$metadata":"/$metadata",n=await this.get(t,{Accept:"application/xml"});try{return e?(0,u.filterReferenceUri)(n):n}catch{return n}}async get(e,t){const n=await this.getClient(),i=await(n.get(e,void 0===t?{}:{headers:t})?.catch((e=>{if(e.request?._isRedirect&&e.request?._options?.path)return n.get(e.request._options.path,void 0===t?{}:{headers:t});throw e})));return i?.data?.d?i.data.d.results?i.data.d.results:i.data.d:i?.data?.value?i.data:i?.data}async icfLogOff(){const e=await this.getClient();try{await e.get("bc/icf/logoff")}catch(e){console.log(`Error ending security session ${e.message}`)}}}t.ODataClient=ODataClient,ODataClient.hasAxiosDebugLoggerConfig=!1},8090:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.TlsPatch=void 0;const r=i(n(64756)),s=n(59864);class TlsPatch{static get isPatched(){return TlsPatch._patched}static isPatchRequired(e){return!TlsPatch.isPatched&&e&&(e.includes(".sap.corp")||e.includes(".net.sap"))}static apply(){if(TlsPatch.isPatched)return;const e=r.default.createSecureContext;r.default.createSecureContext=t=>{const n=e(t);return s.globalRootCaPem.replace(/\r\n/g,"\n").match(/-----BEGIN CERTIFICATE-----\n[\s\S]+?\n-----END CERTIFICATE-----/g).forEach((e=>{n.context.addCACert(e.trim())})),n},TlsPatch._patched=!0}}t.TlsPatch=TlsPatch},66979:(e,t,n)=>{var i;Object.defineProperty(t,"__esModule",{value:!0}),t.DestinationProxyType=t.destinationPropertyId=t.DestinationAttributeProperty=t.DestinationProperties=t.AuthenticationType=t.ServiceName=void 0,t.hasDestinationAttrib=function hasDestinationAttrib(e,t,n={}){return(n&&n[e]?.includes(t))??!1},t.hasFullUrlDestAttribute=function hasFullUrlDestAttribute(e){return(e&&e.WebIDEAdditionalData?.includes(t.DestinationAttributeProperty.FULL_URL))??!1},t.hasHTML5DynamicDestinationAttrib=function hasHTML5DynamicDestinationAttrib(e){return(e&&"true"===e["HTML5.DynamicDestination"])??!1},function(e){e.SystemInfo="fiori/system/info",e.RefreshToken="fiori/system/refreshToken"}(i||(t.ServiceName=i={}));var r,s,a=n(2218);Object.defineProperty(t,"AuthenticationType",{enumerable:!0,get:function(){return a.AuthenticationType}}),function(e){e.WebIDEUsage="WebIDEUsage",e.WebIDEEnabled="WebIDEEnabled",e.WebIDESystem="WebIDESystem",e.SapClient="sap-client",e.WebIDEAdditionalData="WebIDEAdditionalData",e.HTML5ForwardAuthToken="HTML5.ForwardAuthToken",e.HTML5Timeout="HTML5.Timeout",e.HTML5PreserveHostHeader="HTML5.PreserveHostHeader",e.HTML5DynamicDestination="HTML5.DynamicDestination",e.HTML5SetXForwardedHeaders="HTML5.SetXForwardedHeaders",e.TrustAll="TrustAll",e.ProxyType="ProxyType"}(r||(t.DestinationProperties=r={})),t.DestinationAttributeProperty={ODATA_GENERIC:"odata_gen",FULL_URL:"full_url",ODATA_ABAP:"odata_abap",DEV_ABAP:"dev_abap",ABAP_CLOUD:"abap_cloud"},t.destinationPropertyId=Object.keys(t.DestinationAttributeProperty),function(e){e.ON_PREMISE="OnPremise",e.INTERNET="Internet",e.PRIVATE_LINK="PrivateLink"}(s||(t.DestinationProxyType=s={}))},27117:(e,t)=>{var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CSRF=void 0,function(e){e.requestHeaderName="X-Csrf-Token",e.requestHeaderValue="Fetch",e.responseHeaderName="x-csrf-token"}(n||(t.CSRF=n={}))},45167:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.connectWithReentranceTicket=async function connectWithReentranceTicket({target:e,ignoreCertError:t=!1,logger:n=console}){let s;const a=(0,r.createForAbapOnCloud)({ignoreCertErrors:t,environment:r.AbapCloudEnvironment.EmbeddedSteampunk,url:e.url});await a.getAtoInfo()&&(n.info("ATO settings retrieved"),s={cookies:a.cookies,xsrfToken:a.defaults?.headers?.common[i.CSRF.requestHeaderName]?.toString()});return s};const i=n(27117),r=n(60987)},54445:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Cookies=void 0;t.Cookies=class Cookies{constructor(){this.cookies={}}setCookie(e){return e?.headers?.["set-cookie"]&&e.headers["set-cookie"].forEach((e=>this.addCookie(e))),this}addCookie(e){const t=e.split(";"),[,n,i]=t[0].match(/(.*?)=(.*)/);return e.indexOf("Max-Age=0")>=0?delete this.cookies[n]:n&&i&&(this.cookies[n]=i),this}toString(){const e=[];return Object.keys(this.cookies).forEach((t=>{e.push(`${t}=${this.cookies[t]}`)})),e.join("; ")}}},67442:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.listDestinations=async function listDestinations(e){return(0,s.isAppStudio)()?(0,r.listDestinations)(e):{}},t.replaceUrlForAppStudio=replaceUrlForAppStudio,t.updateSystemConfig=async function updateSystemConfig(e){if((0,s.isAppStudio)()&&e.destination)if(e.destinationInstance)await replaceUrlForAppStudio(e,e.destination,e.destinationInstance);else{const t=await(0,r.listDestinations)();if(t[e.destination]){const n=t[e.destination];e.destinationAuthType=n.Authentication,(0,i.hasFullUrlDestAttribute)({WebIDEAdditionalData:n.WebIDEAdditionalData})&&(e.isDestinationFullUrl=!0,e.destinationServiceUrl=new URL(n.Host).pathname),e.isDestinationFullUrl&&delete e.service,await replaceUrlForAppStudio(e,n.Name)}}};const i=n(66979),r=n(75199),s=n(75199),a=n(80116);async function replaceUrlForAppStudio(e,t,n){e.originalUrl=e.url,t&&n?(e.url=`https://${t}.dest`,e.basDestinationInstanceCred=await async function getAuthHeaderForInstanceBasedDest(e){try{const t=(await(0,a.apiGetInstanceCredentials)(e)).credentials,n=t.uaa?.clientid||t.clientid,i=t.uaa?.clientsecret||t.clientsecret;return Buffer.from(`${encodeURIComponent(n)}:${encodeURIComponent(i)}`).toString("base64")}catch(t){throw new Error(`An error occurred while retrieving service key for the destination instance ${e}: ${t}`)}}(n)):(e.url=(0,r.getAppStudioBaseURL)(),e.service=`/destinations/${t??e.destination}${e.service?.replace(/^\/?/,"/")??""}`),delete e.scp,delete e.client}},41992:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UAATimeoutError=t.TimeoutError=t.ConnectionError=void 0;const i=n(98947);class ConnectionError extends i.BaseError{constructor(e,t){super(e,t),this.name=this.constructor.name}}t.ConnectionError=ConnectionError;class TimeoutError extends i.BaseError{constructor(e,t){super(e,t),this.name=this.constructor.name}}t.TimeoutError=TimeoutError;t.UAATimeoutError=class UAATimeoutError extends TimeoutError{constructor(e,t){super(e,t),this.name=this.constructor.name}}},49122:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Cookies=t.SAP_CLIENT=void 0,t.connect=async function connect({target:e,credentials:n,log:i,autoAddTrailingSlash:r=!0,timeout:s,ignoreCertError:g=!1,postConnectionCallback:y,disableSAML:m=!1}){const A=e.authenticationType;return A===c.AuthenticationType.OAuth2RefreshToken?(0,u.connectUsingUaa)({target:e,credentials:n,log:i,postConnectionCallback:y}):A===c.AuthenticationType.OAuth2ClientCredential?(0,u.connectUsingUaaClientCredential)({target:e,credentials:n,log:i}):A===c.AuthenticationType.ReentranceTicket?(0,f.connectWithReentranceTicket)({target:e,logger:i,ignoreCertError:g}):async function connectWithBasicAuth({target:e,credentials:n,autoAddTrailingSlash:i=!0,timeout:r,ignoreCertError:s=!1,logger:c=console,disableSAML:u=!1}){const f=new p.URL(e.service,e.url).toString(),g=!!n?.username?.length,y={params:{},headers:{[h.CSRF.requestHeaderName]:h.CSRF.requestHeaderValue},withCredentials:g,httpsAgent:new d.default.Agent({rejectUnauthorized:!s})};g&&(y.auth=n);if("number"==typeof r&&r>0){const e=a.default.CancelToken.source();setTimeout((()=>{e.cancel("CONNECT_TIMEOUT")}),r),y.cancelToken=e.token}e.params&&Object.assign(y.params,e.params);e.client&&(y.params[t.SAP_CLIENT]=e.client);const m=(0,l.isAppStudio)()&&e.destination;(m||u)&&(y.params.saml2="disabled");const A=!f?.endsWith("/")&&i?`${f}/`:f;y?.auth&&Object.keys(y.auth).length>0?y.withCredentials=!0:(delete y.auth,y.withCredentials=!1);let S=await a.default.get(A,y);!m&&function isSamlLogonNeeded(e){return 200===e?.status&&isHtmlResponse(e)&&"string"==typeof e.data&&!!e.data.match(/saml/i)}(S)&&(c.warn("Disabling SAML2. Falling back to basic authentication"),y.params.saml2="disabled",S=await a.default.get(A,y));return function throwIfHtmlLoginForm(e){if(200!==e?.status)return;if("ICFLOGONREQUIRED"===e.headers["sap-err-id"]||function isHtmlLoginForm(e){return isHtmlResponse(e)&&"string"==typeof e.data&&!!e.data.match(/log[io]n/i)}(e)){const e=new Error;throw e.response={status:401},e.isAxiosError=!0,e.toJSON=()=>({status:401}),e}}(S),{auth:y.auth,cookies:(new o.Cookies).setCookie(S),xsrfToken:S?.headers[h.CSRF.responseHeaderName]}}({target:e,credentials:n,autoAddTrailingSlash:r,timeout:s,ignoreCertError:g,logger:i,disableSAML:m})};const a=s(n(29413)),o=n(54445);Object.defineProperty(t,"Cookies",{enumerable:!0,get:function(){return o.Cookies}});const c=n(66979),l=n(75199),u=n(62284),d=s(n(65692)),p=n(87016),h=n(27117),f=n(45167),g=s(n(57195));function isHtmlResponse(e){return function getContentType(e,t){return e?e.toLowerCase():"string"==typeof t?(0,g.default)(Buffer.from(t))?.toLowerCase()??"":""}(e.headers["content-type"],e.data).startsWith("text/html")}t.SAP_CLIENT="sap-client",r(n(67442),t),r(n(41992),t)},62284:function(e,t,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.defaultUtils=void 0,t.getServiceInfo=getServiceInfo,t.connectUsingUaa=async function connectUsingUaa({target:e,credentials:n,log:i=console,uaaUtils:r=t.defaultUtils,postConnectionCallback:s}){try{const t=new Uaa(n.serviceInfo||r.serviceInfo(n)),a=await r.accessToken({uaa:t,log:i,postConnectionCallback:s,refreshToken:n.refreshToken});return await r.connection(e,a)}catch(e){if(i.error(e.message),e instanceof p.ConnectionError)throw e;throw new p.ConnectionError(e.message,e)}},t.connectUsingUaaClientCredential=async function connectUsingUaaClientCredential({target:e,credentials:n,log:i=console,uaaUtils:r=t.defaultUtils}){let s;try{const e=new Uaa(n.serviceInfo);s=await r.accessTokenByUaaClientCredential({uaa:e,log:i})}catch(e){if(i.error(`Failed to obtain OAuth2 access token: ${e.message}`),e instanceof p.ConnectionError)throw e;throw new p.ConnectionError(e.message,e)}try{return await r.connection(e,s)}catch(e){if(i.error(e.message),e instanceof p.ConnectionError)throw e;throw new p.ConnectionError(e.message,e)}};const r=n(20388),s=i(n(58611)),a=i(n(29413)),o=i(n(38097)),c=n(79896),l=n(49122),u=n(27117),d=n(59864),p=n(41992),h=i(n(30695)),f=n(80707);class Redirect{constructor(e){this.port=e}url(){return`http://localhost:${this.port}${Redirect.path}`}}async function getUserInfo(e,t){const n=await a.default.request(e.getUserinfoRequest(t));return n?.data?.email||n?.data?.name}Redirect.path="/oauth/client/redirect";class Uaa{constructor(e){this.validatePropertyExists(e.uaa.clientid,"Client ID missing"),this.validatePropertyExists(e.uaa.clientsecret,"Client Secret missing"),this.validatePropertyExists(e.uaa.url,"UAA URL missing"),this.serviceInfo=e}validatePropertyExists(e,t){if(!e)throw Error(t)}get url(){return this.serviceInfo.uaa.url}get clientid(){return this.serviceInfo.uaa.clientid}get clientsecret(){return this.serviceInfo.uaa.clientsecret}get username(){return this.serviceInfo.uaa.username}get password(){return this.serviceInfo.uaa.password}get logoutUrl(){return this.url+"/logout.do"}get systemId(){return this.serviceInfo.systemid}getAuthCodeUrl({redirectUri:e}){return this.url+"/oauth/authorize?"+h.default.stringify({response_type:"code",redirect_uri:e,client_id:this.clientid})}getTokenRequestForAuthCode({redirectUri:e,authCode:t}){return{url:this.url+"/oauth/token",auth:{username:this.clientid,password:this.clientsecret},method:"POST",data:h.default.stringify({code:t,grant_type:"authorization_code",redirect_uri:e,response_type:"token"}),headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"}}}getAccessTokenRequestUsingClientCredential(){return{url:this.url,method:"POST",data:h.default.stringify({grant_type:"password",username:this.username,password:this.password}),headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",Authorization:`Basic ${Buffer.from(this.clientid+":"+this.clientsecret).toString("base64")}`}}}getTokenRequestForRefreshToken(e){return{url:this.url+"/oauth/token",auth:{username:this.clientid,password:this.clientsecret},method:"POST",data:h.default.stringify({grant_type:"refresh_token",refresh_token:e}),headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"}}}getUserinfoRequest(e){return{url:this.url+"/userinfo",method:"GET",headers:{authorization:`bearer ${e}`}}}}function getServiceInfo(e){try{return e.serviceKeysContents?"string"==typeof e.serviceKeyContents?JSON.parse(e.serviceKeysContents):e.serviceKeysContents:JSON.parse((0,c.readFileSync)(e.serviceKeys,"utf-8"))}catch(e){throw new Error("Error parsing service keys")}}t.defaultUtils={serviceInfo:getServiceInfo,connection:async function newConnection(e,t){const n=`${e.url}${e.service}${e.client?"?sap-client="+e.client:""}`,i=await a.default.get(n,{headers:{authorization:`bearer ${t}`,[u.CSRF.requestHeaderName]:u.CSRF.requestHeaderValue,"x-sap-security-session":"create"}});return{cookies:(new l.Cookies).setCookie(i),xsrfToken:i.headers?.[u.CSRF.responseHeaderName]}},accessToken:async function getAccessToken({uaa:e,log:t,postConnectionCallback:n,refreshToken:i}){let c,l,u=!1;if(i){t.info("Refresh token passed in");const n=e.getTokenRequestForRefreshToken(i);try{c=await a.default.request(n),401===c.status||"invalid_token"===c.data.error?(u=!0,t.warn("Cannot use stored refresh token. Starting fresh request")):i!==c.data.refresh_token&&(t.info("New refresh token issued"),l=c.data.refresh_token)}catch(e){u=!0}}if(!i||u){const{authCode:n,redirect:i}=await function getAuthCode({uaa:e,log:t,timeout:n=f.timeoutMs}){return new Promise(((i,a)=>{const c=(0,o.default)(),l=s.default.createServer(c);let u;const h=setTimeout((()=>{l.close(),a(new p.UAATimeoutError(`Timeout. Did not get a response within ${(0,f.timeString)(n)}`))}),n);c.get(Redirect.path,((n,r)=>{r.set("Content-Type","text/html"),r.send(Buffer.from((0,d.redirectSuccessHtml)(e.logoutUrl,e.systemId))),t.info("Got authCode"),i({authCode:n.query.code+"",redirect:u}),h&&clearTimeout(h),l.close()})),l.listen(),u=new Redirect(l.address().port);const g=e.getAuthCodeUrl({redirectUri:u.url()});r(g)}))}({uaa:e,log:t}),u=e.getTokenRequestForAuthCode({redirectUri:i.url(),authCode:n});c=await a.default.request(u),t.info("Storing refresh token"),l=c.data.refresh_token}return n&&await async function runPostConnectionCallback({log:e,uaa:t,accessToken:n,postConnectionCallback:i,newRefreshToken:r}){if(!i.sync)return async function processCallbackAsync({log:e,uaa:t,accessToken:n,updateFunction:i,newRefreshToken:r,fetchUserInfo:s}){if(r){e.info("Trying to save refreshToken");try{await i({refreshToken:r})}catch(t){e.warn(t.message)}}s&&(e.info("Scheduling user info fetch"),setTimeout((async()=>{try{e.info("Fetching user info");const r=await getUserInfo(t,n);e.info(`Username: [${r}]`),r&&(e.info("Trying to update user name in system details"),await i({user:r}))}catch(t){e.warn(t.message)}}),1))}({log:e,uaa:t,accessToken:n,updateFunction:i.fn,fetchUserInfo:i.updateUserInfo,newRefreshToken:r});try{let e;i.updateUserInfo&&(e=await getUserInfo(t,n)),i.fn({user:e,refreshToken:r})}catch(t){e.warn(t)}}({log:t,uaa:e,accessToken:c.data.access_token,postConnectionCallback:n,newRefreshToken:l}),t.info("Got access token successfully"),c?.data?.access_token},accessTokenByUaaClientCredential:async function getAccessTokenByUaaClientCredential({uaa:e,log:t}){try{const n=e.getAccessTokenRequestUsingClientCredential(),i=await a.default.request(n);return t.info("Receiving response from OAuth2 Client Credential grant type"),i.data.access_token}catch(e){if(e instanceof p.ConnectionError)throw e;throw new p.ConnectionError(e.message,e)}}}},80707:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.timeString=t.timeoutMs=void 0,t.timeoutMs=6e4;t.timeString=(e=t.timeoutMs)=>{const n=e/60/1e3;return n>1?`${n} minutes`:1===n?"1 minute":e/1e3+" seconds"}},98947:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UnknownSystemAuthenticationType=t.BaseError=void 0;class BaseError extends Error{constructor(e,t){super(e),this.cause=t}}t.BaseError=BaseError;t.UnknownSystemAuthenticationType=class UnknownSystemAuthenticationType extends BaseError{constructor(e,t){super(`Unknown authenication type: [${e}]`,t),this.name=this.constructor.name}}},57009:function(e,t,n){var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(8617),t),r(n(46099),t),r(n(66979),t),r(n(49122),t),r(n(59832),t),r(n(50207),t)},59864:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.redirectSuccessHtml=t.globalRootCaPem=void 0,t.globalRootCaPem="\n-----BEGIN CERTIFICATE-----\n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\n-----END CERTIFICATE-----\n";t.redirectSuccessHtml=(e,t)=>`\n<html>\n\n<head>\n <meta http-equiv="content-type" content="text/html; charset=windows-1252">\n <title>${t?t+": ":""}Authentication Successful</title>\n <style>\n body {\n background: #ffffff;\n text-align: center;\n width: 100%;\n height: 100%;\n overflow: hidden;\n }\n\n .content {\n display: table;\n position: absolute;\n width: 100%;\n height: 80%;\n }\n\n .valigned {\n display: table-cell;\n vertical-align: middle;\n }\n\n .lowerCenter {\n display: table-cell;\n vertical-align: bottom;\n }\n\n .footer {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n z-index: -1;\n }\n\n .footerLeft {\n float: left;\n margin-left: 20px;\n }\n\n .footerRight {\n float: right;\n margin-right: 20px;\n position: absolute;\n bottom: 0px;\n right: 0px;\n }\n\n .centerText {\n font-style: normal;\n font-family: Arial;\n font-size: 26px;\n color: #444444;\n z-index: 1;\n }\n .centerLink {\n font-style: normal;\n font-family: Arial, Helvetica, sans-serif;\n font-size: 18px;\n text-decoration: none;\n color: #224679;\n }\n\n .errorTextHeader {\n font-style: normal;\n font-family: Arial;\n font-size: 40px;\n color: #444444;\n }\n\n .bottomText {\n align: center;\n font-style: normal;\n font-family: Arial;\n font-size: 14px;\n color: #444444;\n }\n\n .biggerBottomText {\n align: center;\n font-style: normal;\n font-family: Arial;\n font-size: 16px;\n color: #444444;\n }\n\n .detailTable {\n align: bottom;\n vertical-align: middle;\n margin-left: auto;\n margin-right: auto;\n font-style: normal;\n font-family: Arial;\n font-size: 16px;\n color: #444444;\n }\n </style>\n</head>\n\n<body>\n <div class="content">\n <div class="valigned">\n <p class="centerText"><span class="errorTextHeader">You can close this tab now.</span></p>\n ${e?'<a class="centerLink" href="'+e+'">(Click here to log off the current user)</a>':""}\n </div>\n </div>\n <div class="footer">\n <div class="footerLeft"><img width='150' height='80' title='' alt='SAP logo'\n src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAABQCAYAAAGMt7zdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAFhpJREFUeNpiZEAAJiBmZCAd/IdhmGYWhu0ffzNQAjz5mVigTGa291/JNudXlBQHA5K32P////8DWQHv9LsMnzOVGWTm3mf4+OsfmI0sBwNfslQ4gdRPkDeZkA24/OoHg1DHFTCGaX6SrMjA+vE7mA0SBwEQH4SRDUI2h120+sx/GDh67xOYhokhy8H4QD0cuCKMfcXJl/8lCo7+xwYevf0BpkHyIIzPIFiYYQDp9AP/Vx17jsLHZxBMkE02cc9PQrH2eL4L1jBCN4wZaiMzDlv/gVIAFP/HZRlAADEi0YzUyAGMYFdt//iNgtTPCiT/sMAMIzcHAFM/PzQY4BlcCDkWeabdwcqG8WEYqE8AGs5wg+AAlvphKR6W2mFyM868BecMaOoXBAp/BuK/DGhFD4rLPnz/8x8fQHcRA7zogQLJwmNg+nm/FQM/B4Y6uPyLCdZYXYTTZbDUDsJoqR+rixjQ0hc/MAe8J5D68boI2TA2UP7EkWj/Qw34gc8gEAAIIEY07zJBvcHEQF/wD4r/wnITC5IDQWwO5vWvPzIMAPgbKMqNFKIMLGjRAKyjILn9W6IcXJPFxhcMl979gvN3eorD2e7bX2IVP/TiB0PrecJ+/J4kLwiN2t/QUPuPHJWgqAOVIdzAxPkWpsl79SOGLEMhBm8VHgb+/ptgsUwjQYYOezEUw2FyHwvVwfSRJ98Y5PhYwRhdDQx8KtLA6iCMfIkNbA2FhJpI00UGmBUwR4HE3tTpg9k5WjwMM0++gesLmHcbTMPkwSXPZ0j9/rbeAK+DsOVzUE4SEi898R+G8QGQfPeuJyh8bODjtz9gOWj5gK++wporsUYluUA65zCc/WyqHUkhhCsq/8um7qc4h4F8+WSOE1kOQnfYf6jm30y//1LkqEcLXQWg7RCyHIStgIUVGeQ2tpE9+J9cB8EAQAAx4mgHMVDgOFI9gt6GQnEAclXESMcC/z9SVfQPvSpiBjbufjIMFPDkZ8daPzL/+DUg7vm/ZbbsP7RcCG9LM3//TXcH/V3dpfRv/YR3yDkWucxiZP4BcdQsW2GGGBVuMHvzo+8M4XtfoxgEq5g3P/zGMOXaZ4zKGgQW3/7CsOQO/ub579VtKn+3z3yNrbJmhHVjgM3sz8idT/ROKrhfmaTIwM/OhCGOSx96JxYGfq7vUvm9e9ZLaNfoD3ofAQ6QDc7c+RyM4Qp//AFjZAchiyMDUAsCGSiwMcLVgfCvNe04HYS39bDy/FsUGlfr+1GWCoNi/3UUMb8l98D0uwodMD3dVZzBb9l9SJTdO+34a99cnA5iwNc8BhkIwlM9pRiYfv0FY5gl4Ab+B0hO5WdnBsuhGApVD1f7/ieY//fmCccvs5PO4HMQA1pzmQd92AB9CAEGZh59gcLHpw8mLxAzwwFkB7QTwkSomoEndGBb6DO8LNMWZJgfrwZX+PH7XwZ+TkgkSpSdhHTQuswJZnmQ2l+Pzjm+X5lFVAhhOEqi4OhnWSF2hsfvEAU7qOdIKoD1KsG97yfnHN+tySXaQRgJfWKEMkOYuTjlbStoM+jn0/OO7zbkk+QgDEcx/sPe4vj0/Q8DHydEqUzGQRS5JzPsMYP/zz+Gv19e5b4lw0EY0SeTsu8zVaoOoIOer4hYQI6D0Fug/xn//qPcQV+BDloVRbaDYI6CxdlfXNFHtIO+vcl5thruoL/kOAi9kccM7eGwkDgC9x9p3OAvNHTIdhC2gRBqDAmS3WmAAYAAYsST+LGxhzNA7vCgszGKKka0mGRGGt5iwtH5GcoBgzEYjTSk9g8tJf7H1qpCHvtjYdr87jPDCAP/962Q+t+f9RaaILAOYKGnGnBgDUQ3Z6DA33X9Cv9WdLxFGlX+j6/FwIiOB6qjSk/wewWwy7dt+hukWukvUjbEWWZhFPSwntS1CBkGeV4Woix/+PkPg9W6ZwwffiFqQj1hNobjQVJY1XPPfoAh9jVVgWjPHn7+g8FjywvSA2ktsNe3c9ZbaCD9YUAb/seWshixDKPB2g9sDz/+eos8SE0MaD/5jqH9FOrA6qdcVZzqL7/5yWC9/BHR6vEBvsm3Car5ualL5deeOSQFEjEpiwFbQAn0XMeqFtTHB6m//PonSk/vQ4kmXsfrirAz2ImxMRx5jH8yFN1ebOZ2WgkzVO5/iVX/j609Kj8PzCMrkAh253EBkCNBeJmfNIMg4z8G5p9/wPjLp18M1558hfNBGKQGHVTtfoYhtiVcHkUfNoAsD8IzTr3BUKMHDHh0df9uHHf8WKolCAwoUCj+gDbhfyMFGNGNVbzZUKTu3NvXjYZEB2TX/ucM3Qcg5YeOBCfD/kwNDDWi9ecZPDX4GRZFKmGVAwFsdh598AVuLrZpYBAw6r8KH5P59eCM46dFaRcoSUkkBZZYBaLwkRVgZ9ibr43TochArfEcw616Iwxx8crTcPbLdlPMEbOzbxjy1tzHKkeMnR9//GX49eis44dlmVQNJKICS6LoON4pMNAQzqlqQwZqAtPW8wynCZh59dlXhh1X3jP07HyCKLifnHN8vyqbJoFEVAHP+Ocvw7OJ1nD+7IPPGHZeegfnz0vRoHq7B1dASeUfxRrToDGyt+vyaBpIRKUsakyugoBl7SmGx28hU9CWagIMVx9/AQ+NgYfBptkRZYZM1iHUdtKb2wGvVqccpEcgEZOy/sumHQAztGV5GOrDVcAexcgSQI+nTLvC8AQYGKtKDDDkn7z5wfDk5Td4rJy49g4llrQLjjDMydIhHKt//iFGypaFL6FnIBFKWaBAZJNN2vtu0PTdgIH0bGXkgAQStjFS9OEKiocnqRNIr3Ofro5cjDSqSPdAwpUNYWM6IEf9///rW/t/0JrD//+YGP6jrMClIWD8z8AItPL394tP10RtRurY/mVAXZVA95hkxDFKir7kgtwhXUoG5v5jCZwBCSRCI56MBAKU1qOXuEY0BxQABCDnbGPiKMI4/hy2VbHF3oEGUoRaWzTUQqvYKi8lUioRIaZqDLSiidooUWPsB0Pa2jQxIlXAGotNq1ibmFJiNNE2FkrsBxUuMVYjLEZrscLdQSkv5a5SetzerTdz3b293ZnZO3p3e+k9yeRgdmZ297czz8zO/GcNMQJKt4nRUB7OPI3eMZ4WK4DQzAXWTCkQfFXCdQ6M5iNBa6ZUhKMM11MtEygjAOHqvVGnbeZRB6cnZEL9eDLB0wvlxjzwr+5Iqzy0BYuEBN4df6A8nl7P4ynrQnk3xE3PEG+w3O4+91Op+aGM4KXmmODyxBEonnNVLymkDH6ZS2G4KcZNzfKCmq3JKFI4dkGrZgX0cnHhs3ieu/L8netBvbhKfLWizWcZxPkj0SozboYda26FHNOCgPjB/3ho6b8kCYFJhsTENSsWquLlu31EUwqJledC4ccRJ94RdG01ysXNbF1eTABFXe0xEMZXeC4r8eC5KXSgKO0m6KhIDfoa3jRPQgvnCIijrTBXnbyAFdfBpKXZQ18PQ+/EbMigLtdmFYN/bswtm/bx0F53qOuGqBm+mr0oJFDIco3zcV55oNnRR24POi3NkCzg4PpkVTm0YHA65wSKCQs1wz0FySFffG3XeZxXDG1lbL2sPK2y6QdrW+5eBDneh6QsSxWcs9z0a/fMCRQTVlt5GjH+SL8db/JDocE8Dnan/wY3f2tTXWDFsoXMG93+gFET1pDDheX9Som/3LqrMjRAOblLb2TPGRTLwcNjd6lvcv/pyQAtQffgNDR0+3Z/1OWnwHdnHAFd6qrbbtSsFXUPpkDDT2PMNEe4KWjo8S/X195ngndL1DWWKh32+ih7Xe41gWLWLGITu98EmbfcQPQF7/0wqoo7XpUZVLlaPgutBcjTHPh5TLMcyUe5eHs4QDFhcaPk9+jfa7Pwfo/qlYu9T1JgBrQHRGkkQccXT2RIecjvbOqyiVCVaXi3fWp7zrJwgGLCqmk/x8zYUpkOEztW4VCYnoibgDy8nGdS5UGijZ0dNlV8eVaSlI8IQRACyt5XsYQCS3YNPG+/+NbqsIFi+izrhBO48zNYtaJl3zzn26MlqmCQvVOmvqFn2/6hAkH+DZ2PZNW5JijI9PnQgqX0DkMqW/DYx9/OCyso9tDBe+KSfX/A+6eGgy4MSYVYNaTfNo2PHf1VrQpAEiRavjsWL8CQWKA2tf4l1ahIgNKEhUJjlw1LhZAcKBj7e+dqOLxZrb1CciCxzF3HBolA5roRhhu5DD1nHUjIYh+rXxsRUEHBEsPr7QN4q1nWrtPQ/gu9q0f6rUezjar4xpNWqSzHNFkyXrUm9EEwepilH/RhUBf2rIsYKOa7Yeo285RWZqTNQhqtaFvPgAOaOq3410dAsI8250cUFNPBg8d3jq9euReebOGISTr6JmFrcVrE4TR1WKCx00I+KHhBfVgYcVBMWGgguHfLCshfnoQ3ZaJNmk0nhsB6dbNmWY4pKqDEWyWKVLygRj4qigooNiyvb3l6rf+DLqi5IXh6mDjOUoIa/rg4aqCYsPY+kxW2k4iqPbQJFgnjzGd87rAsNxlaX1oZRM0SVDXLtj+6oJi9YfOxf0MqqPn4IDF+95cD+HUFBdQLmv+8KP3f+dt40M1QzIOCF1RytEGxR/BjMyDKJLdVLoUXNqRDUqI6eev3VtjdfhanEWtMwPEuC3MJm5RHdS3jM1LNsn7ysC6gWEOH+ekvntLls15MaJ+W6AZKWbMEZW8YS2b5bIOuoGjN0LcEJMQOLMuhUt1BkWBJq7CGGGE19HmpCQK39OsCilazfGtnMVCzhg5vNMoA6QqK5LOkXegCf6VewCplj09Z4/uN+PATKZXRNVjbNtWDX6UsVyrrAkreG4p/6yVmUyrt5GConw7QG5Z8GKGXTFKpZFGKNWJG2h0LAlzWVzt0daSxJO0OSWath/0vQHvnAtPUFcbxr4ibBge4IauCj/meyEx0m8NFo9lDdGbrTJzC5syyIU50btMQM7vFbOiyqWTL1IE6dUF8MB9RAR9xusWo+IAxKD6CKAIFRbAtFIb09t71HKSW9j7O7W0L9N4vOWnpfZ/74zvfPe33/1QS6OPb3t9/Cu5vxhCOJaTb8QJAIlKqEgGbYt0HLIbwlROuQIK5CHAaFwNYxktVJwwHinlvKGVTEuPaRgUEWU58UDknHgawwCUUlCmgdf7wxhfQcjXaaRuVEFyBBPGUI0RtmRc5BrNy3+SCJ10EeblvMinzDWKg5RsK2VKlcQugaKXD/Z4nazFzancss+lz4yOPpRLzxEmiSucCl8piVXreX42miukjm2fRu1IMIEEUIlAg/mHzXCpZZmz6u4eyUjrrgQ1v0wftZR1ogtiLc2gkCd5dlquUodB/zGrRUfvXv2M9utEArt910O5ARTLdwPqZ2OTWKeperJ8jvVfHgmOK+dAoSkcd/FFD5aYhoJzzUZ1fub4nck/KlQsutuA95IkASIoKhg9GBsHgPoGSrhkVTEWpmrtKm7AIMKldnRtBfGx0jAEZlUTrNn082KP3FKWQnr3bAht1jVBhpnzuoVoPrddQx9P5PBTbl46ivjbiml1nexrs0d6C0srseRFJ0SFYm9fbFpVZgZOiuSx9aj+cmSnGssubYd4JYeVqc+JQr1/f2isGWJtv8CJQlK718AaN5eQWoSGPlgKUJLD6bCytnxzRG3I1EV7vcJQdG5VR3iFL1tneHx0Maa+Fu7X/RX/WQub1Bt51GpOG+8yhfH/5Aay99MCzQB1N1bSe2uoToCSBtehkTf2vb6i93skoHTp6B3+q46DgQCj+SJpHid5xy3Ysbm9oWjYSfGk5ZWaIz66WtA/GNuQ9zPlJ03p6m0+BkgSWscVa71wCj93bWGFWVgUU1wqXjkQFet8a/hTER4Xgv5F8PtpWMF5JGAZi6x+wAfzC1jLO5cblZKrRSH/AMdXdDn9IT1gZE2a/NhJbfLwGaxuIn4ey6FqO/ax5eOa3TgHK3eAdtFptCAlU+IaZLDgjiiTLMvdGA25JOXreR1NH2zRzgGSo2rxeT9g8XQ1JudK8hIpmWK8V9QG6LtT+TRyBQROy+DHBsKdIRMzF0KbWwmPTmvcm3+lMoNpNdM2KlJQU4n+j6PBeUL5sNBiSx8DmGf1tT2w9bB1v9UhDHR8/NlTwHIrvteAmeCNt+0L7ZDsWubdgBM+bFBY8XJD0BUWZrKV504wro4faoEJxA+XUHOWVrYSAgc89FrK0i3WwaGKYqG3iovvi5uqlTLiZWsgnXQeF9oRNsyKJ1l1ypG04/TtBOE5C+zx/uxEqjO5V+cJpkBQj0A+hhB5IaF+0yVKer2nc/klRV/BQHgFLe6wKd2LiK/0kHXzmqGDcAAbaP0MFYlYd13PKXyA7Mn8Y0f7T8+5Dib7Z/p7kfDPmDIGpaTfcuyCOoRDJhqyJjeBVoXAJDa6ZOEKINqAafl/YJYGSFLyHafPxPBYSbPhl9mCY8XyoV07u3G0zLNhdhtUy2g0dj0TsAYncjN/QUSLg5qpxREWC0i/Ugjb3cU2a+9+N9+lT4Tmb19RsL3WJoSwVBRpTRmKXBsrtGAuT56DysSDjJoR/dQUmrCuCvQV1Hj25V5/rg2FInqrGx4sb15dYQUSbXeGicPJ1dgXRtokx4diT8mnoeMtQH7679YaDMpPVRN26PK1uzUtDbVAVdpUYyiseKzz5omCdIlRBPXZMX1xdHTWptv6UHla8TjYhi8uLZd1iXbbzwxHE5zNydT6uBn/vh5e9fiN01c0we8s1fLxHLJhaKws0xj2Lu4WH8ghYz67Ic7sAFhqKEiarYeHk/hDcu4fXLqzBdoN01U0dY50BQaKOiSSAZqddg7vrJnrl/JAu1JazNVBpaO04bVD1j8awL6lbAiUJLPUX5z1SWS1hSn/4VjMEurIhjanl0yOJ1+WUXRJ+CsRAPdi/pFsDJempsF0IAykcXfxmgv3zrEu1uCHpOCGLigiCFYQ3rDNtuZhzZBESIprY1Bdq6g8s9QugJIJFQ+TTvTpAhQzJajlKa8nOMFg04apMG1CHPvMroCSBhcQw81a/2KUuZNsZPS5YGjsuzAb9kzDwGfYfF6J1Sqqa4EKpEWJGhNrW99xPftDcHlgZwSHvYbUNqMPL/BIoSTGWp6rXespKqswwfU2BW9teTZ2ENfQ8Yak5dzhl6JBZzbVL7+6as9ufgZLisZiBiX/hN5E2r/DeJDXMiVHj91LtRGEdrM66CTGjQiF1AXkdalRRmHQIcrYvd16HbZ+O9UxvcgyFVJMNqMy5sgDKXY+FXyMTTgv+Eg2BhoYj/BrWUQm9pLIRGpopIv3D7mzIQ9XsmScroIQ8FgOuv1phHgfvwjvW32/BjZRqvwIKlQDfK0+g+MByLAepYl3OMKAYB1D74mQNFBtYXF7KpakUsFxiqOqseAUokcG7q+qIAtYjD1W3VP9HXCbwp0/JCiiSGMv5b9r/u4MQqP/qk/RZ8zKd4GGDSXZA8cXPctPHYgiW8+lIcaWhyxIoIARArop+fNKJXJCxLZetj1c0SMVBJkabU9ZBg6KaLH6IZET+rYDlwfX9GSyp68rC/gcKtRRHC4+EWgAAAABJRU5ErkJggg=='>\n </div>\n <div class="footerRight">\n <p class="bottomText"><span class="biggerBottomText">©</span>2020 SAP SE, All rights reserved.</p>\n </div>\n </div>\n</body>\n\n</html>\n`},50207:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SapSystem=void 0,t.listSAPSystems=async function listSAPSystems(e){if((0,r.isAppStudio)()){const t={},n=await(0,i.listDestinations)(e);return Object.values(n).sort(((e,t)=>e.Name.localeCompare(t.Name,void 0,{numeric:!0,caseFirst:"lower"}))).forEach((e=>{t[e.Name]=new s.SapSystem(e.Name,{url:e.Host,destination:e.Name,destinationAuthType:e.Authentication,scp:e.WebIDEUsage?.includes("abap_cloud")??!1,destinationAttributes:Object.assign({},e),client:e["sap-client"]})})),t}{const e=await(0,a.getSystemStore)();return function postGetAll({systems:e,store:t}){const n=[];Object.values(e).forEach((e=>{e.isScp()?e.postConnectionCallbackCreator=postConnectionCallbackCreator:!e.userDisplayName&&e.username&&(e.setUserDisplayName(e.username),n.push(e))})),n.length>0&&async function updateUserDisplayNameFor({systems:e,store:t}){return new Promise((n=>setTimeout((async()=>{const i=[];for(const n of e)i.push(t.partialUpdate({url:n.url,client:n.client,update:{userDisplayName:n.userDisplayName}}));await Promise.allSettled(i),n()}),0)))}({systems:n,store:t}).catch();return e}({systems:await e.getAll(),store:e})}},t.isSystemNameInUse=async function isSystemNameInUse(e){const t=await(await(0,a.getSystemStore)()).getAll(),n=e.trim();return-1!==Object.values(t).findIndex((e=>e.name===n||e.bareName===(0,s.stripOldSCPSuffix)(n)))},t.getSapSystem=async function getSapSystem(e,t){if((0,r.isAppStudio)())throw Error("Not supported in AppStudio.");return(await(0,a.getSystemStore)()).get(e,t)},t.newSapSystem=newSapSystem,t.newSapSystemForServiceUrl=function newSapSystemForServiceUrl(e){const t=new o.URL(e);return{system:newSapSystem("temp",t.origin,t.searchParams.get("sap-client"),void 0,!1),servicePath:t.pathname,search:t.search}},t.newSapSystemForSteampunk=function newSapSystemForSteampunk(e,t,n=!1){const i="string"==typeof t?JSON.parse(t):t,r={url:i.url,scp:!0};return new s.SapSystem(e,r,{serviceKeysContents:i},void 0,n,postConnectionCallbackCreator,l.SapSystemType.SteamPunk)},t.newS4HCSystem=function newS4HCSystem({name:e,url:t,unSaved:n=!1}){return new s.SapSystem(e,{url:t,authenticationType:c.AuthenticationType.ReentranceTicket},void 0,void 0,n,postConnectionCallbackCreator,l.SapSystemType.S4HC)},t.newSapSystemForDestinaton=function newSapSystemForDestinaton({destination:e,destinationInstance:t,destinationAuthType:n,credentials:i}){return new s.SapSystem(e,{destination:e,destinationAuthType:n,destinationInstance:t},i,void 0,!1,void 0,l.SapSystemType.BTP)},t.saveSapSystem=async function saveSapSystem(e){const t=await(0,a.getSystemStore)();await t.save(e)},t.deleteSapSystem=async function deleteSapSystem(e){return(await(0,a.getSystemStore)()).delete(e)};const i=n(49122),r=n(75199),s=n(78510);Object.defineProperty(t,"SapSystem",{enumerable:!0,get:function(){return s.SapSystem}});const a=n(26041),o=n(87016),c=n(2218),l=n(3168);function postConnectionCallbackCreator(e){if(!e.isScp())return;let t;return t=e.unSaved?{sync:!0,updateUserInfo:!e.userDisplayName,fn:({user:t,refreshToken:n})=>{t&&e.setUserDisplayName.bind(e)(t),n&&e.setRefreshToken.bind(e)(n)}}:{sync:!1,updateUserInfo:!e.userDisplayName,fn:async({user:t,refreshToken:n})=>{if(t||n){const i={};return t&&(i.userDisplayName=t),n&&(i.refreshToken=n),(await(0,a.getSystemStore)()).partialUpdate({url:e.url,client:e.client,update:i})}}},t}function newSapSystem(e,t,n,i,r=!1){const a=r?i?.username:void 0;return new s.SapSystem(e,{url:t.trim