@sap-ux/generator-odata-downloader 0.3.12 → 0.3.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/generators/app/index.js +2 -2
- package/package.json +7 -7
package/generators/app/index.js
CHANGED
|
@@ -657,7 +657,7 @@ PGHZoN9jcvvvWDLUGtJkEotMgdFpEA2XWR83H4fVFVc=
|
|
|
657
657
|
ABAP Package: ${s?s.Package:r.package}`);let a=this.createConfig(r.transport,n,i),u=this.getAbapFrontendUrl();try{let c=await this.updateRepoRequest(!!s,r.name,o,a);if(c?.headers?.["sap-message"]&&qQ({msg:c.headers["sap-message"],log:this.log,host:u,isDest:this.isDest}),n)jQ({error:VQ(c?.data),log:this.log,host:u,isDest:this.isDest},!1);else{let l="/sap/bc/ui5_ui5"+(r.name.startsWith("/")?"":"/sap/")+r.name.toLowerCase(),f=this.defaults.params?.["sap-client"]?"?sap-client="+this.defaults.params["sap-client"]:"";this.log.info(`App available at ${u}${l}${f}`)}return s&&s.Package!==r.package&&this.log.warn(`Cannot change package assignment from ${s.Package} to ${r.package}.`),c}catch(c){throw lP({error:c,host:u,log:this.log,isDest:this.isDest}),c}}async undeploy({bsp:t,testMode:r=!1}){let n=this.createConfig(t.transport,r),i=this.getAbapFrontendUrl(),s=await this.getInfo(t.name);try{if(s){let o=await this.deleteRepoRequest(t.name,n);return o?.headers?.["sap-message"]&&qQ({msg:o.headers["sap-message"],log:this.log,host:i,isDest:this.isDest}),o}else{this.log.warn(`Application ${t.name} not found, nothing to undeploy.`);return}}catch(o){throw lP({error:o,host:i,log:this.log}),o}}getAbapFrontendUrl(){let t=new URL(this.publicUrl);return jgr.forEach((r,n)=>{t.hostname=t.hostname.replace(n,r)}),`${t.protocol}//${t.host}`}createConfig(t,r,n){let i={"Content-Type":"application/atom+xml",type:"entry",charset:"UTF8"},s={CodePage:"'UTF8'",CondenseMessagesInHttpResponseHeader:"X",format:"json"};return t&&(s.TransportRequest=t),r&&(s.TestMode=!0),n!==void 0&&(s.SafeMode=n),{headers:i,params:s,maxBodyLength:1/0,maxContentLength:1/0}}createPayload(t,r,n,i){let s=t.toString("base64"),o=new Date().toISOString(),a=MUe(r);return`<entry xmlns="http://www.w3.org/2005/Atom" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xml:base="${this.publicUrl}"> <id>${this.publicUrl}/Repositories('${a}')</id> <title type="text">Repositories('${a}')</title> <updated>${o}</updated> <category term="/UI5/ABAP_REPOSITORY_SRV.Repository" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/> <link href="Repositories('${a}')" rel="edit" title="Repository"/> <content type="application/xml"> <m:properties> <d:Name>${a}</d:Name> <d:Package>${i?.toUpperCase()}</d:Package> <d:Description>${MUe(n)}</d:Description> <d:ZipArchive>${s}</d:ZipArchive> <d:Info/> </m:properties> </content></entry>`}async updateRepoRequest(t,r,n,i,s=1){try{s===2&&this.log.warn("Warning: The BSP application deployment timed out while waiting for a response from the backend. This may indicate the deployment was not finished. To resolve this, consider increasing the value of the HTML5.Timeout property for the destination.");let o=t;return s!==1&&(o=await this.getInfo(r)!==void 0),this.log.info(`${r} found on target system: ${o}`),o?await this.put(`/Repositories('${encodeURIComponent(r)}')`,n,i):await this.post("/Repositories",n,i)}catch(o){if([504,408].includes(o?.response?.status)){if(s>=3)throw o;return this.updateRepoRequest(t,r,n,i,s+1)}else{if(i?.params?.TestMode)return o.response;throw o}}}async deleteRepoRequest(t,r,n=1){try{return n===2&&this.log.warn("Warning: retry undeploy to handle a backend rejection..."),await this.delete(`/Repositories('${encodeURIComponent(t)}')`,r)}catch(i){if(i?.response?.status===400){if(n>=2)throw i;return this.deleteRepoRequest(t,r,n+1)}else throw i}}};var UUe=require("node:fs"),mk=require("node:url");var kUe=Te(fZ(),1),gZ;(function(e){e.ON_PREMISE="onPremise",e.CLOUD_READY="cloudReady"})(gZ||(gZ={}));function hZ(e){return typeof e!="string"?`apps/${e.reference}/appVariants/${e.id}/`:e}function Ggr(e){return e.BYTES_PER_ELEMENT!==void 0}var FUe=e=>decodeURIComponent(e.toString());function mZ(e){if(typeof e=="string")try{return JSON.parse(e)}catch{return e}return e}var hk="/dta_folder/",aT=class extends Ca{static PATH="/sap/bc/lrep";log;async getCsrfToken(){try{return await this.get("/actions/getcsrftoken/")}catch(t){throw _c(t)&&this.tryLogResponse(t.response),t}}async mergeAppDescriptorVariant(t,r){let n="/appdescr_variant_preview/",i=new mk.URLSearchParams(this.defaults?.params);r&&i.append("workspacePath",r);try{let s=await this.put(n,t,{paramsSerializer:FUe,params:i,headers:{"Content-Type":"application/zip"}});return JSON.parse(s.data)}catch(s){throw _c(s)&&this.tryLogResponse(s.response),s}}async isExistingVariant(t,r="CUSTOMER_BASE"){try{let n=await this.get(hk,{params:{name:hZ(t),layer:r,timestamp:Date.now()}});return this.tryLogResponse(n),n}catch(n){if(_c(n)&&(this.tryLogResponse(n.response),n.response?.status===404))return n.response;throw n}}async deploy(t,r){let n=Ggr(t)?t:(0,UUe.readFileSync)(t),i=await this.isExistingVariant(r.namespace),s={name:hZ(r.namespace),layer:r.layer??"CUSTOMER_BASE"};s.package=r.package??"$TMP",s.package.toUpperCase()!=="$TMP"&&(s.changelist=r.transport);try{let o=await this.request({method:i.status===200?"PUT":"POST",url:hk,data:n,params:s,headers:{"Content-Type":"application/octet-stream"}});return this.tryLogResponse(o,"Deployment successful."),o}catch(o){throw lP({error:o,log:this.log}),o}}async undeploy(t){if((await this.isExistingVariant(t.namespace)).status!==200)throw new Error("Undeploy failed because the given project does not exist.");let n={name:hZ(t.namespace),layer:t.layer??"CUSTOMER_BASE"};t.transport&&(n.changelist=t.transport);try{let i=await this.delete(hk,{params:n});return this.tryLogResponse(i,"Undeployment successful."),i}catch(i){throw this.log.error("Undeployment failed"),this.log.debug(i),_c(i)&&i.response?.status===405&&this.log.error("Newer version of SAP_UI required, please check https://help.sap.com/docs/bas/developing-sap-fiori-app-in-sap-business-application-studio/delete-adaptation-project"),i}}async listAdaptations(t,r){try{let n=await this.get(`/flex/apps/${encodeURIComponent(t)}/adaptations/?version=${encodeURIComponent(r)}`,{transformResponse:mZ});return this.tryLogResponse(n,`Successfully fetched adaptations for app ${t}`),n.data}catch(n){throw _c(n)&&this.tryLogResponse(n.response),n}}async getKeyUserData(t,r){let n=new mk.URLSearchParams(this.defaults?.params);n.append("adaptationId",encodeURIComponent(r));try{let i=await this.get(`/flex/keyuserdata/${t}`,{params:n,paramsSerializer:FUe,transformResponse:mZ});return this.tryLogResponse(i,`Successfully fetched key user data for component ${t} and ${r} adaptation.`),i.data}catch(i){throw _c(i)&&this.tryLogResponse(i.response),i}}async getFlexVersions(t,r=2,n="EN"){try{let i=new mk.URLSearchParams(this.defaults?.params);i.append("sap-language",n),i.append("limit",r.toString());let s=await this.get(`/flex/versions/${encodeURIComponent(t)}`,{params:i,transformResponse:mZ});return this.tryLogResponse(s,`Successfully fetched flex versions for component ${t}`),s.data}catch(i){throw _c(i)&&this.tryLogResponse(i.response),i}}async getSystemInfo(t="EN",r,n){try{let i={"sap-language":t};r&&(i.package=r),n&&(i["sap-app-id"]=n);let s=await this.get(`${hk}system_info`,{params:i,paramsSerializer:o=>kUe.default.stringify(o,{encode:!1})});return this.tryLogResponse(s,"Successful getting system info."),JSON.parse(s.data)}catch(i){throw this.log.error("Getting system data failed."),this.log.debug(i),i}}tryLogResponse(t,r){try{let n=t.data?JSON.parse(t.data):{};n.result&&this.logMessage(n.result),(n.messages??[]).forEach(i=>{this.logMessage(i)})}catch{r&&this.log.info(r),this.log.warn("Could not parse returned messages.")}}logMessage(t){let r=t.severity==="Error"?io.Error:io.Info;this.log.log({level:r,message:t.text}),(t.details??[]).forEach(n=>{this.log.log({level:r,message:n})})}};var lBe=require("node:path/posix");var gk=class{adtSchema;getAdtCollection(t){if(!this.adtSchema)return null;let r=this.serializeAdtCategory(t);return this.adtSchema[r]}updateSchemaData(t){if(t){this.adtSchema={};let r=t.service.workspace;for(let n of r){let i=n.collection;if(i)if(Array.isArray(i))i.forEach(s=>{s.workspaceTitle=n.title;let o=this.serializeAdtCategory(s.category);this.adtSchema[o]=s});else{let s=i,o=this.serializeAdtCategory(s.category);this.adtSchema[o]=i}}}}isAdtSchemaEmpty(){return!this.adtSchema}serializeAdtCategory(t){return`${t.scheme},${t.term}`}};var BUe=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",Hgr=BUe+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",Wgr="["+BUe+"]["+Hgr+"]*",Ygr=new RegExp("^"+Wgr+"$");function yk(e,t){let r=[],n=t.exec(e);for(;n;){let i=[];i.startIndex=t.lastIndex-n[0].length;let s=n.length;for(let o=0;o<s;o++)i.push(n[o]);r.push(i),n=t.exec(e)}return r}var yZ=function(e){let t=Ygr.exec(e);return!(t===null||typeof t>"u")};function qUe(e){return typeof e<"u"}var AP=["hasOwnProperty","toString","valueOf","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__"],Ek=["__proto__","constructor","prototype"];var zgr={allowBooleanAttributes:!1,unpairedTags:[]};function _k(e,t){t=Object.assign({},zgr,t);let r=[],n=!1,i=!1;e[0]==="\uFEFF"&&(e=e.substr(1));for(let s=0;s<e.length;s++)if(e[s]==="<"&&e[s+1]==="?"){if(s+=2,s=VUe(e,s),s.err)return s}else if(e[s]==="<"){let o=s;if(s++,e[s]==="!"){s=$Ue(e,s);continue}else{let a=!1;e[s]==="/"&&(a=!0,s++);let u="";for(;s<e.length&&e[s]!==">"&&e[s]!==" "&&e[s]!==" "&&e[s]!==`
|
|
658
658
|
`&&e[s]!=="\r";s++)u+=e[s];if(u=u.trim(),u[u.length-1]==="/"&&(u=u.substring(0,u.length-1),s--),!ryr(u)){let f;return u.trim().length===0?f="Invalid space after '<'.":f="Tag '"+u+"' is an invalid name.",bi("InvalidTag",f,Yo(e,s))}let c=Jgr(e,s);if(c===!1)return bi("InvalidAttr","Attributes for '"+u+"' have open quote.",Yo(e,s));let l=c.value;if(s=c.index,l[l.length-1]==="/"){let f=s-l.length;l=l.substring(0,l.length-1);let p=GUe(l,t);if(p===!0)n=!0;else return bi(p.err.code,p.err.msg,Yo(e,f+p.err.line))}else if(a)if(c.tagClosed){if(l.trim().length>0)return bi("InvalidTag","Closing tag '"+u+"' can't have attributes or invalid starting.",Yo(e,o));if(r.length===0)return bi("InvalidTag","Closing tag '"+u+"' has not been opened.",Yo(e,o));{let f=r.pop();if(u!==f.tagName){let p=Yo(e,f.tagStartPos);return bi("InvalidTag","Expected closing tag '"+f.tagName+"' (opened in line "+p.line+", col "+p.col+") instead of closing tag '"+u+"'.",Yo(e,o))}r.length==0&&(i=!0)}}else return bi("InvalidTag","Closing tag '"+u+"' doesn't have proper closing.",Yo(e,s));else{let f=GUe(l,t);if(f!==!0)return bi(f.err.code,f.err.msg,Yo(e,s-l.length+f.err.line));if(i===!0)return bi("InvalidXml","Multiple possible root nodes found.",Yo(e,s));t.unpairedTags.indexOf(u)!==-1||r.push({tagName:u,tagStartPos:o}),n=!0}for(s++;s<e.length;s++)if(e[s]==="<")if(e[s+1]==="!"){s++,s=$Ue(e,s);continue}else if(e[s+1]==="?"){if(s=VUe(e,++s),s.err)return s}else break;else if(e[s]==="&"){let f=eyr(e,s);if(f==-1)return bi("InvalidChar","char '&' is not expected.",Yo(e,s));s=f}else if(i===!0&&!jUe(e[s]))return bi("InvalidXml","Extra text at the end",Yo(e,s));e[s]==="<"&&s--}}else{if(jUe(e[s]))continue;return bi("InvalidChar","char '"+e[s]+"' is not expected.",Yo(e,s))}if(n){if(r.length==1)return bi("InvalidTag","Unclosed tag '"+r[0].tagName+"'.",Yo(e,r[0].tagStartPos));if(r.length>0)return bi("InvalidXml","Invalid '"+JSON.stringify(r.map(s=>s.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1})}else return bi("InvalidXml","Start tag expected.",1);return!0}function jUe(e){return e===" "||e===" "||e===`
|
|
659
659
|
`||e==="\r"}function VUe(e,t){let r=t;for(;t<e.length;t++)if(e[t]=="?"||e[t]==" "){let n=e.substr(r,t-r);if(t>5&&n==="xml")return bi("InvalidXml","XML declaration allowed only at the start of the document.",Yo(e,t));if(e[t]=="?"&&e[t+1]==">"){t++;break}else continue}return t}function $Ue(e,t){if(e.length>t+5&&e[t+1]==="-"&&e[t+2]==="-"){for(t+=3;t<e.length;t++)if(e[t]==="-"&&e[t+1]==="-"&&e[t+2]===">"){t+=2;break}}else if(e.length>t+8&&e[t+1]==="D"&&e[t+2]==="O"&&e[t+3]==="C"&&e[t+4]==="T"&&e[t+5]==="Y"&&e[t+6]==="P"&&e[t+7]==="E"){let r=1;for(t+=8;t<e.length;t++)if(e[t]==="<")r++;else if(e[t]===">"&&(r--,r===0))break}else if(e.length>t+9&&e[t+1]==="["&&e[t+2]==="C"&&e[t+3]==="D"&&e[t+4]==="A"&&e[t+5]==="T"&&e[t+6]==="A"&&e[t+7]==="["){for(t+=8;t<e.length;t++)if(e[t]==="]"&&e[t+1]==="]"&&e[t+2]===">"){t+=2;break}}return t}var Kgr='"',Xgr="'";function Jgr(e,t){let r="",n="",i=!1;for(;t<e.length;t++){if(e[t]===Kgr||e[t]===Xgr)n===""?n=e[t]:n!==e[t]||(n="");else if(e[t]===">"&&n===""){i=!0;break}r+=e[t]}return n!==""?!1:{value:r,index:t,tagClosed:i}}var Qgr=new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,"g");function GUe(e,t){let r=yk(e,Qgr),n={};for(let i=0;i<r.length;i++){if(r[i][1].length===0)return bi("InvalidAttr","Attribute '"+r[i][2]+"' has no space in starting.",xP(r[i]));if(r[i][3]!==void 0&&r[i][4]===void 0)return bi("InvalidAttr","Attribute '"+r[i][2]+"' is without value.",xP(r[i]));if(r[i][3]===void 0&&!t.allowBooleanAttributes)return bi("InvalidAttr","boolean attribute '"+r[i][2]+"' is not allowed.",xP(r[i]));let s=r[i][2];if(!tyr(s))return bi("InvalidAttr","Attribute '"+s+"' is an invalid name.",xP(r[i]));if(!Object.prototype.hasOwnProperty.call(n,s))n[s]=1;else return bi("InvalidAttr","Attribute '"+s+"' is repeated.",xP(r[i]))}return!0}function Zgr(e,t){let r=/\d/;for(e[t]==="x"&&(t++,r=/[\da-fA-F]/);t<e.length;t++){if(e[t]===";")return t;if(!e[t].match(r))break}return-1}function eyr(e,t){if(t++,e[t]===";")return-1;if(e[t]==="#")return t++,Zgr(e,t);let r=0;for(;t<e.length;t++,r++)if(!(e[t].match(/\w/)&&r<20)){if(e[t]===";")break;return-1}return t}function bi(e,t,r){return{err:{code:e,msg:t,line:r.line||r,col:r.col}}}function tyr(e){return yZ(e)}function ryr(e){return yZ(e)}function Yo(e,t){let r=e.substring(0,t).split(/\r?\n/);return{line:r.length,col:r[r.length-1].length+1}}function xP(e){return e.startIndex+e[1].length}var HUe={amp:"&",AMP:"&",lt:"<",LT:"<",gt:">",GT:">",quot:'"',QUOT:'"',apos:"'",lsquo:"\u2018",rsquo:"\u2019",ldquo:"\u201C",rdquo:"\u201D",lsquor:"\u201A",rsquor:"\u2019",ldquor:"\u201E",bdquo:"\u201E",comma:",",period:".",colon:":",semi:";",excl:"!",quest:"?",num:"#",dollar:"$",percent:"%",amp:"&",ast:"*",commat:"@",lowbar:"_",verbar:"|",vert:"|",sol:"/",bsol:"\\",lbrace:"{",rbrace:"}",lbrack:"[",rbrack:"]",lpar:"(",rpar:")",nbsp:"\xA0",iexcl:"\xA1",cent:"\xA2",pound:"\xA3",curren:"\xA4",yen:"\xA5",brvbar:"\xA6",sect:"\xA7",uml:"\xA8",copy:"\xA9",COPY:"\xA9",ordf:"\xAA",laquo:"\xAB",not:"\xAC",shy:"\xAD",reg:"\xAE",REG:"\xAE",macr:"\xAF",deg:"\xB0",plusmn:"\xB1",sup2:"\xB2",sup3:"\xB3",acute:"\xB4",micro:"\xB5",para:"\xB6",middot:"\xB7",cedil:"\xB8",sup1:"\xB9",ordm:"\xBA",raquo:"\xBB",frac14:"\xBC",frac12:"\xBD",half:"\xBD",frac34:"\xBE",iquest:"\xBF",times:"\xD7",div:"\xF7",divide:"\xF7"},WUe={Agrave:"\xC0",agrave:"\xE0",Aacute:"\xC1",aacute:"\xE1",Acirc:"\xC2",acirc:"\xE2",Atilde:"\xC3",atilde:"\xE3",Auml:"\xC4",auml:"\xE4",Aring:"\xC5",aring:"\xE5",AElig:"\xC6",aelig:"\xE6",Ccedil:"\xC7",ccedil:"\xE7",Egrave:"\xC8",egrave:"\xE8",Eacute:"\xC9",eacute:"\xE9",Ecirc:"\xCA",ecirc:"\xEA",Euml:"\xCB",euml:"\xEB",Igrave:"\xCC",igrave:"\xEC",Iacute:"\xCD",iacute:"\xED",Icirc:"\xCE",icirc:"\xEE",Iuml:"\xCF",iuml:"\xEF",ETH:"\xD0",eth:"\xF0",Ntilde:"\xD1",ntilde:"\xF1",Ograve:"\xD2",ograve:"\xF2",Oacute:"\xD3",oacute:"\xF3",Ocirc:"\xD4",ocirc:"\xF4",Otilde:"\xD5",otilde:"\xF5",Ouml:"\xD6",ouml:"\xF6",Oslash:"\xD8",oslash:"\xF8",Ugrave:"\xD9",ugrave:"\xF9",Uacute:"\xDA",uacute:"\xFA",Ucirc:"\xDB",ucirc:"\xFB",Uuml:"\xDC",uuml:"\xFC",Yacute:"\xDD",yacute:"\xFD",THORN:"\xDE",thorn:"\xFE",szlig:"\xDF",yuml:"\xFF",Yuml:"\u0178"},YUe={Amacr:"\u0100",amacr:"\u0101",Abreve:"\u0102",abreve:"\u0103",Aogon:"\u0104",aogon:"\u0105",Cacute:"\u0106",cacute:"\u0107",Ccirc:"\u0108",ccirc:"\u0109",Cdot:"\u010A",cdot:"\u010B",Ccaron:"\u010C",ccaron:"\u010D",Dcaron:"\u010E",dcaron:"\u010F",Dstrok:"\u0110",dstrok:"\u0111",Emacr:"\u0112",emacr:"\u0113",Ecaron:"\u011A",ecaron:"\u011B",Edot:"\u0116",edot:"\u0117",Eogon:"\u0118",eogon:"\u0119",Gcirc:"\u011C",gcirc:"\u011D",Gbreve:"\u011E",gbreve:"\u011F",Gdot:"\u0120",gdot:"\u0121",Gcedil:"\u0122",Hcirc:"\u0124",hcirc:"\u0125",Hstrok:"\u0126",hstrok:"\u0127",Itilde:"\u0128",itilde:"\u0129",Imacr:"\u012A",imacr:"\u012B",Iogon:"\u012E",iogon:"\u012F",Idot:"\u0130",IJlig:"\u0132",ijlig:"\u0133",Jcirc:"\u0134",jcirc:"\u0135",Kcedil:"\u0136",kcedil:"\u0137",kgreen:"\u0138",Lacute:"\u0139",lacute:"\u013A",Lcedil:"\u013B",lcedil:"\u013C",Lcaron:"\u013D",lcaron:"\u013E",Lmidot:"\u013F",lmidot:"\u0140",Lstrok:"\u0141",lstrok:"\u0142",Nacute:"\u0143",nacute:"\u0144",Ncaron:"\u0147",ncaron:"\u0148",Ncedil:"\u0145",ncedil:"\u0146",ENG:"\u014A",eng:"\u014B",Omacr:"\u014C",omacr:"\u014D",Odblac:"\u0150",odblac:"\u0151",OElig:"\u0152",oelig:"\u0153",Racute:"\u0154",racute:"\u0155",Rcaron:"\u0158",rcaron:"\u0159",Rcedil:"\u0156",rcedil:"\u0157",Sacute:"\u015A",sacute:"\u015B",Scirc:"\u015C",scirc:"\u015D",Scedil:"\u015E",scedil:"\u015F",Scaron:"\u0160",scaron:"\u0161",Tcedil:"\u0162",tcedil:"\u0163",Tcaron:"\u0164",tcaron:"\u0165",Tstrok:"\u0166",tstrok:"\u0167",Utilde:"\u0168",utilde:"\u0169",Umacr:"\u016A",umacr:"\u016B",Ubreve:"\u016C",ubreve:"\u016D",Uring:"\u016E",uring:"\u016F",Udblac:"\u0170",udblac:"\u0171",Uogon:"\u0172",uogon:"\u0173",Wcirc:"\u0174",wcirc:"\u0175",Ycirc:"\u0176",ycirc:"\u0177",Zacute:"\u0179",zacute:"\u017A",Zdot:"\u017B",zdot:"\u017C",Zcaron:"\u017D",zcaron:"\u017E"},zUe={Alpha:"\u0391",alpha:"\u03B1",Beta:"\u0392",beta:"\u03B2",Gamma:"\u0393",gamma:"\u03B3",Delta:"\u0394",delta:"\u03B4",Epsilon:"\u0395",epsilon:"\u03B5",epsiv:"\u03F5",varepsilon:"\u03F5",Zeta:"\u0396",zeta:"\u03B6",Eta:"\u0397",eta:"\u03B7",Theta:"\u0398",theta:"\u03B8",thetasym:"\u03D1",vartheta:"\u03D1",Iota:"\u0399",iota:"\u03B9",Kappa:"\u039A",kappa:"\u03BA",kappav:"\u03F0",varkappa:"\u03F0",Lambda:"\u039B",lambda:"\u03BB",Mu:"\u039C",mu:"\u03BC",Nu:"\u039D",nu:"\u03BD",Xi:"\u039E",xi:"\u03BE",Omicron:"\u039F",omicron:"\u03BF",Pi:"\u03A0",pi:"\u03C0",piv:"\u03D6",varpi:"\u03D6",Rho:"\u03A1",rho:"\u03C1",rhov:"\u03F1",varrho:"\u03F1",Sigma:"\u03A3",sigma:"\u03C3",sigmaf:"\u03C2",sigmav:"\u03C2",varsigma:"\u03C2",Tau:"\u03A4",tau:"\u03C4",Upsilon:"\u03A5",upsilon:"\u03C5",upsi:"\u03C5",Upsi:"\u03D2",upsih:"\u03D2",Phi:"\u03A6",phi:"\u03C6",phiv:"\u03D5",varphi:"\u03D5",Chi:"\u03A7",chi:"\u03C7",Psi:"\u03A8",psi:"\u03C8",Omega:"\u03A9",omega:"\u03C9",ohm:"\u03A9",Gammad:"\u03DC",gammad:"\u03DD",digamma:"\u03DD"},KUe={Afr:"\u{1D504}",afr:"\u{1D51E}",Acy:"\u0410",acy:"\u0430",Bcy:"\u0411",bcy:"\u0431",Vcy:"\u0412",vcy:"\u0432",Gcy:"\u0413",gcy:"\u0433",Dcy:"\u0414",dcy:"\u0434",IEcy:"\u0415",iecy:"\u0435",IOcy:"\u0401",iocy:"\u0451",ZHcy:"\u0416",zhcy:"\u0436",Zcy:"\u0417",zcy:"\u0437",Icy:"\u0418",icy:"\u0438",Jcy:"\u0419",jcy:"\u0439",Kcy:"\u041A",kcy:"\u043A",Lcy:"\u041B",lcy:"\u043B",Mcy:"\u041C",mcy:"\u043C",Ncy:"\u041D",ncy:"\u043D",Ocy:"\u041E",ocy:"\u043E",Pcy:"\u041F",pcy:"\u043F",Rcy:"\u0420",rcy:"\u0440",Scy:"\u0421",scy:"\u0441",Tcy:"\u0422",tcy:"\u0442",Ucy:"\u0423",ucy:"\u0443",Fcy:"\u0424",fcy:"\u0444",KHcy:"\u0425",khcy:"\u0445",TScy:"\u0426",tscy:"\u0446",CHcy:"\u0427",chcy:"\u0447",SHcy:"\u0428",shcy:"\u0448",SHCHcy:"\u0429",shchcy:"\u0449",HARDcy:"\u042A",hardcy:"\u044A",Ycy:"\u042B",ycy:"\u044B",SOFTcy:"\u042C",softcy:"\u044C",Ecy:"\u042D",ecy:"\u044D",YUcy:"\u042E",yucy:"\u044E",YAcy:"\u042F",yacy:"\u044F",DJcy:"\u0402",djcy:"\u0452",GJcy:"\u0403",gjcy:"\u0453",Jukcy:"\u0404",jukcy:"\u0454",DScy:"\u0405",dscy:"\u0455",Iukcy:"\u0406",iukcy:"\u0456",YIcy:"\u0407",yicy:"\u0457",Jsercy:"\u0408",jsercy:"\u0458",LJcy:"\u0409",ljcy:"\u0459",NJcy:"\u040A",njcy:"\u045A",TSHcy:"\u040B",tshcy:"\u045B",KJcy:"\u040C",kjcy:"\u045C",Ubrcy:"\u040E",ubrcy:"\u045E",DZcy:"\u040F",dzcy:"\u045F"},XUe={plus:"+",minus:"\u2212",mnplus:"\u2213",mp:"\u2213",pm:"\xB1",times:"\xD7",div:"\xF7",divide:"\xF7",sdot:"\u22C5",star:"\u2606",starf:"\u2605",bigstar:"\u2605",lowast:"\u2217",ast:"*",midast:"*",compfn:"\u2218",smallcircle:"\u2218",bullet:"\u2022",bull:"\u2022",nbsp:"\xA0",hellip:"\u2026",mldr:"\u2026",prime:"\u2032",Prime:"\u2033",tprime:"\u2034",bprime:"\u2035",backprime:"\u2035",minus:"\u2212",minusd:"\u2238",dotminus:"\u2238",plusdo:"\u2214",dotplus:"\u2214",plusmn:"\xB1",minusplus:"\u2213",mnplus:"\u2213",mp:"\u2213",setminus:"\u2216",smallsetminus:"\u2216",Backslash:"\u2216",setmn:"\u2216",ssetmn:"\u2216",lowbar:"_",verbar:"|",vert:"|",VerticalLine:"|",colon:":",Colon:"\u2237",Proportion:"\u2237",ratio:"\u2236",equals:"=",ne:"\u2260",nequiv:"\u2262",equiv:"\u2261",Congruent:"\u2261",sim:"\u223C",thicksim:"\u223C",thksim:"\u223C",sime:"\u2243",simeq:"\u2243",TildeEqual:"\u2243",asymp:"\u2248",approx:"\u2248",thickapprox:"\u2248",thkap:"\u2248",TildeTilde:"\u2248",ncong:"\u2247",cong:"\u2245",TildeFullEqual:"\u2245",asympeq:"\u224D",CupCap:"\u224D",bump:"\u224E",Bumpeq:"\u224E",HumpDownHump:"\u224E",bumpe:"\u224F",bumpeq:"\u224F",HumpEqual:"\u224F",dotminus:"\u2238",minusd:"\u2238",plusdo:"\u2214",dotplus:"\u2214",le:"\u2264",LessEqual:"\u2264",ge:"\u2265",GreaterEqual:"\u2265",lesseqgtr:"\u22DA",lesseqqgtr:"\u2A8B",greater:">",less:"<"},JUe={alefsym:"\u2135",aleph:"\u2135",beth:"\u2136",gimel:"\u2137",daleth:"\u2138",forall:"\u2200",ForAll:"\u2200",part:"\u2202",PartialD:"\u2202",exist:"\u2203",Exists:"\u2203",nexist:"\u2204",nexists:"\u2204",empty:"\u2205",emptyset:"\u2205",emptyv:"\u2205",varnothing:"\u2205",nabla:"\u2207",Del:"\u2207",isin:"\u2208",isinv:"\u2208",in:"\u2208",Element:"\u2208",notin:"\u2209",notinva:"\u2209",ni:"\u220B",niv:"\u220B",SuchThat:"\u220B",ReverseElement:"\u220B",notni:"\u220C",notniva:"\u220C",prod:"\u220F",Product:"\u220F",coprod:"\u2210",Coproduct:"\u2210",sum:"\u2211",Sum:"\u2211",minus:"\u2212",mp:"\u2213",plusdo:"\u2214",dotplus:"\u2214",setminus:"\u2216",lowast:"\u2217",radic:"\u221A",Sqrt:"\u221A",prop:"\u221D",propto:"\u221D",Proportional:"\u221D",varpropto:"\u221D",infin:"\u221E",infintie:"\u29DD",ang:"\u2220",angle:"\u2220",angmsd:"\u2221",measuredangle:"\u2221",angsph:"\u2222",mid:"\u2223",VerticalBar:"\u2223",nmid:"\u2224",nsmid:"\u2224",npar:"\u2226",parallel:"\u2225",spar:"\u2225",nparallel:"\u2226",nspar:"\u2226",and:"\u2227",wedge:"\u2227",or:"\u2228",vee:"\u2228",cap:"\u2229",cup:"\u222A",int:"\u222B",Integral:"\u222B",conint:"\u222E",ContourIntegral:"\u222E",Conint:"\u222F",DoubleContourIntegral:"\u222F",Cconint:"\u2230",there4:"\u2234",therefore:"\u2234",Therefore:"\u2234",becaus:"\u2235",because:"\u2235",Because:"\u2235",ratio:"\u2236",Proportion:"\u2237",minusd:"\u2238",dotminus:"\u2238",mDDot:"\u223A",homtht:"\u223B",sim:"\u223C",bsimg:"\u223D",backsim:"\u223D",ac:"\u223E",mstpos:"\u223E",acd:"\u223F",VerticalTilde:"\u2240",wr:"\u2240",wreath:"\u2240",nsime:"\u2244",nsimeq:"\u2244",nsimeq:"\u2244",ncong:"\u2247",simne:"\u2246",ncongdot:"\u2A6D\u0338",ngsim:"\u2275",nsim:"\u2241",napprox:"\u2249",nap:"\u2249",ngeq:"\u2271",nge:"\u2271",nleq:"\u2270",nle:"\u2270",ngtr:"\u226F",ngt:"\u226F",nless:"\u226E",nlt:"\u226E",nprec:"\u2280",npr:"\u2280",nsucc:"\u2281",nsc:"\u2281"},QUe={larr:"\u2190",leftarrow:"\u2190",LeftArrow:"\u2190",uarr:"\u2191",uparrow:"\u2191",UpArrow:"\u2191",rarr:"\u2192",rightarrow:"\u2192",RightArrow:"\u2192",darr:"\u2193",downarrow:"\u2193",DownArrow:"\u2193",harr:"\u2194",leftrightarrow:"\u2194",LeftRightArrow:"\u2194",varr:"\u2195",updownarrow:"\u2195",UpDownArrow:"\u2195",nwarr:"\u2196",nwarrow:"\u2196",UpperLeftArrow:"\u2196",nearr:"\u2197",nearrow:"\u2197",UpperRightArrow:"\u2197",searr:"\u2198",searrow:"\u2198",LowerRightArrow:"\u2198",swarr:"\u2199",swarrow:"\u2199",LowerLeftArrow:"\u2199",lArr:"\u21D0",Leftarrow:"\u21D0",uArr:"\u21D1",Uparrow:"\u21D1",rArr:"\u21D2",Rightarrow:"\u21D2",dArr:"\u21D3",Downarrow:"\u21D3",hArr:"\u21D4",Leftrightarrow:"\u21D4",iff:"\u21D4",vArr:"\u21D5",Updownarrow:"\u21D5",lAarr:"\u21DA",Lleftarrow:"\u21DA",rAarr:"\u21DB",Rrightarrow:"\u21DB",lrarr:"\u21C6",leftrightarrows:"\u21C6",rlarr:"\u21C4",rightleftarrows:"\u21C4",lrhar:"\u21CB",leftrightharpoons:"\u21CB",ReverseEquilibrium:"\u21CB",rlhar:"\u21CC",rightleftharpoons:"\u21CC",Equilibrium:"\u21CC",udarr:"\u21C5",UpArrowDownArrow:"\u21C5",duarr:"\u21F5",DownArrowUpArrow:"\u21F5",llarr:"\u21C7",leftleftarrows:"\u21C7",rrarr:"\u21C9",rightrightarrows:"\u21C9",ddarr:"\u21CA",downdownarrows:"\u21CA",har:"\u21BD",lhard:"\u21BD",leftharpoondown:"\u21BD",lharu:"\u21BC",leftharpoonup:"\u21BC",rhard:"\u21C1",rightharpoondown:"\u21C1",rharu:"\u21C0",rightharpoonup:"\u21C0",lsh:"\u21B0",Lsh:"\u21B0",rsh:"\u21B1",Rsh:"\u21B1",ldsh:"\u21B2",rdsh:"\u21B3",hookleftarrow:"\u21A9",hookrightarrow:"\u21AA",mapstoleft:"\u21A4",mapstoup:"\u21A5",map:"\u21A6",mapsto:"\u21A6",mapstodown:"\u21A7",crarr:"\u21B5",nwarrow:"\u2196",nearrow:"\u2197",searrow:"\u2198",swarrow:"\u2199",nleftarrow:"\u219A",nleftrightarrow:"\u21AE",nrightarrow:"\u219B",nrarr:"\u219B",larrtl:"\u21A2",rarrtl:"\u21A3",leftarrowtail:"\u21A2",rightarrowtail:"\u21A3",twoheadleftarrow:"\u219E",twoheadrightarrow:"\u21A0",Larr:"\u219E",Rarr:"\u21A0",larrhk:"\u21A9",rarrhk:"\u21AA",larrlp:"\u21AB",looparrowleft:"\u21AB",rarrlp:"\u21AC",looparrowright:"\u21AC",harrw:"\u21AD",leftrightsquigarrow:"\u21AD",nrarrw:"\u219D\u0338",rarrw:"\u219D",rightsquigarrow:"\u219D",larrbfs:"\u291F",rarrbfs:"\u2920",nvHarr:"\u2904",nvlArr:"\u2902",nvrArr:"\u2903",larrfs:"\u291D",rarrfs:"\u291E",Map:"\u2905",larrsim:"\u2973",rarrsim:"\u2974",harrcir:"\u2948",Uarrocir:"\u2949",lurdshar:"\u294A",ldrdhar:"\u2967",ldrushar:"\u294B",rdldhar:"\u2969",lrhard:"\u296D",rlhar:"\u21CC",uharr:"\u21BE",uharl:"\u21BF",dharr:"\u21C2",dharl:"\u21C3",Uarr:"\u219F",Darr:"\u21A1",zigrarr:"\u21DD",nwArr:"\u21D6",neArr:"\u21D7",seArr:"\u21D8",swArr:"\u21D9",nharr:"\u21AE",nhArr:"\u21CE",nlarr:"\u219A",nlArr:"\u21CD",nrarr:"\u219B",nrArr:"\u21CF",larrb:"\u21E4",LeftArrowBar:"\u21E4",rarrb:"\u21E5",RightArrowBar:"\u21E5"},ZUe={square:"\u25A1",Square:"\u25A1",squ:"\u25A1",squf:"\u25AA",squarf:"\u25AA",blacksquar:"\u25AA",blacksquare:"\u25AA",FilledVerySmallSquare:"\u25AA",blk34:"\u2593",blk12:"\u2592",blk14:"\u2591",block:"\u2588",srect:"\u25AD",rect:"\u25AD",sdot:"\u22C5",sdotb:"\u22A1",dotsquare:"\u22A1",triangle:"\u25B5",tri:"\u25B5",trine:"\u25B5",utri:"\u25B5",triangledown:"\u25BF",dtri:"\u25BF",tridown:"\u25BF",triangleleft:"\u25C3",ltri:"\u25C3",triangleright:"\u25B9",rtri:"\u25B9",blacktriangle:"\u25B4",utrif:"\u25B4",blacktriangledown:"\u25BE",dtrif:"\u25BE",blacktriangleleft:"\u25C2",ltrif:"\u25C2",blacktriangleright:"\u25B8",rtrif:"\u25B8",loz:"\u25CA",lozenge:"\u25CA",blacklozenge:"\u29EB",lozf:"\u29EB",bigcirc:"\u25EF",xcirc:"\u25EF",circ:"\u02C6",Circle:"\u25CB",cir:"\u25CB",o:"\u25CB",bullet:"\u2022",bull:"\u2022",hellip:"\u2026",mldr:"\u2026",nldr:"\u2025",boxh:"\u2500",HorizontalLine:"\u2500",boxv:"\u2502",boxdr:"\u250C",boxdl:"\u2510",boxur:"\u2514",boxul:"\u2518",boxvr:"\u251C",boxvl:"\u2524",boxhd:"\u252C",boxhu:"\u2534",boxvh:"\u253C",boxH:"\u2550",boxV:"\u2551",boxdR:"\u2552",boxDr:"\u2553",boxDR:"\u2554",boxDl:"\u2555",boxdL:"\u2556",boxDL:"\u2557",boxuR:"\u2558",boxUr:"\u2559",boxUR:"\u255A",boxUl:"\u255C",boxuL:"\u255B",boxUL:"\u255D",boxvR:"\u255E",boxVr:"\u255F",boxVR:"\u2560",boxVl:"\u2562",boxvL:"\u2561",boxVL:"\u2563",boxHd:"\u2564",boxhD:"\u2565",boxHD:"\u2566",boxHu:"\u2567",boxhU:"\u2568",boxHU:"\u2569",boxvH:"\u256A",boxVh:"\u256B",boxVH:"\u256C"},eke={excl:"!",iexcl:"\xA1",brvbar:"\xA6",sect:"\xA7",uml:"\xA8",copy:"\xA9",ordf:"\xAA",laquo:"\xAB",not:"\xAC",shy:"\xAD",reg:"\xAE",macr:"\xAF",deg:"\xB0",plusmn:"\xB1",sup2:"\xB2",sup3:"\xB3",acute:"\xB4",micro:"\xB5",para:"\xB6",middot:"\xB7",cedil:"\xB8",sup1:"\xB9",ordm:"\xBA",raquo:"\xBB",frac14:"\xBC",frac12:"\xBD",frac34:"\xBE",iquest:"\xBF",nbsp:"\xA0",comma:",",period:".",colon:":",semi:";",vert:"|",Verbar:"\u2016",verbar:"|",dblac:"\u02DD",circ:"\u02C6",caron:"\u02C7",breve:"\u02D8",dot:"\u02D9",ring:"\u02DA",ogon:"\u02DB",tilde:"\u02DC",DiacriticalGrave:"`",DiacriticalAcute:"\xB4",DiacriticalTilde:"\u02DC",DiacriticalDot:"\u02D9",DiacriticalDoubleAcute:"\u02DD",grave:"`",acute:"\xB4"},vk={cent:"\xA2",pound:"\xA3",curren:"\xA4",yen:"\xA5",euro:"\u20AC",dollar:"$",euro:"\u20AC",fnof:"\u0192",inr:"\u20B9",af:"\u060B",birr:"\u1265\u122D",peso:"\u20B1",rub:"\u20BD",won:"\u20A9",yuan:"\xA5",cedil:"\xB8"},tke={frac12:"\xBD",half:"\xBD",frac13:"\u2153",frac14:"\xBC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\xBE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044"},rke={trade:"\u2122",TRADE:"\u2122",telrec:"\u2315",target:"\u2316",ulcorn:"\u231C",ulcorner:"\u231C",urcorn:"\u231D",urcorner:"\u231D",dlcorn:"\u231E",llcorner:"\u231E",drcorn:"\u231F",lrcorner:"\u231F",intercal:"\u22BA",intcal:"\u22BA",oplus:"\u2295",CirclePlus:"\u2295",ominus:"\u2296",CircleMinus:"\u2296",otimes:"\u2297",CircleTimes:"\u2297",osol:"\u2298",odot:"\u2299",CircleDot:"\u2299",oast:"\u229B",circledast:"\u229B",odash:"\u229D",circleddash:"\u229D",ocirc:"\u229A",circledcirc:"\u229A",boxplus:"\u229E",plusb:"\u229E",boxminus:"\u229F",minusb:"\u229F",boxtimes:"\u22A0",timesb:"\u22A0",boxdot:"\u22A1",sdotb:"\u22A1",veebar:"\u22BB",vee:"\u2228",barvee:"\u22BD",and:"\u2227",wedge:"\u2227",Cap:"\u22D2",Cup:"\u22D3",Fork:"\u22D4",pitchfork:"\u22D4",epar:"\u22D5",ltlarr:"\u2976",nvap:"\u224D\u20D2",nvsim:"\u223C\u20D2",nvge:"\u2265\u20D2",nvle:"\u2264\u20D2",nvlt:"<\u20D2",nvgt:">\u20D2",nvltrie:"\u22B4\u20D2",nvrtrie:"\u22B5\u20D2",Vdash:"\u22A9",dashv:"\u22A3",vDash:"\u22A8",Vdash:"\u22A9",Vvdash:"\u22AA",nvdash:"\u22AC",nvDash:"\u22AD",nVdash:"\u22AE",nVDash:"\u22AF"},nyr={...HUe,...WUe,...YUe,...zUe,...KUe,...XUe,...JUe,...QUe,...ZUe,...eke,...vk,...tke,...rke},wP={amp:"&",apos:"'",gt:">",lt:"<",quot:'"'},EZ={nbsp:"\xA0",copy:"\xA9",reg:"\xAE",trade:"\u2122",mdash:"\u2014",ndash:"\u2013",hellip:"\u2026",laquo:"\xAB",raquo:"\xBB",lsquo:"\u2018",rsquo:"\u2019",ldquo:"\u201C",rdquo:"\u201D",bull:"\u2022",para:"\xB6",sect:"\xA7",deg:"\xB0",frac12:"\xBD",frac14:"\xBC",frac34:"\xBE"};var iyr=new Set("!?\\\\/[]$%{}^&*()<>|+");function nke(e){if(e[0]==="#")throw new Error(`[EntityReplacer] Invalid character '#' in entity name: "${e}"`);for(let t of e)if(iyr.has(t))throw new Error(`[EntityReplacer] Invalid character '${t}' in entity name: "${e}"`);return e}function _Z(...e){let t=Object.create(null);for(let r of e)if(r)for(let n of Object.keys(r)){let i=r[n];if(typeof i=="string")t[n]=i;else if(i&&typeof i=="object"&&i.val!==void 0){let s=i.val;typeof s=="string"&&(t[n]=s)}}return t}var QE="external",Sk="base",vZ="all";function syr(e){return!e||e===QE?new Set([QE]):e===vZ?new Set([vZ]):e===Sk?new Set([Sk]):Array.isArray(e)?new Set(e):new Set([QE])}var Ma=Object.freeze({allow:0,leave:1,remove:2,throw:3}),oyr=new Set([9,10,13]);function ayr(e){if(!e)return{xmlVersion:1,onLevel:Ma.allow,nullLevel:Ma.remove};let t=e.xmlVersion===1.1?1.1:1,r=Ma[e.onNCR]??Ma.allow,n=Ma[e.nullNCR]??Ma.remove,i=Math.max(n,Ma.remove);return{xmlVersion:t,onLevel:r,nullLevel:i}}var uT=class{constructor(t={}){this._limit=t.limit||{},this._maxTotalExpansions=this._limit.maxTotalExpansions||0,this._maxExpandedLength=this._limit.maxExpandedLength||0,this._postCheck=typeof t.postCheck=="function"?t.postCheck:n=>n,this._limitTiers=syr(this._limit.applyLimitsTo??QE),this._numericAllowed=t.numericAllowed??!0,this._baseMap=_Z(wP,t.namedEntities||null),this._externalMap=Object.create(null),this._inputMap=Object.create(null),this._totalExpansions=0,this._expandedLength=0,this._removeSet=new Set(t.remove&&Array.isArray(t.remove)?t.remove:[]),this._leaveSet=new Set(t.leave&&Array.isArray(t.leave)?t.leave:[]);let r=ayr(t.ncr);this._ncrXmlVersion=r.xmlVersion,this._ncrOnLevel=r.onLevel,this._ncrNullLevel=r.nullLevel}setExternalEntities(t){if(t)for(let r of Object.keys(t))nke(r);this._externalMap=_Z(t)}addExternalEntity(t,r){nke(t),typeof r=="string"&&r.indexOf("&")===-1&&(this._externalMap[t]=r)}addInputEntities(t){this._totalExpansions=0,this._expandedLength=0,this._inputMap=_Z(t)}reset(){return this._inputMap=Object.create(null),this._totalExpansions=0,this._expandedLength=0,this}setXmlVersion(t){this._ncrXmlVersion=t===1.1?1.1:1}decode(t){if(typeof t!="string"||t.length===0)return t;let r=t,n=[],i=t.length,s=0,o=0,a=this._maxTotalExpansions>0,u=this._maxExpandedLength>0,c=a||u;for(;o<i;){if(t.charCodeAt(o)!==38){o++;continue}let f=o+1;for(;f<i&&t.charCodeAt(f)!==59&&f-o<=32;)f++;if(f>=i||t.charCodeAt(f)!==59){o++;continue}let p=t.slice(o+1,f);if(p.length===0){o++;continue}let d,h;if(this._removeSet.has(p))d="",h===void 0&&(h=QE);else if(this._leaveSet.has(p)){o++;continue}else if(p.charCodeAt(0)===35){let g=this._resolveNCR(p);if(g===void 0){o++;continue}d=g,h=Sk}else{let g=this._resolveName(p);d=g?.value,h=g?.tier}if(d===void 0){o++;continue}if(o>s&&n.push(t.slice(s,o)),n.push(d),s=f+1,o=s,c&&this._tierCounts(h)){if(a&&(this._totalExpansions++,this._totalExpansions>this._maxTotalExpansions))throw new Error(`[EntityReplacer] Entity expansion count limit exceeded: ${this._totalExpansions} > ${this._maxTotalExpansions}`);if(u){let g=d.length-(p.length+2);if(g>0&&(this._expandedLength+=g,this._expandedLength>this._maxExpandedLength))throw new Error(`[EntityReplacer] Expanded content length limit exceeded: ${this._expandedLength} > ${this._maxExpandedLength}`)}}}s<i&&n.push(t.slice(s));let l=n.length===0?t:n.join("");return this._postCheck(l,r)}_tierCounts(t){return this._limitTiers.has(vZ)?!0:this._limitTiers.has(t)}_resolveName(t){if(t in this._inputMap)return{value:this._inputMap[t],tier:QE};if(t in this._externalMap)return{value:this._externalMap[t],tier:QE};if(t in this._baseMap)return{value:this._baseMap[t],tier:Sk}}_classifyNCR(t){return t===0?this._ncrNullLevel:t>=55296&&t<=57343||this._ncrXmlVersion===1&&t>=1&&t<=31&&!oyr.has(t)?Ma.remove:-1}_applyNCRAction(t,r,n){switch(t){case Ma.allow:return String.fromCodePoint(n);case Ma.remove:return"";case Ma.leave:return;case Ma.throw:throw new Error(`[EntityDecoder] Prohibited numeric character reference &${r}; (U+${n.toString(16).toUpperCase().padStart(4,"0")})`);default:return String.fromCodePoint(n)}}_resolveNCR(t){let r=t.charCodeAt(1),n;if(r===120||r===88?n=parseInt(t.slice(2),16):n=parseInt(t.slice(1),10),Number.isNaN(n)||n<0||n>1114111)return;let i=this._classifyNCR(n);if(!this._numericAllowed&&i<Ma.remove)return;let s=i===-1?this._ncrOnLevel:Math.max(this._ncrOnLevel,i);return this._applyNCRAction(s,t,n)}};var ike=e=>AP.includes(e)?"__"+e:e,uyr={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,entityDecoder:null,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,r){return e},captureMetaData:!1,maxNestedTags:100,strictReservedNames:!0,jPath:!0,onDangerousProperty:ike};function cyr(e,t){if(typeof e!="string")return;let r=e.toLowerCase();if(AP.some(n=>r===n.toLowerCase()))throw new Error(`[SECURITY] Invalid ${t}: "${e}" is a reserved JavaScript keyword that could cause prototype pollution`);if(Ek.some(n=>r===n.toLowerCase()))throw new Error(`[SECURITY] Invalid ${t}: "${e}" is a reserved JavaScript keyword that could cause prototype pollution`)}function ske(e,t){return typeof e=="boolean"?{enabled:e,maxEntitySize:1e4,maxExpansionDepth:1e4,maxTotalExpansions:1/0,maxExpandedLength:1e5,maxEntityCount:1e3,allowedTags:null,tagFilter:null,appliesTo:"all"}:typeof e=="object"&&e!==null?{enabled:e.enabled!==!1,maxEntitySize:Math.max(1,e.maxEntitySize??1e4),maxExpansionDepth:Math.max(1,e.maxExpansionDepth??1e4),maxTotalExpansions:Math.max(1,e.maxTotalExpansions??1/0),maxExpandedLength:Math.max(1,e.maxExpandedLength??1e5),maxEntityCount:Math.max(1,e.maxEntityCount??1e3),allowedTags:e.allowedTags??null,tagFilter:e.tagFilter??null,appliesTo:e.appliesTo??"all"}:ske(!0)}var oke=function(e){let t=Object.assign({},uyr,e),r=[{value:t.attributeNamePrefix,name:"attributeNamePrefix"},{value:t.attributesGroupName,name:"attributesGroupName"},{value:t.textNodeName,name:"textNodeName"},{value:t.cdataPropName,name:"cdataPropName"},{value:t.commentPropName,name:"commentPropName"}];for(let{value:n,name:i}of r)n&&cyr(n,i);return t.onDangerousProperty===null&&(t.onDangerousProperty=ike),t.processEntities=ske(t.processEntities,t.htmlEntities),t.unpairedTagsSet=new Set(t.unpairedTags),t.stopNodes&&Array.isArray(t.stopNodes)&&(t.stopNodes=t.stopNodes.map(n=>typeof n=="string"&&n.startsWith("*.")?".."+n.substring(2):n)),t};var Tk;typeof Symbol!="function"?Tk="@@xmlMetadata":Tk=Symbol("XML Node Metadata");var Fa=class{constructor(t){this.tagname=t,this.child=[],this[":@"]=Object.create(null)}add(t,r){t==="__proto__"&&(t="#__proto__"),this.child.push({[t]:r})}addChild(t,r){t.tagname==="__proto__"&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child}),r!==void 0&&(this.child[this.child.length-1][Tk]={startIndex:r})}static getMetaDataSymbol(){return Tk}};var ake=":A-Za-z_\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u0486\u0488-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD",lyr=ake+"\\-\\.\\d\xB7\u0300-\u036F\u203F-\u2040",uke=":A-Za-z_\xC0-\u02FF\u0370-\u037D\u037F-\u0486\u0488-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u{10000}-\u{EFFFF}",fyr=uke+"\\-\\.\\d\xB7\u0300-\u036F\u0487\u203F-\u2040",cke=(e,t,r="")=>{let n=e.replace(":",""),i=t.replace(":",""),s=`[${n}][${i}]*`;return{name:new RegExp(`^[${e}][${t}]*$`,r),ncName:new RegExp(`^${s}$`,r),qName:new RegExp(`^${s}(?::${s})?$`,r),nmToken:new RegExp(`^[${t}]+$`,r),nmTokens:new RegExp(`^[${t}]+(?:\\s+[${t}]+)*$`,r)}},pyr=cke(ake,lyr),dyr=cke(uke,fyr,"u"),hyr=(e="1.0")=>e==="1.1"?dyr:pyr;var SZ=(e,{xmlVersion:t="1.0"}={})=>hyr(t).qName.test(e);var CP=class{constructor(t,r){this.suppressValidationErr=!t,this.options=t,this.xmlVersion=r||1}setXmlVersion(t=1){this.xmlVersion=t}readDocType(t,r){let n=Object.create(null),i=0;if(t[r+3]==="O"&&t[r+4]==="C"&&t[r+5]==="T"&&t[r+6]==="Y"&&t[r+7]==="P"&&t[r+8]==="E"){r=r+9;let s=1,o=!1,a=!1,u="";for(;r<t.length;r++)if(t[r]==="<"&&!a){if(o&&ZE(t,"!ENTITY",r)){r+=7;let c,l;if([c,l,r]=this.readEntityExp(t,r+1,this.suppressValidationErr),l.indexOf("&")===-1){if(this.options.enabled!==!1&&this.options.maxEntityCount!=null&&i>=this.options.maxEntityCount)throw new Error(`Entity count (${i+1}) exceeds maximum allowed (${this.options.maxEntityCount})`);n[c]=l,i++}}else if(o&&ZE(t,"!ELEMENT",r)){r+=8;let{index:c}=this.readElementExp(t,r+1);r=c}else if(o&&ZE(t,"!ATTLIST",r))r+=8;else if(o&&ZE(t,"!NOTATION",r)){r+=9;let{index:c}=this.readNotationExp(t,r+1,this.suppressValidationErr);r=c}else if(ZE(t,"!--",r))a=!0;else throw new Error("Invalid DOCTYPE");s++,u=""}else if(t[r]===">"){if(a?t[r-1]==="-"&&t[r-2]==="-"&&(a=!1,s--):s--,s===0)break}else t[r]==="["?o=!0:u+=t[r];if(s!==0)throw new Error("Unclosed DOCTYPE")}else throw new Error("Invalid Tag instead of DOCTYPE");return{entities:n,i:r}}readEntityExp(t,r){r=Ua(t,r);let n=r;for(;r<t.length&&!/\s/.test(t[r])&&t[r]!=='"'&&t[r]!=="'";)r++;let i=t.substring(n,r);if(OP(i,{xmlVersion:this.xmlVersion}),r=Ua(t,r),!this.suppressValidationErr){if(t.substring(r,r+6).toUpperCase()==="SYSTEM")throw new Error("External entities are not supported");if(t[r]==="%")throw new Error("Parameter entities are not supported")}let s="";if([r,s]=this.readIdentifierVal(t,r,"entity"),this.options.enabled!==!1&&this.options.maxEntitySize!=null&&s.length>this.options.maxEntitySize)throw new Error(`Entity "${i}" size (${s.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`);return r--,[i,s,r]}readNotationExp(t,r){r=Ua(t,r);let n=r;for(;r<t.length&&!/\s/.test(t[r]);)r++;let i=t.substring(n,r);!this.suppressValidationErr&&OP(i,{xmlVersion:this.xmlVersion}),r=Ua(t,r);let s=t.substring(r,r+6).toUpperCase();if(!this.suppressValidationErr&&s!=="SYSTEM"&&s!=="PUBLIC")throw new Error(`Expected SYSTEM or PUBLIC, found "${s}"`);r+=s.length,r=Ua(t,r);let o=null,a=null;if(s==="PUBLIC")[r,o]=this.readIdentifierVal(t,r,"publicIdentifier"),r=Ua(t,r),(t[r]==='"'||t[r]==="'")&&([r,a]=this.readIdentifierVal(t,r,"systemIdentifier"));else if(s==="SYSTEM"&&([r,a]=this.readIdentifierVal(t,r,"systemIdentifier"),!this.suppressValidationErr&&!a))throw new Error("Missing mandatory system identifier for SYSTEM notation");return{notationName:i,publicIdentifier:o,systemIdentifier:a,index:--r}}readIdentifierVal(t,r,n){let i="",s=t[r];if(s!=='"'&&s!=="'")throw new Error(`Expected quoted string, found "${s}"`);r++;let o=r;for(;r<t.length&&t[r]!==s;)r++;if(i=t.substring(o,r),t[r]!==s)throw new Error(`Unterminated ${n} value`);return r++,[r,i]}readElementExp(t,r){r=Ua(t,r);let n=r;for(;r<t.length&&!/\s/.test(t[r]);)r++;let i=t.substring(n,r);if(!this.suppressValidationErr&&!SZ(i,{xmlVersion:this.xmlVersion}))throw new Error(`Invalid element name: "${i}"`);r=Ua(t,r);let s="";if(t[r]==="E"&&ZE(t,"MPTY",r))r+=4;else if(t[r]==="A"&&ZE(t,"NY",r))r+=2;else if(t[r]==="("){r++;let o=r;for(;r<t.length&&t[r]!==")";)r++;if(s=t.substring(o,r),t[r]!==")")throw new Error("Unterminated content model")}else if(!this.suppressValidationErr)throw new Error(`Invalid Element Expression, found "${t[r]}"`);return{elementName:i,contentModel:s.trim(),index:r}}readAttlistExp(t,r){r=Ua(t,r);let n=r;for(;r<t.length&&!/\s/.test(t[r]);)r++;let i=t.substring(n,r);for(OP(i,{xmlVersion:this.xmlVersion}),r=Ua(t,r),n=r;r<t.length&&!/\s/.test(t[r]);)r++;let s=t.substring(n,r);if(!OP(s,{xmlVersion:this.xmlVersion}))throw new Error(`Invalid attribute name: "${s}"`);r=Ua(t,r);let o="";if(t.substring(r,r+8).toUpperCase()==="NOTATION"){if(o="NOTATION",r+=8,r=Ua(t,r),t[r]!=="(")throw new Error(`Expected '(', found "${t[r]}"`);r++;let u=[];for(;r<t.length&&t[r]!==")";){let c=r;for(;r<t.length&&t[r]!=="|"&&t[r]!==")";)r++;let l=t.substring(c,r);if(l=l.trim(),!OP(l,{xmlVersion:this.xmlVersion}))throw new Error(`Invalid notation name: "${l}"`);u.push(l),t[r]==="|"&&(r++,r=Ua(t,r))}if(t[r]!==")")throw new Error("Unterminated list of notations");r++,o+=" ("+u.join("|")+")"}else{let u=r;for(;r<t.length&&!/\s/.test(t[r]);)r++;o+=t.substring(u,r);let c=["CDATA","ID","IDREF","IDREFS","ENTITY","ENTITIES","NMTOKEN","NMTOKENS"];if(!this.suppressValidationErr&&!c.includes(o.toUpperCase()))throw new Error(`Invalid attribute type: "${o}"`)}r=Ua(t,r);let a="";return t.substring(r,r+8).toUpperCase()==="#REQUIRED"?(a="#REQUIRED",r+=8):t.substring(r,r+7).toUpperCase()==="#IMPLIED"?(a="#IMPLIED",r+=7):[r,a]=this.readIdentifierVal(t,r,"ATTLIST"),{elementName:i,attributeName:s,attributeType:o,defaultValue:a,index:r}}},Ua=(e,t)=>{for(;t<e.length&&/\s/.test(e[t]);)t++;return t};function ZE(e,t,r){for(let n=0;n<t.length;n++)if(t[n]!==e[r+n+1])return!1;return!0}function OP(e,t){if(SZ(e,{xmlVersion:t}))return e;throw new Error(`Invalid entity name ${e}`)}var myr=/^[-+]?0x[a-fA-F0-9]+$/,gyr=/^0b[01]+$/,yyr=/^0o[0-7]+$/,Eyr=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,_yr={hex:!0,binary:!1,octal:!1,leadingZeros:!0,decimalPoint:".",eNotation:!0,infinity:"original"};function bZ(e,t={}){if(t=Object.assign({},_yr,t),!e||typeof e!="string")return e;let r=e.trim();if(r.length===0)return e;if(t.skipLike!==void 0&&t.skipLike.test(r))return e;if(r==="0")return 0;if(t.hex&&myr.test(r))return TZ(r,16);if(t.binary&&gyr.test(r))return TZ(r,2);if(t.octal&&yyr.test(r))return TZ(r,8);if(isFinite(r)){if(r.includes("e")||r.includes("E"))return Syr(e,r,t);{let n=Eyr.exec(r);if(n){let i=n[1]||"",s=n[2],o=Tyr(n[3]),a=i?e[s.length+1]===".":e[s.length]===".";if(!t.leadingZeros&&(s.length>1||s.length===1&&!a))return e;{let u=Number(r),c=String(u);if(u===0)return u;if(c.search(/[eE]/)!==-1)return t.eNotation?u:e;if(r.indexOf(".")!==-1)return c==="0"||c===o||c===`${i}${o}`?u:e;let l=s?o:r;return s?l===c||i+l===c?u:e:l===c||l===i+c?u:e}}else return e}}else return byr(e,Number(r),t)}var vyr=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/;function Syr(e,t,r){if(!r.eNotation)return e;let n=t.match(vyr);if(n){let i=n[1]||"",s=n[3].indexOf("e")===-1?"E":"e",o=n[2],a=i?e[o.length+1]===s:e[o.length]===s;return o.length>1&&a?e:o.length===1&&(n[3].startsWith(`.${s}`)||n[3][0]===s)?Number(t):o.length>0?r.leadingZeros&&!a?(t=(n[1]||"")+n[3],Number(t)):e:Number(t)}else return e}function Tyr(e){return e&&e.indexOf(".")!==-1&&(e=e.replace(/0+$/,""),e==="."?e="0":e[0]==="."?e="0"+e:e[e.length-1]==="."&&(e=e.substring(0,e.length-1))),e}function TZ(e,t){let r=e.trim();if((t===2||t===8)&&(e=r.substring(2)),parseInt)return parseInt(e,t);if(Number.parseInt)return Number.parseInt(e,t);if(window&&window.parseInt)return window.parseInt(e,t);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}function byr(e,t,r){let n=t===1/0;switch(r.infinity.toLowerCase()){case"null":return null;case"infinity":return t;case"string":return n?"Infinity":"-Infinity";default:return e}}function AZ(e){return typeof e=="function"?e:Array.isArray(e)?t=>{for(let r of e)if(typeof r=="string"&&t===r||r instanceof RegExp&&r.test(t))return!0}:()=>!1}var e_=class{constructor(t,r={},n){this.pattern=t,this.separator=r.separator||".",this.segments=this._parse(t),this.data=n,this._hasDeepWildcard=this.segments.some(i=>i.type==="deep-wildcard"),this._hasAttributeCondition=this.segments.some(i=>i.attrName!==void 0),this._hasPositionSelector=this.segments.some(i=>i.position!==void 0)}_parse(t){let r=[],n=0,i="";for(;n<t.length;)t[n]===this.separator?n+1<t.length&&t[n+1]===this.separator?(i.trim()&&(r.push(this._parseSegment(i.trim())),i=""),r.push({type:"deep-wildcard"}),n+=2):(i.trim()&&r.push(this._parseSegment(i.trim())),i="",n++):(i+=t[n],n++);return i.trim()&&r.push(this._parseSegment(i.trim())),r}_parseSegment(t){let r={type:"tag"},n=null,i=t,s=t.match(/^([^\[]+)(\[[^\]]*\])(.*)$/);if(s&&(i=s[1]+s[3],s[2])){let l=s[2].slice(1,-1);l&&(n=l)}let o,a=i;if(i.includes("::")){let l=i.indexOf("::");if(o=i.substring(0,l).trim(),a=i.substring(l+2).trim(),!o)throw new Error(`Invalid namespace in pattern: ${t}`)}let u,c=null;if(a.includes(":")){let l=a.lastIndexOf(":"),f=a.substring(0,l).trim(),p=a.substring(l+1).trim();["first","last","odd","even"].includes(p)||/^nth\(\d+\)$/.test(p)?(u=f,c=p):u=a}else u=a;if(!u)throw new Error(`Invalid segment pattern: ${t}`);if(r.tag=u,o&&(r.namespace=o),n)if(n.includes("=")){let l=n.indexOf("=");r.attrName=n.substring(0,l).trim(),r.attrValue=n.substring(l+1).trim()}else r.attrName=n.trim();if(c){let l=c.match(/^nth\((\d+)\)$/);l?(r.position="nth",r.positionValue=parseInt(l[1],10)):r.position=c}return r}get length(){return this.segments.length}hasDeepWildcard(){return this._hasDeepWildcard}hasAttributeCondition(){return this._hasAttributeCondition}hasPositionSelector(){return this._hasPositionSelector}toString(){return this.pattern}};var cT=class{constructor(){this._byDepthAndTag=new Map,this._wildcardByDepth=new Map,this._deepWildcards=[],this._patterns=new Set,this._sealed=!1}add(t){if(this._sealed)throw new TypeError("ExpressionSet is sealed. Create a new ExpressionSet to add more expressions.");if(this._patterns.has(t.pattern))return this;if(this._patterns.add(t.pattern),t.hasDeepWildcard())return this._deepWildcards.push(t),this;let r=t.length,i=t.segments[t.segments.length-1]?.tag;if(!i||i==="*")this._wildcardByDepth.has(r)||this._wildcardByDepth.set(r,[]),this._wildcardByDepth.get(r).push(t);else{let s=`${r}:${i}`;this._byDepthAndTag.has(s)||this._byDepthAndTag.set(s,[]),this._byDepthAndTag.get(s).push(t)}return this}addAll(t){for(let r of t)this.add(r);return this}has(t){return this._patterns.has(t.pattern)}get size(){return this._patterns.size}seal(){return this._sealed=!0,this}get isSealed(){return this._sealed}matchesAny(t){return this.findMatch(t)!==null}findMatch(t){let r=t.getDepth(),n=t.getCurrentTag(),i=`${r}:${n}`,s=this._byDepthAndTag.get(i);if(s){for(let a=0;a<s.length;a++)if(t.matches(s[a]))return s[a]}let o=this._wildcardByDepth.get(r);if(o){for(let a=0;a<o.length;a++)if(t.matches(o[a]))return o[a]}for(let a=0;a<this._deepWildcards.length;a++)if(t.matches(this._deepWildcards[a]))return this._deepWildcards[a];return null}};var xZ=class{constructor(t){this._matcher=t}get separator(){return this._matcher.separator}getCurrentTag(){let t=this._matcher.path;return t.length>0?t[t.length-1].tag:void 0}getCurrentNamespace(){let t=this._matcher.path;return t.length>0?t[t.length-1].namespace:void 0}getAttrValue(t){let r=this._matcher.path;if(r.length!==0)return r[r.length-1].values?.[t]}hasAttr(t){let r=this._matcher.path;if(r.length===0)return!1;let n=r[r.length-1];return n.values!==void 0&&t in n.values}getPosition(){let t=this._matcher.path;return t.length===0?-1:t[t.length-1].position??0}getCounter(){let t=this._matcher.path;return t.length===0?-1:t[t.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this._matcher.path.length}toString(t,r=!0){return this._matcher.toString(t,r)}toArray(){return this._matcher.path.map(t=>t.tag)}matches(t){return this._matcher.matches(t)}matchesAny(t){return t.matchesAny(this._matcher)}},lT=class{constructor(t={}){this.separator=t.separator||".",this.path=[],this.siblingStacks=[],this._pathStringCache=null,this._view=new xZ(this)}push(t,r=null,n=null){this._pathStringCache=null,this.path.length>0&&(this.path[this.path.length-1].values=void 0);let i=this.path.length;this.siblingStacks[i]||(this.siblingStacks[i]=new Map);let s=this.siblingStacks[i],o=n?`${n}:${t}`:t,a=s.get(o)||0,u=0;for(let l of s.values())u+=l;s.set(o,a+1);let c={tag:t,position:u,counter:a};n!=null&&(c.namespace=n),r!=null&&(c.values=r),this.path.push(c)}pop(){if(this.path.length===0)return;this._pathStringCache=null;let t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){let r=this.path[this.path.length-1];t!=null&&(r.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(this.path.length!==0)return this.path[this.path.length-1].values?.[t]}hasAttr(t){if(this.path.length===0)return!1;let r=this.path[this.path.length-1];return r.values!==void 0&&t in r.values}getPosition(){return this.path.length===0?-1:this.path[this.path.length-1].position??0}getCounter(){return this.path.length===0?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,r=!0){let n=t||this.separator;if(n===this.separator&&r===!0){if(this._pathStringCache!==null)return this._pathStringCache;let s=this.path.map(o=>o.namespace?`${o.namespace}:${o.tag}`:o.tag).join(n);return this._pathStringCache=s,s}return this.path.map(s=>r&&s.namespace?`${s.namespace}:${s.tag}`:s.tag).join(n)}toArray(){return this.path.map(t=>t.tag)}reset(){this._pathStringCache=null,this.path=[],this.siblingStacks=[]}matches(t){let r=t.segments;return r.length===0?!1:t.hasDeepWildcard()?this._matchWithDeepWildcard(r):this._matchSimple(r)}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let r=0;r<t.length;r++)if(!this._matchSegment(t[r],this.path[r],r===this.path.length-1))return!1;return!0}_matchWithDeepWildcard(t){let r=this.path.length-1,n=t.length-1;for(;n>=0&&r>=0;){let i=t[n];if(i.type==="deep-wildcard"){if(n--,n<0)return!0;let s=t[n],o=!1;for(let a=r;a>=0;a--)if(this._matchSegment(s,this.path[a],a===this.path.length-1)){r=a-1,n--,o=!0;break}if(!o)return!1}else{if(!this._matchSegment(i,this.path[r],r===this.path.length-1))return!1;r--,n--}}return n<0}_matchSegment(t,r,n){if(t.tag!=="*"&&t.tag!==r.tag||t.namespace!==void 0&&t.namespace!=="*"&&t.namespace!==r.namespace||t.attrName!==void 0&&(!n||!r.values||!(t.attrName in r.values)||t.attrValue!==void 0&&String(r.values[t.attrName])!==String(t.attrValue)))return!1;if(t.position!==void 0){if(!n)return!1;let i=r.counter??0;if(t.position==="first"&&i!==0)return!1;if(t.position==="odd"&&i%2!==1)return!1;if(t.position==="even"&&i%2!==0)return!1;if(t.position==="nth"&&i!==t.positionValue)return!1}return!0}matchesAny(t){return t.matchesAny(this)}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this._pathStringCache=null,this.path=t.path.map(r=>({...r})),this.siblingStacks=t.siblingStacks.map(r=>new Map(r))}readOnly(){return this._view}};function Ayr(e,t){if(!e)return{};let r=t.attributesGroupName?e[t.attributesGroupName]:e;if(!r)return{};let n={};for(let i in r)if(i.startsWith(t.attributeNamePrefix)){let s=i.substring(t.attributeNamePrefix.length);n[s]=r[i]}else n[i]=r[i];return n}function xyr(e){if(!e||typeof e!="string")return;let t=e.indexOf(":");if(t!==-1&&t>0){let r=e.substring(0,t);if(r!=="xmlns")return r}}var PP=class{constructor(t,r){this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.parseXml=Dyr,this.parseTextData=wyr,this.resolveNameSpace=Oyr,this.buildAttributesMap=Pyr,this.isItStopNode=Lyr,this.replaceEntitiesValue=Nyr,this.readStopNodeData=Uyr,this.saveTextToParentTag=Iyr,this.addChild=Ryr,this.ignoreAttributesFn=AZ(this.options.ignoreAttributes),this.entityExpansionCount=0,this.currentExpandedLength=0;let n={...wP};this.options.entityDecoder?this.entityDecoder=this.options.entityDecoder:(typeof this.options.htmlEntities=="object"?n=this.options.htmlEntities:this.options.htmlEntities===!0&&(n={...EZ,...vk}),this.entityDecoder=new uT({namedEntities:{...n,...r},numericAllowed:this.options.htmlEntities,limit:{maxTotalExpansions:this.options.processEntities.maxTotalExpansions,maxExpandedLength:this.options.processEntities.maxExpandedLength,applyLimitsTo:this.options.processEntities.appliesTo}})),this.matcher=new lT,this.readonlyMatcher=this.matcher.readOnly(),this.isCurrentNodeStopNode=!1,this.stopNodeExpressionsSet=new cT;let i=this.options.stopNodes;if(i&&i.length>0){for(let s=0;s<i.length;s++){let o=i[s];typeof o=="string"?this.stopNodeExpressionsSet.add(new e_(o)):o instanceof e_&&this.stopNodeExpressionsSet.add(o)}this.stopNodeExpressionsSet.seal()}}};function wyr(e,t,r,n,i,s,o){let a=this.options;if(e!==void 0&&(a.trimValues&&!n&&(e=e.trim()),e.length>0)){o||(e=this.replaceEntitiesValue(e,t,r));let u=a.jPath?r.toString():r,c=a.tagValueProcessor(t,e,u,i,s);return c==null?e:typeof c!=typeof e||c!==e?c:a.trimValues||e.trim()===e?CZ(e,a.parseTagValue,a.numberParseOptions):e}}function Oyr(e){if(this.options.removeNSPrefix){let t=e.split(":"),r=e.charAt(0)==="/"?"/":"";if(t[0]==="xmlns")return"";t.length===2&&(e=r+t[1])}return e}var Cyr=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`,"gm");function Pyr(e,t,r,n=!1){let i=this.options;if(n===!0||i.ignoreAttributes!==!0&&typeof e=="string"){let s=yk(e,Cyr),o=s.length,a={},u=new Array(o),c=!1,l={};for(let d=0;d<o;d++){let h=this.resolveNameSpace(s[d][1]),g=s[d][4];if(h.length&&g!==void 0){let v=g;i.trimValues&&(v=v.trim()),v=this.replaceEntitiesValue(v,r,this.readonlyMatcher),u[d]=v,l[h]=v,c=!0}}c&&typeof t=="object"&&t.updateCurrent&&t.updateCurrent(l);let f=i.jPath?t.toString():this.readonlyMatcher,p=!1;for(let d=0;d<o;d++){let h=this.resolveNameSpace(s[d][1]);if(this.ignoreAttributesFn(h,f))continue;let g=i.attributeNamePrefix+h;if(h.length)if(i.transformAttributeName&&(g=i.transformAttributeName(g)),g=lke(g,i),s[d][4]!==void 0){let v=u[d],S=i.attributeValueProcessor(h,v,f);S==null?a[g]=v:typeof S!=typeof v||S!==v?a[g]=S:a[g]=CZ(v,i.parseAttributeValue,i.numberParseOptions),p=!0}else i.allowBooleanAttributes&&(a[g]=!0,p=!0)}if(!p)return;if(i.attributesGroupName&&!i.preserveOrder){let d={};return d[i.attributesGroupName]=a,d}return a}}var Dyr=function(e){e=e.replace(/\r\n?/g,`
|
|
660
|
-
`);let t=new Fa("!xml"),r=t,n="";this.matcher.reset(),this.entityDecoder.reset(),this.entityExpansionCount=0,this.currentExpandedLength=0;let i=this.options,s=new CP(i.processEntities),o=e.length;for(let a=0;a<o;a++)if(e[a]==="<"){let c=e.charCodeAt(a+1);if(c===47){let l=fT(e,">",a,"Closing Tag is not closed."),f=e.substring(a+2,l).trim();if(i.removeNSPrefix){let d=f.indexOf(":");d!==-1&&(f=f.substr(d+1))}f=wZ(i.transformTagName,f,"",i).tagName,r&&(n=this.saveTextToParentTag(n,r,this.readonlyMatcher));let p=this.matcher.getCurrentTag();if(f&&i.unpairedTagsSet.has(f))throw new Error(`Unpaired tag can not be used as closing tag: </${f}>`);p&&i.unpairedTagsSet.has(p)&&(this.matcher.pop(),this.tagsNodeStack.pop()),this.matcher.pop(),this.isCurrentNodeStopNode=!1,r=this.tagsNodeStack.pop(),n="",a=l}else if(c===63){let l=OZ(e,a,!1,"?>");if(!l)throw new Error("Pi Tag is not closed.");n=this.saveTextToParentTag(n,r,this.readonlyMatcher);let f=this.buildAttributesMap(l.tagExp,this.matcher,l.tagName,!0);if(f){let p=f[this.options.attributeNamePrefix+"version"];this.entityDecoder.setXmlVersion(Number(p)||1),s.setXmlVersion(Number(p)||1)}if(!(i.ignoreDeclaration&&l.tagName==="?xml"||i.ignorePiTags)){let p=new Fa(l.tagName);p.add(i.textNodeName,""),l.tagName!==l.tagExp&&l.attrExpPresent&&i.ignoreAttributes!==!0&&(p[":@"]=f),this.addChild(r,p,this.readonlyMatcher,a)}a=l.closeIndex+1}else if(c===33&&e.charCodeAt(a+2)===45&&e.charCodeAt(a+3)===45){let l=fT(e,"-->",a+4,"Comment is not closed.");if(i.commentPropName){let f=e.substring(a+4,l-2);n=this.saveTextToParentTag(n,r,this.readonlyMatcher),r.add(i.commentPropName,[{[i.textNodeName]:f}])}a=l}else if(c===33&&e.charCodeAt(a+2)===68){let l=s.readDocType(e,a);this.entityDecoder.addInputEntities(l.entities),a=l.i}else if(c===33&&e.charCodeAt(a+2)===91){let l=fT(e,"]]>",a,"CDATA is not closed.")-2,f=e.substring(a+9,l);n=this.saveTextToParentTag(n,r,this.readonlyMatcher);let p=this.parseTextData(f,r.tagname,this.readonlyMatcher,!0,!1,!0,!0);p==null&&(p=""),i.cdataPropName?r.add(i.cdataPropName,[{[i.textNodeName]:f}]):r.add(i.textNodeName,p),a=l+2}else{let l=OZ(e,a,i.removeNSPrefix);if(!l){let N=e.substring(Math.max(0,a-50),Math.min(o,a+50));throw new Error(`readTagExp returned undefined at position ${a}. Context: "${N}"`)}let f=l.tagName,p=l.rawTagName,d=l.tagExp,h=l.attrExpPresent,g=l.closeIndex;if({tagName:f,tagExp:d}=wZ(i.transformTagName,f,d,i),i.strictReservedNames&&(f===i.commentPropName||f===i.cdataPropName||f===i.textNodeName||f===i.attributesGroupName))throw new Error(`Invalid tag name: ${f}`);r&&n&&r.tagname!=="!xml"&&(n=this.saveTextToParentTag(n,r,this.readonlyMatcher,!1));let v=r;v&&i.unpairedTagsSet.has(v.tagname)&&(r=this.tagsNodeStack.pop(),this.matcher.pop());let S=!1;d.length>0&&d.lastIndexOf("/")===d.length-1&&(S=!0,f[f.length-1]==="/"?(f=f.substr(0,f.length-1),d=f):d=d.substr(0,d.length-1),h=f!==d);let b=null,A={},w;w=xyr(p),f!==t.tagname&&this.matcher.push(f,{},w),f!==d&&h&&(b=this.buildAttributesMap(d,this.matcher,f),b&&(A=Ayr(b,i))),f!==t.tagname&&(this.isCurrentNodeStopNode=this.isItStopNode());let x=a;if(this.isCurrentNodeStopNode){let N="";if(S)a=l.closeIndex;else if(i.unpairedTagsSet.has(f))a=l.closeIndex;else{let D=this.readStopNodeData(e,p,g+1);if(!D)throw new Error(`Unexpected end of ${p}`);a=D.i,N=D.tagContent}let F=new Fa(f);b&&(F[":@"]=b),F.add(i.textNodeName,N),this.matcher.pop(),this.isCurrentNodeStopNode=!1,this.addChild(r,F,this.readonlyMatcher,x)}else{if(S){({tagName:f,tagExp:d}=wZ(i.transformTagName,f,d,i));let N=new Fa(f);b&&(N[":@"]=b),this.addChild(r,N,this.readonlyMatcher,x),this.matcher.pop(),this.isCurrentNodeStopNode=!1}else if(i.unpairedTagsSet.has(f)){let N=new Fa(f);b&&(N[":@"]=b),this.addChild(r,N,this.readonlyMatcher,x),this.matcher.pop(),this.isCurrentNodeStopNode=!1,a=l.closeIndex;continue}else{let N=new Fa(f);if(this.tagsNodeStack.length>i.maxNestedTags)throw new Error("Maximum nested tags exceeded");this.tagsNodeStack.push(r),b&&(N[":@"]=b),this.addChild(r,N,this.readonlyMatcher,x),r=N}n="",a=g}}}else n+=e[a];return t.child};function Ryr(e,t,r,n){this.options.captureMetaData||(n=void 0);let i=this.options.jPath?r.toString():r,s=this.options.updateTag(t.tagname,i,t[":@"]);s===!1||(typeof s=="string"&&(t.tagname=s),e.addChild(t,n))}function Nyr(e,t,r){let n=this.options.processEntities;if(!n||!n.enabled)return e;if(n.allowedTags){let i=this.options.jPath?r.toString():r;if(!(Array.isArray(n.allowedTags)?n.allowedTags.includes(t):n.allowedTags(t,i)))return e}if(n.tagFilter){let i=this.options.jPath?r.toString():r;if(!n.tagFilter(t,i))return e}return this.entityDecoder.decode(e)}function Iyr(e,t,r,n){return e&&(n===void 0&&(n=t.child.length===0),e=this.parseTextData(e,t.tagname,r,!1,t[":@"]?Object.keys(t[":@"]).length!==0:!1,n),e!==void 0&&e!==""&&t.add(this.options.textNodeName,e),e=""),e}function Lyr(){return this.stopNodeExpressionsSet.size===0?!1:this.matcher.matchesAny(this.stopNodeExpressionsSet)}function Myr(e,t,r=">"){let n=0,i=e.length,s=r.charCodeAt(0),o=r.length>1?r.charCodeAt(1):-1,a="",u=t;for(let c=t;c<i;c++){let l=e.charCodeAt(c);if(n)l===n&&(n=0);else if(l===34||l===39)n=l;else if(l===s)if(o!==-1){if(e.charCodeAt(c+1)===o)return a+=e.substring(u,c),{data:a,index:c}}else return a+=e.substring(u,c),{data:a,index:c};else l===9&&!n&&(a+=e.substring(u,c)+" ",u=c+1)}}function fT(e,t,r,n){let i=e.indexOf(t,r);if(i===-1)throw new Error(n);return i+t.length-1}function Fyr(e,t,r,n){let i=e.indexOf(t,r);if(i===-1)throw new Error(n);return i}function OZ(e,t,r,n=">"){let i=Myr(e,t+1,n);if(!i)return;let s=i.data,o=i.index,a=s.search(/\s/),u=s,c=!0;a!==-1&&(u=s.substring(0,a),s=s.substring(a+1).trimStart());let l=u;if(r){let f=u.indexOf(":");f!==-1&&(u=u.substr(f+1),c=u!==i.data.substr(f+1))}return{tagName:u,tagExp:s,closeIndex:o,attrExpPresent:c,rawTagName:l}}function Uyr(e,t,r){let n=r,i=1,s=e.length;for(;r<s;r++)if(e[r]==="<"){let o=e.charCodeAt(r+1);if(o===47){let a=Fyr(e,">",r,`${t} is not closed`);if(e.substring(r+2,a).trim()===t&&(i--,i===0))return{tagContent:e.substring(n,r),i:a};r=a}else if(o===63)r=fT(e,"?>",r+1,"StopNode is not closed.");else if(o===33&&e.charCodeAt(r+2)===45&&e.charCodeAt(r+3)===45)r=fT(e,"-->",r+3,"StopNode is not closed.");else if(o===33&&e.charCodeAt(r+2)===91)r=fT(e,"]]>",r,"StopNode is not closed.")-2;else{let a=OZ(e,r,!1);a&&((a&&a.tagName)===t&&a.tagExp[a.tagExp.length-1]!=="/"&&i++,r=a.closeIndex)}}}function CZ(e,t,r){if(t&&typeof e=="string"){let n=e.trim();return n==="true"?!0:n==="false"?!1:bZ(e,r)}else return qUe(e)?e:""}function wZ(e,t,r,n){if(e){let i=e(t);r===t&&(r=i),t=i}return t=lke(t,n),{tagName:t,tagExp:r}}function lke(e,t){if(Ek.includes(e))throw new Error(`[SECURITY] Invalid name: "${e}" is a reserved JavaScript keyword that could cause prototype pollution`);return AP.includes(e)?t.onDangerousProperty(e):e}var PZ=Fa.getMetaDataSymbol();function kyr(e,t){if(!e||typeof e!="object")return{};if(!t)return e;let r={};for(let n in e)if(n.startsWith(t)){let i=n.substring(t.length);r[i]=e[n]}else r[n]=e[n];return r}function DZ(e,t,r,n){return fke(e,t,r,n)}function fke(e,t,r,n){let i,s={};for(let o=0;o<e.length;o++){let a=e[o],u=Byr(a);if(u!==void 0&&u!==t.textNodeName){let c=kyr(a[":@"]||{},t.attributeNamePrefix);r.push(u,c)}if(u===t.textNodeName)i===void 0?i=a[u]:i+=""+a[u];else{if(u===void 0)continue;if(a[u]){let c=fke(a[u],t,r,n),l=jyr(c,t);if(Object.keys(c).length===0&&t.alwaysCreateTextNode&&(c[t.textNodeName]=""),a[":@"]?qyr(c,a[":@"],n,t):Object.keys(c).length===1&&c[t.textNodeName]!==void 0&&!t.alwaysCreateTextNode?c=c[t.textNodeName]:Object.keys(c).length===0&&(t.alwaysCreateTextNode?c[t.textNodeName]="":c=""),a[PZ]!==void 0&&typeof c=="object"&&c!==null&&(c[PZ]=a[PZ]),s[u]!==void 0&&Object.prototype.hasOwnProperty.call(s,u))Array.isArray(s[u])||(s[u]=[s[u]]),s[u].push(c);else{let f=t.jPath?n.toString():n;t.isArray(u,f,l)?s[u]=[c]:s[u]=c}u!==void 0&&u!==t.textNodeName&&r.pop()}}}return typeof i=="string"?i.length>0&&(s[t.textNodeName]=i):i!==void 0&&(s[t.textNodeName]=i),s}function Byr(e){let t=Object.keys(e);for(let r=0;r<t.length;r++){let n=t[r];if(n!==":@")return n}}function qyr(e,t,r,n){if(t){let i=Object.keys(t),s=i.length;for(let o=0;o<s;o++){let a=i[o],u=a.startsWith(n.attributeNamePrefix)?a.substring(n.attributeNamePrefix.length):a,c=n.jPath?r.toString()+"."+u:r;n.isArray(a,c,!0,!0)?e[a]=[t[a]]:e[a]=t[a]}}}function jyr(e,t){let{textNodeName:r}=t,n=Object.keys(e).length;return!!(n===0||n===1&&(e[r]||typeof e[r]=="boolean"||e[r]===0))}var Yf=class{constructor(t){this.externalEntities={},this.options=oke(t)}parse(t,r){if(typeof t!="string"&&t.toString)t=t.toString();else if(typeof t!="string")throw new Error("XML data is accepted in String or Bytes[] form.");if(r){r===!0&&(r={});let s=_k(t,r);if(s!==!0)throw Error(`${s.err.msg}:${s.err.line}:${s.err.col}`)}let n=new PP(this.options,this.externalEntities),i=n.parseXml(t);return this.options.preserveOrder||i===void 0?i:DZ(i,this.options,n.matcher,n.readonlyMatcher)}addEntity(t,r){if(r.indexOf("&")!==-1)throw new Error("Entity value can't have '&'");if(t.indexOf("&")!==-1||t.indexOf(";")!==-1)throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");if(r==="&")throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=r}static getMetaDataSymbol(){return Fa.getMetaDataSymbol()}};var pT={validate:_k};var km=class extends Ca{static ADT_DISCOVERY_SERVICE_PATH="/sap/bc/adt/discovery";schemaStore=new gk;log;async getServiceDefinition(t){await this.checkOrLoadAdtDiscoverySchema();let r=this.schemaStore.getAdtCollection(t);return this.validateServiceSchema(t,r)?r:(this.log.warn("Invalid Discovery Schema"),null)}validateServiceSchema(t,r){return r?r.href?!0:(this.log.warn(`Empty href in schema: ${t.term} - ${t.scheme}`),!1):(this.log.warn(`Schema Not Found: ${t.term} - ${t.scheme}`),!1)}async checkOrLoadAdtDiscoverySchema(){if(!this.schemaStore.isAdtSchemaEmpty())return;let t=await this.get("",{headers:{Accept:"application/*"}}),r=this.parseAdtSchemaData(t.data);this.schemaStore.updateSchemaData(r)}parseAdtSchemaData(t){if(pT.validate(t)!==!0)return null;let r={attributeNamePrefix:"",ignoreAttributes:!1,ignoreNameSpace:!0,parseAttributeValue:!0,removeNSPrefix:!0},i=new Yf(r).parse(t,!0);return i.service?i:null}};var wd=class extends Ca{static PATH="/sap/bc/ui2/app_index";log;async search(t={},r){let n={...t};r&&(n.fields=r.join(","));let i=await this.get("/",{params:n});return JSON.parse(i.data).results}async getIsManiFirstSupported(t){try{let r={id:t},n=await this.get("/ui5_app_mani_first_supported",{params:r});return JSON.parse(n.data)}catch(r){throw this.log.error(`Fail fetching ui5_app_mani_first_supported for app with id: ${t}.`),this.log.debug(r),r}}async getAppInfo(t){try{let r=await this.get("/ui5_app_info_json",{params:{id:t}});return JSON.parse(r.data)}catch(r){throw gF(r)?this.log.error(`Failed fetching ui5_app_info_json for app with id ${t}.`):this.log.error(`Parsing error: ui5_app_info_json is not in expected format for app with id ${t}.`),this.log.debug(r),r}}};var DP={UI:"UI",NotClassified:"Not Classified",WebApi:"WEB_API",NotDetermined:"Not Determined"},dT=class extends Sm{entitySet;services;isS4Cloud;async listServices(t=!1){return this.services||(this.services=await this.fetchServices(t)),this.services}};var pke="ServiceCollection",dke="RecommendedServiceCollection",Vyr="((IsSapService%20eq%20true)and(ReleaseStatus%20eq%20%27RELEASED%27))or((IsSapService%20eq%20false))",Bm=class extends dT{static PATH="/sap/opu/odata/IWFND/CATALOGSERVICE;v=2";async determineEntitySet(){let t=await this.document();this.entitySet=t.EntitySets.includes(dke)?dke:pke}getServicePath(t,r){let n;try{n=new URL(t)}catch{n=new URL(t,r)}return n.pathname}mapServices(t){return t.map(r=>{let n=this.getServicePath(r.ServiceUrl,this.defaults.baseURL);return{id:r.ID,name:r.TechnicalServiceName,path:n,serviceVersion:r.TechnicalServiceVersion+"",odataVersion:Er.v2,serviceType:r.ServiceType}})}async fetchServices(){let t={$format:"json"};this.entitySet||await this.determineEntitySet(),this.entitySet===pke&&await this.isS4Cloud&&(t.$filter=Vyr);let n=(await this.get(`/${this.entitySet}`,{params:t})).odata();if(Nf.containsError(n))throw new Nf(n);return this.mapServices(n)}async findService({title:t,path:r}){let n=1;if(!t){let u=r.replace(/\/$/,"").split("/").pop().split(";");if(t=u[0].toUpperCase(),!t)throw new Error(`Cannot determine service title from path: ${r}`);u.slice(1).forEach(l=>{let[f,p]=l.split("=");f==="v"&&(n=Number.parseInt(p,10))})}let i={$format:"json",$filter:`Title eq '${t}' and TechnicalServiceVersion eq ${n}`},s=this.entitySet?`/${this.entitySet}`:"/ServiceCollection",a=(await this.get(s,{params:i})).odata();if(a.length>1){let u=a.filter(c=>c.ServiceUrl?.toUpperCase().includes((r||t).toUpperCase()));if(u.length>1)this.log.warn("Service filter was not sufficient to identify one service.");else if(u.length>0)return this.log.info(`Service filter chose service: ${u[0].TechnicalServiceName}`),u[0]}return a.length>0?a[0]:void 0}async getServiceAnnotations({id:t,title:r,path:n}){if(!t){let i=await this.findService({title:r,path:n});i&&(t=i.ID)}return t?(await this.get(`/ServiceCollection('${encodeURIComponent(t)}')/Annotations`,{params:{$format:"json"}})).odata():[]}async getAnnotations({id:t,title:r,path:n}){if(!t&&!r&&!n)throw new Error("No filter parameters passed in");let i=await this.getServiceAnnotations({id:t,title:r,path:n}),s=[];for(let o of i){let a=`/Annotations(TechnicalName='${encodeURIComponent(o.TechnicalName)}',Version='${o.Version}')/$value/`,u=await this.get(a,{headers:{Accept:"application/xml"}});u.data?s.push({TechnicalName:o.TechnicalName,Version:o.Version,Definitions:u.data,Uri:this.defaults.baseURL+a}):this.log.warn(`No annotations found for TechnicalName=${o.TechnicalName}, Version=${o.Version}`)}return s}async getServiceType(t){let r,{ID:n}=await this.findService({path:t});if(n){let i=await this.get(`/ServiceTypeForHUBServices('${encodeURIComponent(n)}')`);i&&(r=i.odata().ServiceType)}return r}};var hke="RecommendedServices",mke="Services",hT=class extends dT{logger=new ys;static PATH="/sap/opu/odata4/iwfnd/config/default/iwfnd/catalog/0002";mapServices(t,r,n=!1){let i=[],s=new Set;return t.filter(o=>o?.DefaultSystem?.[r]?.length>0).forEach(o=>{i.push(...o.DefaultSystem[r].flatMap(a=>{let u=a.ServiceUrl.split("?").shift();if(n){let c=`${a.ServiceId}|${u}`;if(s.has(c))return[];s.add(c)}return{id:a.ServiceId,group:o.GroupId,path:u,name:`${o.GroupId} > ${a.ServiceAlias||a.ServiceId}`,serviceVersion:a.ServiceVersion,odataVersion:Er.v4,serviceType:a.ServiceType}}))}),i}async fetchServicesNextLink(){if(this.entitySet===void 0){let o=await this.metadata();this.entitySet=o.includes('Name="RecommendedServices"')?hke:mke}let t=new URLSearchParams([["$count","true"],["$expand",`DefaultSystem($expand=${this.entitySet})`]]),n=(await this.get("/ServiceGroups",{params:t},!0)).odata(),i=n.value,s=1;for(;n["@odata.nextLink"];){let o=new URL(n["@odata.nextLink"],this.defaults.baseURL);n=(await this.get("/ServiceGroups",{params:o.searchParams},!0)).odata(),s++,i.push(...n.value)}if(this.logger.log(`Fetched ${i.length} service groups in ${s} requests.`),Nf.containsError(i))throw new Nf(i);return this.mapServices(i,this.entitySet)}async fetchServices(t=!1){return t?this.fetchServicesNextLink():this.fetchServicesParallel()}async fetchServicesParallel(){if(this.entitySet===void 0){let c=await this.metadata();this.entitySet=c.includes('Name="RecommendedServices"')?hke:mke}let r=new URLSearchParams([["$count","true"],["$top","1000"],["$expand",`DefaultSystem($expand=${this.entitySet})`]]),i=(await this.get("/ServiceGroups",{params:r},!0)).odata(),s=i.value,o=i["@odata.count"],a=Number.parseInt(i["@odata.nextLink"]?.split("skiptoken=")[1],10),u=1;if(!Number.isNaN(a)){let c=Math.ceil(o/a),l=Array.from({length:c-1},(p,d)=>{let h=new URLSearchParams([["$count","true"],["$skip",String((d+1)*a)],["$top",a.toString()],["$expand",`DefaultSystem($expand=${this.entitySet})`]]);return u++,this.get("/ServiceGroups",{params:h},!0)});(await Promise.all(l)).forEach(p=>{let d=p.odata();s.push(...d.value)})}if(this.logger.log(`Fetched ${s.length} service groups in ${u} requests.`),Nf.containsError(s))throw new Nf(s);return this.mapServices(s,this.entitySet,!0)}getAnnotations(){return Promise.resolve([])}getServiceType(){return Promise.resolve(void 0)}};var RP;(function(e){e.SAP="SAP",e.Customer="CUSTOMER"})(RP||(RP={}));var ei=class extends Ca{log;serviceSchema;static getAdtCatagory(){throw new Error("NEEDS TO BE IMPLEMENTED BY AdtService SUBCLASSES")}attachAdtSchema(t){this.serviceSchema=t}parseResponse(t){if(pT.validate(t)!==!0)return this.log.warn(`Invalid XML: ${t}`),{};let r={attributeNamePrefix:"",ignoreAttributes:!1,ignoreNameSpace:!0,parseAttributeValue:!0,removeNSPrefix:!0};return new Yf(r).parse(t,!0)}};var NP=class e extends ei{static adtCategory={scheme:"http://www.sap.com/adt/categories/ato",term:"settings"};static getAdtCatagory(){return e.adtCategory}async getAtoInfo(){let t={headers:{Accept:"application/*"}},r=await this.get("",t);return this.parseAtoResponse(r.data)}parseAtoResponse(t){if(pT.validate(t)!==!0)return this.log.warn(`Invalid XML: ${t}`),{};let r={attributeNamePrefix:"",ignoreAttributes:!1,ignoreNameSpace:!0,parseAttributeValue:!0,removeNSPrefix:!0},i=new Yf(r).parse(t,!0);return i.settings?i.settings:{}}};var cBe=Te(gke(),1),_Er=Te(uBe(),1);var HP=class e extends ei{static adtCategory={scheme:"http://www.sap.com/adt/categories/respository",term:"generators"};static getAdtCatagory(){return e.adtCategory}async getUIServiceGeneratorConfig(t){let r=await this.get("",{headers:{Accept:"application/atom+xml;type=feed"},params:{referencedObject:t,type:"webapi"}}),n=this.parseResponse(r.data).feed?.entry;if(n?.id==="published-ui-service")return n;throw new Error("UI Service Generator not found")}};var WP=class e extends ei{static adtCategory={scheme:"http://www.sap.com/adt/categories/respository",term:"generators"};static getAdtCatagory(){return e.adtCategory}id;async getRAPGeneratorConfig(){let t=await this.get("",{headers:{Accept:"application/atom+xml;type=feed"},params:{type:"webapi",fetchAllGenerators:!0}}),r=this.parseResponse(t.data).feed?.entry??[];r&&!Array.isArray(r)&&(r=[r]);let n=r.find(i=>i.id==="published-x-ui-service");if(n)return n;throw new Error("OData Service Generator not found")}};var YP=class extends ei{packageName;contentType;configure(t,r){this.packageName=r}setContentType(t){this.contentType=t}async validate(t){let r=await this.post("/validation",t,{headers:{"Content-Type":this.contentType,Accept:"application/vnd.sap.adt.validationMessages.v1+xml, application/vnd.sap.as+xml;charset=UTF-8;dataname=com.sap.adt.StatusMessage"},params:{package:this.packageName}});return this.parseValidateResponse(r.data)}async getTechnicalDetails(t){let r=await this.post("/preview",t,{headers:{"Content-Type":this.contentType,Accept:"application/vnd.sap.adt.repository.objects.massoperation.v1+xml"},params:{package:this.packageName}});return this.parsePreviewResponse(r.data)}async generate(t){return(await this.post("",t,{headers:{"Content-Type":this.contentType,Accept:"application/vnd.sap.adt.repository.generator.v1+json"},params:{package:this.packageName}})).status}parseValidateResponse(t){let n=this.parseResponse(t).validationMessages;return Array.isArray(n)||(n=[n]),n.map(i=>i.validationMessage||{})||[]}parsePreviewResponse(t){let n=(this.parseResponse(t).group.group||[]).find(a=>a.name==="Business Service Layer");if(!n)return;let i=Array.isArray(n.object)?n.object:[n.object],s=i.find(a=>a.objectReference?.type==="SRVD/SRV"),o=i.find(a=>a.objectReference?.type==="SRVB/SVB");if(!(!s||!o))return{serviceName:o.objectReference?.name||"",serviceDefinitionName:s.objectReference?.name||"",serviceVersion:"0001"}}};var AT=class extends ei{referencedObject;contentType;configure(t,r,n){this.referencedObject=r,this.contentType=n}async getSchema(){let t=await this.get("/schema",{headers:{Accept:"application/vnd.sap.adt.repository.generator.schema.v1+json"},params:{referencedObject:this.referencedObject.uri}});return JSON.parse(t.data)}async getContent(t){let n=(await this.get("/content",{headers:{Accept:this.contentType},params:{referencedObject:this.referencedObject.uri,package:t}})).data,i=JSON.parse(n);return i.metadata||(i.metadata={package:t}),JSON.stringify(i)}async validatePackage(t){let r=await this.get("/validation",{headers:{Accept:"application/vnd.sap.adt.validationMessages.v1+xml"},params:{referencedObject:this.referencedObject.uri,package:t,checks:"package"}});return this.parseResponse(r.data)}async validateContent(t){let r=await this.post("/validation",t,{headers:{"Content-Type":this.contentType,Accept:"application/vnd.sap.adt.validationMessages.v1+xml"},params:{referencedObject:this.referencedObject.uri,checks:"package,referencedobject,authorization"}});return this.parseResponse(r.data).validationMessages?.validationMessage}async generate(t,r){let n=await this.post("",t,{headers:{"Content-Type":this.contentType,Accept:"application/vnd.sap.adt.repository.generator.v1+json, application/vnd.sap.as+xml;charset=UTF-8;dataname=com.sap.adt.StatusMessage"},params:{referencedObject:this.referencedObject.uri,corrNr:r}});return this.parseResponse(n.data)}};var Mk=class extends ei{async getSystemInfo(){let t={headers:{Accept:"application/vnd.sap.adt.core.http.systeminformation.v1+json"}},r=await this.get("/sap/bc/adt/core/http/systeminformation",t);if(typeof r.data=="string")try{return JSON.parse(r.data)}catch(n){this.log.error(`System info could not be parsed from response. Error: ${n.message}`)}else return r.data}};var zP=class extends Ca{static PATH="/sap/public/bc/ui5_ui5";log;async getUI5Version(){try{let t=await this.get("/bootstrap_info.json",{transformResponse:n=>JSON.parse(n)}),{Version:r}=t.data;if(!r)throw new Error("UI5 version not provided.");return r}catch(t){throw this.log.error("Could not get UI5 Version."),this.log.debug(t),t}}};var ja=class extends Um{atoSettings;_publicUrl;_systemInfo;async user(){return await Promise.resolve(this.defaults.auth?.username)||(await this.getSystemInfo())?.userName}async getSystemInfo(){if(this._systemInfo)return this._systemInfo;try{let t=this.createService("",Mk);this._systemInfo=await t.getSystemInfo()}catch(t){this.log.error(`An error occurred retrieving system info: ${t}`)}return this._systemInfo}setAtoInfo(t){this.atoSettings=t}async getAtoInfo(){if(this.atoSettings)return this.atoSettings;let t;try{t=await this.getAdtService(NP),t?this.atoSettings=await t.getAtoInfo():this.atoSettings={}}catch{this.atoSettings={}}return this.atoSettings}set publicUrl(t){this._publicUrl=t}get publicUrl(){return this._publicUrl||this.defaults.baseURL}async isAbapCloud(){return this.atoSettings===void 0&&await this.getAtoInfo(),this.atoSettings.tenantType===RP.Customer&&this.atoSettings.operationsType==="C"}getAdtCatalogService(){if(!this.services[km.ADT_DISCOVERY_SERVICE_PATH]){let t=this.createService(km.ADT_DISCOVERY_SERVICE_PATH,km);this.services[km.ADT_DISCOVERY_SERVICE_PATH]=t}return this.services[km.ADT_DISCOVERY_SERVICE_PATH]}catalog(t){let r;if(t===Er.v2)r=this.services[Bm.PATH]??this.createService(Bm.PATH,Bm);else if(t===Er.v4)r=this.services[hT.PATH]??this.createService(hT.PATH,hT);else throw new Error("not implemented yet");return Object.defineProperty(r,"isAbapCloud",{get:this.isAbapCloud.bind(this)}),r}getUi5AbapRepository(t){let r=t??oT.PATH;return this.services[r]||(this.services[r]=this.createService(r,oT)),this.services[r]}getAppIndex(){return this.services[wd.PATH]||(this.services[wd.PATH]=this.createService(wd.PATH,wd)),this.services[wd.PATH]}getLayeredRepository(t){let r=t??aT.PATH;return this.services[r]||(this.services[r]=this.createService(r,aT)),this.services[r]}async getAdtService(t){let r=t.name;if(!this.services[r]){let i=await this.getAdtCatalogService().getServiceDefinition(t.getAdtCatagory());if(!i)return null;this.services[r]=this.createService(i.href,t),this.services[r].attachAdtSchema(i)}return this.services[r]}getUI5VersionService(){let t=zP.PATH;return this.services[t]||(this.services[t]=this.createService(t,zP)),this.services[t]}async getUiServiceGenerator(t){let r=await this.getAdtService(HP);if(!r)throw new Error("Generators are not supported on this system");let n=await r.getUIServiceGeneratorConfig(t.uri),i=this.createService(this.getServiceUrlFromConfig(n),AT);return i.configure(n,t,this.getContentType(n)),i}async getODataServiceGenerator(t){let r=await this.getAdtService(WP);if(!r)throw new Error("RAP Generator are not support on this system");let n=await r.getRAPGeneratorConfig(),i=this.createService(this.getServiceUrlFromConfig(n),YP);return i.setContentType(this.getContentType(n)),i.configure(n,t||"$TMP"),i}async fetchExternalServices(t){let r=[],n=t.map(async i=>{let{serviceRootPath:s,value:o}=i,a=(0,lBe.join)(s,o).replace("/$metadata",""),u=this.service(a);try{let c=await u.metadata();i.type==="value-list"?r.push({type:"value-list",path:a,target:i.target,metadata:c}):i.type==="code-list"&&r.push({type:"code-list",path:a,metadata:c})}catch(c){this.log.warn(`Could not fetch value list reference metadata from ${a}, ${c.message}`)}});return await Promise.allSettled(n),r}getServiceUrlFromConfig(t){if(Array.isArray(t.link)&&!t.link[0]?.href)throw new Error("No service URL found in the generator config");let r=t.link[0].href.indexOf(t.id)+t.id.length;return t.link[0].href.substring(0,r)}getContentType(t){return(t.link?.find(n=>typeof n.href=="string"&&n.href.includes("/content"))).type}async createLockServiceBindingGenerator(t){return this.createService(t,AT)}};var gHe=Te(U$e(),1),op=Te(tq(),1);var Zm;(function(e){e.H2O_URL="H2O_URL",e.HTTP_PROXY="HTTP_PROXY",e.HTTPS_PROXY="HTTPS_PROXY"})(Zm||(Zm={}));var rq;(function(e){e.HTTP="HTTP",e.LDAP="LDAP",e.MAIL="MAIL",e.RFC="RFC"})(rq||(rq={}));var nq;(function(e){e.DEDICATED="Dedicated",e.COMMON="Common"})(nq||(nq={}));var sp;(function(e){e.BASIC_AUTHENTICATION="BasicAuthentication",e.CLIENT_CERT_AUTHENTICATION="ClientCertificateAuthentication",e.NO_AUTHENTICATION="NoAuthentication",e.OAUTH2_CLIENT_CREDENTIALS="OAuth2ClientCredentials",e.OAUTH2_JWT_BEARER="OAuth2JWTBearer",e.OAUTH2_PASSWORD="OAuth2Password",e.OAUTH2_REFRESH_TOKEN="OAuth2RefreshToken",e.OAUTH2_SAML_BEARER_ASSERTION="OAuth2SAMLBearerAssertion",e.OAUTH2_USER_TOKEN_EXCHANGE="OAuth2UserTokenExchange",e.SAML_ASSERTION="SAMLAssertion"})(sp||(sp={}));var iq;(function(e){e.S4HC="S4HC",e.BTP="BTP"})(iq||(iq={}));var fre;(function(e){e.ON_PREMISE="OnPremise",e.INTERNET="Internet",e.PRIVATE_LINK="PrivateLink"})(fre||(fre={}));var v_;(function(e){e.ODATA_GENERIC="odata_gen",e.ODATA_ABAP="odata_abap",e.DEV_ABAP="dev_abap",e.ABAP_CLOUD="abap_cloud"})(v_||(v_={}));var sq;(function(e){e.FULL_URL="full_url",e.API_MGMT="api_mgmt"})(sq||(sq={}));var RD;(function(e){e.ON_PREMISE="OnPremise",e.INTERNET="Internet",e.PRIVATE_LINK="PrivateLink"})(RD||(RD={}));function pHe(e){return!!(e.WebIDEUsage?.includes("abap")||e["sap-client"]||e["sap-platform"]?.toLocaleLowerCase()==="abap"||e.ProxyType==="OnPremise")}function HCr(e){return!!(e.WebIDEUsage?.includes(v_.ABAP_CLOUD)||e["sap-platform"]?.toLocaleLowerCase()==="abap")}function oq(e){return!!(e.WebIDEUsage?.includes(v_.ODATA_GENERIC)&&!e.WebIDEUsage.includes(v_.ODATA_ABAP))}function zl(e){return!!(!e.WebIDEAdditionalData?.includes(sq.FULL_URL)&&oq(e))}function eg(e){return!!(e.WebIDEAdditionalData?.includes(sq.FULL_URL)&&oq(e))}function dHe(e){return!!e.ProxyType.includes(RD.ON_PREMISE)}function hHe(e){return!!e["HTML5.DynamicDestination"]}function WCr(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function fHe(e,t){let r=` (${t})`;return RegExp(`${WCr(r)}$`).exec(e.trim())?e:`${e} (${t})`}function mHe(e,t){let r=t?` [${t}]`:"",n;return HCr(e)?n=fHe(e.Name,iq.BTP):pre(e)?n=fHe(e.Name,iq.S4HC):n=e.Name,`${n}${r}`}function pre(e){return!!(e.WebIDEUsage?.includes(v_.ODATA_ABAP)&&e.Authentication===sp.SAML_ASSERTION&&e.ProxyType===fre.INTERNET)}function aq(e){return!!e.WebIDEUsage?.includes(v_.ODATA_ABAP)}var Vd={ABAP:"abap",ABAP_TRIAL:"abap-trial",ABAP_CANARY:"abap-canary",ABAP_OEM:"abap-oem",ABAP_OEM_CANARY:"abap-oem-canary",ABAP_HAAS:"abap-haas",DESTINATION:"destination",ABAP_STAGING:"abap-staging",ABAP_INTERNAL_STAGING:"abap-internal-staging"};var dre="abap-cloud-destination-instance",yHe="bas-destination-instance-cred";function jr(){return!!process.env[Zm.H2O_URL]}async function EHe(e){try{let t=await(0,op.cfGetInstanceKeyParameters)(e);if(!t)throw new Error(`No destination instance ${e} found`);let r=t.credentials;if(!r)throw new Error(`No credentials for destination instance ${e} found`);let n=r.uaa?.clientid||r.clientid,i=r.uaa?.clientsecret||r.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}`)}}function tb(e,t){let r=`https://${e}.dest`;return t&&t.length>1?new URL(t,r).toString():r}function YCr(e){let[t,...r]=e.split(".");return[t.replace(/-api$/,""),...r].join(".")}async function hre(e){let t={};await Oa.get("/reload",{baseURL:process.env[Zm.HTTP_PROXY]}),zCr();let r=await Oa.get("/api/listDestinations",{baseURL:process.env[Zm.H2O_URL]});return(Array.isArray(r.data)?r.data:[]).forEach(i=>{e?.stripS4HCApiHosts&&pre(i)&&(i.Host=YCr(i.Host)),i.WebIDEEnabled&&(t[i.Name]=i)}),t}function zCr(){!jr()||!globalThis.GLOBAL_AGENT||(globalThis.GLOBAL_AGENT.HTTP_PROXY||(globalThis.GLOBAL_AGENT.HTTP_PROXY=process.env[Zm.HTTP_PROXY]??null),globalThis.GLOBAL_AGENT.HTTPS_PROXY||(globalThis.GLOBAL_AGENT.HTTPS_PROXY=process.env[Zm.HTTPS_PROXY]??null))}function KCr(e,t,r,n){let i={usage:"odata_abap,dev_abap,abap_cloud",html5DynamicDestination:"true",html5Timeout:"60000"},s={clientId:r.clientid,clientSecret:r.clientsecret,tokenServiceURL:new URL("/oauth/token",r.url).toString(),tokenServiceURLType:nq.DEDICATED};return{name:e,description:t,url:new URL(n),type:rq.HTTP,proxyType:RD.INTERNET,basProperties:i,credentials:{authentication:sp.OAUTH2_USER_TOKEN_EXCHANGE,oauth2UserTokenExchange:s}}}async function mre(e){let t=await(0,op.cfGetTarget)(!0);if(!t.space)throw new Error("No Dev Space has been created for the subaccount.");return`abap-cloud-${`${e}-${t.org}-${t.space}`.replace(/\W/gi,"-").toLowerCase()}`.substring(0,199)}async function XCr(e,t,r,n){let i=await mre(e);return(await(0,op.apiGetServicesInstancesFilteredByType)(["destination"])).find(a=>a.label===dre)||(await(0,op.apiCreateServiceInstance)("destination","lite",dre,null),n?.info(`New ABAP destination instance ${dre} created.`)),KCr(i,`Destination generated by App Studio for Cloud Foundry Abap service instance: '${e}', Do not remove.`,t,r)}async function _He(e,t,r){if(!jr())throw new Error("Creating a SAP BTP destinations is only supported on SAP Business Application Studio.");let n=t;try{if(!n){let a=await(0,op.apiGetInstanceCredentials)(e);if(!a?.credentials)throw new Error(`Could not retrieve SAP BTP credentials for ${e}.`);n={uaaCredentials:a.credentials.uaa,hostUrl:a.credentials.url}}let i=await XCr(e,n.uaaCredentials,n.hostUrl,r);await gHe.destinations.createDestination(i),r?.debug(`SAP BTP destination ${JSON.stringify(i,null,2)} created.`);let o=(await hre())?.[i.name];if(!o)throw new Error("Destination not found on SAP BTP.");return o}catch(i){throw new Error(`An error occurred while generating destination ${e}: ${i}`)}}var FHe=Te(Ere(),1),UHe=require("node:https"),kHe=Te(_re(),1),BHe=Te(NF(),1),qHe=Te(MHe(),1),jHe=require("node:util");var vre=class extends kHe.HttpsProxyAgent{extraOptions;constructor(t,r){super(t,r),this.extraOptions=r}async connect(t,r){return super.connect(t,{...this.extraOptions,...r})}};function S_(e,t){let r=(0,BHe.default)(t),n={rejectUnauthorized:!r.ignoreCertErrors};r.httpsAgent||(r.httpsAgent=new UHe.Agent(n)),delete r.ignoreCertErrors,r.withCredentials=r?.auth&&Object.keys(r.auth).length>0,r.validateStatus=s=>s<400;let i=new e(r);return i.interceptors.request.use(s=>{let o=i.getUri(s),a=(0,qHe.getProxyForUrl)(o);return a&&!jr()&&(s.httpsAgent=new vre(a,n),s.httpAgent=new FHe.HttpProxyAgent(a),s.proxy=!1),s}),i.defaults.headers=i.defaults.headers??{common:{},delete:{},put:{},get:{},post:{},head:{},patch:{}},RFe(i),r.auth?.password&&NUe(i),t.cookies&&t.cookies.split(";").forEach(s=>{i.cookies.addCookie(s.trim())}),bP.isPatchRequired(t.baseURL)&&bP.apply(),i}function VHe(e){return typeof e=="string"?S_(Um,{baseURL:e}):S_(Um,e)}function b_(e){return S_(ja,e)}var T_;(function(e){e.Standalone="Standalone",e.EmbeddedSteampunk="EmbeddedSteampunk"})(T_||(T_={}));function Sre(e){let t;switch(e.environment){case T_.Standalone:{let{service:r,refreshToken:n,refreshTokenChangedCb:i,cookies:s,...o}=e;t=S_(ja,{baseURL:r.url,cookies:s,...o}),s||(e.service?.uaa?.username&&e.service.uaa.password?IUe(t,r,n,i):pZ({provider:t}));break}case T_.EmbeddedSteampunk:{let{url:r,cookies:n,...i}=e;t=S_(ja,{baseURL:r,cookies:n,...i}),n||pZ({provider:t});break}default:{let r=e;throw new Error(`Unknown environment type supplied: ${(0,jHe.inspect)(r)}`)}}return t}function $He(e,t,r){let{cookies:n,...i}=e,s={...i,baseURL:tb(t.Name,t.Host?new URL(t.Host).pathname:void 0),cookies:n};s.params=s.params??{},s.params.saml2="disabled";let o;if(pHe(t)?(o=S_(ja,s),o.publicUrl=t.Host):o=S_(Um,s),r){let a=o.interceptors.request.use(async u=>{let c=await EHe(r);return o.defaults.headers.common[yHe]=c,o.interceptors.request.eject(a),u})}return o}var GHe;(function(e){e.FF_SIMPLE="basic"})(GHe||(GHe={}));var HHe;(function(e){e.FE_FPM="fpm",e.FE_LROP="lrop",e.FE_OVP="ovp",e.FE_ALP="alp",e.FE_FEOP="feop",e.FE_WORKLIST="worklist"})(HHe||(HHe={}));var un={vscode:{name:"Visual Studio Code",technical:"VSCode"},bas:{name:"SAP Business Application Studio",technical:"SBAS"},cli:{name:"CLI",technical:"CLI"}};var WHe;(function(e){e.CF="CF",e.ABAP="ABAP"})(WHe||(WHe={}));function NPr(){return!!(process.argv[1]?.includes("yo")||process.stdin.isTTY)}function Uc(){return NPr()?un.cli:jr()?un.bas:un.vscode}var Ft=e=>typeof e=="string",ID=()=>{let e,t,r=new Promise((n,i)=>{e=n,t=i});return r.resolve=e,r.reject=t,r},YHe=e=>e==null?"":""+e,IPr=(e,t,r)=>{e.forEach(n=>{t[n]&&(r[n]=t[n])})},LPr=/###/g,zHe=e=>e&&e.indexOf("###")>-1?e.replace(LPr,"."):e,KHe=e=>!e||Ft(e),LD=(e,t,r)=>{let n=Ft(t)?t.split("."):t,i=0;for(;i<n.length-1;){if(KHe(e))return{};let s=zHe(n[i]);!e[s]&&r&&(e[s]=new r),Object.prototype.hasOwnProperty.call(e,s)?e=e[s]:e={},++i}return KHe(e)?{}:{obj:e,k:zHe(n[i])}},XHe=(e,t,r)=>{let{obj:n,k:i}=LD(e,t,Object);if(n!==void 0||t.length===1){n[i]=r;return}let s=t[t.length-1],o=t.slice(0,t.length-1),a=LD(e,o,Object);for(;a.obj===void 0&&o.length;)s=`${o[o.length-1]}.${s}`,o=o.slice(0,o.length-1),a=LD(e,o,Object),a?.obj&&typeof a.obj[`${a.k}.${s}`]<"u"&&(a.obj=void 0);a.obj[`${a.k}.${s}`]=r},MPr=(e,t,r,n)=>{let{obj:i,k:s}=LD(e,t,Object);i[s]=i[s]||[],i[s].push(r)},dq=(e,t)=>{let{obj:r,k:n}=LD(e,t);if(r&&Object.prototype.hasOwnProperty.call(r,n))return r[n]},FPr=(e,t,r)=>{let n=dq(e,r);return n!==void 0?n:dq(t,r)},n5e=(e,t,r)=>{for(let n in t)n!=="__proto__"&&n!=="constructor"&&(n in e?Ft(e[n])||e[n]instanceof String||Ft(t[n])||t[n]instanceof String?r&&(e[n]=t[n]):n5e(e[n],t[n],r):e[n]=t[n]);return e},A_=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),UPr={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},kPr=e=>Ft(e)?e.replace(/[&<>"'\/]/g,t=>UPr[t]):e,xre=class{constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){let r=this.regExpMap.get(t);if(r!==void 0)return r;let n=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,n),this.regExpQueue.push(t),n}},BPr=[" ",",","?","!",";"],qPr=new xre(20),jPr=(e,t,r)=>{t=t||"",r=r||"";let n=BPr.filter(o=>t.indexOf(o)<0&&r.indexOf(o)<0);if(n.length===0)return!0;let i=qPr.getRegExp(`(${n.map(o=>o==="?"?"\\?":o).join("|")})`),s=!i.test(e);if(!s){let o=e.indexOf(r);o>0&&!i.test(e.substring(0,o))&&(s=!0)}return s},wre=(e,t,r=".")=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;let n=t.split(r),i=e;for(let s=0;s<n.length;){if(!i||typeof i!="object")return;let o,a="";for(let u=s;u<n.length;++u)if(u!==s&&(a+=r),a+=n[u],o=i[a],o!==void 0){if(["string","number","boolean"].indexOf(typeof o)>-1&&u<n.length-1)continue;s+=u-s+1;break}i=o}return i},MD=e=>e?.replace(/_/g,"-"),VPr={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){console?.[e]?.apply?.(console,t)}},Ore=class e{constructor(t,r={}){this.init(t,r)}init(t,r={}){this.prefix=r.prefix||"i18next:",this.logger=t||VPr,this.options=r,this.debug=r.debug}log(...t){return this.forward(t,"log","",!0)}warn(...t){return this.forward(t,"warn","",!0)}error(...t){return this.forward(t,"error","")}deprecate(...t){return this.forward(t,"warn","WARNING DEPRECATED: ",!0)}forward(t,r,n,i){return i&&!this.debug?null:(Ft(t[0])&&(t[0]=`${n}${this.prefix} ${t[0]}`),this.logger[r](t))}create(t){return new e(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t=t||this.options,t.prefix=t.prefix||this.prefix,new e(this.logger,t)}},up=new Ore,ob=class{constructor(){this.observers={}}on(t,r){return t.split(" ").forEach(n=>{this.observers[n]||(this.observers[n]=new Map);let i=this.observers[n].get(r)||0;this.observers[n].set(r,i+1)}),this}off(t,r){if(this.observers[t]){if(!r){delete this.observers[t];return}this.observers[t].delete(r)}}emit(t,...r){this.observers[t]&&Array.from(this.observers[t].entries()).forEach(([i,s])=>{for(let o=0;o<s;o++)i(...r)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(([i,s])=>{for(let o=0;o<s;o++)i.apply(i,[t,...r])})}},hq=class extends ob{constructor(t,r={ns:["translation"],defaultNS:"translation"}){super(),this.data=t||{},this.options=r,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.indexOf(t)<0&&this.options.ns.push(t)}removeNamespaces(t){let r=this.options.ns.indexOf(t);r>-1&&this.options.ns.splice(r,1)}getResource(t,r,n,i={}){let s=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,o=i.ignoreJSONStructure!==void 0?i.ignoreJSONStructure:this.options.ignoreJSONStructure,a;t.indexOf(".")>-1?a=t.split("."):(a=[t,r],n&&(Array.isArray(n)?a.push(...n):Ft(n)&&s?a.push(...n.split(s)):a.push(n)));let u=dq(this.data,a);return!u&&!r&&!n&&t.indexOf(".")>-1&&(t=a[0],r=a[1],n=a.slice(2).join(".")),u||!o||!Ft(n)?u:wre(this.data?.[t]?.[r],n,s)}addResource(t,r,n,i,s={silent:!1}){let o=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator,a=[t,r];n&&(a=a.concat(o?n.split(o):n)),t.indexOf(".")>-1&&(a=t.split("."),i=r,r=a[1]),this.addNamespaces(r),XHe(this.data,a,i),s.silent||this.emit("added",t,r,n,i)}addResources(t,r,n,i={silent:!1}){for(let s in n)(Ft(n[s])||Array.isArray(n[s]))&&this.addResource(t,r,s,n[s],{silent:!0});i.silent||this.emit("added",t,r,n)}addResourceBundle(t,r,n,i,s,o={silent:!1,skipCopy:!1}){let a=[t,r];t.indexOf(".")>-1&&(a=t.split("."),i=n,n=r,r=a[1]),this.addNamespaces(r);let u=dq(this.data,a)||{};o.skipCopy||(n=JSON.parse(JSON.stringify(n))),i?n5e(u,n,s):u={...u,...n},XHe(this.data,a,u),o.silent||this.emit("added",t,r,n)}removeResourceBundle(t,r){this.hasResourceBundle(t,r)&&delete this.data[t][r],this.removeNamespaces(r),this.emit("removed",t,r)}hasResourceBundle(t,r){return this.getResource(t,r)!==void 0}getResourceBundle(t,r){return r||(r=this.options.defaultNS),this.getResource(t,r)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){let r=this.getDataByLanguage(t);return!!(r&&Object.keys(r)||[]).find(i=>r[i]&&Object.keys(r[i]).length>0)}toJSON(){return this.data}},i5e={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,r,n,i){return e.forEach(s=>{t=this.processors[s]?.process(t,r,n,i)??t}),t}},s5e=Symbol("i18next/PATH_KEY");function $Pr(){let e=[],t=Object.create(null),r;return t.get=(n,i)=>(r?.revoke?.(),i===s5e?e:(e.push(i),r=Proxy.revocable(n,t),r.proxy)),Proxy.revocable(Object.create(null),t).proxy}function sb(e,t){let{[s5e]:r}=e($Pr()),n=t?.keySeparator??".",i=t?.nsSeparator??":";if(r.length>1&&i){let s=t?.ns,o=Array.isArray(s)?s:null;if(o&&o.length>1&&o.slice(1).includes(r[0]))return`${r[0]}${i}${r.slice(1).join(n)}`}return r.join(n)}var JHe={},Tre=e=>!Ft(e)&&typeof e!="boolean"&&typeof e!="number",mq=class e extends ob{constructor(t,r={}){super(),IPr(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=r,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=up.create("translator")}changeLanguage(t){t&&(this.language=t)}exists(t,r={interpolation:{}}){let n={...r};if(t==null)return!1;let i=this.resolve(t,n);if(i?.res===void 0)return!1;let s=Tre(i.res);return!(n.returnObjects===!1&&s)}extractFromKey(t,r){let n=r.nsSeparator!==void 0?r.nsSeparator:this.options.nsSeparator;n===void 0&&(n=":");let i=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,s=r.ns||this.options.defaultNS||[],o=n&&t.indexOf(n)>-1,a=!this.options.userDefinedKeySeparator&&!r.keySeparator&&!this.options.userDefinedNsSeparator&&!r.nsSeparator&&!jPr(t,n,i);if(o&&!a){let u=t.match(this.interpolator.nestingRegexp);if(u&&u.length>0)return{key:t,namespaces:Ft(s)?[s]:s};let c=t.split(n);(n!==i||n===i&&this.options.ns.indexOf(c[0])>-1)&&(s=c.shift()),t=c.join(i)}return{key:t,namespaces:Ft(s)?[s]:s}}translate(t,r,n){let i=typeof r=="object"?{...r}:r;if(typeof i!="object"&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),typeof i=="object"&&(i={...i}),i||(i={}),t==null)return"";typeof t=="function"&&(t=sb(t,{...this.options,...i})),Array.isArray(t)||(t=[String(t)]),t=t.map(de=>typeof de=="function"?sb(de,{...this.options,...i}):String(de));let s=i.returnDetails!==void 0?i.returnDetails:this.options.returnDetails,o=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,{key:a,namespaces:u}=this.extractFromKey(t[t.length-1],i),c=u[u.length-1],l=i.nsSeparator!==void 0?i.nsSeparator:this.options.nsSeparator;l===void 0&&(l=":");let f=i.lng||this.language,p=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(f?.toLowerCase()==="cimode")return p?s?{res:`${c}${l}${a}`,usedKey:a,exactUsedKey:a,usedLng:f,usedNS:c,usedParams:this.getUsedParamsDetails(i)}:`${c}${l}${a}`:s?{res:a,usedKey:a,exactUsedKey:a,usedLng:f,usedNS:c,usedParams:this.getUsedParamsDetails(i)}:a;let d=this.resolve(t,i),h=d?.res,g=d?.usedKey||a,v=d?.exactUsedKey||a,S=["[object Number]","[object Function]","[object RegExp]"],b=i.joinArrays!==void 0?i.joinArrays:this.options.joinArrays,A=!this.i18nFormat||this.i18nFormat.handleAsObject,w=i.count!==void 0&&!Ft(i.count),x=e.hasDefaultValue(i),N=w?this.pluralResolver.getSuffix(f,i.count,i):"",F=i.ordinal&&w?this.pluralResolver.getSuffix(f,i.count,{ordinal:!1}):"",D=w&&!i.ordinal&&i.count===0,V=D&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${N}`]||i[`defaultValue${F}`]||i.defaultValue,z=h;A&&!h&&x&&(z=V);let L=Tre(z),J=Object.prototype.toString.apply(z);if(A&&z&&L&&S.indexOf(J)<0&&!(Ft(b)&&Array.isArray(z))){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");let de=this.options.returnedObjectHandler?this.options.returnedObjectHandler(g,z,{...i,ns:u}):`key '${a} (${this.language})' returned an object instead of string.`;return s?(d.res=de,d.usedParams=this.getUsedParamsDetails(i),d):de}if(o){let de=Array.isArray(z),ie=de?[]:{},H=de?v:g;for(let $ in z)if(Object.prototype.hasOwnProperty.call(z,$)){let ye=`${H}${o}${$}`;x&&!h?ie[$]=this.translate(ye,{...i,defaultValue:Tre(V)?V[$]:void 0,joinArrays:!1,ns:u}):ie[$]=this.translate(ye,{...i,joinArrays:!1,ns:u}),ie[$]===ye&&(ie[$]=z[$])}h=ie}}else if(A&&Ft(b)&&Array.isArray(h))h=h.join(b),h&&(h=this.extendTranslation(h,t,i,n));else{let de=!1,ie=!1;!this.isValidLookup(h)&&x&&(de=!0,h=V),this.isValidLookup(h)||(ie=!0,h=a);let $=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&ie?void 0:h,ye=x&&V!==h&&this.options.updateMissing;if(ie||de||ye){if(this.logger.log(ye?"updateKey":"missingKey",f,c,a,ye?V:h),o){let Ke=this.resolve(a,{...i,keySeparator:!1});Ke&&Ke.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let xe=[],Oe=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if(this.options.saveMissingTo==="fallback"&&Oe&&Oe[0])for(let Ke=0;Ke<Oe.length;Ke++)xe.push(Oe[Ke]);else this.options.saveMissingTo==="all"?xe=this.languageUtils.toResolveHierarchy(i.lng||this.language):xe.push(i.lng||this.language);let Ie=(Ke,ve,qe)=>{let ht=x&&qe!==h?qe:$;this.options.missingKeyHandler?this.options.missingKeyHandler(Ke,c,ve,ht,ye,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(Ke,c,ve,ht,ye,i),this.emit("missingKey",Ke,c,ve,h)};this.options.saveMissing&&(this.options.saveMissingPlurals&&w?xe.forEach(Ke=>{let ve=this.pluralResolver.getSuffixes(Ke,i);D&&i[`defaultValue${this.options.pluralSeparator}zero`]&&ve.indexOf(`${this.options.pluralSeparator}zero`)<0&&ve.push(`${this.options.pluralSeparator}zero`),ve.forEach(qe=>{Ie([Ke],a+qe,i[`defaultValue${qe}`]||V)})}):Ie(xe,a,V))}h=this.extendTranslation(h,t,i,d,n),ie&&h===a&&this.options.appendNamespaceToMissingKey&&(h=`${c}${l}${a}`),(ie||de)&&this.options.parseMissingKeyHandler&&(h=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${c}${l}${a}`:a,de?h:void 0,i))}return s?(d.res=h,d.usedParams=this.getUsedParamsDetails(i),d):h}extendTranslation(t,r,n,i,s){if(this.i18nFormat?.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...n},n.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init({...n,interpolation:{...this.options.interpolation,...n.interpolation}});let u=Ft(t)&&(n?.interpolation?.skipOnVariables!==void 0?n.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables),c;if(u){let f=t.match(this.interpolator.nestingRegexp);c=f&&f.length}let l=n.replace&&!Ft(n.replace)?n.replace:n;if(this.options.interpolation.defaultVariables&&(l={...this.options.interpolation.defaultVariables,...l}),t=this.interpolator.interpolate(t,l,n.lng||this.language||i.usedLng,n),u){let f=t.match(this.interpolator.nestingRegexp),p=f&&f.length;c<p&&(n.nest=!1)}!n.lng&&i&&i.res&&(n.lng=this.language||i.usedLng),n.nest!==!1&&(t=this.interpolator.nest(t,(...f)=>s?.[0]===f[0]&&!n.context?(this.logger.warn(`It seems you are nesting recursively key: ${f[0]} in key: ${r[0]}`),null):this.translate(...f,r),n)),n.interpolation&&this.interpolator.reset()}let o=n.postProcess||this.options.postProcess,a=Ft(o)?[o]:o;return t!=null&&a?.length&&n.applyPostProcessor!==!1&&(t=i5e.handle(a,t,r,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...i,usedParams:this.getUsedParamsDetails(n)},...n}:n,this)),t}resolve(t,r={}){let n,i,s,o,a;return Ft(t)&&(t=[t]),Array.isArray(t)&&(t=t.map(u=>typeof u=="function"?sb(u,{...this.options,...r}):u)),t.forEach(u=>{if(this.isValidLookup(n))return;let c=this.extractFromKey(u,r),l=c.key;i=l;let f=c.namespaces;this.options.fallbackNS&&(f=f.concat(this.options.fallbackNS));let p=r.count!==void 0&&!Ft(r.count),d=p&&!r.ordinal&&r.count===0,h=r.context!==void 0&&(Ft(r.context)||typeof r.context=="number")&&r.context!=="",g=r.lngs?r.lngs:this.languageUtils.toResolveHierarchy(r.lng||this.language,r.fallbackLng);f.forEach(v=>{this.isValidLookup(n)||(a=v,!JHe[`${g[0]}-${v}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(a)&&(JHe[`${g[0]}-${v}`]=!0,this.logger.warn(`key "${i}" for languages "${g.join(", ")}" won't get resolved as namespace "${a}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),g.forEach(S=>{if(this.isValidLookup(n))return;o=S;let b=[l];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(b,l,S,v,r);else{let w;p&&(w=this.pluralResolver.getSuffix(S,r.count,r));let x=`${this.options.pluralSeparator}zero`,N=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(p&&(r.ordinal&&w.indexOf(N)===0&&b.push(l+w.replace(N,this.options.pluralSeparator)),b.push(l+w),d&&b.push(l+x)),h){let F=`${l}${this.options.contextSeparator||"_"}${r.context}`;b.push(F),p&&(r.ordinal&&w.indexOf(N)===0&&b.push(F+w.replace(N,this.options.pluralSeparator)),b.push(F+w),d&&b.push(F+x))}}let A;for(;A=b.pop();)this.isValidLookup(n)||(s=A,n=this.getResource(S,v,A,r))}))})}),{res:n,usedKey:i,exactUsedKey:s,usedLng:o,usedNS:a}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,r,n,i={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(t,r,n,i):this.resourceStore.getResource(t,r,n,i)}getUsedParamsDetails(t={}){let r=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],n=t.replace&&!Ft(t.replace),i=n?t.replace:t;if(n&&typeof t.count<"u"&&(i.count=t.count),this.options.interpolation.defaultVariables&&(i={...this.options.interpolation.defaultVariables,...i}),!n){i={...i};for(let s of r)delete i[s]}return i}static hasDefaultValue(t){let r="defaultValue";for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&r===n.substring(0,r.length)&&t[n]!==void 0)return!0;return!1}},gq=class{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=up.create("languageUtils")}getScriptPartFromCode(t){if(t=MD(t),!t||t.indexOf("-")<0)return null;let r=t.split("-");return r.length===2||(r.pop(),r[r.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(r.join("-"))}getLanguagePartFromCode(t){if(t=MD(t),!t||t.indexOf("-")<0)return t;let r=t.split("-");return this.formatLanguageCode(r[0])}formatLanguageCode(t){if(Ft(t)&&t.indexOf("-")>-1){let r;try{r=Intl.getCanonicalLocales(t)[0]}catch{}return r&&this.options.lowerCaseLng&&(r=r.toLowerCase()),r||(this.options.lowerCaseLng?t.toLowerCase():t)}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}getBestMatchFromCodes(t){if(!t)return null;let r;return t.forEach(n=>{if(r)return;let i=this.formatLanguageCode(n);(!this.options.supportedLngs||this.isSupportedCode(i))&&(r=i)}),!r&&this.options.supportedLngs&&t.forEach(n=>{if(r)return;let i=this.getScriptPartFromCode(n);if(this.isSupportedCode(i))return r=i;let s=this.getLanguagePartFromCode(n);if(this.isSupportedCode(s))return r=s;r=this.options.supportedLngs.find(o=>{if(o===s)return o;if(!(o.indexOf("-")<0&&s.indexOf("-")<0)&&(o.indexOf("-")>0&&s.indexOf("-")<0&&o.substring(0,o.indexOf("-"))===s||o.indexOf(s)===0&&s.length>1))return o})}),r||(r=this.getFallbackCodes(this.options.fallbackLng)[0]),r}getFallbackCodes(t,r){if(!t)return[];if(typeof t=="function"&&(t=t(r)),Ft(t)&&(t=[t]),Array.isArray(t))return t;if(!r)return t.default||[];let n=t[r];return n||(n=t[this.getScriptPartFromCode(r)]),n||(n=t[this.formatLanguageCode(r)]),n||(n=t[this.getLanguagePartFromCode(r)]),n||(n=t.default),n||[]}toResolveHierarchy(t,r){let n=this.getFallbackCodes((r===!1?[]:r)||this.options.fallbackLng||[],t),i=[],s=o=>{o&&(this.isSupportedCode(o)?i.push(o):this.logger.warn(`rejecting language code not found in supportedLngs: ${o}`))};return Ft(t)&&(t.indexOf("-")>-1||t.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&s(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&s(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&s(this.getLanguagePartFromCode(t))):Ft(t)&&s(this.formatLanguageCode(t)),n.forEach(o=>{i.indexOf(o)<0&&s(this.formatLanguageCode(o))}),i}},QHe={zero:0,one:1,two:2,few:3,many:4,other:5},ZHe={select:e=>e===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})},Cre=class{constructor(t,r={}){this.languageUtils=t,this.options=r,this.logger=up.create("pluralResolver"),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(t,r={}){let n=MD(t==="dev"?"en":t),i=r.ordinal?"ordinal":"cardinal",s=JSON.stringify({cleanedCode:n,type:i});if(s in this.pluralRulesCache)return this.pluralRulesCache[s];let o;try{o=new Intl.PluralRules(n,{type:i})}catch{if(typeof Intl>"u")return this.logger.error("No Intl support, please use an Intl polyfill!"),ZHe;if(!t.match(/-|_/))return ZHe;let u=this.languageUtils.getLanguagePartFromCode(t);o=this.getRule(u,r)}return this.pluralRulesCache[s]=o,o}needsPlural(t,r={}){let n=this.getRule(t,r);return n||(n=this.getRule("dev",r)),n?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(t,r,n={}){return this.getSuffixes(t,n).map(i=>`${r}${i}`)}getSuffixes(t,r={}){let n=this.getRule(t,r);return n||(n=this.getRule("dev",r)),n?n.resolvedOptions().pluralCategories.sort((i,s)=>QHe[i]-QHe[s]).map(i=>`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${i}`):[]}getSuffix(t,r,n={}){let i=this.getRule(t,n);return i?`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${i.select(r)}`:(this.logger.warn(`no plural rule found for: ${t}`),this.getSuffix("dev",r,n))}},e5e=(e,t,r,n=".",i=!0)=>{let s=FPr(e,t,r);return!s&&i&&Ft(r)&&(s=wre(e,r,n),s===void 0&&(s=wre(t,r,n))),s},bre=e=>e.replace(/\$/g,"$$$$"),yq=class{constructor(t={}){this.logger=up.create("interpolator"),this.options=t,this.format=t?.interpolation?.format||(r=>r),this.init(t)}init(t={}){t.interpolation||(t.interpolation={escapeValue:!0});let{escape:r,escapeValue:n,useRawValueToEscape:i,prefix:s,prefixEscaped:o,suffix:a,suffixEscaped:u,formatSeparator:c,unescapeSuffix:l,unescapePrefix:f,nestingPrefix:p,nestingPrefixEscaped:d,nestingSuffix:h,nestingSuffixEscaped:g,nestingOptionsSeparator:v,maxReplaces:S,alwaysFormat:b}=t.interpolation;this.escape=r!==void 0?r:kPr,this.escapeValue=n!==void 0?n:!0,this.useRawValueToEscape=i!==void 0?i:!1,this.prefix=s?A_(s):o||"{{",this.suffix=a?A_(a):u||"}}",this.formatSeparator=c||",",this.unescapePrefix=l?"":f||"-",this.unescapeSuffix=this.unescapePrefix?"":l||"",this.nestingPrefix=p?A_(p):d||A_("$t("),this.nestingSuffix=h?A_(h):g||A_(")"),this.nestingOptionsSeparator=v||",",this.maxReplaces=S||1e3,this.alwaysFormat=b!==void 0?b:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let t=(r,n)=>r?.source===n?(r.lastIndex=0,r):new RegExp(n,"g");this.regexp=t(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=t(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=t(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(t,r,n,i){let s,o,a,u=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=d=>{if(d.indexOf(this.formatSeparator)<0){let S=e5e(r,u,d,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(S,void 0,n,{...i,...r,interpolationkey:d}):S}let h=d.split(this.formatSeparator),g=h.shift().trim(),v=h.join(this.formatSeparator).trim();return this.format(e5e(r,u,g,this.options.keySeparator,this.options.ignoreJSONStructure),v,n,{...i,...r,interpolationkey:g})};this.resetRegExp();let l=i?.missingInterpolationHandler||this.options.missingInterpolationHandler,f=i?.interpolation?.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:d=>bre(d)},{regex:this.regexp,safeValue:d=>this.escapeValue?bre(this.escape(d)):bre(d)}].forEach(d=>{for(a=0;s=d.regex.exec(t);){let h=s[1].trim();if(o=c(h),o===void 0)if(typeof l=="function"){let v=l(t,s,i);o=Ft(v)?v:""}else if(i&&Object.prototype.hasOwnProperty.call(i,h))o="";else if(f){o=s[0];continue}else this.logger.warn(`missed to pass in variable ${h} for interpolating ${t}`),o="";else!Ft(o)&&!this.useRawValueToEscape&&(o=YHe(o));let g=d.safeValue(o);if(t=t.replace(s[0],g),f?(d.regex.lastIndex+=o.length,d.regex.lastIndex-=s[0].length):d.regex.lastIndex=0,a++,a>=this.maxReplaces)break}}),t}nest(t,r,n={}){let i,s,o,a=(u,c)=>{let l=this.nestingOptionsSeparator;if(u.indexOf(l)<0)return u;let f=u.split(new RegExp(`${A_(l)}[ ]*{`)),p=`{${f[1]}`;u=f[0],p=this.interpolate(p,o);let d=p.match(/'/g),h=p.match(/"/g);((d?.length??0)%2===0&&!h||(h?.length??0)%2!==0)&&(p=p.replace(/'/g,'"'));try{o=JSON.parse(p),c&&(o={...c,...o})}catch(g){return this.logger.warn(`failed parsing options string in nesting for key ${u}`,g),`${u}${l}${p}`}return o.defaultValue&&o.defaultValue.indexOf(this.prefix)>-1&&delete o.defaultValue,u};for(;i=this.nestingRegexp.exec(t);){let u=[];o={...n},o=o.replace&&!Ft(o.replace)?o.replace:o,o.applyPostProcessor=!1,delete o.defaultValue;let c=/{.*}/.test(i[1])?i[1].lastIndexOf("}")+1:i[1].indexOf(this.formatSeparator);if(c!==-1&&(u=i[1].slice(c).split(this.formatSeparator).map(l=>l.trim()).filter(Boolean),i[1]=i[1].slice(0,c)),s=r(a.call(this,i[1].trim(),o),o),s&&i[0]===t&&!Ft(s))return s;Ft(s)||(s=YHe(s)),s||(this.logger.warn(`missed to resolve ${i[1]} for nesting ${t}`),s=""),u.length&&(s=u.reduce((l,f)=>this.format(l,f,n.lng,{...n,interpolationkey:i[1].trim()}),s.trim())),t=t.replace(i[0],s),this.regexp.lastIndex=0}return t}},GPr=e=>{let t=e.toLowerCase().trim(),r={};if(e.indexOf("(")>-1){let n=e.split("(");t=n[0].toLowerCase().trim();let i=n[1].substring(0,n[1].length-1);t==="currency"&&i.indexOf(":")<0?r.currency||(r.currency=i.trim()):t==="relativetime"&&i.indexOf(":")<0?r.range||(r.range=i.trim()):i.split(";").forEach(o=>{if(o){let[a,...u]=o.split(":"),c=u.join(":").trim().replace(/^'+|'+$/g,""),l=a.trim();r[l]||(r[l]=c),c==="false"&&(r[l]=!1),c==="true"&&(r[l]=!0),isNaN(c)||(r[l]=parseInt(c,10))}})}return{formatName:t,formatOptions:r}},t5e=e=>{let t={};return(r,n,i)=>{let s=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(s={...s,[i.interpolationkey]:void 0});let o=n+JSON.stringify(s),a=t[o];return a||(a=e(MD(n),i),t[o]=a),a(r)}},HPr=e=>(t,r,n)=>e(MD(r),n)(t),Pre=class{constructor(t={}){this.logger=up.create("formatter"),this.options=t,this.init(t)}init(t,r={interpolation:{}}){this.formatSeparator=r.interpolation.formatSeparator||",";let n=r.cacheInBuiltFormats?t5e:HPr;this.formats={number:n((i,s)=>{let o=new Intl.NumberFormat(i,{...s});return a=>o.format(a)}),currency:n((i,s)=>{let o=new Intl.NumberFormat(i,{...s,style:"currency"});return a=>o.format(a)}),datetime:n((i,s)=>{let o=new Intl.DateTimeFormat(i,{...s});return a=>o.format(a)}),relativetime:n((i,s)=>{let o=new Intl.RelativeTimeFormat(i,{...s});return a=>o.format(a,s.range||"day")}),list:n((i,s)=>{let o=new Intl.ListFormat(i,{...s});return a=>o.format(a)})}}add(t,r){this.formats[t.toLowerCase().trim()]=r}addCached(t,r){this.formats[t.toLowerCase().trim()]=t5e(r)}format(t,r,n,i={}){let s=r.split(this.formatSeparator);if(s.length>1&&s[0].indexOf("(")>1&&s[0].indexOf(")")<0&&s.find(a=>a.indexOf(")")>-1)){let a=s.findIndex(u=>u.indexOf(")")>-1);s[0]=[s[0],...s.splice(1,a)].join(this.formatSeparator)}return s.reduce((a,u)=>{let{formatName:c,formatOptions:l}=GPr(u);if(this.formats[c]){let f=a;try{let p=i?.formatParams?.[i.interpolationkey]||{},d=p.locale||p.lng||i.locale||i.lng||n;f=this.formats[c](a,d,{...l,...i,...p})}catch(p){this.logger.warn(p)}return f}else this.logger.warn(`there was no format function for ${c}`);return a},t)}},WPr=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)},Dre=class extends ob{constructor(t,r,n,i={}){super(),this.backend=t,this.store=r,this.services=n,this.languageUtils=n.languageUtils,this.options=i,this.logger=up.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=i.maxParallelReads||10,this.readingCalls=0,this.maxRetries=i.maxRetries>=0?i.maxRetries:5,this.retryTimeout=i.retryTimeout>=1?i.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(n,i.backend,i)}queueLoad(t,r,n,i){let s={},o={},a={},u={};return t.forEach(c=>{let l=!0;r.forEach(f=>{let p=`${c}|${f}`;!n.reload&&this.store.hasResourceBundle(c,f)?this.state[p]=2:this.state[p]<0||(this.state[p]===1?o[p]===void 0&&(o[p]=!0):(this.state[p]=1,l=!1,o[p]===void 0&&(o[p]=!0),s[p]===void 0&&(s[p]=!0),u[f]===void 0&&(u[f]=!0)))}),l||(a[c]=!0)}),(Object.keys(s).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:i}),{toLoad:Object.keys(s),pending:Object.keys(o),toLoadLanguages:Object.keys(a),toLoadNamespaces:Object.keys(u)}}loaded(t,r,n){let i=t.split("|"),s=i[0],o=i[1];r&&this.emit("failedLoading",s,o,r),!r&&n&&this.store.addResourceBundle(s,o,n,void 0,void 0,{skipCopy:!0}),this.state[t]=r?-1:2,r&&n&&(this.state[t]=0);let a={};this.queue.forEach(u=>{MPr(u.loaded,[s],o),WPr(u,t),r&&u.errors.push(r),u.pendingCount===0&&!u.done&&(Object.keys(u.loaded).forEach(c=>{a[c]||(a[c]={});let l=u.loaded[c];l.length&&l.forEach(f=>{a[c][f]===void 0&&(a[c][f]=!0)})}),u.done=!0,u.errors.length?u.callback(u.errors):u.callback())}),this.emit("loaded",a),this.queue=this.queue.filter(u=>!u.done)}read(t,r,n,i=0,s=this.retryTimeout,o){if(!t.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:r,fcName:n,tried:i,wait:s,callback:o});return}this.readingCalls++;let a=(c,l)=>{if(this.readingCalls--,this.waitingReads.length>0){let f=this.waitingReads.shift();this.read(f.lng,f.ns,f.fcName,f.tried,f.wait,f.callback)}if(c&&l&&i<this.maxRetries){setTimeout(()=>{this.read.call(this,t,r,n,i+1,s*2,o)},s);return}o(c,l)},u=this.backend[n].bind(this.backend);if(u.length===2){try{let c=u(t,r);c&&typeof c.then=="function"?c.then(l=>a(null,l)).catch(a):a(null,c)}catch(c){a(c)}return}return u(t,r,a)}prepareLoading(t,r,n={},i){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();Ft(t)&&(t=this.languageUtils.toResolveHierarchy(t)),Ft(r)&&(r=[r]);let s=this.queueLoad(t,r,n,i);if(!s.toLoad.length)return s.pending.length||i(),null;s.toLoad.forEach(o=>{this.loadOne(o)})}load(t,r,n){this.prepareLoading(t,r,{},n)}reload(t,r,n){this.prepareLoading(t,r,{reload:!0},n)}loadOne(t,r=""){let n=t.split("|"),i=n[0],s=n[1];this.read(i,s,"read",void 0,void 0,(o,a)=>{o&&this.logger.warn(`${r}loading namespace ${s} for language ${i} failed`,o),!o&&a&&this.logger.log(`${r}loaded namespace ${s} for language ${i}`,a),this.loaded(t,o,a)})}saveMissing(t,r,n,i,s,o={},a=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(r)){this.logger.warn(`did not save key "${n}" as the namespace "${r}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(n==null||n==="")){if(this.backend?.create){let u={...o,isUpdate:s},c=this.backend.create.bind(this.backend);if(c.length<6)try{let l;c.length===5?l=c(t,r,n,i,u):l=c(t,r,n,i),l&&typeof l.then=="function"?l.then(f=>a(null,f)).catch(a):a(null,l)}catch(l){a(l)}else c(t,r,n,i,a,u)}!t||!t[0]||this.store.addResource(t[0],r,n,i)}}},Are=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]=="object"&&(t=e[1]),Ft(e[1])&&(t.defaultValue=e[1]),Ft(e[2])&&(t.tDescription=e[2]),typeof e[2]=="object"||typeof e[3]=="object"){let r=e[3]||e[2];Object.keys(r).forEach(n=>{t[n]=r[n]})}return t},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),r5e=e=>(Ft(e.ns)&&(e.ns=[e.ns]),Ft(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),Ft(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs?.indexOf?.("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),typeof e.initImmediate=="boolean"&&(e.initAsync=e.initImmediate),e),pq=()=>{},YPr=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(r=>{typeof e[r]=="function"&&(e[r]=e[r].bind(e))})},o5e="__i18next_supportNoticeShown",zPr=()=>!!(typeof globalThis<"u"&&globalThis[o5e]||typeof process<"u"&&process.env&&process.env.I18NEXT_NO_SUPPORT_NOTICE||typeof process<"u"&&process.env&&process.env.NODE_ENV==="production"),KPr=()=>{typeof globalThis<"u"&&(globalThis[o5e]=!0)},XPr=e=>!!(e?.modules?.backend?.name?.indexOf("Locize")>0||e?.modules?.backend?.constructor?.name?.indexOf("Locize")>0||e?.options?.backend?.backends&&e.options.backend.backends.some(t=>t?.name?.indexOf("Locize")>0||t?.constructor?.name?.indexOf("Locize")>0)||e?.options?.backend?.projectId||e?.options?.backend?.backendOptions&&e.options.backend.backendOptions.some(t=>t?.projectId)),Rre=class e extends ob{constructor(t={},r){if(super(),this.options=r5e(t),this.services={},this.logger=up,this.modules={external:[]},YPr(this),r&&!this.isInitialized&&!t.isClone){if(!this.options.initAsync)return this.init(t,r),this;setTimeout(()=>{this.init(t,r)},0)}}init(t={},r){this.isInitializing=!0,typeof t=="function"&&(r=t,t={}),t.defaultNS==null&&t.ns&&(Ft(t.ns)?t.defaultNS=t.ns:t.ns.indexOf("translation")<0&&(t.defaultNS=t.ns[0]));let n=Are();this.options={...n,...this.options,...r5e(t)},this.options.interpolation={...n.interpolation,...this.options.interpolation},t.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=t.keySeparator),t.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=t.nsSeparator),typeof this.options.overloadTranslationOptionHandler!="function"&&(this.options.overloadTranslationOptionHandler=n.overloadTranslationOptionHandler),this.options.showSupportNotice!==!1&&!XPr(this)&&!zPr()&&(typeof console<"u"&&typeof console.info<"u"&&console.info("\u{1F310} i18next is made possible by our own product, Locize \u2014 consider powering your project with managed localization (AI, CDN, integrations): https://locize.com \u{1F499}"),KPr());let i=c=>c?typeof c=="function"?new c:c:null;if(!this.options.isClone){this.modules.logger?up.init(i(this.modules.logger),this.options):up.init(null,this.options);let c;this.modules.formatter?c=this.modules.formatter:c=Pre;let l=new gq(this.options);this.store=new hq(this.options.resources,this.options);let f=this.services;f.logger=up,f.resourceStore=this.store,f.languageUtils=l,f.pluralResolver=new Cre(l,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==n.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),c&&(!this.options.interpolation.format||this.options.interpolation.format===n.interpolation.format)&&(f.formatter=i(c),f.formatter.init&&f.formatter.init(f,this.options),this.options.interpolation.format=f.formatter.format.bind(f.formatter)),f.interpolator=new yq(this.options),f.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},f.backendConnector=new Dre(i(this.modules.backend),f.resourceStore,f,this.options),f.backendConnector.on("*",(d,...h)=>{this.emit(d,...h)}),this.modules.languageDetector&&(f.languageDetector=i(this.modules.languageDetector),f.languageDetector.init&&f.languageDetector.init(f,this.options.detection,this.options)),this.modules.i18nFormat&&(f.i18nFormat=i(this.modules.i18nFormat),f.i18nFormat.init&&f.i18nFormat.init(this)),this.translator=new mq(this.services,this.options),this.translator.on("*",(d,...h)=>{this.emit(d,...h)}),this.modules.external.forEach(d=>{d.init&&d.init(this)})}if(this.format=this.options.interpolation.format,r||(r=pq),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let c=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);c.length>0&&c[0]!=="dev"&&(this.options.lng=c[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(c=>{this[c]=(...l)=>this.store[c](...l)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(c=>{this[c]=(...l)=>(this.store[c](...l),this)});let a=ID(),u=()=>{let c=(l,f)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),a.resolve(f),r(l,f)};if(this.languages&&!this.isInitialized)return c(null,this.t.bind(this));this.changeLanguage(this.options.lng,c)};return this.options.resources||!this.options.initAsync?u():setTimeout(u,0),a}loadResources(t,r=pq){let n=r,i=Ft(t)?t:this.language;if(typeof t=="function"&&(n=t),!this.options.resources||this.options.partialBundledLanguages){if(i?.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return n();let s=[],o=a=>{if(!a||a==="cimode")return;this.services.languageUtils.toResolveHierarchy(a).forEach(c=>{c!=="cimode"&&s.indexOf(c)<0&&s.push(c)})};i?o(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(u=>o(u)),this.options.preload?.forEach?.(a=>o(a)),this.services.backendConnector.load(s,this.options.ns,a=>{!a&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),n(a)})}else n(null)}reloadResources(t,r,n){let i=ID();return typeof t=="function"&&(n=t,t=void 0),typeof r=="function"&&(n=r,r=void 0),t||(t=this.languages),r||(r=this.options.ns),n||(n=pq),this.services.backendConnector.reload(t,r,s=>{i.resolve(),n(s)}),i}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&i5e.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!(["cimode","dev"].indexOf(t)>-1)){for(let r=0;r<this.languages.length;r++){let n=this.languages[r];if(!(["cimode","dev"].indexOf(n)>-1)&&this.store.hasLanguageSomeTranslations(n)){this.resolvedLanguage=n;break}}!this.resolvedLanguage&&this.languages.indexOf(t)<0&&this.store.hasLanguageSomeTranslations(t)&&(this.resolvedLanguage=t,this.languages.unshift(t))}}changeLanguage(t,r){this.isLanguageChangingTo=t;let n=ID();this.emit("languageChanging",t);let i=a=>{this.language=a,this.languages=this.services.languageUtils.toResolveHierarchy(a),this.resolvedLanguage=void 0,this.setResolvedLanguage(a)},s=(a,u)=>{u?this.isLanguageChangingTo===t&&(i(u),this.translator.changeLanguage(u),this.isLanguageChangingTo=void 0,this.emit("languageChanged",u),this.logger.log("languageChanged",u)):this.isLanguageChangingTo=void 0,n.resolve((...c)=>this.t(...c)),r&&r(a,(...c)=>this.t(...c))},o=a=>{!t&&!a&&this.services.languageDetector&&(a=[]);let u=Ft(a)?a:a&&a[0],c=this.store.hasLanguageSomeTranslations(u)?u:this.services.languageUtils.getBestMatchFromCodes(Ft(a)?[a]:a);c&&(this.language||i(c),this.translator.language||this.translator.changeLanguage(c),this.services.languageDetector?.cacheUserLanguage?.(c)),this.loadResources(c,l=>{s(l,c)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?o(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(o):this.services.languageDetector.detect(o):o(t),n}getFixedT(t,r,n){let i=(s,o,...a)=>{let u;typeof o!="object"?u=this.options.overloadTranslationOptionHandler([s,o].concat(a)):u={...o},u.lng=u.lng||i.lng,u.lngs=u.lngs||i.lngs,u.ns=u.ns||i.ns,u.keyPrefix!==""&&(u.keyPrefix=u.keyPrefix||n||i.keyPrefix);let c={...this.options,...u};typeof u.keyPrefix=="function"&&(u.keyPrefix=sb(u.keyPrefix,c));let l=this.options.keySeparator||".",f;return u.keyPrefix&&Array.isArray(s)?f=s.map(p=>(typeof p=="function"&&(p=sb(p,c)),`${u.keyPrefix}${l}${p}`)):(typeof s=="function"&&(s=sb(s,c)),f=u.keyPrefix?`${u.keyPrefix}${l}${s}`:s),this.t(f,u)};return Ft(t)?i.lng=t:i.lngs=t,i.ns=r,i.keyPrefix=n,i}t(...t){return this.translator?.translate(...t)}exists(...t){return this.translator?.exists(...t)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t,r={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;let n=r.lng||this.resolvedLanguage||this.languages[0],i=this.options?this.options.fallbackLng:!1,s=this.languages[this.languages.length-1];if(n.toLowerCase()==="cimode")return!0;let o=(a,u)=>{let c=this.services.backendConnector.state[`${a}|${u}`];return c===-1||c===0||c===2};if(r.precheck){let a=r.precheck(this,o);if(a!==void 0)return a}return!!(this.hasResourceBundle(n,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||o(n,t)&&(!i||o(s,t)))}loadNamespaces(t,r){let n=ID();return this.options.ns?(Ft(t)&&(t=[t]),t.forEach(i=>{this.options.ns.indexOf(i)<0&&this.options.ns.push(i)}),this.loadResources(i=>{n.resolve(),r&&r(i)}),n):(r&&r(),Promise.resolve())}loadLanguages(t,r){let n=ID();Ft(t)&&(t=[t]);let i=this.options.preload||[],s=t.filter(o=>i.indexOf(o)<0&&this.services.languageUtils.isSupportedCode(o));return s.length?(this.options.preload=i.concat(s),this.loadResources(o=>{n.resolve(),r&&r(o)}),n):(r&&r(),Promise.resolve())}dir(t){if(t||(t=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!t)return"rtl";try{let i=new Intl.Locale(t);if(i&&i.getTextInfo){let s=i.getTextInfo();if(s&&s.direction)return s.direction}}catch{}let r=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],n=this.services?.languageUtils||new gq(Are());return t.toLowerCase().indexOf("-latn")>1?"ltr":r.indexOf(n.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(t={},r){let n=new e(t,r);return n.createInstance=e.createInstance,n}cloneInstance(t={},r=pq){let n=t.forkResourceStore;n&&delete t.forkResourceStore;let i={...this.options,...t,isClone:!0},s=new e(i);if((t.debug!==void 0||t.prefix!==void 0)&&(s.logger=s.logger.clone(t)),["store","services","language"].forEach(a=>{s[a]=this[a]}),s.services={...this.services},s.services.utils={hasLoadedNamespace:s.hasLoadedNamespace.bind(s)},n){let a=Object.keys(this.store.data).reduce((u,c)=>(u[c]={...this.store.data[c]},u[c]=Object.keys(u[c]).reduce((l,f)=>(l[f]={...u[c][f]},l),u[c]),u),{});s.store=new hq(a,i),s.services.resourceStore=s.store}if(t.interpolation){let u={...Are().interpolation,...this.options.interpolation,...t.interpolation},c={...i,interpolation:u};s.services.interpolator=new yq(c)}return s.translator=new mq(s.services,i),s.translator.on("*",(a,...u)=>{s.emit(a,...u)}),s.init(i,r),s.translator.options=i,s.translator.backendConnector.services.utils={hasLoadedNamespace:s.hasLoadedNamespace.bind(s)},s}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}},Ur=Rre.createInstance(),Mgi=Ur.createInstance,Fgi=Ur.dir,Ugi=Ur.init,kgi=Ur.loadResources,Bgi=Ur.reloadResources,qgi=Ur.use,jgi=Ur.changeLanguage,Vgi=Ur.getFixedT,$gi=Ur.t,Ggi=Ur.exists,Hgi=Ur.setDefaultNamespace,Wgi=Ur.hasLoadedNamespace,Ygi=Ur.loadNamespaces,zgi=Ur.loadLanguages;var a5e={logMessages:{info:{mockOnlyWarning:"This application was generated with a local metadata file and does not reference a live server. Please add the required server configuration or start this application with mock data using the target: `npm run start-mock`."},error:{logWrapperNotInitialised:"`LogWrapper` is not initialised."},debug:{loggingConfigured:"Logging has been configured at log level: {{logLevel}}."}},telemetry:{unknownOs:"Unknown"},texts:{systemTypeLabel:{abapCloud:"ABAP Cloud"}}};var Nre="fiori-freestyle-writer",u5e=Ur.createInstance();async function QPr(){await u5e.init({resources:{en:{[Nre]:a5e}},lng:"en",fallbackLng:"en",defaultNS:Nre,ns:[Nre],showSupportNotice:!1})}function tg(e,t){return u5e.t(e,t)}QPr().catch(()=>{});function c5e(e){return ZPr(e.name,e.userDisplayName,e.systemType)}function ZPr(e,t,r){let n=t?` [${t}]`:"";return`${e}${eDr(r)}${n}`}function eDr(e){let t="",r=` (${tg("texts.systemTypeLabel.abapCloud")})`;return(e==="AbapCloud"||e==="S4HC"||e==="BTP")&&(t=r),t}var FD=class{applicationKey="";extensionName="";extensionVersion="";getApplicationKey(){return this.applicationKey}getExtensionVersion(){return this.extensionVersion}getExtensionName(){return this.extensionName}};var qct=Te(Fue(),1);var FR=class{extensionName;eventName;constructor(t,r){this.extensionName=t,this.eventName=r}getExtensionName(){return this.extensionName}getEventName(){return this.eventName}toString(){return`${this.extensionName}/${this.eventName}`}};var Ci;(function(e){e[e.OnePercent=0]="OnePercent",e[e.TenPercent=1]="TenPercent",e[e.NoSampling=2]="NoSampling"})(Ci||(Ci={}));function c$(e){e.channel.setUseDiskRetryCaching(!0),e.addTelemetryProcessor(t=>(t.tags["ai.location.ip"]="0.0.0.0",t.tags["ai.cloud.roleInstance"]="masked",t.tags["ai.cloud.role"]="masked",t.tags["ai.device.type"]="masked",!0))}var Uue={name:"@sap-ux/telemetry",version:"1.0.8",description:"Library for sending usage telemetry data",type:"module",repository:{type:"git",url:"https://github.com/SAP/open-ux-tools.git",directory:"packages/telemetry"},bugs:{url:"https://github.com/SAP/open-ux-tools/issues?q=is%3Aopen+is%3Aissue+label%3Abug+label%3Atelemetry"},license:"Apache-2.0",private:!1,main:"dist/index.js",scripts:{build:"tsc --build",watch:"tsc --watch",clean:"rimraf --glob dist coverage *.tsbuildinfo",format:"prettier --write '**/*.{js,json,ts,yaml,yml}' --ignore-path ../../.prettierignore",lint:"eslint","lint:fix":"eslint --fix",test:"cross-env NODE_OPTIONS='--experimental-vm-modules' jest --ci --forceExit --detectOpenHandles --colors","test-u":"cross-env NODE_OPTIONS='--experimental-vm-modules' jest --ci --forceExit --detectOpenHandles --colors -u",link:"pnpm link --global",unlink:"pnpm unlink --global",example:"ts-node example/index.ts"},dependencies:{"@sap-ux/store":"workspace:*","@sap-ux/project-access":"workspace:*","@sap-ux/btp-utils":"workspace:*","@sap-ux/ui5-config":"workspace:*","@sap-ux/logger":"workspace:*","@sap-ux/nodejs-utils":"workspace:*",applicationinsights:"2.9.8",axios:"1.16.0","performance-now":"2.1.0",yaml:"2.8.3"},devDependencies:{"@jest/globals":"30.3.0","jest-extended":"7.0.0",memfs:"3.4.13",unionfs:"4.6.0",dotenv:"17.4.2"},files:["dist","LICENSE","!dist/*.map","!dist/**/*.map"],engines:{node:">=22.x"}};var Eo={azureInstrumentationKey:"",telemetryEnabled:!0,telemetryLibName:Uue.name,telemetryLibVersion:Uue.version,consumerModuleName:"",consumerModuleVersion:""};var UR=class extends FD{clients;constructor(t,r,n){super(),this.clients=new Map,this.applicationKey=t,this.extensionVersion=n,this.extensionName=r;let i=this.createTelemetryClient(Ci.OnePercent),s=this.createTelemetryClient(Ci.TenPercent),o=this.createTelemetryClient(Ci.NoSampling);this.clients.set(Ci.OnePercent,i),this.clients.set(Ci.TenPercent,s),this.clients.set(Ci.NoSampling,o)}reportBlocking(t,r,n,i,s=!1){if(!s||Eo.telemetryEnabled){let{client:o,event:a}=this.prepareClientAndEvent(t,r,n,i);return this.trackEventBlocking(o,a)}return Promise.resolve()}async report(t,r,n,i,s,o){if(o!==void 0&&!o||!Eo.telemetryEnabled)return;let{client:a,event:u}=this.prepareClientAndEvent(t,r,n,i);this.trackEvent(a,u)}prepareClientAndEvent(t,r,n,i=Ci.NoSampling){let s=this.clients.get(i),a={name:new FR(this.extensionName,t).toString(),properties:r,measurements:n};return{client:s,event:a}}async trackEventBlocking(t,r){if(process.env.SAP_UX_FIORI_TOOLS_DISABLE_TELEMETRY!=="true")return new Promise((n,i)=>{try{t.trackEvent(r),t.flush({callback:()=>n()})}catch(s){i(s)}})}trackEvent(t,r){return process.env.SAP_UX_FIORI_TOOLS_DISABLE_TELEMETRY!=="true"?(t.trackEvent(r),!0):!1}createTelemetryClient(t){let r;switch(t){case Ci.OnePercent:r=1;break;case Ci.TenPercent:r=10;break;case Ci.NoSampling:default:r=100;break}let n=new qct.TelemetryClient(this.applicationKey);return n.config.samplingPercentage=r,c$(n),n}};var kue=()=>{let e=new Date().getTime();return new Date(e).toISOString()};var kR=class extends UR{constructor(t,r,n){super(t,r,n)}async report(t,r,n,i,s,o){let a=await l$(s),u={v:this.extensionVersion,datetime:kue()},c={...r,...a,...u};await super.report(t,c,n,i,s,o)}async reportEvent(t,r,n,i){let{finalProperties:s,finalMeasurements:o}=await this.collectToolsSuiteTelemetry(t,n);return super.report(t.eventName,s,o,r,n,i)}async reportEventBlocking(t,r,n,i){let{finalProperties:s,finalMeasurements:o}=await this.collectToolsSuiteTelemetry(t,n);return super.reportBlocking(t.eventName,s,o,r,i)}async collectToolsSuiteTelemetry(t,r){let n=await l$(r),i={v:this.extensionVersion,datetime:kue()},s={...t.properties,...n,...i},o={...t.measurements};return{finalProperties:s,finalMeasurements:o}}};var jct=require("node:child_process"),BR=class{run(t,r=[],n={},i){return i&&i.debug(`Running command: ${t} ${r.join(" ")}`),new Promise((s,o)=>{let a=[],u=process.platform==="win32"?{...n,shell:!0}:n,c=(0,jct.spawn)(t,r,u);c.stdout.setEncoding("utf8");let l;c.stdout.on("data",f=>{i?.info(f.toString().replace(/[\r\n]$/,"")),l=f.toString()}),c.stderr.on("data",f=>{i?.info(f.toString().replace(/[\r\n]$/,"")),a.push(f.toString())}),c.on("error",f=>{let p=`Command failed with error: ${f.message}`;i?.error(p),o(f)}),c.on("close",f=>{if(f!==0){let p=`Command failed, \`${t} ${r.join(" ")}\`, ${a.join(", ")}`;i?.debug(p),o(p)}s(l)})})}};var Nnn=Te(B$(),1);var Inn=Te(Zle(),1),tfe=Te(ea(),1);var Oht={error:{unsupportedYoVersion:"The installed version of the `Yo` CLI tool: {{installedYoVersion}} is not supported. Please use `npm` or `yarn` to globally install the latest supported version by running: 'npm i -g yo@{{latestSupportedYoVer}}'.",executingYoVersionCmd:"Running: {{yoCmd}} returned an error: {{- error}}. Check that `yo` is installed and available on the path. If `yo@{{latestSupportedYoVer}}` is not installed, use `npm` or `yarn` to globally install the latest required version by running: 'npm i -g yo@{{latestSupportedYoVer}}'."}};var efe="nodejs-utils",Dnn=Ur.createInstance();async function Rnn(){await Dnn.init({lng:"en",fallbackLng:"en",defaultNS:efe,ns:[efe],resources:{en:{[efe]:Oht}},interpolation:{escapeValue:!1},showSupportNotice:!1})}Rnn().catch(()=>{});var JR=Te(require("node:https"),1);function jA(e){JR.default.globalAgent.options&&(JR.default.globalAgent.options.rejectUnauthorized=e),JR.default.globalAgent.fallbackAgent?.options&&(JR.default.globalAgent.fallbackAgent.options.rejectUnauthorized=e)}var nl=Te(Fpe(),1),tEt=Te(eEt(),1);var gi=class extends Error{code;constructor(t,r){super(t),this.code=r,this.name=this.constructor.name}};var is=Object.freeze({yamlParsing:"yamlParsing",nodeNotFound:"nodeNotFound",nodeNotFoundMatching:"nodeNotFoundMatching",nodeNotAMap:"nodeNotAMap",propertyNotFound:"propertyNotFound",pathCannotBeEmpty:"pathCannotBeEmpty",pathDoesNotExist:"pathDoesNotExist",seqDoesNotExist:"seqDoesNotExist",tryingToAppendToNonSequence:"tryingToAppendToNonSequence",startNodeMustBeCollection:"startNodeMustBeCollection",scalarValuesDoNotHaveProperties:"scalarValuesDoNotHaveProperties"}),bo=Object.freeze({yamlParsing:"Error parsing YAML document",nodeNotFound:"Node not found at path: [{{- path }}]",nodeNotFoundMatching:"Node not found at path: [{{- path }}, matching [{{- key }} = {{- value }}]",nodeNotAMap:"Node path: [{{- path }}, matching [{{- key }} = {{- value }}], is not a map",propertyNotFound:"Node not found at path: [{{- path }}]",pathCannotBeEmpty:"Path cannot be empty",pathDoesNotExist:"Parent node does not exist at: [{{- path }}]",seqDoesNotExist:"Sequence does not exist at: [{{- path }}]",tryingToAppendToNonSequence:"Cannot append to non-sequence at: [{{- path }}]",startNodeMustBeCollection:"Starting node must be an array or an object",scalarValuesDoNotHaveProperties:"Scalar values do not have properties"});function rl(e,t){try{return t?e?.replace(/{{-?([^{}]*)}}/g,(r,n)=>{let i=n?.trim();return t[i]?.toString()||r}):e}catch{return""}}var PN=class e{documents;static async newInstance(t){return new e(t)}constructor(t){this.documents=nl.default.parseAllDocuments(t),this.documents.length===0&&this.documents.push(nl.default.parseDocument(t));let r=this.documents.filter(n=>n.errors.length>0);if(r.length>0)throw new gi(bo.yamlParsing+`
|
|
660
|
+
`);let t=new Fa("!xml"),r=t,n="";this.matcher.reset(),this.entityDecoder.reset(),this.entityExpansionCount=0,this.currentExpandedLength=0;let i=this.options,s=new CP(i.processEntities),o=e.length;for(let a=0;a<o;a++)if(e[a]==="<"){let c=e.charCodeAt(a+1);if(c===47){let l=fT(e,">",a,"Closing Tag is not closed."),f=e.substring(a+2,l).trim();if(i.removeNSPrefix){let d=f.indexOf(":");d!==-1&&(f=f.substr(d+1))}f=wZ(i.transformTagName,f,"",i).tagName,r&&(n=this.saveTextToParentTag(n,r,this.readonlyMatcher));let p=this.matcher.getCurrentTag();if(f&&i.unpairedTagsSet.has(f))throw new Error(`Unpaired tag can not be used as closing tag: </${f}>`);p&&i.unpairedTagsSet.has(p)&&(this.matcher.pop(),this.tagsNodeStack.pop()),this.matcher.pop(),this.isCurrentNodeStopNode=!1,r=this.tagsNodeStack.pop(),n="",a=l}else if(c===63){let l=OZ(e,a,!1,"?>");if(!l)throw new Error("Pi Tag is not closed.");n=this.saveTextToParentTag(n,r,this.readonlyMatcher);let f=this.buildAttributesMap(l.tagExp,this.matcher,l.tagName,!0);if(f){let p=f[this.options.attributeNamePrefix+"version"];this.entityDecoder.setXmlVersion(Number(p)||1),s.setXmlVersion(Number(p)||1)}if(!(i.ignoreDeclaration&&l.tagName==="?xml"||i.ignorePiTags)){let p=new Fa(l.tagName);p.add(i.textNodeName,""),l.tagName!==l.tagExp&&l.attrExpPresent&&i.ignoreAttributes!==!0&&(p[":@"]=f),this.addChild(r,p,this.readonlyMatcher,a)}a=l.closeIndex+1}else if(c===33&&e.charCodeAt(a+2)===45&&e.charCodeAt(a+3)===45){let l=fT(e,"-->",a+4,"Comment is not closed.");if(i.commentPropName){let f=e.substring(a+4,l-2);n=this.saveTextToParentTag(n,r,this.readonlyMatcher),r.add(i.commentPropName,[{[i.textNodeName]:f}])}a=l}else if(c===33&&e.charCodeAt(a+2)===68){let l=s.readDocType(e,a);this.entityDecoder.addInputEntities(l.entities),a=l.i}else if(c===33&&e.charCodeAt(a+2)===91){let l=fT(e,"]]>",a,"CDATA is not closed.")-2,f=e.substring(a+9,l);n=this.saveTextToParentTag(n,r,this.readonlyMatcher);let p=this.parseTextData(f,r.tagname,this.readonlyMatcher,!0,!1,!0,!0);p==null&&(p=""),i.cdataPropName?r.add(i.cdataPropName,[{[i.textNodeName]:f}]):r.add(i.textNodeName,p),a=l+2}else{let l=OZ(e,a,i.removeNSPrefix);if(!l){let N=e.substring(Math.max(0,a-50),Math.min(o,a+50));throw new Error(`readTagExp returned undefined at position ${a}. Context: "${N}"`)}let f=l.tagName,p=l.rawTagName,d=l.tagExp,h=l.attrExpPresent,g=l.closeIndex;if({tagName:f,tagExp:d}=wZ(i.transformTagName,f,d,i),i.strictReservedNames&&(f===i.commentPropName||f===i.cdataPropName||f===i.textNodeName||f===i.attributesGroupName))throw new Error(`Invalid tag name: ${f}`);r&&n&&r.tagname!=="!xml"&&(n=this.saveTextToParentTag(n,r,this.readonlyMatcher,!1));let v=r;v&&i.unpairedTagsSet.has(v.tagname)&&(r=this.tagsNodeStack.pop(),this.matcher.pop());let S=!1;d.length>0&&d.lastIndexOf("/")===d.length-1&&(S=!0,f[f.length-1]==="/"?(f=f.substr(0,f.length-1),d=f):d=d.substr(0,d.length-1),h=f!==d);let b=null,A={},w;w=xyr(p),f!==t.tagname&&this.matcher.push(f,{},w),f!==d&&h&&(b=this.buildAttributesMap(d,this.matcher,f),b&&(A=Ayr(b,i))),f!==t.tagname&&(this.isCurrentNodeStopNode=this.isItStopNode());let x=a;if(this.isCurrentNodeStopNode){let N="";if(S)a=l.closeIndex;else if(i.unpairedTagsSet.has(f))a=l.closeIndex;else{let D=this.readStopNodeData(e,p,g+1);if(!D)throw new Error(`Unexpected end of ${p}`);a=D.i,N=D.tagContent}let F=new Fa(f);b&&(F[":@"]=b),F.add(i.textNodeName,N),this.matcher.pop(),this.isCurrentNodeStopNode=!1,this.addChild(r,F,this.readonlyMatcher,x)}else{if(S){({tagName:f,tagExp:d}=wZ(i.transformTagName,f,d,i));let N=new Fa(f);b&&(N[":@"]=b),this.addChild(r,N,this.readonlyMatcher,x),this.matcher.pop(),this.isCurrentNodeStopNode=!1}else if(i.unpairedTagsSet.has(f)){let N=new Fa(f);b&&(N[":@"]=b),this.addChild(r,N,this.readonlyMatcher,x),this.matcher.pop(),this.isCurrentNodeStopNode=!1,a=l.closeIndex;continue}else{let N=new Fa(f);if(this.tagsNodeStack.length>i.maxNestedTags)throw new Error("Maximum nested tags exceeded");this.tagsNodeStack.push(r),b&&(N[":@"]=b),this.addChild(r,N,this.readonlyMatcher,x),r=N}n="",a=g}}}else n+=e[a];return t.child};function Ryr(e,t,r,n){this.options.captureMetaData||(n=void 0);let i=this.options.jPath?r.toString():r,s=this.options.updateTag(t.tagname,i,t[":@"]);s===!1||(typeof s=="string"&&(t.tagname=s),e.addChild(t,n))}function Nyr(e,t,r){let n=this.options.processEntities;if(!n||!n.enabled)return e;if(n.allowedTags){let i=this.options.jPath?r.toString():r;if(!(Array.isArray(n.allowedTags)?n.allowedTags.includes(t):n.allowedTags(t,i)))return e}if(n.tagFilter){let i=this.options.jPath?r.toString():r;if(!n.tagFilter(t,i))return e}return this.entityDecoder.decode(e)}function Iyr(e,t,r,n){return e&&(n===void 0&&(n=t.child.length===0),e=this.parseTextData(e,t.tagname,r,!1,t[":@"]?Object.keys(t[":@"]).length!==0:!1,n),e!==void 0&&e!==""&&t.add(this.options.textNodeName,e),e=""),e}function Lyr(){return this.stopNodeExpressionsSet.size===0?!1:this.matcher.matchesAny(this.stopNodeExpressionsSet)}function Myr(e,t,r=">"){let n=0,i=e.length,s=r.charCodeAt(0),o=r.length>1?r.charCodeAt(1):-1,a="",u=t;for(let c=t;c<i;c++){let l=e.charCodeAt(c);if(n)l===n&&(n=0);else if(l===34||l===39)n=l;else if(l===s)if(o!==-1){if(e.charCodeAt(c+1)===o)return a+=e.substring(u,c),{data:a,index:c}}else return a+=e.substring(u,c),{data:a,index:c};else l===9&&!n&&(a+=e.substring(u,c)+" ",u=c+1)}}function fT(e,t,r,n){let i=e.indexOf(t,r);if(i===-1)throw new Error(n);return i+t.length-1}function Fyr(e,t,r,n){let i=e.indexOf(t,r);if(i===-1)throw new Error(n);return i}function OZ(e,t,r,n=">"){let i=Myr(e,t+1,n);if(!i)return;let s=i.data,o=i.index,a=s.search(/\s/),u=s,c=!0;a!==-1&&(u=s.substring(0,a),s=s.substring(a+1).trimStart());let l=u;if(r){let f=u.indexOf(":");f!==-1&&(u=u.substr(f+1),c=u!==i.data.substr(f+1))}return{tagName:u,tagExp:s,closeIndex:o,attrExpPresent:c,rawTagName:l}}function Uyr(e,t,r){let n=r,i=1,s=e.length;for(;r<s;r++)if(e[r]==="<"){let o=e.charCodeAt(r+1);if(o===47){let a=Fyr(e,">",r,`${t} is not closed`);if(e.substring(r+2,a).trim()===t&&(i--,i===0))return{tagContent:e.substring(n,r),i:a};r=a}else if(o===63)r=fT(e,"?>",r+1,"StopNode is not closed.");else if(o===33&&e.charCodeAt(r+2)===45&&e.charCodeAt(r+3)===45)r=fT(e,"-->",r+3,"StopNode is not closed.");else if(o===33&&e.charCodeAt(r+2)===91)r=fT(e,"]]>",r,"StopNode is not closed.")-2;else{let a=OZ(e,r,!1);a&&((a&&a.tagName)===t&&a.tagExp[a.tagExp.length-1]!=="/"&&i++,r=a.closeIndex)}}}function CZ(e,t,r){if(t&&typeof e=="string"){let n=e.trim();return n==="true"?!0:n==="false"?!1:bZ(e,r)}else return qUe(e)?e:""}function wZ(e,t,r,n){if(e){let i=e(t);r===t&&(r=i),t=i}return t=lke(t,n),{tagName:t,tagExp:r}}function lke(e,t){if(Ek.includes(e))throw new Error(`[SECURITY] Invalid name: "${e}" is a reserved JavaScript keyword that could cause prototype pollution`);return AP.includes(e)?t.onDangerousProperty(e):e}var PZ=Fa.getMetaDataSymbol();function kyr(e,t){if(!e||typeof e!="object")return{};if(!t)return e;let r={};for(let n in e)if(n.startsWith(t)){let i=n.substring(t.length);r[i]=e[n]}else r[n]=e[n];return r}function DZ(e,t,r,n){return fke(e,t,r,n)}function fke(e,t,r,n){let i,s={};for(let o=0;o<e.length;o++){let a=e[o],u=Byr(a);if(u!==void 0&&u!==t.textNodeName){let c=kyr(a[":@"]||{},t.attributeNamePrefix);r.push(u,c)}if(u===t.textNodeName)i===void 0?i=a[u]:i+=""+a[u];else{if(u===void 0)continue;if(a[u]){let c=fke(a[u],t,r,n),l=jyr(c,t);if(Object.keys(c).length===0&&t.alwaysCreateTextNode&&(c[t.textNodeName]=""),a[":@"]?qyr(c,a[":@"],n,t):Object.keys(c).length===1&&c[t.textNodeName]!==void 0&&!t.alwaysCreateTextNode?c=c[t.textNodeName]:Object.keys(c).length===0&&(t.alwaysCreateTextNode?c[t.textNodeName]="":c=""),a[PZ]!==void 0&&typeof c=="object"&&c!==null&&(c[PZ]=a[PZ]),s[u]!==void 0&&Object.prototype.hasOwnProperty.call(s,u))Array.isArray(s[u])||(s[u]=[s[u]]),s[u].push(c);else{let f=t.jPath?n.toString():n;t.isArray(u,f,l)?s[u]=[c]:s[u]=c}u!==void 0&&u!==t.textNodeName&&r.pop()}}}return typeof i=="string"?i.length>0&&(s[t.textNodeName]=i):i!==void 0&&(s[t.textNodeName]=i),s}function Byr(e){let t=Object.keys(e);for(let r=0;r<t.length;r++){let n=t[r];if(n!==":@")return n}}function qyr(e,t,r,n){if(t){let i=Object.keys(t),s=i.length;for(let o=0;o<s;o++){let a=i[o],u=a.startsWith(n.attributeNamePrefix)?a.substring(n.attributeNamePrefix.length):a,c=n.jPath?r.toString()+"."+u:r;n.isArray(a,c,!0,!0)?e[a]=[t[a]]:e[a]=t[a]}}}function jyr(e,t){let{textNodeName:r}=t,n=Object.keys(e).length;return!!(n===0||n===1&&(e[r]||typeof e[r]=="boolean"||e[r]===0))}var Yf=class{constructor(t){this.externalEntities={},this.options=oke(t)}parse(t,r){if(typeof t!="string"&&t.toString)t=t.toString();else if(typeof t!="string")throw new Error("XML data is accepted in String or Bytes[] form.");if(r){r===!0&&(r={});let s=_k(t,r);if(s!==!0)throw Error(`${s.err.msg}:${s.err.line}:${s.err.col}`)}let n=new PP(this.options,this.externalEntities),i=n.parseXml(t);return this.options.preserveOrder||i===void 0?i:DZ(i,this.options,n.matcher,n.readonlyMatcher)}addEntity(t,r){if(r.indexOf("&")!==-1)throw new Error("Entity value can't have '&'");if(t.indexOf("&")!==-1||t.indexOf(";")!==-1)throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");if(r==="&")throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=r}static getMetaDataSymbol(){return Fa.getMetaDataSymbol()}};var pT={validate:_k};var km=class extends Ca{static ADT_DISCOVERY_SERVICE_PATH="/sap/bc/adt/discovery";schemaStore=new gk;log;async getServiceDefinition(t){await this.checkOrLoadAdtDiscoverySchema();let r=this.schemaStore.getAdtCollection(t);return this.validateServiceSchema(t,r)?r:(this.log.warn("Invalid Discovery Schema"),null)}validateServiceSchema(t,r){return r?r.href?!0:(this.log.warn(`Empty href in schema: ${t.term} - ${t.scheme}`),!1):(this.log.warn(`Schema Not Found: ${t.term} - ${t.scheme}`),!1)}async checkOrLoadAdtDiscoverySchema(){if(!this.schemaStore.isAdtSchemaEmpty())return;let t=await this.get("",{headers:{Accept:"application/*"}}),r=this.parseAdtSchemaData(t.data);this.schemaStore.updateSchemaData(r)}parseAdtSchemaData(t){if(pT.validate(t)!==!0)return null;let r={attributeNamePrefix:"",ignoreAttributes:!1,ignoreNameSpace:!0,parseAttributeValue:!0,removeNSPrefix:!0},i=new Yf(r).parse(t,!0);return i.service?i:null}};var wd=class extends Ca{static PATH="/sap/bc/ui2/app_index";log;async search(t={},r){let n={...t};r&&(n.fields=r.join(","));let i=await this.get("/",{params:n});return JSON.parse(i.data).results}async getIsManiFirstSupported(t){try{let r={id:t},n=await this.get("/ui5_app_mani_first_supported",{params:r});return JSON.parse(n.data)}catch(r){throw this.log.error(`Fail fetching ui5_app_mani_first_supported for app with id: ${t}.`),this.log.debug(r),r}}async getAppInfo(t){try{let r=await this.get("/ui5_app_info_json",{params:{id:t}});return JSON.parse(r.data)}catch(r){throw gF(r)?this.log.error(`Failed fetching ui5_app_info_json for app with id ${t}.`):this.log.error(`Parsing error: ui5_app_info_json is not in expected format for app with id ${t}.`),this.log.debug(r),r}}};var DP={UI:"UI",NotClassified:"Not Classified",WebApi:"WEB_API",NotDetermined:"Not Determined"},dT=class extends Sm{entitySet;services;isS4Cloud;async listServices(t=!1){return this.services||(this.services=await this.fetchServices(t)),this.services}};var pke="ServiceCollection",dke="RecommendedServiceCollection",Vyr="((IsSapService%20eq%20true)and(ReleaseStatus%20eq%20%27RELEASED%27))or((IsSapService%20eq%20false))",Bm=class extends dT{static PATH="/sap/opu/odata/IWFND/CATALOGSERVICE;v=2";async determineEntitySet(){let t=await this.document();this.entitySet=t.EntitySets.includes(dke)?dke:pke}getServicePath(t,r){let n;try{n=new URL(t)}catch{n=new URL(t,r)}return n.pathname}mapServices(t){return t.map(r=>{let n=this.getServicePath(r.ServiceUrl,this.defaults.baseURL);return{id:r.ID,name:r.TechnicalServiceName,path:n,serviceVersion:r.TechnicalServiceVersion+"",odataVersion:Er.v2,serviceType:r.ServiceType}})}async fetchServices(){let t={$format:"json"};this.entitySet||await this.determineEntitySet(),this.entitySet===pke&&await this.isS4Cloud&&(t.$filter=Vyr);let n=(await this.get(`/${this.entitySet}`,{params:t})).odata();if(Nf.containsError(n))throw new Nf(n);return this.mapServices(n)}async findService({title:t,path:r}){let n=1;if(!t){let u=r.replace(/\/$/,"").split("/").pop().split(";");if(t=u[0].toUpperCase(),!t)throw new Error(`Cannot determine service title from path: ${r}`);u.slice(1).forEach(l=>{let[f,p]=l.split("=");f==="v"&&(n=Number.parseInt(p,10))})}let i={$format:"json",$filter:`Title eq '${t}' and TechnicalServiceVersion eq ${n}`},s=this.entitySet?`/${this.entitySet}`:"/ServiceCollection",a=(await this.get(s,{params:i})).odata();if(a.length>1){let u=a.filter(c=>c.ServiceUrl?.toUpperCase().includes((r||t).toUpperCase()));if(u.length>1)this.log.warn("Service filter was not sufficient to identify one service.");else if(u.length>0)return this.log.info(`Service filter chose service: ${u[0].TechnicalServiceName}`),u[0]}return a.length>0?a[0]:void 0}async getServiceAnnotations({id:t,title:r,path:n}){if(!t){let i=await this.findService({title:r,path:n});i&&(t=i.ID)}return t?(await this.get(`/ServiceCollection('${encodeURIComponent(t)}')/Annotations`,{params:{$format:"json"}})).odata():[]}async getAnnotations({id:t,title:r,path:n}){if(!t&&!r&&!n)throw new Error("No filter parameters passed in");let i=await this.getServiceAnnotations({id:t,title:r,path:n}),s=[];for(let o of i){let a=`/Annotations(TechnicalName='${encodeURIComponent(o.TechnicalName)}',Version='${o.Version}')/$value/`,u=await this.get(a,{headers:{Accept:"application/xml"}});u.data?s.push({TechnicalName:o.TechnicalName,Version:o.Version,Definitions:u.data,Uri:this.defaults.baseURL+a}):this.log.warn(`No annotations found for TechnicalName=${o.TechnicalName}, Version=${o.Version}`)}return s}async getServiceType(t){let r,{ID:n}=await this.findService({path:t});if(n){let i=await this.get(`/ServiceTypeForHUBServices('${encodeURIComponent(n)}')`);i&&(r=i.odata().ServiceType)}return r}};var hke="RecommendedServices",mke="Services",hT=class extends dT{logger=new ys;static PATH="/sap/opu/odata4/iwfnd/config/default/iwfnd/catalog/0002";mapServices(t,r,n=!1){let i=[],s=new Set;return t.filter(o=>o?.DefaultSystem?.[r]?.length>0).forEach(o=>{i.push(...o.DefaultSystem[r].flatMap(a=>{let u=a.ServiceUrl.split("?").shift();if(n){let c=`${a.ServiceId}|${u}`;if(s.has(c))return[];s.add(c)}return{id:a.ServiceId,group:o.GroupId,path:u,name:`${o.GroupId} > ${a.ServiceAlias||a.ServiceId}`,serviceVersion:a.ServiceVersion,odataVersion:Er.v4,serviceType:a.ServiceType}}))}),i}async fetchServicesNextLink(){if(this.entitySet===void 0){let o=await this.metadata();this.entitySet=o.includes('Name="RecommendedServices"')?hke:mke}let t=new URLSearchParams([["$count","true"],["$expand",`DefaultSystem($expand=${this.entitySet})`]]),n=(await this.get("/ServiceGroups",{params:t},!0)).odata(),i=n.value,s=1;for(;n["@odata.nextLink"];){let o=new URL(n["@odata.nextLink"],this.defaults.baseURL);n=(await this.get("/ServiceGroups",{params:o.searchParams},!0)).odata(),s++,i.push(...n.value)}if(this.logger.log(`Fetched ${i.length} service groups in ${s} requests.`),Nf.containsError(i))throw new Nf(i);return this.mapServices(i,this.entitySet)}async fetchServices(t=!1){return t?this.fetchServicesNextLink():this.fetchServicesParallel()}async fetchServicesParallel(){if(this.entitySet===void 0){let c=await this.metadata();this.entitySet=c.includes('Name="RecommendedServices"')?hke:mke}let r=new URLSearchParams([["$count","true"],["$top","1000"],["$expand",`DefaultSystem($expand=${this.entitySet})`]]),i=(await this.get("/ServiceGroups",{params:r},!0)).odata(),s=i.value,o=i["@odata.count"],a=Number.parseInt(i["@odata.nextLink"]?.split("skiptoken=")[1],10),u=1;if(!Number.isNaN(a)){let c=Math.ceil(o/a),l=Array.from({length:c-1},(p,d)=>{let h=new URLSearchParams([["$count","true"],["$skip",String((d+1)*a)],["$top",a.toString()],["$expand",`DefaultSystem($expand=${this.entitySet})`]]);return u++,this.get("/ServiceGroups",{params:h},!0)});(await Promise.all(l)).forEach(p=>{let d=p.odata();s.push(...d.value)})}if(this.logger.log(`Fetched ${s.length} service groups in ${u} requests.`),Nf.containsError(s))throw new Nf(s);return this.mapServices(s,this.entitySet,!0)}getAnnotations(){return Promise.resolve([])}getServiceType(){return Promise.resolve(void 0)}};var RP;(function(e){e.SAP="SAP",e.Customer="CUSTOMER"})(RP||(RP={}));var ei=class extends Ca{log;serviceSchema;static getAdtCatagory(){throw new Error("NEEDS TO BE IMPLEMENTED BY AdtService SUBCLASSES")}attachAdtSchema(t){this.serviceSchema=t}parseResponse(t){if(pT.validate(t)!==!0)return this.log.warn(`Invalid XML: ${t}`),{};let r={attributeNamePrefix:"",ignoreAttributes:!1,ignoreNameSpace:!0,parseAttributeValue:!0,removeNSPrefix:!0};return new Yf(r).parse(t,!0)}};var NP=class e extends ei{static adtCategory={scheme:"http://www.sap.com/adt/categories/ato",term:"settings"};static getAdtCatagory(){return e.adtCategory}async getAtoInfo(){let t={headers:{Accept:"application/*"}},r=await this.get("",t);return this.parseAtoResponse(r.data)}parseAtoResponse(t){if(pT.validate(t)!==!0)return this.log.warn(`Invalid XML: ${t}`),{};let r={attributeNamePrefix:"",ignoreAttributes:!1,ignoreNameSpace:!0,parseAttributeValue:!0,removeNSPrefix:!0},i=new Yf(r).parse(t,!0);return i.settings?i.settings:{}}};var cBe=Te(gke(),1),_Er=Te(uBe(),1);var HP=class e extends ei{static adtCategory={scheme:"http://www.sap.com/adt/categories/respository",term:"generators"};static getAdtCatagory(){return e.adtCategory}async getUIServiceGeneratorConfig(t){let r=await this.get("",{headers:{Accept:"application/atom+xml;type=feed"},params:{referencedObject:t,type:"webapi"}}),n=this.parseResponse(r.data).feed?.entry;if(n?.id==="published-ui-service")return n;throw new Error("UI Service Generator not found")}};var WP=class e extends ei{static adtCategory={scheme:"http://www.sap.com/adt/categories/respository",term:"generators"};static getAdtCatagory(){return e.adtCategory}id;async getRAPGeneratorConfig(){let t=await this.get("",{headers:{Accept:"application/atom+xml;type=feed"},params:{type:"webapi",fetchAllGenerators:!0}}),r=this.parseResponse(t.data).feed?.entry??[];r&&!Array.isArray(r)&&(r=[r]);let n=r.find(i=>i.id==="published-x-ui-service");if(n)return n;throw new Error("OData Service Generator not found")}};var YP=class extends ei{packageName;contentType;configure(t,r){this.packageName=r}setContentType(t){this.contentType=t}async validate(t){let r=await this.post("/validation",t,{headers:{"Content-Type":this.contentType,Accept:"application/vnd.sap.adt.validationMessages.v1+xml, application/vnd.sap.as+xml;charset=UTF-8;dataname=com.sap.adt.StatusMessage"},params:{package:this.packageName}});return this.parseValidateResponse(r.data)}async getTechnicalDetails(t){let r=await this.post("/preview",t,{headers:{"Content-Type":this.contentType,Accept:"application/vnd.sap.adt.repository.objects.massoperation.v1+xml"},params:{package:this.packageName}});return this.parsePreviewResponse(r.data)}async generate(t){return(await this.post("",t,{headers:{"Content-Type":this.contentType,Accept:"application/vnd.sap.adt.repository.generator.v1+json"},params:{package:this.packageName}})).status}parseValidateResponse(t){let n=this.parseResponse(t).validationMessages;return Array.isArray(n)||(n=[n]),n.map(i=>i.validationMessage||{})||[]}parsePreviewResponse(t){let n=(this.parseResponse(t).group.group||[]).find(a=>a.name==="Business Service Layer");if(!n)return;let i=Array.isArray(n.object)?n.object:[n.object],s=i.find(a=>a.objectReference?.type==="SRVD/SRV"),o=i.find(a=>a.objectReference?.type==="SRVB/SVB");if(!(!s||!o))return{serviceName:o.objectReference?.name||"",serviceDefinitionName:s.objectReference?.name||"",serviceVersion:"0001"}}};var AT=class extends ei{referencedObject;contentType;configure(t,r,n){this.referencedObject=r,this.contentType=n}async getSchema(){let t=await this.get("/schema",{headers:{Accept:"application/vnd.sap.adt.repository.generator.schema.v1+json"},params:{referencedObject:this.referencedObject.uri}});return JSON.parse(t.data)}async getContent(t){let n=(await this.get("/content",{headers:{Accept:this.contentType},params:{referencedObject:this.referencedObject.uri,package:t}})).data,i=JSON.parse(n);return i.metadata||(i.metadata={package:t}),JSON.stringify(i)}async validatePackage(t){let r=await this.get("/validation",{headers:{Accept:"application/vnd.sap.adt.validationMessages.v1+xml"},params:{referencedObject:this.referencedObject.uri,package:t,checks:"package"}});return this.parseResponse(r.data)}async validateContent(t){let r=await this.post("/validation",t,{headers:{"Content-Type":this.contentType,Accept:"application/vnd.sap.adt.validationMessages.v1+xml"},params:{referencedObject:this.referencedObject.uri,checks:"package,referencedobject,authorization"}});return this.parseResponse(r.data).validationMessages?.validationMessage}async generate(t,r){let n=await this.post("",t,{headers:{"Content-Type":this.contentType,Accept:"application/vnd.sap.adt.repository.generator.v1+json, application/vnd.sap.as+xml;charset=UTF-8;dataname=com.sap.adt.StatusMessage"},params:{referencedObject:this.referencedObject.uri,corrNr:r}});return this.parseResponse(n.data)}};var Mk=class extends ei{async getSystemInfo(){let t={headers:{Accept:"application/vnd.sap.adt.core.http.systeminformation.v1+json"}},r=await this.get("/sap/bc/adt/core/http/systeminformation",t);if(typeof r.data=="string")try{return JSON.parse(r.data)}catch(n){this.log.error(`System info could not be parsed from response. Error: ${n.message}`)}else return r.data}};var zP=class extends Ca{static PATH="/sap/public/bc/ui5_ui5";log;async getUI5Version(){try{let t=await this.get("/bootstrap_info.json",{transformResponse:n=>JSON.parse(n)}),{Version:r}=t.data;if(!r)throw new Error("UI5 version not provided.");return r}catch(t){throw this.log.error("Could not get UI5 Version."),this.log.debug(t),t}}};var ja=class extends Um{atoSettings;_publicUrl;_systemInfo;async user(){return await Promise.resolve(this.defaults.auth?.username)||(await this.getSystemInfo())?.userName}async getSystemInfo(){if(this._systemInfo)return this._systemInfo;try{let t=this.createService("",Mk);this._systemInfo=await t.getSystemInfo()}catch(t){this.log.error(`An error occurred retrieving system info: ${t}`)}return this._systemInfo}setAtoInfo(t){this.atoSettings=t}async getAtoInfo(){if(this.atoSettings)return this.atoSettings;let t;try{t=await this.getAdtService(NP),t?this.atoSettings=await t.getAtoInfo():this.atoSettings={}}catch{this.atoSettings={}}return this.atoSettings}set publicUrl(t){this._publicUrl=t}get publicUrl(){return this._publicUrl||this.defaults.baseURL}async isAbapCloud(){return this.atoSettings===void 0&&await this.getAtoInfo(),this.atoSettings.tenantType===RP.Customer&&this.atoSettings.operationsType==="C"}getAdtCatalogService(){if(!this.services[km.ADT_DISCOVERY_SERVICE_PATH]){let t=this.createService(km.ADT_DISCOVERY_SERVICE_PATH,km);this.services[km.ADT_DISCOVERY_SERVICE_PATH]=t}return this.services[km.ADT_DISCOVERY_SERVICE_PATH]}catalog(t){let r;if(t===Er.v2)r=this.services[Bm.PATH]??this.createService(Bm.PATH,Bm);else if(t===Er.v4)r=this.services[hT.PATH]??this.createService(hT.PATH,hT);else throw new Error("not implemented yet");return Object.defineProperty(r,"isAbapCloud",{get:this.isAbapCloud.bind(this)}),r}getUi5AbapRepository(t){let r=t??oT.PATH;return this.services[r]||(this.services[r]=this.createService(r,oT)),this.services[r]}getAppIndex(){return this.services[wd.PATH]||(this.services[wd.PATH]=this.createService(wd.PATH,wd)),this.services[wd.PATH]}getLayeredRepository(t){let r=t??aT.PATH;return this.services[r]||(this.services[r]=this.createService(r,aT)),this.services[r]}async getAdtService(t){let r=t.name;if(!this.services[r]){let i=await this.getAdtCatalogService().getServiceDefinition(t.getAdtCatagory());if(!i)return null;this.services[r]=this.createService(i.href,t),this.services[r].attachAdtSchema(i)}return this.services[r]}getUI5VersionService(){let t=zP.PATH;return this.services[t]||(this.services[t]=this.createService(t,zP)),this.services[t]}async getUiServiceGenerator(t){let r=await this.getAdtService(HP);if(!r)throw new Error("Generators are not supported on this system");let n=await r.getUIServiceGeneratorConfig(t.uri),i=this.createService(this.getServiceUrlFromConfig(n),AT);return i.configure(n,t,this.getContentType(n)),i}async getODataServiceGenerator(t){let r=await this.getAdtService(WP);if(!r)throw new Error("RAP Generator are not support on this system");let n=await r.getRAPGeneratorConfig(),i=this.createService(this.getServiceUrlFromConfig(n),YP);return i.setContentType(this.getContentType(n)),i.configure(n,t||"$TMP"),i}async fetchExternalServices(t){let r=[],n=t.map(async i=>{let{serviceRootPath:s,value:o}=i,a=(0,lBe.join)(s,o).replace("/$metadata",""),u=this.service(a);try{let c=await u.metadata();i.type==="value-list"?r.push({type:"value-list",path:a,target:i.target,metadata:c}):i.type==="code-list"&&r.push({type:"code-list",path:a,metadata:c})}catch(c){this.log.warn(`Could not fetch value list reference metadata from ${a}, ${c.message}`)}});return await Promise.allSettled(n),r}getServiceUrlFromConfig(t){if(Array.isArray(t.link)&&!t.link[0]?.href)throw new Error("No service URL found in the generator config");let r=t.link[0].href.indexOf(t.id)+t.id.length;return t.link[0].href.substring(0,r)}getContentType(t){return(t.link?.find(n=>typeof n.href=="string"&&n.href.includes("/content"))).type}async createLockServiceBindingGenerator(t){return this.createService(t,AT)}};var gHe=Te(U$e(),1),op=Te(tq(),1);var Zm;(function(e){e.H2O_URL="H2O_URL",e.HTTP_PROXY="HTTP_PROXY",e.HTTPS_PROXY="HTTPS_PROXY"})(Zm||(Zm={}));var rq;(function(e){e.HTTP="HTTP",e.LDAP="LDAP",e.MAIL="MAIL",e.RFC="RFC"})(rq||(rq={}));var nq;(function(e){e.DEDICATED="Dedicated",e.COMMON="Common"})(nq||(nq={}));var sp;(function(e){e.BASIC_AUTHENTICATION="BasicAuthentication",e.CLIENT_CERT_AUTHENTICATION="ClientCertificateAuthentication",e.NO_AUTHENTICATION="NoAuthentication",e.OAUTH2_CLIENT_CREDENTIALS="OAuth2ClientCredentials",e.OAUTH2_JWT_BEARER="OAuth2JWTBearer",e.OAUTH2_PASSWORD="OAuth2Password",e.OAUTH2_REFRESH_TOKEN="OAuth2RefreshToken",e.OAUTH2_SAML_BEARER_ASSERTION="OAuth2SAMLBearerAssertion",e.OAUTH2_USER_TOKEN_EXCHANGE="OAuth2UserTokenExchange",e.SAML_ASSERTION="SAMLAssertion"})(sp||(sp={}));var iq;(function(e){e.S4HC="S4HC",e.BTP="BTP"})(iq||(iq={}));var fre;(function(e){e.ON_PREMISE="OnPremise",e.INTERNET="Internet",e.PRIVATE_LINK="PrivateLink"})(fre||(fre={}));var v_;(function(e){e.ODATA_GENERIC="odata_gen",e.ODATA_ABAP="odata_abap",e.DEV_ABAP="dev_abap",e.ABAP_CLOUD="abap_cloud"})(v_||(v_={}));var sq;(function(e){e.FULL_URL="full_url",e.API_MGMT="api_mgmt"})(sq||(sq={}));var RD;(function(e){e.ON_PREMISE="OnPremise",e.INTERNET="Internet",e.PRIVATE_LINK="PrivateLink"})(RD||(RD={}));function pHe(e){return!!(e.WebIDEUsage?.includes("abap")||e["sap-client"]||e["sap-platform"]?.toLocaleLowerCase()==="abap"||e.ProxyType==="OnPremise")}function HCr(e){return!!(e.WebIDEUsage?.includes(v_.ABAP_CLOUD)||e["sap-platform"]?.toLocaleLowerCase()==="abap")}function oq(e){return!!(e.WebIDEUsage?.includes(v_.ODATA_GENERIC)&&!e.WebIDEUsage.includes(v_.ODATA_ABAP))}function zl(e){return!!(!e.WebIDEAdditionalData?.includes(sq.FULL_URL)&&oq(e))}function eg(e){return!!(e.WebIDEAdditionalData?.includes(sq.FULL_URL)&&oq(e))}function dHe(e){return!!e.ProxyType.includes(RD.ON_PREMISE)}function hHe(e){return!!e["HTML5.DynamicDestination"]}function WCr(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function fHe(e,t){let r=` (${t})`;return RegExp(`${WCr(r)}$`).exec(e.trim())?e:`${e} (${t})`}function mHe(e,t){let r=t?` [${t}]`:"",n;return HCr(e)?n=fHe(e.Name,iq.BTP):pre(e)?n=fHe(e.Name,iq.S4HC):n=e.Name,`${n}${r}`}function pre(e){return!!(e.WebIDEUsage?.includes(v_.ODATA_ABAP)&&e.Authentication===sp.SAML_ASSERTION&&e.ProxyType===fre.INTERNET)}function aq(e){return!!e.WebIDEUsage?.includes(v_.ODATA_ABAP)}var Vd={ABAP:"abap",ABAP_TRIAL:"abap-trial",ABAP_CANARY:"abap-canary",ABAP_OEM:"abap-oem",ABAP_OEM_CANARY:"abap-oem-canary",ABAP_HAAS:"abap-haas",DESTINATION:"destination",ABAP_STAGING:"abap-staging",ABAP_INTERNAL_STAGING:"abap-internal-staging"};var dre="abap-cloud-destination-instance",yHe="bas-destination-instance-cred";function jr(){return!!process.env[Zm.H2O_URL]}async function EHe(e){try{let t=await(0,op.cfGetInstanceKeyParameters)(e);if(!t)throw new Error(`No destination instance ${e} found`);let r=t.credentials;if(!r)throw new Error(`No credentials for destination instance ${e} found`);let n=r.uaa?.clientid||r.clientid,i=r.uaa?.clientsecret||r.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}`)}}function tb(e,t){let r=`https://${e}.dest`;return t&&t.length>1?new URL(t,r).toString():r}function YCr(e){let[t,...r]=e.split(".");return[t.replace(/-api$/,""),...r].join(".")}async function hre(e){let t={};await Oa.get("/reload",{baseURL:process.env[Zm.HTTP_PROXY]}),zCr();let r=await Oa.get("/api/listDestinations",{baseURL:process.env[Zm.H2O_URL]});return(Array.isArray(r.data)?r.data:[]).forEach(i=>{e?.stripS4HCApiHosts&&pre(i)&&(i.Host=YCr(i.Host)),i.WebIDEEnabled&&(t[i.Name]=i)}),t}function zCr(){!jr()||!globalThis.GLOBAL_AGENT||(globalThis.GLOBAL_AGENT.HTTP_PROXY||(globalThis.GLOBAL_AGENT.HTTP_PROXY=process.env[Zm.HTTP_PROXY]??null),globalThis.GLOBAL_AGENT.HTTPS_PROXY||(globalThis.GLOBAL_AGENT.HTTPS_PROXY=process.env[Zm.HTTPS_PROXY]??null))}function KCr(e,t,r,n){let i={usage:"odata_abap,dev_abap,abap_cloud",html5DynamicDestination:"true",html5Timeout:"60000"},s={clientId:r.clientid,clientSecret:r.clientsecret,tokenServiceURL:new URL("/oauth/token",r.url).toString(),tokenServiceURLType:nq.DEDICATED};return{name:e,description:t,url:new URL(n),type:rq.HTTP,proxyType:RD.INTERNET,basProperties:i,credentials:{authentication:sp.OAUTH2_USER_TOKEN_EXCHANGE,oauth2UserTokenExchange:s}}}async function mre(e){let t=await(0,op.cfGetTarget)(!0);if(!t.space)throw new Error("No Dev Space has been created for the subaccount.");return`abap-cloud-${`${e}-${t.org}-${t.space}`.replace(/\W/gi,"-").toLowerCase()}`.substring(0,199)}async function XCr(e,t,r,n){let i=await mre(e);return(await(0,op.apiGetServicesInstancesFilteredByType)(["destination"])).find(a=>a.label===dre)||(await(0,op.apiCreateServiceInstance)("destination","lite",dre,null),n?.info(`New ABAP destination instance ${dre} created.`)),KCr(i,`Destination generated by App Studio for Cloud Foundry Abap service instance: '${e}', Do not remove.`,t,r)}async function _He(e,t,r){if(!jr())throw new Error("Creating a SAP BTP destinations is only supported on SAP Business Application Studio.");let n=t;try{if(!n){let a=await(0,op.apiGetInstanceCredentials)(e);if(!a?.credentials)throw new Error(`Could not retrieve SAP BTP credentials for ${e}.`);n={uaaCredentials:a.credentials.uaa,hostUrl:a.credentials.url}}let i=await XCr(e,n.uaaCredentials,n.hostUrl,r);await gHe.destinations.createDestination(i),r?.debug(`SAP BTP destination ${JSON.stringify(i,null,2)} created.`);let o=(await hre())?.[i.name];if(!o)throw new Error("Destination not found on SAP BTP.");return o}catch(i){throw new Error(`An error occurred while generating destination ${e}: ${i}`)}}var FHe=Te(Ere(),1),UHe=require("node:https"),kHe=Te(_re(),1),BHe=Te(NF(),1),qHe=Te(MHe(),1),jHe=require("node:util");var vre=class extends kHe.HttpsProxyAgent{extraOptions;constructor(t,r){super(t,r),this.extraOptions=r}async connect(t,r){return super.connect(t,{...this.extraOptions,...r})}};function S_(e,t){let r=(0,BHe.default)(t),n={rejectUnauthorized:!r.ignoreCertErrors};r.httpsAgent||(r.httpsAgent=new UHe.Agent(n)),delete r.ignoreCertErrors,r.withCredentials=r?.auth&&Object.keys(r.auth).length>0,r.validateStatus=s=>s<400;let i=new e(r);return i.interceptors.request.use(s=>{let o=i.getUri(s),a=(0,qHe.getProxyForUrl)(o);return a&&!jr()&&(s.httpsAgent=new vre(a,n),s.httpAgent=new FHe.HttpProxyAgent(a),s.proxy=!1),s}),i.defaults.headers=i.defaults.headers??{common:{},delete:{},put:{},get:{},post:{},head:{},patch:{}},RFe(i),r.auth?.password&&NUe(i),t.cookies&&t.cookies.split(";").forEach(s=>{i.cookies.addCookie(s.trim())}),bP.isPatchRequired(t.baseURL)&&bP.apply(),i}function VHe(e){return typeof e=="string"?S_(Um,{baseURL:e}):S_(Um,e)}function b_(e){return S_(ja,e)}var T_;(function(e){e.Standalone="Standalone",e.EmbeddedSteampunk="EmbeddedSteampunk"})(T_||(T_={}));function Sre(e){let t;switch(e.environment){case T_.Standalone:{let{service:r,refreshToken:n,refreshTokenChangedCb:i,cookies:s,...o}=e;t=S_(ja,{baseURL:r.url,cookies:s,...o}),s||(e.service?.uaa?.username&&e.service.uaa.password?IUe(t,r,n,i):pZ({provider:t}));break}case T_.EmbeddedSteampunk:{let{url:r,cookies:n,...i}=e;t=S_(ja,{baseURL:r,cookies:n,...i}),n||pZ({provider:t});break}default:{let r=e;throw new Error(`Unknown environment type supplied: ${(0,jHe.inspect)(r)}`)}}return t}function $He(e,t,r){let{cookies:n,...i}=e,s={...i,baseURL:tb(t.Name,t.Host?new URL(t.Host).pathname:void 0),cookies:n};s.params=s.params??{},s.params.saml2="disabled";let o;if(pHe(t)?(o=S_(ja,s),o.publicUrl=t.Host):o=S_(Um,s),r){let a=o.interceptors.request.use(async u=>{let c=await EHe(r);return o.defaults.headers.common[yHe]=c,o.interceptors.request.eject(a),u})}return o}var GHe;(function(e){e.FF_SIMPLE="basic"})(GHe||(GHe={}));var HHe;(function(e){e.FE_FPM="fpm",e.FE_LROP="lrop",e.FE_OVP="ovp",e.FE_ALP="alp",e.FE_FEOP="feop",e.FE_WORKLIST="worklist"})(HHe||(HHe={}));var un={vscode:{name:"Visual Studio Code",technical:"VSCode"},bas:{name:"SAP Business Application Studio",technical:"SBAS"},cli:{name:"CLI",technical:"CLI"}};var WHe;(function(e){e.CF="CF",e.ABAP="ABAP"})(WHe||(WHe={}));function NPr(){return!!(process.argv[1]?.includes("yo")||process.stdin.isTTY)}function Uc(){return NPr()?un.cli:jr()?un.bas:un.vscode}var Ft=e=>typeof e=="string",ID=()=>{let e,t,r=new Promise((n,i)=>{e=n,t=i});return r.resolve=e,r.reject=t,r},YHe=e=>e==null?"":""+e,IPr=(e,t,r)=>{e.forEach(n=>{t[n]&&(r[n]=t[n])})},LPr=/###/g,zHe=e=>e&&e.indexOf("###")>-1?e.replace(LPr,"."):e,KHe=e=>!e||Ft(e),LD=(e,t,r)=>{let n=Ft(t)?t.split("."):t,i=0;for(;i<n.length-1;){if(KHe(e))return{};let s=zHe(n[i]);!e[s]&&r&&(e[s]=new r),Object.prototype.hasOwnProperty.call(e,s)?e=e[s]:e={},++i}return KHe(e)?{}:{obj:e,k:zHe(n[i])}},XHe=(e,t,r)=>{let{obj:n,k:i}=LD(e,t,Object);if(n!==void 0||t.length===1){n[i]=r;return}let s=t[t.length-1],o=t.slice(0,t.length-1),a=LD(e,o,Object);for(;a.obj===void 0&&o.length;)s=`${o[o.length-1]}.${s}`,o=o.slice(0,o.length-1),a=LD(e,o,Object),a?.obj&&typeof a.obj[`${a.k}.${s}`]<"u"&&(a.obj=void 0);a.obj[`${a.k}.${s}`]=r},MPr=(e,t,r,n)=>{let{obj:i,k:s}=LD(e,t,Object);i[s]=i[s]||[],i[s].push(r)},dq=(e,t)=>{let{obj:r,k:n}=LD(e,t);if(r&&Object.prototype.hasOwnProperty.call(r,n))return r[n]},FPr=(e,t,r)=>{let n=dq(e,r);return n!==void 0?n:dq(t,r)},n5e=(e,t,r)=>{for(let n in t)n!=="__proto__"&&n!=="constructor"&&(n in e?Ft(e[n])||e[n]instanceof String||Ft(t[n])||t[n]instanceof String?r&&(e[n]=t[n]):n5e(e[n],t[n],r):e[n]=t[n]);return e},A_=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),UPr={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},kPr=e=>Ft(e)?e.replace(/[&<>"'\/]/g,t=>UPr[t]):e,xre=class{constructor(t){this.capacity=t,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(t){let r=this.regExpMap.get(t);if(r!==void 0)return r;let n=new RegExp(t);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(t,n),this.regExpQueue.push(t),n}},BPr=[" ",",","?","!",";"],qPr=new xre(20),jPr=(e,t,r)=>{t=t||"",r=r||"";let n=BPr.filter(o=>t.indexOf(o)<0&&r.indexOf(o)<0);if(n.length===0)return!0;let i=qPr.getRegExp(`(${n.map(o=>o==="?"?"\\?":o).join("|")})`),s=!i.test(e);if(!s){let o=e.indexOf(r);o>0&&!i.test(e.substring(0,o))&&(s=!0)}return s},wre=(e,t,r=".")=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;let n=t.split(r),i=e;for(let s=0;s<n.length;){if(!i||typeof i!="object")return;let o,a="";for(let u=s;u<n.length;++u)if(u!==s&&(a+=r),a+=n[u],o=i[a],o!==void 0){if(["string","number","boolean"].indexOf(typeof o)>-1&&u<n.length-1)continue;s+=u-s+1;break}i=o}return i},MD=e=>e?.replace(/_/g,"-"),VPr={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){console?.[e]?.apply?.(console,t)}},Ore=class e{constructor(t,r={}){this.init(t,r)}init(t,r={}){this.prefix=r.prefix||"i18next:",this.logger=t||VPr,this.options=r,this.debug=r.debug}log(...t){return this.forward(t,"log","",!0)}warn(...t){return this.forward(t,"warn","",!0)}error(...t){return this.forward(t,"error","")}deprecate(...t){return this.forward(t,"warn","WARNING DEPRECATED: ",!0)}forward(t,r,n,i){return i&&!this.debug?null:(Ft(t[0])&&(t[0]=`${n}${this.prefix} ${t[0]}`),this.logger[r](t))}create(t){return new e(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t=t||this.options,t.prefix=t.prefix||this.prefix,new e(this.logger,t)}},up=new Ore,ob=class{constructor(){this.observers={}}on(t,r){return t.split(" ").forEach(n=>{this.observers[n]||(this.observers[n]=new Map);let i=this.observers[n].get(r)||0;this.observers[n].set(r,i+1)}),this}off(t,r){if(this.observers[t]){if(!r){delete this.observers[t];return}this.observers[t].delete(r)}}emit(t,...r){this.observers[t]&&Array.from(this.observers[t].entries()).forEach(([i,s])=>{for(let o=0;o<s;o++)i(...r)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(([i,s])=>{for(let o=0;o<s;o++)i.apply(i,[t,...r])})}},hq=class extends ob{constructor(t,r={ns:["translation"],defaultNS:"translation"}){super(),this.data=t||{},this.options=r,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(t){this.options.ns.indexOf(t)<0&&this.options.ns.push(t)}removeNamespaces(t){let r=this.options.ns.indexOf(t);r>-1&&this.options.ns.splice(r,1)}getResource(t,r,n,i={}){let s=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,o=i.ignoreJSONStructure!==void 0?i.ignoreJSONStructure:this.options.ignoreJSONStructure,a;t.indexOf(".")>-1?a=t.split("."):(a=[t,r],n&&(Array.isArray(n)?a.push(...n):Ft(n)&&s?a.push(...n.split(s)):a.push(n)));let u=dq(this.data,a);return!u&&!r&&!n&&t.indexOf(".")>-1&&(t=a[0],r=a[1],n=a.slice(2).join(".")),u||!o||!Ft(n)?u:wre(this.data?.[t]?.[r],n,s)}addResource(t,r,n,i,s={silent:!1}){let o=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator,a=[t,r];n&&(a=a.concat(o?n.split(o):n)),t.indexOf(".")>-1&&(a=t.split("."),i=r,r=a[1]),this.addNamespaces(r),XHe(this.data,a,i),s.silent||this.emit("added",t,r,n,i)}addResources(t,r,n,i={silent:!1}){for(let s in n)(Ft(n[s])||Array.isArray(n[s]))&&this.addResource(t,r,s,n[s],{silent:!0});i.silent||this.emit("added",t,r,n)}addResourceBundle(t,r,n,i,s,o={silent:!1,skipCopy:!1}){let a=[t,r];t.indexOf(".")>-1&&(a=t.split("."),i=n,n=r,r=a[1]),this.addNamespaces(r);let u=dq(this.data,a)||{};o.skipCopy||(n=JSON.parse(JSON.stringify(n))),i?n5e(u,n,s):u={...u,...n},XHe(this.data,a,u),o.silent||this.emit("added",t,r,n)}removeResourceBundle(t,r){this.hasResourceBundle(t,r)&&delete this.data[t][r],this.removeNamespaces(r),this.emit("removed",t,r)}hasResourceBundle(t,r){return this.getResource(t,r)!==void 0}getResourceBundle(t,r){return r||(r=this.options.defaultNS),this.getResource(t,r)}getDataByLanguage(t){return this.data[t]}hasLanguageSomeTranslations(t){let r=this.getDataByLanguage(t);return!!(r&&Object.keys(r)||[]).find(i=>r[i]&&Object.keys(r[i]).length>0)}toJSON(){return this.data}},i5e={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,r,n,i){return e.forEach(s=>{t=this.processors[s]?.process(t,r,n,i)??t}),t}},s5e=Symbol("i18next/PATH_KEY");function $Pr(){let e=[],t=Object.create(null),r;return t.get=(n,i)=>(r?.revoke?.(),i===s5e?e:(e.push(i),r=Proxy.revocable(n,t),r.proxy)),Proxy.revocable(Object.create(null),t).proxy}function sb(e,t){let{[s5e]:r}=e($Pr()),n=t?.keySeparator??".",i=t?.nsSeparator??":";if(r.length>1&&i){let s=t?.ns,o=Array.isArray(s)?s:null;if(o&&o.length>1&&o.slice(1).includes(r[0]))return`${r[0]}${i}${r.slice(1).join(n)}`}return r.join(n)}var JHe={},Tre=e=>!Ft(e)&&typeof e!="boolean"&&typeof e!="number",mq=class e extends ob{constructor(t,r={}){super(),IPr(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],t,this),this.options=r,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=up.create("translator")}changeLanguage(t){t&&(this.language=t)}exists(t,r={interpolation:{}}){let n={...r};if(t==null)return!1;let i=this.resolve(t,n);if(i?.res===void 0)return!1;let s=Tre(i.res);return!(n.returnObjects===!1&&s)}extractFromKey(t,r){let n=r.nsSeparator!==void 0?r.nsSeparator:this.options.nsSeparator;n===void 0&&(n=":");let i=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,s=r.ns||this.options.defaultNS||[],o=n&&t.indexOf(n)>-1,a=!this.options.userDefinedKeySeparator&&!r.keySeparator&&!this.options.userDefinedNsSeparator&&!r.nsSeparator&&!jPr(t,n,i);if(o&&!a){let u=t.match(this.interpolator.nestingRegexp);if(u&&u.length>0)return{key:t,namespaces:Ft(s)?[s]:s};let c=t.split(n);(n!==i||n===i&&this.options.ns.indexOf(c[0])>-1)&&(s=c.shift()),t=c.join(i)}return{key:t,namespaces:Ft(s)?[s]:s}}translate(t,r,n){let i=typeof r=="object"?{...r}:r;if(typeof i!="object"&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),typeof i=="object"&&(i={...i}),i||(i={}),t==null)return"";typeof t=="function"&&(t=sb(t,{...this.options,...i})),Array.isArray(t)||(t=[String(t)]),t=t.map(de=>typeof de=="function"?sb(de,{...this.options,...i}):String(de));let s=i.returnDetails!==void 0?i.returnDetails:this.options.returnDetails,o=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,{key:a,namespaces:u}=this.extractFromKey(t[t.length-1],i),c=u[u.length-1],l=i.nsSeparator!==void 0?i.nsSeparator:this.options.nsSeparator;l===void 0&&(l=":");let f=i.lng||this.language,p=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(f?.toLowerCase()==="cimode")return p?s?{res:`${c}${l}${a}`,usedKey:a,exactUsedKey:a,usedLng:f,usedNS:c,usedParams:this.getUsedParamsDetails(i)}:`${c}${l}${a}`:s?{res:a,usedKey:a,exactUsedKey:a,usedLng:f,usedNS:c,usedParams:this.getUsedParamsDetails(i)}:a;let d=this.resolve(t,i),h=d?.res,g=d?.usedKey||a,v=d?.exactUsedKey||a,S=["[object Number]","[object Function]","[object RegExp]"],b=i.joinArrays!==void 0?i.joinArrays:this.options.joinArrays,A=!this.i18nFormat||this.i18nFormat.handleAsObject,w=i.count!==void 0&&!Ft(i.count),x=e.hasDefaultValue(i),N=w?this.pluralResolver.getSuffix(f,i.count,i):"",F=i.ordinal&&w?this.pluralResolver.getSuffix(f,i.count,{ordinal:!1}):"",D=w&&!i.ordinal&&i.count===0,V=D&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${N}`]||i[`defaultValue${F}`]||i.defaultValue,z=h;A&&!h&&x&&(z=V);let L=Tre(z),J=Object.prototype.toString.apply(z);if(A&&z&&L&&S.indexOf(J)<0&&!(Ft(b)&&Array.isArray(z))){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");let de=this.options.returnedObjectHandler?this.options.returnedObjectHandler(g,z,{...i,ns:u}):`key '${a} (${this.language})' returned an object instead of string.`;return s?(d.res=de,d.usedParams=this.getUsedParamsDetails(i),d):de}if(o){let de=Array.isArray(z),ie=de?[]:{},H=de?v:g;for(let $ in z)if(Object.prototype.hasOwnProperty.call(z,$)){let ye=`${H}${o}${$}`;x&&!h?ie[$]=this.translate(ye,{...i,defaultValue:Tre(V)?V[$]:void 0,joinArrays:!1,ns:u}):ie[$]=this.translate(ye,{...i,joinArrays:!1,ns:u}),ie[$]===ye&&(ie[$]=z[$])}h=ie}}else if(A&&Ft(b)&&Array.isArray(h))h=h.join(b),h&&(h=this.extendTranslation(h,t,i,n));else{let de=!1,ie=!1;!this.isValidLookup(h)&&x&&(de=!0,h=V),this.isValidLookup(h)||(ie=!0,h=a);let $=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&ie?void 0:h,ye=x&&V!==h&&this.options.updateMissing;if(ie||de||ye){if(this.logger.log(ye?"updateKey":"missingKey",f,c,a,ye?V:h),o){let Ke=this.resolve(a,{...i,keySeparator:!1});Ke&&Ke.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let xe=[],Oe=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if(this.options.saveMissingTo==="fallback"&&Oe&&Oe[0])for(let Ke=0;Ke<Oe.length;Ke++)xe.push(Oe[Ke]);else this.options.saveMissingTo==="all"?xe=this.languageUtils.toResolveHierarchy(i.lng||this.language):xe.push(i.lng||this.language);let Ie=(Ke,ve,qe)=>{let ht=x&&qe!==h?qe:$;this.options.missingKeyHandler?this.options.missingKeyHandler(Ke,c,ve,ht,ye,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(Ke,c,ve,ht,ye,i),this.emit("missingKey",Ke,c,ve,h)};this.options.saveMissing&&(this.options.saveMissingPlurals&&w?xe.forEach(Ke=>{let ve=this.pluralResolver.getSuffixes(Ke,i);D&&i[`defaultValue${this.options.pluralSeparator}zero`]&&ve.indexOf(`${this.options.pluralSeparator}zero`)<0&&ve.push(`${this.options.pluralSeparator}zero`),ve.forEach(qe=>{Ie([Ke],a+qe,i[`defaultValue${qe}`]||V)})}):Ie(xe,a,V))}h=this.extendTranslation(h,t,i,d,n),ie&&h===a&&this.options.appendNamespaceToMissingKey&&(h=`${c}${l}${a}`),(ie||de)&&this.options.parseMissingKeyHandler&&(h=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${c}${l}${a}`:a,de?h:void 0,i))}return s?(d.res=h,d.usedParams=this.getUsedParamsDetails(i),d):h}extendTranslation(t,r,n,i,s){if(this.i18nFormat?.parse)t=this.i18nFormat.parse(t,{...this.options.interpolation.defaultVariables,...n},n.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init({...n,interpolation:{...this.options.interpolation,...n.interpolation}});let u=Ft(t)&&(n?.interpolation?.skipOnVariables!==void 0?n.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables),c;if(u){let f=t.match(this.interpolator.nestingRegexp);c=f&&f.length}let l=n.replace&&!Ft(n.replace)?n.replace:n;if(this.options.interpolation.defaultVariables&&(l={...this.options.interpolation.defaultVariables,...l}),t=this.interpolator.interpolate(t,l,n.lng||this.language||i.usedLng,n),u){let f=t.match(this.interpolator.nestingRegexp),p=f&&f.length;c<p&&(n.nest=!1)}!n.lng&&i&&i.res&&(n.lng=this.language||i.usedLng),n.nest!==!1&&(t=this.interpolator.nest(t,(...f)=>s?.[0]===f[0]&&!n.context?(this.logger.warn(`It seems you are nesting recursively key: ${f[0]} in key: ${r[0]}`),null):this.translate(...f,r),n)),n.interpolation&&this.interpolator.reset()}let o=n.postProcess||this.options.postProcess,a=Ft(o)?[o]:o;return t!=null&&a?.length&&n.applyPostProcessor!==!1&&(t=i5e.handle(a,t,r,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...i,usedParams:this.getUsedParamsDetails(n)},...n}:n,this)),t}resolve(t,r={}){let n,i,s,o,a;return Ft(t)&&(t=[t]),Array.isArray(t)&&(t=t.map(u=>typeof u=="function"?sb(u,{...this.options,...r}):u)),t.forEach(u=>{if(this.isValidLookup(n))return;let c=this.extractFromKey(u,r),l=c.key;i=l;let f=c.namespaces;this.options.fallbackNS&&(f=f.concat(this.options.fallbackNS));let p=r.count!==void 0&&!Ft(r.count),d=p&&!r.ordinal&&r.count===0,h=r.context!==void 0&&(Ft(r.context)||typeof r.context=="number")&&r.context!=="",g=r.lngs?r.lngs:this.languageUtils.toResolveHierarchy(r.lng||this.language,r.fallbackLng);f.forEach(v=>{this.isValidLookup(n)||(a=v,!JHe[`${g[0]}-${v}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(a)&&(JHe[`${g[0]}-${v}`]=!0,this.logger.warn(`key "${i}" for languages "${g.join(", ")}" won't get resolved as namespace "${a}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),g.forEach(S=>{if(this.isValidLookup(n))return;o=S;let b=[l];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(b,l,S,v,r);else{let w;p&&(w=this.pluralResolver.getSuffix(S,r.count,r));let x=`${this.options.pluralSeparator}zero`,N=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(p&&(r.ordinal&&w.indexOf(N)===0&&b.push(l+w.replace(N,this.options.pluralSeparator)),b.push(l+w),d&&b.push(l+x)),h){let F=`${l}${this.options.contextSeparator||"_"}${r.context}`;b.push(F),p&&(r.ordinal&&w.indexOf(N)===0&&b.push(F+w.replace(N,this.options.pluralSeparator)),b.push(F+w),d&&b.push(F+x))}}let A;for(;A=b.pop();)this.isValidLookup(n)||(s=A,n=this.getResource(S,v,A,r))}))})}),{res:n,usedKey:i,exactUsedKey:s,usedLng:o,usedNS:a}}isValidLookup(t){return t!==void 0&&!(!this.options.returnNull&&t===null)&&!(!this.options.returnEmptyString&&t==="")}getResource(t,r,n,i={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(t,r,n,i):this.resourceStore.getResource(t,r,n,i)}getUsedParamsDetails(t={}){let r=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],n=t.replace&&!Ft(t.replace),i=n?t.replace:t;if(n&&typeof t.count<"u"&&(i.count=t.count),this.options.interpolation.defaultVariables&&(i={...this.options.interpolation.defaultVariables,...i}),!n){i={...i};for(let s of r)delete i[s]}return i}static hasDefaultValue(t){let r="defaultValue";for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&r===n.substring(0,r.length)&&t[n]!==void 0)return!0;return!1}},gq=class{constructor(t){this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=up.create("languageUtils")}getScriptPartFromCode(t){if(t=MD(t),!t||t.indexOf("-")<0)return null;let r=t.split("-");return r.length===2||(r.pop(),r[r.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(r.join("-"))}getLanguagePartFromCode(t){if(t=MD(t),!t||t.indexOf("-")<0)return t;let r=t.split("-");return this.formatLanguageCode(r[0])}formatLanguageCode(t){if(Ft(t)&&t.indexOf("-")>-1){let r;try{r=Intl.getCanonicalLocales(t)[0]}catch{}return r&&this.options.lowerCaseLng&&(r=r.toLowerCase()),r||(this.options.lowerCaseLng?t.toLowerCase():t)}return this.options.cleanCode||this.options.lowerCaseLng?t.toLowerCase():t}isSupportedCode(t){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(t=this.getLanguagePartFromCode(t)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(t)>-1}getBestMatchFromCodes(t){if(!t)return null;let r;return t.forEach(n=>{if(r)return;let i=this.formatLanguageCode(n);(!this.options.supportedLngs||this.isSupportedCode(i))&&(r=i)}),!r&&this.options.supportedLngs&&t.forEach(n=>{if(r)return;let i=this.getScriptPartFromCode(n);if(this.isSupportedCode(i))return r=i;let s=this.getLanguagePartFromCode(n);if(this.isSupportedCode(s))return r=s;r=this.options.supportedLngs.find(o=>{if(o===s)return o;if(!(o.indexOf("-")<0&&s.indexOf("-")<0)&&(o.indexOf("-")>0&&s.indexOf("-")<0&&o.substring(0,o.indexOf("-"))===s||o.indexOf(s)===0&&s.length>1))return o})}),r||(r=this.getFallbackCodes(this.options.fallbackLng)[0]),r}getFallbackCodes(t,r){if(!t)return[];if(typeof t=="function"&&(t=t(r)),Ft(t)&&(t=[t]),Array.isArray(t))return t;if(!r)return t.default||[];let n=t[r];return n||(n=t[this.getScriptPartFromCode(r)]),n||(n=t[this.formatLanguageCode(r)]),n||(n=t[this.getLanguagePartFromCode(r)]),n||(n=t.default),n||[]}toResolveHierarchy(t,r){let n=this.getFallbackCodes((r===!1?[]:r)||this.options.fallbackLng||[],t),i=[],s=o=>{o&&(this.isSupportedCode(o)?i.push(o):this.logger.warn(`rejecting language code not found in supportedLngs: ${o}`))};return Ft(t)&&(t.indexOf("-")>-1||t.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&s(this.formatLanguageCode(t)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&s(this.getScriptPartFromCode(t)),this.options.load!=="currentOnly"&&s(this.getLanguagePartFromCode(t))):Ft(t)&&s(this.formatLanguageCode(t)),n.forEach(o=>{i.indexOf(o)<0&&s(this.formatLanguageCode(o))}),i}},QHe={zero:0,one:1,two:2,few:3,many:4,other:5},ZHe={select:e=>e===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})},Cre=class{constructor(t,r={}){this.languageUtils=t,this.options=r,this.logger=up.create("pluralResolver"),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(t,r={}){let n=MD(t==="dev"?"en":t),i=r.ordinal?"ordinal":"cardinal",s=JSON.stringify({cleanedCode:n,type:i});if(s in this.pluralRulesCache)return this.pluralRulesCache[s];let o;try{o=new Intl.PluralRules(n,{type:i})}catch{if(typeof Intl>"u")return this.logger.error("No Intl support, please use an Intl polyfill!"),ZHe;if(!t.match(/-|_/))return ZHe;let u=this.languageUtils.getLanguagePartFromCode(t);o=this.getRule(u,r)}return this.pluralRulesCache[s]=o,o}needsPlural(t,r={}){let n=this.getRule(t,r);return n||(n=this.getRule("dev",r)),n?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(t,r,n={}){return this.getSuffixes(t,n).map(i=>`${r}${i}`)}getSuffixes(t,r={}){let n=this.getRule(t,r);return n||(n=this.getRule("dev",r)),n?n.resolvedOptions().pluralCategories.sort((i,s)=>QHe[i]-QHe[s]).map(i=>`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${i}`):[]}getSuffix(t,r,n={}){let i=this.getRule(t,n);return i?`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${i.select(r)}`:(this.logger.warn(`no plural rule found for: ${t}`),this.getSuffix("dev",r,n))}},e5e=(e,t,r,n=".",i=!0)=>{let s=FPr(e,t,r);return!s&&i&&Ft(r)&&(s=wre(e,r,n),s===void 0&&(s=wre(t,r,n))),s},bre=e=>e.replace(/\$/g,"$$$$"),yq=class{constructor(t={}){this.logger=up.create("interpolator"),this.options=t,this.format=t?.interpolation?.format||(r=>r),this.init(t)}init(t={}){t.interpolation||(t.interpolation={escapeValue:!0});let{escape:r,escapeValue:n,useRawValueToEscape:i,prefix:s,prefixEscaped:o,suffix:a,suffixEscaped:u,formatSeparator:c,unescapeSuffix:l,unescapePrefix:f,nestingPrefix:p,nestingPrefixEscaped:d,nestingSuffix:h,nestingSuffixEscaped:g,nestingOptionsSeparator:v,maxReplaces:S,alwaysFormat:b}=t.interpolation;this.escape=r!==void 0?r:kPr,this.escapeValue=n!==void 0?n:!0,this.useRawValueToEscape=i!==void 0?i:!1,this.prefix=s?A_(s):o||"{{",this.suffix=a?A_(a):u||"}}",this.formatSeparator=c||",",this.unescapePrefix=l?"":f||"-",this.unescapeSuffix=this.unescapePrefix?"":l||"",this.nestingPrefix=p?A_(p):d||A_("$t("),this.nestingSuffix=h?A_(h):g||A_(")"),this.nestingOptionsSeparator=v||",",this.maxReplaces=S||1e3,this.alwaysFormat=b!==void 0?b:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let t=(r,n)=>r?.source===n?(r.lastIndex=0,r):new RegExp(n,"g");this.regexp=t(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=t(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=t(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(t,r,n,i){let s,o,a,u=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=d=>{if(d.indexOf(this.formatSeparator)<0){let S=e5e(r,u,d,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(S,void 0,n,{...i,...r,interpolationkey:d}):S}let h=d.split(this.formatSeparator),g=h.shift().trim(),v=h.join(this.formatSeparator).trim();return this.format(e5e(r,u,g,this.options.keySeparator,this.options.ignoreJSONStructure),v,n,{...i,...r,interpolationkey:g})};this.resetRegExp();let l=i?.missingInterpolationHandler||this.options.missingInterpolationHandler,f=i?.interpolation?.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:d=>bre(d)},{regex:this.regexp,safeValue:d=>this.escapeValue?bre(this.escape(d)):bre(d)}].forEach(d=>{for(a=0;s=d.regex.exec(t);){let h=s[1].trim();if(o=c(h),o===void 0)if(typeof l=="function"){let v=l(t,s,i);o=Ft(v)?v:""}else if(i&&Object.prototype.hasOwnProperty.call(i,h))o="";else if(f){o=s[0];continue}else this.logger.warn(`missed to pass in variable ${h} for interpolating ${t}`),o="";else!Ft(o)&&!this.useRawValueToEscape&&(o=YHe(o));let g=d.safeValue(o);if(t=t.replace(s[0],g),f?(d.regex.lastIndex+=o.length,d.regex.lastIndex-=s[0].length):d.regex.lastIndex=0,a++,a>=this.maxReplaces)break}}),t}nest(t,r,n={}){let i,s,o,a=(u,c)=>{let l=this.nestingOptionsSeparator;if(u.indexOf(l)<0)return u;let f=u.split(new RegExp(`${A_(l)}[ ]*{`)),p=`{${f[1]}`;u=f[0],p=this.interpolate(p,o);let d=p.match(/'/g),h=p.match(/"/g);((d?.length??0)%2===0&&!h||(h?.length??0)%2!==0)&&(p=p.replace(/'/g,'"'));try{o=JSON.parse(p),c&&(o={...c,...o})}catch(g){return this.logger.warn(`failed parsing options string in nesting for key ${u}`,g),`${u}${l}${p}`}return o.defaultValue&&o.defaultValue.indexOf(this.prefix)>-1&&delete o.defaultValue,u};for(;i=this.nestingRegexp.exec(t);){let u=[];o={...n},o=o.replace&&!Ft(o.replace)?o.replace:o,o.applyPostProcessor=!1,delete o.defaultValue;let c=/{.*}/.test(i[1])?i[1].lastIndexOf("}")+1:i[1].indexOf(this.formatSeparator);if(c!==-1&&(u=i[1].slice(c).split(this.formatSeparator).map(l=>l.trim()).filter(Boolean),i[1]=i[1].slice(0,c)),s=r(a.call(this,i[1].trim(),o),o),s&&i[0]===t&&!Ft(s))return s;Ft(s)||(s=YHe(s)),s||(this.logger.warn(`missed to resolve ${i[1]} for nesting ${t}`),s=""),u.length&&(s=u.reduce((l,f)=>this.format(l,f,n.lng,{...n,interpolationkey:i[1].trim()}),s.trim())),t=t.replace(i[0],s),this.regexp.lastIndex=0}return t}},GPr=e=>{let t=e.toLowerCase().trim(),r={};if(e.indexOf("(")>-1){let n=e.split("(");t=n[0].toLowerCase().trim();let i=n[1].substring(0,n[1].length-1);t==="currency"&&i.indexOf(":")<0?r.currency||(r.currency=i.trim()):t==="relativetime"&&i.indexOf(":")<0?r.range||(r.range=i.trim()):i.split(";").forEach(o=>{if(o){let[a,...u]=o.split(":"),c=u.join(":").trim().replace(/^'+|'+$/g,""),l=a.trim();r[l]||(r[l]=c),c==="false"&&(r[l]=!1),c==="true"&&(r[l]=!0),isNaN(c)||(r[l]=parseInt(c,10))}})}return{formatName:t,formatOptions:r}},t5e=e=>{let t={};return(r,n,i)=>{let s=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(s={...s,[i.interpolationkey]:void 0});let o=n+JSON.stringify(s),a=t[o];return a||(a=e(MD(n),i),t[o]=a),a(r)}},HPr=e=>(t,r,n)=>e(MD(r),n)(t),Pre=class{constructor(t={}){this.logger=up.create("formatter"),this.options=t,this.init(t)}init(t,r={interpolation:{}}){this.formatSeparator=r.interpolation.formatSeparator||",";let n=r.cacheInBuiltFormats?t5e:HPr;this.formats={number:n((i,s)=>{let o=new Intl.NumberFormat(i,{...s});return a=>o.format(a)}),currency:n((i,s)=>{let o=new Intl.NumberFormat(i,{...s,style:"currency"});return a=>o.format(a)}),datetime:n((i,s)=>{let o=new Intl.DateTimeFormat(i,{...s});return a=>o.format(a)}),relativetime:n((i,s)=>{let o=new Intl.RelativeTimeFormat(i,{...s});return a=>o.format(a,s.range||"day")}),list:n((i,s)=>{let o=new Intl.ListFormat(i,{...s});return a=>o.format(a)})}}add(t,r){this.formats[t.toLowerCase().trim()]=r}addCached(t,r){this.formats[t.toLowerCase().trim()]=t5e(r)}format(t,r,n,i={}){let s=r.split(this.formatSeparator);if(s.length>1&&s[0].indexOf("(")>1&&s[0].indexOf(")")<0&&s.find(a=>a.indexOf(")")>-1)){let a=s.findIndex(u=>u.indexOf(")")>-1);s[0]=[s[0],...s.splice(1,a)].join(this.formatSeparator)}return s.reduce((a,u)=>{let{formatName:c,formatOptions:l}=GPr(u);if(this.formats[c]){let f=a;try{let p=i?.formatParams?.[i.interpolationkey]||{},d=p.locale||p.lng||i.locale||i.lng||n;f=this.formats[c](a,d,{...l,...i,...p})}catch(p){this.logger.warn(p)}return f}else this.logger.warn(`there was no format function for ${c}`);return a},t)}},WPr=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)},Dre=class extends ob{constructor(t,r,n,i={}){super(),this.backend=t,this.store=r,this.services=n,this.languageUtils=n.languageUtils,this.options=i,this.logger=up.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=i.maxParallelReads||10,this.readingCalls=0,this.maxRetries=i.maxRetries>=0?i.maxRetries:5,this.retryTimeout=i.retryTimeout>=1?i.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(n,i.backend,i)}queueLoad(t,r,n,i){let s={},o={},a={},u={};return t.forEach(c=>{let l=!0;r.forEach(f=>{let p=`${c}|${f}`;!n.reload&&this.store.hasResourceBundle(c,f)?this.state[p]=2:this.state[p]<0||(this.state[p]===1?o[p]===void 0&&(o[p]=!0):(this.state[p]=1,l=!1,o[p]===void 0&&(o[p]=!0),s[p]===void 0&&(s[p]=!0),u[f]===void 0&&(u[f]=!0)))}),l||(a[c]=!0)}),(Object.keys(s).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:i}),{toLoad:Object.keys(s),pending:Object.keys(o),toLoadLanguages:Object.keys(a),toLoadNamespaces:Object.keys(u)}}loaded(t,r,n){let i=t.split("|"),s=i[0],o=i[1];r&&this.emit("failedLoading",s,o,r),!r&&n&&this.store.addResourceBundle(s,o,n,void 0,void 0,{skipCopy:!0}),this.state[t]=r?-1:2,r&&n&&(this.state[t]=0);let a={};this.queue.forEach(u=>{MPr(u.loaded,[s],o),WPr(u,t),r&&u.errors.push(r),u.pendingCount===0&&!u.done&&(Object.keys(u.loaded).forEach(c=>{a[c]||(a[c]={});let l=u.loaded[c];l.length&&l.forEach(f=>{a[c][f]===void 0&&(a[c][f]=!0)})}),u.done=!0,u.errors.length?u.callback(u.errors):u.callback())}),this.emit("loaded",a),this.queue=this.queue.filter(u=>!u.done)}read(t,r,n,i=0,s=this.retryTimeout,o){if(!t.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:t,ns:r,fcName:n,tried:i,wait:s,callback:o});return}this.readingCalls++;let a=(c,l)=>{if(this.readingCalls--,this.waitingReads.length>0){let f=this.waitingReads.shift();this.read(f.lng,f.ns,f.fcName,f.tried,f.wait,f.callback)}if(c&&l&&i<this.maxRetries){setTimeout(()=>{this.read.call(this,t,r,n,i+1,s*2,o)},s);return}o(c,l)},u=this.backend[n].bind(this.backend);if(u.length===2){try{let c=u(t,r);c&&typeof c.then=="function"?c.then(l=>a(null,l)).catch(a):a(null,c)}catch(c){a(c)}return}return u(t,r,a)}prepareLoading(t,r,n={},i){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();Ft(t)&&(t=this.languageUtils.toResolveHierarchy(t)),Ft(r)&&(r=[r]);let s=this.queueLoad(t,r,n,i);if(!s.toLoad.length)return s.pending.length||i(),null;s.toLoad.forEach(o=>{this.loadOne(o)})}load(t,r,n){this.prepareLoading(t,r,{},n)}reload(t,r,n){this.prepareLoading(t,r,{reload:!0},n)}loadOne(t,r=""){let n=t.split("|"),i=n[0],s=n[1];this.read(i,s,"read",void 0,void 0,(o,a)=>{o&&this.logger.warn(`${r}loading namespace ${s} for language ${i} failed`,o),!o&&a&&this.logger.log(`${r}loaded namespace ${s} for language ${i}`,a),this.loaded(t,o,a)})}saveMissing(t,r,n,i,s,o={},a=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(r)){this.logger.warn(`did not save key "${n}" as the namespace "${r}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(n==null||n==="")){if(this.backend?.create){let u={...o,isUpdate:s},c=this.backend.create.bind(this.backend);if(c.length<6)try{let l;c.length===5?l=c(t,r,n,i,u):l=c(t,r,n,i),l&&typeof l.then=="function"?l.then(f=>a(null,f)).catch(a):a(null,l)}catch(l){a(l)}else c(t,r,n,i,a,u)}!t||!t[0]||this.store.addResource(t[0],r,n,i)}}},Are=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]=="object"&&(t=e[1]),Ft(e[1])&&(t.defaultValue=e[1]),Ft(e[2])&&(t.tDescription=e[2]),typeof e[2]=="object"||typeof e[3]=="object"){let r=e[3]||e[2];Object.keys(r).forEach(n=>{t[n]=r[n]})}return t},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),r5e=e=>(Ft(e.ns)&&(e.ns=[e.ns]),Ft(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),Ft(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs?.indexOf?.("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),typeof e.initImmediate=="boolean"&&(e.initAsync=e.initImmediate),e),pq=()=>{},YPr=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(r=>{typeof e[r]=="function"&&(e[r]=e[r].bind(e))})},o5e="__i18next_supportNoticeShown",zPr=()=>!!(typeof globalThis<"u"&&globalThis[o5e]||typeof process<"u"&&process.env&&process.env.I18NEXT_NO_SUPPORT_NOTICE||typeof process<"u"&&process.env&&process.env.NODE_ENV==="production"),KPr=()=>{typeof globalThis<"u"&&(globalThis[o5e]=!0)},XPr=e=>!!(e?.modules?.backend?.name?.indexOf("Locize")>0||e?.modules?.backend?.constructor?.name?.indexOf("Locize")>0||e?.options?.backend?.backends&&e.options.backend.backends.some(t=>t?.name?.indexOf("Locize")>0||t?.constructor?.name?.indexOf("Locize")>0)||e?.options?.backend?.projectId||e?.options?.backend?.backendOptions&&e.options.backend.backendOptions.some(t=>t?.projectId)),Rre=class e extends ob{constructor(t={},r){if(super(),this.options=r5e(t),this.services={},this.logger=up,this.modules={external:[]},YPr(this),r&&!this.isInitialized&&!t.isClone){if(!this.options.initAsync)return this.init(t,r),this;setTimeout(()=>{this.init(t,r)},0)}}init(t={},r){this.isInitializing=!0,typeof t=="function"&&(r=t,t={}),t.defaultNS==null&&t.ns&&(Ft(t.ns)?t.defaultNS=t.ns:t.ns.indexOf("translation")<0&&(t.defaultNS=t.ns[0]));let n=Are();this.options={...n,...this.options,...r5e(t)},this.options.interpolation={...n.interpolation,...this.options.interpolation},t.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=t.keySeparator),t.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=t.nsSeparator),typeof this.options.overloadTranslationOptionHandler!="function"&&(this.options.overloadTranslationOptionHandler=n.overloadTranslationOptionHandler),this.options.showSupportNotice!==!1&&!XPr(this)&&!zPr()&&(typeof console<"u"&&typeof console.info<"u"&&console.info("\u{1F310} i18next is made possible by our own product, Locize \u2014 consider powering your project with managed localization (AI, CDN, integrations): https://locize.com \u{1F499}"),KPr());let i=c=>c?typeof c=="function"?new c:c:null;if(!this.options.isClone){this.modules.logger?up.init(i(this.modules.logger),this.options):up.init(null,this.options);let c;this.modules.formatter?c=this.modules.formatter:c=Pre;let l=new gq(this.options);this.store=new hq(this.options.resources,this.options);let f=this.services;f.logger=up,f.resourceStore=this.store,f.languageUtils=l,f.pluralResolver=new Cre(l,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==n.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),c&&(!this.options.interpolation.format||this.options.interpolation.format===n.interpolation.format)&&(f.formatter=i(c),f.formatter.init&&f.formatter.init(f,this.options),this.options.interpolation.format=f.formatter.format.bind(f.formatter)),f.interpolator=new yq(this.options),f.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},f.backendConnector=new Dre(i(this.modules.backend),f.resourceStore,f,this.options),f.backendConnector.on("*",(d,...h)=>{this.emit(d,...h)}),this.modules.languageDetector&&(f.languageDetector=i(this.modules.languageDetector),f.languageDetector.init&&f.languageDetector.init(f,this.options.detection,this.options)),this.modules.i18nFormat&&(f.i18nFormat=i(this.modules.i18nFormat),f.i18nFormat.init&&f.i18nFormat.init(this)),this.translator=new mq(this.services,this.options),this.translator.on("*",(d,...h)=>{this.emit(d,...h)}),this.modules.external.forEach(d=>{d.init&&d.init(this)})}if(this.format=this.options.interpolation.format,r||(r=pq),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let c=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);c.length>0&&c[0]!=="dev"&&(this.options.lng=c[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(c=>{this[c]=(...l)=>this.store[c](...l)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(c=>{this[c]=(...l)=>(this.store[c](...l),this)});let a=ID(),u=()=>{let c=(l,f)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),a.resolve(f),r(l,f)};if(this.languages&&!this.isInitialized)return c(null,this.t.bind(this));this.changeLanguage(this.options.lng,c)};return this.options.resources||!this.options.initAsync?u():setTimeout(u,0),a}loadResources(t,r=pq){let n=r,i=Ft(t)?t:this.language;if(typeof t=="function"&&(n=t),!this.options.resources||this.options.partialBundledLanguages){if(i?.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return n();let s=[],o=a=>{if(!a||a==="cimode")return;this.services.languageUtils.toResolveHierarchy(a).forEach(c=>{c!=="cimode"&&s.indexOf(c)<0&&s.push(c)})};i?o(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(u=>o(u)),this.options.preload?.forEach?.(a=>o(a)),this.services.backendConnector.load(s,this.options.ns,a=>{!a&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),n(a)})}else n(null)}reloadResources(t,r,n){let i=ID();return typeof t=="function"&&(n=t,t=void 0),typeof r=="function"&&(n=r,r=void 0),t||(t=this.languages),r||(r=this.options.ns),n||(n=pq),this.services.backendConnector.reload(t,r,s=>{i.resolve(),n(s)}),i}use(t){if(!t)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!t.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return t.type==="backend"&&(this.modules.backend=t),(t.type==="logger"||t.log&&t.warn&&t.error)&&(this.modules.logger=t),t.type==="languageDetector"&&(this.modules.languageDetector=t),t.type==="i18nFormat"&&(this.modules.i18nFormat=t),t.type==="postProcessor"&&i5e.addPostProcessor(t),t.type==="formatter"&&(this.modules.formatter=t),t.type==="3rdParty"&&this.modules.external.push(t),this}setResolvedLanguage(t){if(!(!t||!this.languages)&&!(["cimode","dev"].indexOf(t)>-1)){for(let r=0;r<this.languages.length;r++){let n=this.languages[r];if(!(["cimode","dev"].indexOf(n)>-1)&&this.store.hasLanguageSomeTranslations(n)){this.resolvedLanguage=n;break}}!this.resolvedLanguage&&this.languages.indexOf(t)<0&&this.store.hasLanguageSomeTranslations(t)&&(this.resolvedLanguage=t,this.languages.unshift(t))}}changeLanguage(t,r){this.isLanguageChangingTo=t;let n=ID();this.emit("languageChanging",t);let i=a=>{this.language=a,this.languages=this.services.languageUtils.toResolveHierarchy(a),this.resolvedLanguage=void 0,this.setResolvedLanguage(a)},s=(a,u)=>{u?this.isLanguageChangingTo===t&&(i(u),this.translator.changeLanguage(u),this.isLanguageChangingTo=void 0,this.emit("languageChanged",u),this.logger.log("languageChanged",u)):this.isLanguageChangingTo=void 0,n.resolve((...c)=>this.t(...c)),r&&r(a,(...c)=>this.t(...c))},o=a=>{!t&&!a&&this.services.languageDetector&&(a=[]);let u=Ft(a)?a:a&&a[0],c=this.store.hasLanguageSomeTranslations(u)?u:this.services.languageUtils.getBestMatchFromCodes(Ft(a)?[a]:a);c&&(this.language||i(c),this.translator.language||this.translator.changeLanguage(c),this.services.languageDetector?.cacheUserLanguage?.(c)),this.loadResources(c,l=>{s(l,c)})};return!t&&this.services.languageDetector&&!this.services.languageDetector.async?o(this.services.languageDetector.detect()):!t&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(o):this.services.languageDetector.detect(o):o(t),n}getFixedT(t,r,n){let i=(s,o,...a)=>{let u;typeof o!="object"?u=this.options.overloadTranslationOptionHandler([s,o].concat(a)):u={...o},u.lng=u.lng||i.lng,u.lngs=u.lngs||i.lngs,u.ns=u.ns||i.ns,u.keyPrefix!==""&&(u.keyPrefix=u.keyPrefix||n||i.keyPrefix);let c={...this.options,...u};typeof u.keyPrefix=="function"&&(u.keyPrefix=sb(u.keyPrefix,c));let l=this.options.keySeparator||".",f;return u.keyPrefix&&Array.isArray(s)?f=s.map(p=>(typeof p=="function"&&(p=sb(p,c)),`${u.keyPrefix}${l}${p}`)):(typeof s=="function"&&(s=sb(s,c)),f=u.keyPrefix?`${u.keyPrefix}${l}${s}`:s),this.t(f,u)};return Ft(t)?i.lng=t:i.lngs=t,i.ns=r,i.keyPrefix=n,i}t(...t){return this.translator?.translate(...t)}exists(...t){return this.translator?.exists(...t)}setDefaultNamespace(t){this.options.defaultNS=t}hasLoadedNamespace(t,r={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;let n=r.lng||this.resolvedLanguage||this.languages[0],i=this.options?this.options.fallbackLng:!1,s=this.languages[this.languages.length-1];if(n.toLowerCase()==="cimode")return!0;let o=(a,u)=>{let c=this.services.backendConnector.state[`${a}|${u}`];return c===-1||c===0||c===2};if(r.precheck){let a=r.precheck(this,o);if(a!==void 0)return a}return!!(this.hasResourceBundle(n,t)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||o(n,t)&&(!i||o(s,t)))}loadNamespaces(t,r){let n=ID();return this.options.ns?(Ft(t)&&(t=[t]),t.forEach(i=>{this.options.ns.indexOf(i)<0&&this.options.ns.push(i)}),this.loadResources(i=>{n.resolve(),r&&r(i)}),n):(r&&r(),Promise.resolve())}loadLanguages(t,r){let n=ID();Ft(t)&&(t=[t]);let i=this.options.preload||[],s=t.filter(o=>i.indexOf(o)<0&&this.services.languageUtils.isSupportedCode(o));return s.length?(this.options.preload=i.concat(s),this.loadResources(o=>{n.resolve(),r&&r(o)}),n):(r&&r(),Promise.resolve())}dir(t){if(t||(t=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!t)return"rtl";try{let i=new Intl.Locale(t);if(i&&i.getTextInfo){let s=i.getTextInfo();if(s&&s.direction)return s.direction}}catch{}let r=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],n=this.services?.languageUtils||new gq(Are());return t.toLowerCase().indexOf("-latn")>1?"ltr":r.indexOf(n.getLanguagePartFromCode(t))>-1||t.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(t={},r){let n=new e(t,r);return n.createInstance=e.createInstance,n}cloneInstance(t={},r=pq){let n=t.forkResourceStore;n&&delete t.forkResourceStore;let i={...this.options,...t,isClone:!0},s=new e(i);if((t.debug!==void 0||t.prefix!==void 0)&&(s.logger=s.logger.clone(t)),["store","services","language"].forEach(a=>{s[a]=this[a]}),s.services={...this.services},s.services.utils={hasLoadedNamespace:s.hasLoadedNamespace.bind(s)},n){let a=Object.keys(this.store.data).reduce((u,c)=>(u[c]={...this.store.data[c]},u[c]=Object.keys(u[c]).reduce((l,f)=>(l[f]={...u[c][f]},l),u[c]),u),{});s.store=new hq(a,i),s.services.resourceStore=s.store}if(t.interpolation){let u={...Are().interpolation,...this.options.interpolation,...t.interpolation},c={...i,interpolation:u};s.services.interpolator=new yq(c)}return s.translator=new mq(s.services,i),s.translator.on("*",(a,...u)=>{s.emit(a,...u)}),s.init(i,r),s.translator.options=i,s.translator.backendConnector.services.utils={hasLoadedNamespace:s.hasLoadedNamespace.bind(s)},s}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}},Ur=Rre.createInstance(),Mgi=Ur.createInstance,Fgi=Ur.dir,Ugi=Ur.init,kgi=Ur.loadResources,Bgi=Ur.reloadResources,qgi=Ur.use,jgi=Ur.changeLanguage,Vgi=Ur.getFixedT,$gi=Ur.t,Ggi=Ur.exists,Hgi=Ur.setDefaultNamespace,Wgi=Ur.hasLoadedNamespace,Ygi=Ur.loadNamespaces,zgi=Ur.loadLanguages;var a5e={logMessages:{info:{mockOnlyWarning:"This application was generated with a local metadata file and does not reference a live server. Please add the required server configuration or start this application with mock data using the target: `npm run start-mock`."},error:{logWrapperNotInitialised:"`LogWrapper` is not initialised."},debug:{loggingConfigured:"Logging has been configured at log level: {{logLevel}}."}},telemetry:{unknownOs:"Unknown"},texts:{systemTypeLabel:{abapCloud:"ABAP Cloud"}}};var Nre="fiori-freestyle-writer",u5e=Ur.createInstance();async function QPr(){await u5e.init({resources:{en:{[Nre]:a5e}},lng:"en",fallbackLng:"en",defaultNS:Nre,ns:[Nre],showSupportNotice:!1})}function tg(e,t){return u5e.t(e,t)}QPr().catch(()=>{});function c5e(e){return ZPr(e.name,e.userDisplayName,e.systemType)}function ZPr(e,t,r){let n=t?` [${t}]`:"";return`${e}${eDr(r)}${n}`}function eDr(e){let t="",r=` (${tg("texts.systemTypeLabel.abapCloud")})`;return(e==="AbapCloud"||e==="S4HC"||e==="BTP")&&(t=r),t}var FD=class{applicationKey="";extensionName="";extensionVersion="";getApplicationKey(){return this.applicationKey}getExtensionVersion(){return this.extensionVersion}getExtensionName(){return this.extensionName}};var qct=Te(Fue(),1);var FR=class{extensionName;eventName;constructor(t,r){this.extensionName=t,this.eventName=r}getExtensionName(){return this.extensionName}getEventName(){return this.eventName}toString(){return`${this.extensionName}/${this.eventName}`}};var Ci;(function(e){e[e.OnePercent=0]="OnePercent",e[e.TenPercent=1]="TenPercent",e[e.NoSampling=2]="NoSampling"})(Ci||(Ci={}));function c$(e){e.channel.setUseDiskRetryCaching(!0),e.addTelemetryProcessor(t=>(t.tags["ai.location.ip"]="0.0.0.0",t.tags["ai.cloud.roleInstance"]="masked",t.tags["ai.cloud.role"]="masked",t.tags["ai.device.type"]="masked",!0))}var Uue={name:"@sap-ux/telemetry",version:"1.0.9",description:"Library for sending usage telemetry data",type:"module",repository:{type:"git",url:"https://github.com/SAP/open-ux-tools.git",directory:"packages/telemetry"},bugs:{url:"https://github.com/SAP/open-ux-tools/issues?q=is%3Aopen+is%3Aissue+label%3Abug+label%3Atelemetry"},license:"Apache-2.0",private:!1,main:"dist/index.js",scripts:{build:"tsc --build",watch:"tsc --watch",clean:"rimraf --glob dist coverage *.tsbuildinfo",format:"prettier --write '**/*.{js,json,ts,yaml,yml}' --ignore-path ../../.prettierignore",lint:"eslint","lint:fix":"eslint --fix",test:"cross-env NODE_OPTIONS='--experimental-vm-modules' jest --ci --forceExit --detectOpenHandles --colors","test-u":"cross-env NODE_OPTIONS='--experimental-vm-modules' jest --ci --forceExit --detectOpenHandles --colors -u",link:"pnpm link --global",unlink:"pnpm unlink --global",example:"ts-node example/index.ts"},dependencies:{"@sap-ux/store":"workspace:*","@sap-ux/project-access":"workspace:*","@sap-ux/btp-utils":"workspace:*","@sap-ux/ui5-config":"workspace:*","@sap-ux/logger":"workspace:*","@sap-ux/nodejs-utils":"workspace:*",applicationinsights:"2.9.8",axios:"1.16.0","performance-now":"2.1.0",yaml:"2.8.3"},devDependencies:{"@jest/globals":"30.3.0","jest-extended":"7.0.0",memfs:"3.4.13",unionfs:"4.6.0",dotenv:"17.4.2"},files:["dist","LICENSE","!dist/*.map","!dist/**/*.map"],engines:{node:">=22.x"}};var Eo={azureInstrumentationKey:"",telemetryEnabled:!0,telemetryLibName:Uue.name,telemetryLibVersion:Uue.version,consumerModuleName:"",consumerModuleVersion:""};process.env.APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL??="true";var UR=class extends FD{clients;constructor(t,r,n){super(),this.clients=new Map,this.applicationKey=t,this.extensionVersion=n,this.extensionName=r;let i=this.createTelemetryClient(Ci.OnePercent),s=this.createTelemetryClient(Ci.TenPercent),o=this.createTelemetryClient(Ci.NoSampling);this.clients.set(Ci.OnePercent,i),this.clients.set(Ci.TenPercent,s),this.clients.set(Ci.NoSampling,o)}reportBlocking(t,r,n,i,s=!1){if(!s||Eo.telemetryEnabled){let{client:o,event:a}=this.prepareClientAndEvent(t,r,n,i);return this.trackEventBlocking(o,a)}return Promise.resolve()}async report(t,r,n,i,s,o){if(o!==void 0&&!o||!Eo.telemetryEnabled)return;let{client:a,event:u}=this.prepareClientAndEvent(t,r,n,i);this.trackEvent(a,u)}prepareClientAndEvent(t,r,n,i=Ci.NoSampling){let s=this.clients.get(i),a={name:new FR(this.extensionName,t).toString(),properties:r,measurements:n};return{client:s,event:a}}async trackEventBlocking(t,r){if(process.env.SAP_UX_FIORI_TOOLS_DISABLE_TELEMETRY!=="true")return new Promise((n,i)=>{try{t.trackEvent(r),t.flush({callback:()=>n()})}catch(s){i(s)}})}trackEvent(t,r){return process.env.SAP_UX_FIORI_TOOLS_DISABLE_TELEMETRY!=="true"?(t.trackEvent(r),!0):!1}createTelemetryClient(t){let r;switch(t){case Ci.OnePercent:r=1;break;case Ci.TenPercent:r=10;break;case Ci.NoSampling:default:r=100;break}let n=new qct.TelemetryClient(this.applicationKey);return n.config.samplingPercentage=r,c$(n),n}};var kue=()=>{let e=new Date().getTime();return new Date(e).toISOString()};var kR=class extends UR{constructor(t,r,n){super(t,r,n)}async report(t,r,n,i,s,o){let a=await l$(s),u={v:this.extensionVersion,datetime:kue()},c={...r,...a,...u};await super.report(t,c,n,i,s,o)}async reportEvent(t,r,n,i){let{finalProperties:s,finalMeasurements:o}=await this.collectToolsSuiteTelemetry(t,n);return super.report(t.eventName,s,o,r,n,i)}async reportEventBlocking(t,r,n,i){let{finalProperties:s,finalMeasurements:o}=await this.collectToolsSuiteTelemetry(t,n);return super.reportBlocking(t.eventName,s,o,r,i)}async collectToolsSuiteTelemetry(t,r){let n=await l$(r),i={v:this.extensionVersion,datetime:kue()},s={...t.properties,...n,...i},o={...t.measurements};return{finalProperties:s,finalMeasurements:o}}};var jct=require("node:child_process"),BR=class{run(t,r=[],n={},i){return i&&i.debug(`Running command: ${t} ${r.join(" ")}`),new Promise((s,o)=>{let a=[],u=process.platform==="win32"?{...n,shell:!0}:n,c=(0,jct.spawn)(t,r,u);c.stdout.setEncoding("utf8");let l;c.stdout.on("data",f=>{i?.info(f.toString().replace(/[\r\n]$/,"")),l=f.toString()}),c.stderr.on("data",f=>{i?.info(f.toString().replace(/[\r\n]$/,"")),a.push(f.toString())}),c.on("error",f=>{let p=`Command failed with error: ${f.message}`;i?.error(p),o(f)}),c.on("close",f=>{if(f!==0){let p=`Command failed, \`${t} ${r.join(" ")}\`, ${a.join(", ")}`;i?.debug(p),o(p)}s(l)})})}};var Nnn=Te(B$(),1);var Inn=Te(Zle(),1),tfe=Te(ea(),1);var Oht={error:{unsupportedYoVersion:"The installed version of the `Yo` CLI tool: {{installedYoVersion}} is not supported. Please use `npm` or `yarn` to globally install the latest supported version by running: 'npm i -g yo@{{latestSupportedYoVer}}'.",executingYoVersionCmd:"Running: {{yoCmd}} returned an error: {{- error}}. Check that `yo` is installed and available on the path. If `yo@{{latestSupportedYoVer}}` is not installed, use `npm` or `yarn` to globally install the latest required version by running: 'npm i -g yo@{{latestSupportedYoVer}}'."}};var efe="nodejs-utils",Dnn=Ur.createInstance();async function Rnn(){await Dnn.init({lng:"en",fallbackLng:"en",defaultNS:efe,ns:[efe],resources:{en:{[efe]:Oht}},interpolation:{escapeValue:!1},showSupportNotice:!1})}Rnn().catch(()=>{});var JR=Te(require("node:https"),1);function jA(e){JR.default.globalAgent.options&&(JR.default.globalAgent.options.rejectUnauthorized=e),JR.default.globalAgent.fallbackAgent?.options&&(JR.default.globalAgent.fallbackAgent.options.rejectUnauthorized=e)}var nl=Te(Fpe(),1),tEt=Te(eEt(),1);var gi=class extends Error{code;constructor(t,r){super(t),this.code=r,this.name=this.constructor.name}};var is=Object.freeze({yamlParsing:"yamlParsing",nodeNotFound:"nodeNotFound",nodeNotFoundMatching:"nodeNotFoundMatching",nodeNotAMap:"nodeNotAMap",propertyNotFound:"propertyNotFound",pathCannotBeEmpty:"pathCannotBeEmpty",pathDoesNotExist:"pathDoesNotExist",seqDoesNotExist:"seqDoesNotExist",tryingToAppendToNonSequence:"tryingToAppendToNonSequence",startNodeMustBeCollection:"startNodeMustBeCollection",scalarValuesDoNotHaveProperties:"scalarValuesDoNotHaveProperties"}),bo=Object.freeze({yamlParsing:"Error parsing YAML document",nodeNotFound:"Node not found at path: [{{- path }}]",nodeNotFoundMatching:"Node not found at path: [{{- path }}, matching [{{- key }} = {{- value }}]",nodeNotAMap:"Node path: [{{- path }}, matching [{{- key }} = {{- value }}], is not a map",propertyNotFound:"Node not found at path: [{{- path }}]",pathCannotBeEmpty:"Path cannot be empty",pathDoesNotExist:"Parent node does not exist at: [{{- path }}]",seqDoesNotExist:"Sequence does not exist at: [{{- path }}]",tryingToAppendToNonSequence:"Cannot append to non-sequence at: [{{- path }}]",startNodeMustBeCollection:"Starting node must be an array or an object",scalarValuesDoNotHaveProperties:"Scalar values do not have properties"});function rl(e,t){try{return t?e?.replace(/{{-?([^{}]*)}}/g,(r,n)=>{let i=n?.trim();return t[i]?.toString()||r}):e}catch{return""}}var PN=class e{documents;static async newInstance(t){return new e(t)}constructor(t){this.documents=nl.default.parseAllDocuments(t),this.documents.length===0&&this.documents.push(nl.default.parseDocument(t));let r=this.documents.filter(n=>n.errors.length>0);if(r.length>0)throw new gi(bo.yamlParsing+`
|
|
661
661
|
`+r.map(n=>n.errors.map(i=>i.message).join("")),is.yamlParsing)}toString(){return this.documents.map(t=>t.toString({singleQuote:!0})).join("")}addDocumentComment({comment:t,location:r="beginning"}){switch(r){case"beginning":this.documents[0].commentBefore=t;break;case"end":this.documents[0].comment=t;break;default:break}return this}createNode({value:t,comments:r}){let n=this.documents[0].createNode(t);if(r?.length)for(let i of r){let s=n.items.findIndex(o=>o.key.value===i.key);n.items[s].value.comment=i.comment}return n}setIn({path:t,value:r,createIntermediateKeys:n,comment:i}){let s=this.toPathArray(t);if(s.length>1){let a=s.slice(0,-1);if(!this.documents[0].getIn(a)&&!n)throw new gi(rl(bo.pathDoesNotExist,{path:a}),is.pathDoesNotExist)}let o=this.documents[0].createNode(r);return i&&(o.commentBefore=i),this.documents[0].setIn(s,o),this}appendTo({path:t,value:r,createIntermediateKeys:n=!0,nodeComment:i,comments:s}){let o=this.toPathArray(t),a=this.documents[0].clone(),u=a.getIn(o);if(u){if(!(0,nl.isSeq)(u))throw new gi(rl(bo.tryingToAppendToNonSequence,{path:t}),is.tryingToAppendToNonSequence)}else{if(!n)throw new gi(rl(bo.seqDoesNotExist,{path:t}),is.seqDoesNotExist);u=new nl.YAMLSeq,a.setIn(o,u)}let c=a.createNode(r);if(i&&(c.commentBefore=i),u.items.push(c),s&&s.length>0){if(typeof r!="object")throw new gi(bo.scalarValuesDoNotHaveProperties,is.scalarValuesDoNotHaveProperties);let l=u.items.length-1;for(let f of s){let p=this.toPathArray(f.path),d=a.getIn([...o,l,...p],!0);if(!d)throw new gi(rl(bo.propertyNotFound,{path:f.path}),is.propertyNotFound);d.comment=f.comment}}return this.documents[0]=a,this}updateAt({path:t,matcher:r,value:n,mode:i="merge"}){let s=this.toPathArray(t),o=this.documents[0].getIn(s);if(!o)throw new gi(rl(bo.seqDoesNotExist,{path:t}),is.seqDoesNotExist);let a=o.items.find(l=>l.toJSON()[r.key]===r.value);if(!a)throw new gi(rl(bo.nodeNotFoundMatching,{path:t,key:r.key,value:r.value}),is.nodeNotFoundMatching);let u=i==="merge"?(0,tEt.default)(a.toJSON(),n):n,c=this.documents[0].createNode(u);return o.items.splice(o.items.indexOf(a),1,c),this}delete(t){return this.documents[0].delete(t)}deleteAt({path:t,matcher:r}){let n=this.toPathArray(t),i=this.documents[0].getIn(n);if(!i?.items)throw new gi(rl(bo.seqDoesNotExist,{path:t}),is.seqDoesNotExist);if(!i.items.find((o,a)=>o.toJSON()[r.key]===r.value?(i.items.splice(a,1),!0):!1))throw new gi(rl(bo.propertyNotFound,{path:t}),is.propertyNotFound);return this}getNode({start:t,path:r}){if(t&&!((0,nl.isSeq)(t)||(0,nl.isMap)(t)))throw new gi(bo.startNodeMustBeCollection,is.startNodeMustBeCollection);let n=this.toPathArray(r),s=(t||this.documents[0])?.getIn(n);if(s)return s;throw new gi(rl(bo.nodeNotFound,{path:r}),is.nodeNotFound)}getSequence({start:t,path:r}){let n=this.getNode({start:t,path:r});if((0,nl.isSeq)(n))return n;throw new gi(rl(bo.seqDoesNotExist,{path:r}),is.seqDoesNotExist)}getMap({start:t,path:r}){let n=this.getNode({start:t,path:r});if((0,nl.isMap)(n))return n;throw new gi(rl(bo.nodeNotAMap,{path:r}),is.nodeNotAMap)}findItem(t,r){let n=i=>i!==void 0&&typeof i.toJSON=="function"&&i.toJSON.call(i)||{};return t.items.find(i=>r(n(i)))}toPathArray(t){let r=t?.toString().split(".").filter(n=>n!=="").map(n=>Number.isNaN(Number(n))?n:Number(n));if(!r||r.length===0)throw new gi(bo.pathCannotBeEmpty,is.pathCannotBeEmpty);return r}};var mh=require("node:path");function rEt(){return{name:"fiori-tools-appreload",afterMiddleware:"compression",configuration:{port:35729,path:"webapp",delay:300}}}function XG(e,t){let r=[];return e.authenticationType==="reentranceTicket"&&r.push({path:`configuration.backend.${t}.authenticationType`,comment:" SAML support for vscode",key:"authenticationType"}),r}function nEt(e,t,r="compression",n=!1){let i={name:"fiori-tools-proxy",afterMiddleware:r,configuration:{ignoreCertErrors:n}},s=[{path:"configuration.ignoreCertErrors",comment:" If set to true, certificate errors will be ignored. E.g. self-signed certificates will be accepted"}];return e&&e.length>0&&(e.forEach((o,a)=>{o.path=o.path??"/";let u=XG(o,a);u&&(s=[...s,...u])}),i.configuration.backend=e),t!==void 0&&(i.configuration.ui5={path:t.path??["/resources","/test-resources"],url:t.url??"https://ui5.sap.com"},t.version!==void 0&&(i.configuration.ui5.version=t.version),t.directLoad&&(i.configuration.ui5.directLoad=!0)),{config:i,comments:s}}var iEt=(e,t,r,n)=>{let i=[];return r.forEach(s=>{let o=`.${mh.posix.sep}${(0,mh.relative)(e,(0,mh.join)(t,"localService",s.serviceName)).replaceAll(mh.sep,mh.posix.sep)}`,a={urlPath:s.servicePath.replace(/\/$/,""),metadataPath:s.metadataPath??`${o}/metadata.xml`,mockdataPath:`${o}/data`,generateMockData:!0};s.resolveExternalServiceReferences===!0&&(a.resolveExternalServiceReferences=!0),i.push(a)}),{name:"sap-fe-mockserver",beforeMiddleware:"csp",configuration:{mountPath:"/",services:i,annotations:n}}};var ZA="fiori-tools-servestatic",gh="fiori-tools-proxy";var jSt=Te(Fvt(),1),ul=require("node:path"),VSt=require("node:url"),$St=require("node:fs/promises");function Qvt(e){return typeof e>"u"||e===null}function cmn(e){return typeof e=="object"&&e!==null}function lmn(e){return Array.isArray(e)?e:Qvt(e)?[]:[e]}function fmn(e,t){var r,n,i,s;if(t)for(s=Object.keys(t),r=0,n=s.length;r<n;r+=1)i=s[r],e[i]=t[i];return e}function pmn(e,t){var r="",n;for(n=0;n<t;n+=1)r+=e;return r}function dmn(e){return e===0&&Number.NEGATIVE_INFINITY===1/e}var hmn=Qvt,mmn=cmn,gmn=lmn,ymn=pmn,Emn=dmn,_mn=fmn,ss={isNothing:hmn,isObject:mmn,toArray:gmn,repeat:ymn,isNegativeZero:Emn,extend:_mn};function Zvt(e,t){var r="",n=e.reason||"(unknown reason)";return e.mark?(e.mark.name&&(r+='in "'+e.mark.name+'" '),r+="("+(e.mark.line+1)+":"+(e.mark.column+1)+")",!t&&e.mark.snippet&&(r+=`
|
|
662
662
|
|
|
663
663
|
`+e.mark.snippet),n+" "+r):n}function sI(e,t){Error.call(this),this.name="YAMLException",this.reason=e,this.mark=t,this.message=Zvt(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}sI.prototype=Object.create(Error.prototype);sI.prototype.constructor=sI;sI.prototype.toString=function(t){return this.name+": "+Zvt(this,t)};var ua=sI;function Phe(e,t,r,n,i){var s="",o="",a=Math.floor(i/2)-1;return n-t>a&&(s=" ... ",t=n-a+s.length),r-n>a&&(o=" ...",r=n+a-o.length),{str:s+e.slice(t,r).replace(/\t/g,"\u2192")+o,pos:n-t+s.length}}function Dhe(e,t){return ss.repeat(" ",t-e.length)+e}function vmn(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),typeof t.indent!="number"&&(t.indent=1),typeof t.linesBefore!="number"&&(t.linesBefore=3),typeof t.linesAfter!="number"&&(t.linesAfter=2);for(var r=/\r?\n|\r|\0/g,n=[0],i=[],s,o=-1;s=r.exec(e.buffer);)i.push(s.index),n.push(s.index+s[0].length),e.position<=s.index&&o<0&&(o=n.length-2);o<0&&(o=n.length-1);var a="",u,c,l=Math.min(e.line+t.linesAfter,i.length).toString().length,f=t.maxLength-(t.indent+l+3);for(u=1;u<=t.linesBefore&&!(o-u<0);u++)c=Phe(e.buffer,n[o-u],i[o-u],e.position-(n[o]-n[o-u]),f),a=ss.repeat(" ",t.indent)+Dhe((e.line-u+1).toString(),l)+" | "+c.str+`
|
|
@@ -730,7 +730,7 @@ specVersion: "2.5"`);return s.setMetadata({name:e}),s.setType("application"),s.a
|
|
|
730
730
|
${i}`);let s=[" getReferentialConstraints: function (navigationProperty) {",`${i}`," return undefined;"," }"].join(`
|
|
731
731
|
`),o=e.lastIndexOf(`
|
|
732
732
|
};`);return o!==-1?`${e.slice(0,o)},
|
|
733
|
-
${s}${e.slice(o)}`:e}var Z8t=require("node:fs/promises"),e4t=require("node:path");var H8t=require("node:crypto"),W8t=Te(F8());var G8t={name:"@sap-ux/generator-odata-downloader",displayName:"Fiori Elements Data Downloader",description:"Yeoman generator that supports download of app data, typically for mock data server use.",version:"0.3.12",repository:{type:"git",url:"https://github.com/SAP/open-ux-tools.git",directory:"packages/generator-odata-downloader"},bugs:{url:"https://github.com/SAP/open-ux-tools/issues?q=is%3Aopen+is%3Aissue+label%3Abug+label%3Aodata-download"},license:"Apache-2.0",main:"generators/app/index.js",keywords:["yeoman-generator"],scripts:{build:"npm-run-all clean bundle:prod",compile:"tsc --build",clean:"rimraf --glob generators prebuilds test/test-output coverage *.tsbuildinfo",watch:"tsc --watch",lint:"eslint","lint:fix":"eslint --fix",test:"cross-env NODE_OPTIONS='--experimental-vm-modules' jest --ci --forceExit --detectOpenHandles --colors","test-u":"cross-env NODE_OPTIONS='--experimental-vm-modules' jest --ci --forceExit --detectOpenHandles --colors -u",link:"pnpm link --global",unlink:"pnpm unlink --global",bundle:"node esbuild.mjs","bundle:dev":"pnpm clean && node esbuild.mjs --development && pnpm pack","bundle:prod":"node esbuild.mjs --production"},files:["LICENSE","generators","!generators/*.map","!generators/**/*.map","prebuilds","yeoman.png"],devDependencies:{"@jest/globals":"30.3.0"},dependencies:{"@sap-devx/yeoman-ui-types":"1.25.0","@sap-ux/annotation-converter":"0.10.21","@sap-ux/axios-extension":"workspace:*","@sap-ux/btp-utils":"workspace:*","@sap-ux/edmx-parser":"0.10.0","@sap-ux/fiori-generator-shared":"workspace:*","@sap-ux/inquirer-common":"workspace:*","@sap-ux/logger":"workspace:*","@sap-ux/mockserver-config-writer":"workspace:*","@sap-ux/odata-service-inquirer":"workspace:*","@sap-ux/odata-service-writer":"workspace:*","@sap-ux/project-access":"workspace:*","@sap-ux/store":"workspace:*","@sap-ux/telemetry":"workspace:*","@sap-ux/ui5-config":"workspace:*","@sap-ux/vocabularies-types":"0.15.0","@sap/ux-specification":"1.144.0","@types/inquirer":"8.2.6","@types/yeoman-generator":"5.2.14","@vscode-logging/logger":"2.0.9",deepmerge:"4.3.1",i18next:"25.10.10",inquirer:"8.2.7","odata-query":"8.0.5","os-name":"4.0.1","prettify-xml":"1.2.0",rimraf:"6.1.3","yeoman-generator":"5.10.0"},engines:{node:">=22.x"}};var kQn="@sap-ux/odata-download-sub-generator",BQn="0a65e45d-6bf4-421d-b845-61e888c50e9e",ya=class{static _telemetryData;static _sessionId;static async initTelemetrySettings(t){this._sessionId=(0,H8t.randomUUID)(),cr.logger.info(`Telemetry session initialized with ID: ${this._sessionId}`);let r={consumerModule:{name:kQn,version:G8t.version},watchTelemetrySettingStore:!1,internalFeature:!0,resourceId:BQn,...t};try{await bL(r)}catch(n){cr.logger.error(`Error initializing telemetry settings: ${n}`)}}static createTelemetryData(t){if(!this._telemetryData){let r=Nt("telemetry.unknownOs");try{r=(0,W8t.default)()}catch{}this._telemetryData={Platform:jr()?"SBAS":"VSCode",OperatingSystem:r,SessionId:this._sessionId}}return this._telemetryData=Object.assign(this._telemetryData,t),this._telemetryData}static prepareTelemetryEvent(t,r){return{eventName:t,properties:r,measurements:{}}}static async sendTelemetry(t,r){let n=this.createTelemetryData(r),i=this.prepareTelemetryEvent(t,n);await nc.getTelemetryClient().reportEvent(i,Ci.NoSampling)}};var qQn=["eq","ne","gt","ge","lt","le"],w7=["and","or","not"],jQn=["any","all"],VQn=["startswith","endswith","contains","matchespattern"],$Qn=["expand","levels","select","skip","top","count","orderby","filter"],Y8t=/\((.*)\)/,z8t=/(?!indexof)\((\w+)\)/;var im="";function hbe({select:e,search:t,skiptoken:r,format:n,top:i,skip:s,filter:o,transform:a,orderBy:u,key:c,count:l,expand:f,action:p,func:d}={}){let h="",g=[],v={};if(c!=null&&(h+=`(${od(c,g)})`),(o||typeof l=="object")&&(v.$filter=C7(typeof l=="object"?l:o,g)),a&&(v.$apply=X8t(a)),f&&(v.$expand=O7(f)),u&&(v.$orderby=mbe(u)),l&&(typeof l=="boolean"?v.$count=!0:h+="/$count"),typeof i=="number"&&(v.$top=i),typeof s=="number"&&(v.$skip=s),p&&(h+=`/${p}`),d){if(typeof d=="string")h+=`/${d}`;else if(typeof d=="object"){let[S]=Object.keys(d),b=od(d[S],g);h+=`/${S}`,b!==""&&(h+=`(${b})`)}}return g.length>0&&Object.assign(v,g.reduce((S,b)=>Object.assign(S,{[`@${b.name}`]:od(b.value)}),{})),zQn(h,{$select:e,$search:t,$skiptoken:r,$format:n,...v})}function dbe(e,t,r=[]){return`${e} eq ${od(t,r)}`}function C7(e={},t=[],r=""){return(Array.isArray(e)?e:[e]).reduce((s,o)=>{if(o){let a=n(o,t,r);a&&s.push(a)}return s},[]).join(" and ");function n(s={},o=[],a=""){let u="";return typeof s=="string"?u=s:s&&typeof s=="object"&&(u=Object.keys(s).reduce((c,l)=>{let f=s[l];if(f===void 0)return c;let p="";if(a?l===im?p=a:z8t.test(l)?p=l.replace(z8t,(d,h)=>h.trim()===im?`(${a})`:`(${a}/${h.trim()})`):Y8t.test(l)?p=l.replace(Y8t,(d,h)=>h.trim()===im?`(${a})`:`(${a}/${h.trim()})`):p=`${a}/${l}`:p=l,l===im&&Array.isArray(f))return c.concat(f.map(d=>dbe(p,d)));if(["number","string","boolean"].indexOf(typeof f)!==-1||f instanceof Date||f===null)c.push(dbe(p,f,o));else if(Array.isArray(f)){let d=l,h=f.map(g=>C7(g,o,a)).filter(g=>g).map(g=>w7.indexOf(d)!==-1?`(${g})`:g);h.length&&(w7.indexOf(d)!==-1?h.length&&(d==="not"?c.push(K8t(h)):c.push(`(${h.join(` ${d} `)})`)):c.push(h.join(` ${d} `)))}else if(w7.indexOf(p)!==-1){let d=p,h=Object.keys(f).map(g=>n({[g]:f[g]}));h.length&&(d==="not"?c.push(K8t(h)):c.push(`(${h.join(` ${d} `)})`))}else if(typeof f=="object")"type"in f?c.push(dbe(p,f,o)):Object.keys(f).forEach(d=>{if(f[d]!==void 0)if(qQn.indexOf(d)!==-1)c.push(`${p} ${d} ${od(f[d],o)}`);else if(w7.indexOf(d)!==-1)Array.isArray(f[d])?c.push(f[d].map(h=>"("+n(h,o,p)+")").join(` ${d} `)):c.push("("+n(f[d],o,p)+")");else if(jQn.indexOf(d)!==-1){let h=i(l.toLowerCase(),f[d],d,p);h&&c.push(h)}else if(d==="has")c.push(`${p} ${d} ${od(f[d],o)}`);else if(d==="in"){let h=Array.isArray(f[d])?f[d]:f[d].value.map(g=>({type:f[d].type,value:g}));c.push(p+" in ("+h.map(g=>od(g,o)).join(",")+")")}else if(VQn.indexOf(d)!==-1)c.push(`${d}(${p},${od(f[d],o)})`);else{let h=n({[d]:f[d]},o,p);h&&c.push(h)}});else throw new Error(`Unexpected value type: ${f}`);return c},[]).join(" and ")),u}function i(s,o,a,u){let c="";if(typeof o=="string"||o instanceof String)c=GQn(s,o,a,u);else if(o){let l=Array.isArray(o)?o.reduce((p,d)=>d.hasOwnProperty(im)?(p.hasOwnProperty(im)||(p[im]=[]),p[im].push(d[im]),p):{...p,...d},{}):o,f=n(l,t,s);c=`${u}/${a}(${f?`${s}:${f}`:""})`}return c}}function GQn(e,t,r,n){let i=r=="all"?"ne":"eq";return`${n}/${r}(${e}: ${e} ${i} '${t}')`}function HQn(e){return e=e.replace(/%/g,"%25"),e=e.replace(/\+/g,"%2B"),e=e.replace(/\//g,"%2F"),e=e.replace(/\?/g,"%3F"),e=e.replace(/#/g,"%23"),e=e.replace(/&/g,"%26"),e=e.replace(/'/g,"''"),e}function od(e,t){if(typeof e=="string")return`'${HQn(e)}'`;if(e instanceof Date)return e.toISOString();if(typeof e=="number")return e;if(Array.isArray(e))return`[${e.map(r=>od(r)).join(",")}]`;if(e===null)return e;if(typeof e=="object")switch(e.type){case"raw":case"guid":return e.value;case"duration":return`duration'${e.value}'`;case"binary":return`binary'${e.value}'`;case"alias":return Array.isArray(t)&&t.push(e),`@${e.name}`;case"json":return escape(JSON.stringify(e.value));case"decimal":return`${e.value}M`;default:return Object.entries(e).filter(([,r])=>r!==void 0).map(([r,n])=>`${r}=${od(n,t)}`).join(",")}return e}function O7(e){if(typeof e=="number")return e;if(typeof e=="string")return e.indexOf("/")===-1?e:e.split("/").reverse().reduce((t,r,n,i)=>n===0?`$expand=${r}`:n===i.length-1?`${r}(${t})`:`$expand=${r}(${t})`,"");if(Array.isArray(e))return`${e.map(t=>O7(t)).join(",")}`;if(typeof e=="object"){let t=Object.keys(e);return t.some(r=>$Qn.indexOf(r.toLowerCase())!==-1)?t.map(r=>{let n;switch(r){case"filter":n=C7(e[r]);break;case"orderBy":n=mbe(e[r]);break;case"levels":case"count":case"skip":case"top":n=`${e[r]}`;break;default:n=O7(e[r])}return`$${r.toLowerCase()}=${n}`}).join(";"):t.map(r=>{let n=O7(e[r]);return n?`${r}(${n})`:r}).join(",")}return""}function X8t(e){return(Array.isArray(e)?e:[e]).reduce((t,r)=>{for(let n of Object.keys(r))switch(n){case"aggregate":{let i=r[n];i&&t.push(`aggregate(${WQn(i)})`);break}case"filter":{let i=r[n];if(i){let s=C7(i);s&&t.push(`filter(${s})`)}break}case"groupBy":{let i=r[n];i&&t.push(`groupby(${YQn(i)})`);break}default:throw new Error(`Unsupported transform: ${n}`)}return t},[]).join("/")||void 0}function WQn(e){return(Array.isArray(e)?e:[e]).map(t=>typeof t=="string"?t:Object.keys(t).map(r=>{let n=t[r];if(!n.with&&n.as)return`${r} as ${n.as}`;if(!n.with)throw new Error(`'with' property required for '${r}'`);if(!n.as)throw new Error(`'as' property required for '${r}'`);return`${r} with ${n.with} as ${n.as}`})).join(",")}function YQn(e){if(!e.properties)throw new Error("'properties' property required for groupBy");let t=`(${e.properties.join(",")})`;return e.transform&&(t+=`,${X8t(e.transform)}`),t}function mbe(e,t=""){return Array.isArray(e)?e.map(r=>Array.isArray(r)&&r.length===2&&["asc","desc"].indexOf(r[1])!==-1?r.join(" "):r).map(r=>`${t}${String(r)}`).join(","):typeof e=="object"?Object.entries(e).map(([r,n])=>mbe(n,`${r}/`)).map(r=>`${t}${r}`).join(","):`${t}${String(e)}`}function zQn(e,t){let r=Object.getOwnPropertyNames(t).filter(n=>t[n]!==void 0&&t[n]!=="").map(n=>`${n}=${t[n]}`);return r.length?`${e}?${r.join("&")}`:e}function K8t(e){return`not (${e.join(" and ")})`}function KQn(e){let t=[];return{expands:e.reduce((n,{entityPath:i})=>{let s=i.split("/"),o=n;return s.forEach((a,u)=>{o.expand||(o.expand={}),o.expand[a]??=u===s.length-1?{}:{expand:{}},o=o.expand[a],t.includes(a)||t.push(a)}),n},{expand:{}}),entityPathParts:t}}function XQn(e,t,r=1,n){let i=t?.map(d=>({entityPath:d.fullPath,entitySetName:d.entity.entitySetName})),{expands:s,entityPathParts:o}=KQn(i),a=o.map(d=>t.find(g=>d===g.entity.entityPath?g.entity.entitySetName:void 0)?.entity.entitySetName).filter(d=>d!==void 0);cr.logger.info(Nt("info.entityFilesToBeGenerated",{entities:a.join(", ")}));let u=e;if(n){let d=[];u.semanticKeys.forEach(x=>{if(x.value!==void 0&&x.value!=="")if(x.type==="Edm.Boolean")d.push(`${x.name} eq ${x.value}`);else{let N=String(x.value).split(","),F=["Edm.UUID","Edm.Guid"].includes(x.type),D=V=>F?V.trim():`'${V.trim()}'`;if(N.length===1)d.push(`${x.name} eq ${D(N[0])}`);else{let V=N.map(z=>`${x.name} eq ${D(z)}`);d.push(`(${V.join(" or ")})`)}}});let h=d.length>0?`,filter(${d.join(" and ")})`:"",g=`$root/${u.entitySetName},${n.qualifier},${n.nodeProperty}`,v=`com.sap.vocabularies.Hierarchy.v1.TopLevels(HierarchyNodes=$root/${u.entitySetName},HierarchyQualifier='${n.qualifier}',NodeProperty='${n.nodeProperty}')`,S=n.isDraft?`$apply=ancestors(${g}${h},keep start)/${v}`:`$apply=${v}`,b=s?hbe(s):"",A=b?`&${b.substring(1)}`:"",w=`${u.entitySetName}?${S}${A}`;return cr.logger.debug(`Query for odata: ${w}`),{query:w}}let c=[];u.semanticKeys.forEach(d=>{if(d.value!==void 0&&d.value!=="")if(["Edm.UUID","Edm.Guid"].includes(d.type)){let g=String(d.value).split(",").map(v=>({[d.name]:{type:"guid",value:v.trim()}}));c.push(g.length===1?g[0]:{or:g})}else if(d.type==="Edm.Boolean")c.push({[d.name]:String(d.value)==="true"});else if(d.type==="Edm.String"){let h=String(d.value).split(","),g=[];h.forEach(v=>{let S=v.trim().split("-");S.length===1?g.push({[d.name]:v.trim()}):S.length===2&&g.push({[d.name]:{ge:S[0].trim(),le:S[1].trim()}})}),c.push(g.length==1?g[0]:{or:g})}else c.push({[d.name]:d.value})});let l={};s&&Object.assign(l,s),c.length>0?Object.assign(l,{filter:c.length===1?c[0]:c,count:!0}):r&&Object.assign(l,{top:r});let f=hbe(l),p=`${u.entitySetName}${f}`;return cr.logger.debug(`Query for odata: ${p}`),{query:p}}function JQn(e,t,r){let n=new Set(["DraftUUID","IsActiveEntity"]),i=[];for(let f of e.semanticKeys){if(f.value===void 0||f.value===""||n.has(f.name))continue;let p=f.keyName??f.name,d=String(f.value).split(",")[0].trim(),h=["Edm.UUID","Edm.Guid"].includes(f.type),g=f.type==="Edm.Boolean";i.push(`${p}=${h||g?d:`'${d}'`}`)}if(i.length===0){cr.logger.debug(`buildNavPropHierarchyQuery: no key values available for '${e.entitySetName}', skipping nav-prop hierarchy query for '${t}'`);return}let s={DraftUUID:"00000000-0000-0000-0000-000000000000",IsActiveEntity:"true"};e.entityType?.keys?.filter(f=>f.name in s).forEach(f=>i.push(`${f.name}=${s[f.name]}`)),cr.logger.debug(`buildNavPropHierarchyQuery: key segment for '${e.entitySetName}': (${i.join(",")})`);let a=`${`${e.entitySetName}(${i.join(",")})`}/${t}`,c=`com.sap.vocabularies.Hierarchy.v1.TopLevels(HierarchyNodes=${`$root/${a}`},HierarchyQualifier='${r.qualifier}',NodeProperty='${r.nodeProperty}')`,l=`${a}?$apply=${c}`;return cr.logger.debug(`Nav-prop hierarchy query: ${l}`),l}async function Q8t(e,t,r,n,i,s=[]){let o=XQn(e,r,n,i),a=await J8t(t,o.query);for(let u of s){let c=r.find(v=>v.entity.entitySetName===u.entitySetName);if(!c){cr.logger.debug(`fetchData: no selected entity matched hierarchy entity '${u.entitySetName}', skipping`);continue}let l=JQn(e,c.entity.entityPath,u);if(!l){cr.logger.debug(`fetchData: could not build nav-prop hierarchy query for '${u.entitySetName}', skipping`);continue}let f=await J8t(t,l);if(!f.entityData||!a.entityData){cr.logger.debug(`fetchData: no data returned for nav-prop hierarchy query '${u.entitySetName}', skipping merge`);continue}cr.logger.debug(`fetchData: merging ${f.entityData.length} hierarchy records into '${c.entity.entityPath}' expanded items`);let p=c.entity.entityPath,d=u.nodeProperty.split("/")[0],h=f.entityData,g=0;for(let v of a.entityData){let S=v[p];if(Array.isArray(S))for(let b of S){let A=h.find(w=>u.entityTypeKeys.every(x=>w[x]===b[x]));A&&(b[d]=A[d],g++)}}cr.logger.debug(`fetchData: patched '${d}' onto ${g} expanded '${p}' records`)}return{odataResult:a}}async function J8t(e,t){try{cr.logger.info(`OData query request: ${encodeURI(e.defaults.baseURL+t).replaceAll("'","%27")}`),cr.logger.debug(`OData query request headers: ${JSON.stringify(e.defaults.headers)}`);let r=await e.get(t),n=r?.data?.match(/"@odata\.count":(\d+)/)?.[1];return cr.logger.info(`OData query records count: ${n}`),{entityData:r?.odata()}}catch(r){let n=Nt("errors.odataQueryError",{error:r});return cr.logger.error(n),{error:n}}}var xu=class e{static externalServiceRequestCache={};static entityTypeRefFacetCache={};static resetExternalServiceCache(t){if(t){delete e.externalServiceRequestCache[t];return}e.externalServiceRequestCache={}}static resetRefFacetCache(){e.entityTypeRefFacetCache={}}static resetServiceCaches(){e.resetExternalServiceCache(),e.resetRefFacetCache()}};async function t4t(e,t,r){if(e.metadata&&t.appAccess&&e.connectedSystem&&e.servicePath&&t.appAccess&&t.referencedEntities){e.connectedSystem.serviceProvider.log=cr.logger;let n=e.connectedSystem?.serviceProvider.service(e.servicePath);if(n){let i=Date.now();ya.sendTelemetry("ODATA_DOWNLOAD_SEND_QUERY",{time:Date()});let s=t.referencedEntities.hierarchyEntities?.find(u=>u.entitySetName===t.referencedEntities.listEntity.entitySetName),o=t.referencedEntities.hierarchyEntities?.filter(u=>u.entitySetName!==t.referencedEntities.listEntity.entitySetName&&r.some(c=>c.entity.entitySetName===u.entitySetName))??[],{odataResult:a}=await Q8t(t.referencedEntities.listEntity,n,r,s?void 0:1,s,o);if(a.entityData)return ya.sendTelemetry("ODATA_DOWNLOAD_RECEIVED_QUERY_RESULT",{duration:`${Date.now()-i} ms`,resultSize:`${a.entityData.length} rows`}),cr.logger.debug(`Got result rows: ${a.entityData.length}`),{odataQueryResult:a.entityData};if(a.error)return ya.sendTelemetry("ODATA_DOWNLOAD_QUERY_ERRORED",{duration:`${Date.now()-i} ms`}),`${a.error}`}}return Nt("errors.dataNotFetched")}function r4t(e){let t=[];return e.Facets.forEach(r=>{if(r.$Type==="com.sap.vocabularies.UI.v1.ReferenceFacet"&&r.Target.type==="AnnotationPath"){let n=r.Target.value;n.lastIndexOf("/")>-1&&t.push(n.substring(0,n.lastIndexOf("/")))}else r.$Type==="com.sap.vocabularies.UI.v1.CollectionFacet"&&t.push(...r4t(r))}),t}function QQn(e){if(xu.entityTypeRefFacetCache[e.name])return xu.entityTypeRefFacetCache[e.name];let t=[];return e.annotations?.UI?.Facets?.forEach(r=>{if(r.$Type==="com.sap.vocabularies.UI.v1.ReferenceFacet"&&r.Target?.type==="AnnotationPath"){let n=r.Target.value;n?.lastIndexOf("/")>-1&&t.push(n.substring(0,n.lastIndexOf("/")))}r.$Type==="com.sap.vocabularies.UI.v1.CollectionFacet"&&t.push(...r4t(r))}),xu.entityTypeRefFacetCache[e.name]=t,t??[]}function n4t(e,t="",r=[],n,i){let s={},o=e.navPropEntities;if(o&&o.length>0){let a=e.entityType?QQn(e.entityType):[];for(let u of o){let c=u.entityPath,l=i??e;if(u.entityType?.name===l?.entityType?.name||t.includes(c))continue;let f=t.concat(`${t?"/":""}${c}`);u.navPropEntities&&u.navPropEntities.length>0&&Object.assign(s,n4t(u,f,r,n,i??e).entitySetsFlat);let p={fullPath:f,entity:{entityPath:u.entityPath,entitySetName:u.entitySetName,defaultSelected:a.includes(u.entityPath)||!!n?.includes(f)}},d=`${f}`;r||(r=[]),r.push({name:d,value:p,checked:p.entity.defaultSelected}),s[f]=u.entitySetName}}return{entitySetsFlat:s,choices:r}}function i4t(e,t){let r=t?.map(n=>{let i=n.page?.contextPath??n.page?.routePattern?.replace(":?query:","").replaceAll(/\(\{[^}]*\}\)/g,"");return i?.startsWith(`/${e.entityPath}/`)?i.replace(`/${e.entityPath}/`,""):i}).filter(n=>n!==void 0);if(e.navPropEntities){let n=n4t(e,void 0,void 0,r);return n.choices.sort((i,s)=>(i.name??"").localeCompare(s.name??"")),n}}async function s4t(e,t){let n=(await Co.newInstance(await(0,Z8t.readFile)((0,e4t.join)(e,vt.Ui5Yaml),"utf-8"))).getBackendConfigsFromFioriToolsProxyMiddleware()[0],i;if(n){let s=n.url;if(n.connectPath){let o=n.connectPath.startsWith("/")?n.connectPath:`/${n.connectPath}`;s=new URL(o,n.url).href}i=jr()?n?.destination:await B8t(s,n?.client)}return{servicePath:t.uri,systemName:i}}async function o4t(e){let t=await fL(e.app.appRoot),r=t.getApiVersion(),n=typeof r?.version=="string"?Number.parseInt(r.version,10):0;return n<24?(cr.logger.debug(`@sap/ux-specification from module cache API version is: ${n}. API version '24' at least is required.`),Nt("prompts.appSelection.validation.specficationApiVersionOutdated",{specApiVersion:n})):t}var a4t,ZQn=(...e)=>new Promise(t=>{clearTimeout(a4t),a4t=setTimeout(async()=>t(await t4t(...e)),1e3)}),Ol={appSelection:"appSelection",toggleSelection:"toggleSelection",relatedEntitySelection:"relatedEntitySelection",skipDataDownload:"skipDataDownload",updateMainServiceMetadata:"updateMainServiceMetadata"},eZn=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,u4t=["."];async function c4t(e,t,r){let n=!1;if(!r.referencedEntities?.listEntity.semanticKeys.every((a,u)=>(a.name!=="IsActiveEntity"&&!n&&(n=!!a.value),a.value!==void 0&&a.value!==""||!e[`entityKeyIdx:${u}`]))||!n)return Nt("prompts.skipDataDownload.validation.keyRequired");let s=[];r.relatedEntityChoices?.choices?.length&&(s=e[Ol.relatedEntitySelection]);let o=await ZQn(t,r,s);return o}function tZn(e){return xu.resetServiceCaches(),e.appAccess=void 0,e.referencedEntities=void 0,e.servicePath=void 0,e.systemName&&(e.systemName.value=void 0),e.relatedEntityChoices.choices=[],e.relatedEntityChoices.entitySetsFlat={},e}async function l4t(e){let t=[],r={appAccess:void 0,referencedEntities:void 0,servicePath:void 0,systemName:{value:void 0},connectPath:{value:void 0},relatedEntityChoices:{choices:[],entitySetsFlat:{}}},n=[],i=rZn(r,n,e?.appPath),s=await J$t({datasourceType:{includeNone:!1},systemSelection:{includeCloudFoundryAbapEnvChoice:!1,defaultChoice:r.systemName,connectPath:r.connectPath,hideNewSystem:!0},serviceSelection:{serviceFilter:n,requiredOdataVersion:zn.v4}},Uc()!==un.cli,cr.logger);s.prompts=Ps(s.prompts,()=>!!r.appAccess);let o={odata:[]},a=iZn(r,r.relatedEntityChoices),u=sZn(5,r,s.answers,o),c=nZn(r.relatedEntityChoices,s.answers,r,o);return t.push(i,...s.prompts,aZn(s.answers,r),oZn(s.answers,r),...u,a,c),{questions:t,answers:{application:r,odataQueryResult:o,odataServiceAnswers:s.answers}}}function rZn(e,t,r){return{type:"input",guiType:"folder-browser",name:Ol.appSelection,message:Nt("prompts.appSelection.message"),default:n=>r??n.appSelection??e.appAccess?.app.appRoot,guiOptions:{mandatory:!0,breadcrumb:Nt("prompts.appSelection.breadcrumb")},validate:async n=>{if(!n)return!1;if(n===e.appAccess?.app.appRoot)return!0;t.length=0,tZn(e);let i;try{i=await X5(n)}catch(c){let l=c;return c instanceof Error&&(l=c.message),cr.logger.error(Nt("prompts.appSelection.validation.selectedPathDoesNotContainValidApp",{error:l})),`${Nt("prompts.appSelection.validation.selectedPathDoesNotContainValidApp")}${Nt("texts.seeLogForDetails")}`}let s=i.app.services[i.app.mainService??"mainService"];if(!s?.odataVersion?.startsWith("4."))return Nt("prompts.appSelection.validation.appMainServiceOdataVersionNotSupported",{serviceOdataVersion:s.odataVersion});let o=await o4t(i);if(typeof o=="string")return o;e.appAccess=i,e.specification=o;let{servicePath:a,systemName:u}=await s4t(i.app.appRoot,s);return a&&(e.servicePath=a,t.push(a)),e.systemName&&(e.systemName.value=u),e.connectPath&&(e.connectPath.value=a),!0}}}function nZn(e,t,r,n){let i;return{when:async s=>e.choices.length>0,name:Ol.relatedEntitySelection,type:"checkbox",guiOptions:{applyDefaultWhenDirty:!0},message:Nt("prompts.relatedEntitySelection.message"),choices:()=>e.choices,validate:async(s,o)=>{if(e.choices.forEach(a=>{a.disabled||(a.checked=s.some(u=>u.fullPath===a.value.fullPath))}),o&&!o[Ol.skipDataDownload]?.[0]){if(i=await c4t(o,t,r),typeof i=="string")return i;n.odata=i.odataQueryResult}return!0},additionalMessages:()=>{if(i&&typeof i!="string")return{message:Nt("prompts.skipDataDownload.querySuccess",{count:i.odataQueryResult.length}),severity:gbe.Severity.information}},showOutputTabLink:()=>({show:!!i,linkMessage:Nt("prompts.relatedEntitySelection.openLogs")})}}function iZn(e,t){let r,n,i;return{when:()=>{if((n!==e.systemName?.value||e.servicePath!==r)&&e.referencedEntities?.listEntity){let o=i4t(e.referencedEntities.listEntity,e.referencedEntities.pageObjectEntities);o&&(t.choices=o.choices,Object.assign(t.entitySetsFlat,o.entitySetsFlat)),r=e.servicePath,n=e.systemName?.value}return t.choices.length>0},name:Ol.toggleSelection,type:"confirm",message:Nt("prompts.toggleSelection.message"),labelTrue:Nt("prompts.toggleSelection.labelTrue"),labelFalse:Nt("prompts.toggleSelection.labelFalse"),default:!1,validate:o=>(o!==i&&(t.choices.forEach(a=>{if(a.disabled)return;let u=a.value;a.checked=o===!1?u.entity.defaultSelected:!1}),i=o),!0)}}function sZn(e,t,r,n){let i=[],s,o=0,a=u=>({when:async()=>{let c=t.referencedEntities?.listEntity.semanticKeys[u],l=!!c?.name&&c.name!=="IsActiveEntity";return l&&u>o&&(o=u),l},name:`entityKeyIdx:${u}`,message:()=>Nt("prompts.entityKey.message",{keyName:`${t.referencedEntities?.listEntity.semanticKeys[u]?.name} (${t.referencedEntities?.listEntity.entitySetName})`}),type:"input",guiOptions:{hint:Nt("prompts.entityKey.hint")},validate:async(c,l)=>{let f=t.referencedEntities?.listEntity.semanticKeys[u];if(f&&delete f.value,u4t.includes(c))return Nt("prompts.entityKey.validation.invalidKeyValueChars",{chars:u4t.join()});if(c&&f)if(f.type==="Edm.Boolean")try{f.value=JSON.parse(c)}catch{return Nt("prompts.entityKey.validation.invalidBooleanValue")}else if(["Edm.UUID","Edm.Guid"].includes(f.type)){let d=c.split(",");for(let h of d)if(!eZn.test(h.trim()))return Nt("prompts.entityKey.validation.invalidGuidValue");f.value=c.trim()}else f.value=c.trim();let p=c.split(",");if(f?.type&&!["Edm.UUID","Edm.Guid"].includes(f.type)){for(let d of p)if(d.split("-").length>2)return f&&delete f.value,Nt("prompts.entityKey.validation.invalidRangeSpecified")}if(l&&!t.relatedEntityChoices?.choices?.length&&u===o&&!l[Ol.skipDataDownload]?.[0]&&t.referencedEntities?.listEntity.semanticKeys[u]?.name){if(s=await c4t(l,r,t),typeof s=="string")return s;n.odata=s.odataQueryResult}return!0}});for(let u=0;u<e;u++)i.push(a(u));return i}function oZn(e,t){return{when:()=>!!e.metadata&&!!t.servicePath,name:Ol.skipDataDownload,type:"checkbox",message:Nt("prompts.skipDataDownload.message"),guiOptions:{hint:Nt("prompts.skipDataDownload.hint")},default:!1,choices:[{name:Nt("prompts.skipDataDownload.choiceLabel"),value:"skipDownload",checked:!1}]}}function aZn(e,t){let r;return{when:async()=>t.appAccess&&t.specification&&e?.metadata?(r=await j8t(t.appAccess,t.specification,e.metadata),typeof r=="object"&&(t.referencedEntities=r),!0):!1,name:Ol.updateMainServiceMetadata,type:"confirm",message:Nt("prompts.updateMainServiceMetadata.message"),default:!1,additionalMessages:async()=>{if(typeof r=="string")return{message:r,severity:gbe.Severity.error}}}}function f4t(e){let t=[],r=n=>[{name:`${n.entitySetName}/${n.nodeProperty}/source`,type:"list",message:`Source: ${n.entitySetName} > ${n.missingReferentialConstraints?.navPropName}`,default:!1,choices:n.entityProperties.map(i=>({name:i,value:i}))},{name:`${n.entitySetName}/${n.nodeProperty}/target`,type:"list",message:`Target: ${n.entitySetName} > ${n.missingReferentialConstraints?.navPropName}`,default:!1,choices:n.entityProperties.map(i=>({name:i,value:i}))}];return e.forEach(n=>{!n.parentProperty&&n.missingReferentialConstraints?.navPropName&&t.push(...r(n))}),t}var g4t=Te(Oy()),y4t=Te(Py());var E4t=Te(m4t()),_4t=require("node:path");function v4t(e,t,r){xu.resetExternalServiceCache();let n=bZn(e,t),i=[];return{questions:[{name:"valueHelpSelection",type:"checkbox",message:Nt("prompts.valueHelpSelection.message"),choices:()=>n,validate:async o=>{if(!o||o.length===0)return xu.resetExternalServiceCache(),!0;let a=await TZn(o,r),u=(0,E4t.default)(i,a);return i.length=0,i.push(...u),await SZn(i,r),!0}}],valueHelpData:i}}async function SZn(e,t){let r=[],n={transformResponse:s=>typeof s=="string"?JSON.parse(s):s},i=e.map(async s=>{let o=s,[a]=o.path.split(";");xu.externalServiceRequestCache[a]??=[];let l=(0,g4t.convert)((0,y4t.parse)(s.metadata)).entitySets.map(async f=>{let p=f.name;if(xu.externalServiceRequestCache[a].includes(p))return;xu.externalServiceRequestCache[a].push(p);let d=await t.get((0,_4t.join)(o.path,p),n);o.entityData=o.entityData??[],o.entityData?.push({entitySetName:p,items:d.data.value})});await Promise.allSettled(l),o.entityData&&r.push(o)});return await Promise.allSettled(i),r}async function TZn(e,t){let r=e.flat();return await t.fetchExternalServices(r)}function bZn(e,t){let r=lM(e,t,[]),n={};for(let s of r)if(s.type==="value-list"){if(L8t.includes(s.target))continue;let[o]=s.value.split(";"),a=s.target.split("/").pop();a&&(n[o]??={},n[o][a]??=[],n[o][a].push(s))}else s.type==="code-list"&&(n[s.value]??={},n[s.value]["Code list"]??=[],n[s.value]["Code list"].push(s));let i=[];for(let s of Object.values(n))for(let[o,a]of Object.entries(s)){let u=a.map(c=>{if(c.type==="value-list")return c.target.replace(/\/[^/]*$/,"");if(c.type==="code-list"&&c.collectionPath)return c.collectionPath}).filter(c=>c!==void 0);i.push({name:`${o} (${u.join()})`,value:a})}return i.sort((s,o)=>s.name.localeCompare(o.name))}var cr=class e extends T4t.default{vscode;appWizard;static _logger=f4;generatorVersion=this.rootGeneratorVersion();prompts;setPromptsCallback;state={};constructor(t,r){super(t,{...r,skipInstall:!0},{unique:"namespace"}),p_e(this.env,!0),this.options.force=!0,this.prompts=new P7.Prompts([{description:Nt("steps.odataDownloader.description"),name:Nt("steps.odataDownloader.name")},{description:Nt("steps.valueHelpSelection.description"),name:Nt("steps.valueHelpSelection.name")}]),this.setPromptsCallback=n=>{this.prompts&&this.prompts.setCallback(n)},typeof r.appWizard?.setHeaderTitle=="function"&&r.appWizard.setHeaderTitle(Nt("texts.generatorTitle"),`${this.rootGeneratorName()}@${this.rootGeneratorVersion()}`)}static get logger(){return e._logger}async initializing(){await _ve(),e._logger=this._configureLogging(this.options.logLevel,this.options.logger,this.options.vscode),await ya.initTelemetrySettings(),ya.sendTelemetry("ODATA_DOWNLOADER_STARTED",{startUpTime:Date()})}async prompting(){try{let{answers:{application:t,odataQueryResult:r,odataServiceAnswers:n},questions:i}=await l4t(this.options?.data),s=await this.prompt(i);if(this.state.entityOData=r.odata,this.state.entityPropertyToEntitySet=t.relatedEntityChoices.entitySetsFlat,this.state.appRootPath=t.appAccess?.getAppRoot(),this.state.mainServicePath=n.servicePath,this.state.mainServiceName=t.appAccess?.app.mainService,this.state.appEntities=t.referencedEntities,this.state.appRootPath){this.state.mockServerConfig=await Ax(this.state.appRootPath);let o;this.state.mockServerConfig?.services&&(e.logger.debug(`Mock config: ${JSON.stringify(this.state.mockServerConfig)}`),o=this.state.mockServerConfig.services.find(a=>a.urlPath.replaceAll(/(^\/)|(\/$)/g,"")===this.state.mainServicePath?.replaceAll(/(^\/)|(\/$)/g,""))),this.state.mockDataRootPath=o?.mockdataPath??(0,ZS.join)(oi.Webapp,oi.LocalService,oi.Mockdata)}if(this.state.updateMainServiceMetadata=s[Ol.updateMainServiceMetadata],this.state.mainServiceMetadata=n.metadata,s[Ol.skipDataDownload]?.[0]||await this._promptMissingReferentialConstraints(t,s),n.servicePath&&n.metadata&&n.connectedSystem?.serviceProvider instanceof ja){let{questions:o,valueHelpData:a}=v4t(n.servicePath,n.metadata,n.connectedSystem?.serviceProvider);await this.prompt(o),this.state.valueHelpData=a}}catch(t){e.logger.error(t),this._exitOnError(t)}}async writing(){if(this.state.appRootPath){if(this.state.entityOData&&this.state.entityPropertyToEntitySet&&this.state.appEntities)try{let t=Date.now();ya.sendTelemetry("ODATA_DOWNLOADER_WRITE_DATA_FILES_START",{time:Date()}),this.destinationRoot((0,ZS.join)(this.state.appRootPath));let r=pbe(this.state.entityOData,this.state.entityPropertyToEntitySet,this.state.appEntities.listEntity.entitySetName,this.state.appEntities.hierarchyEntities);e.logger.info(Nt("info.entityFilesToBeGenerated",{entities:Object.keys(r).join(", ")}));let n=Object.entries(r);n.forEach(([i,s])=>{this.writeDestinationJSON((0,ZS.join)(this.state.mockDataRootPath,`${i}.json`),s)}),this.state.appEntities.hierarchyEntities?.filter(i=>i.missingReferentialConstraints&&n.some(([s])=>s===i.entitySetName))?.forEach(i=>{let s=(0,ZS.join)(this.state.mockDataRootPath,`${i.entitySetName}.js`),o=this.destinationPath(s),{navPropName:a,constraints:u}=i.missingReferentialConstraints;if(this.fs.exists(o)){let c=this.fs.read(o),l=$8t(c,a,u);l!==c?(this.writeDestination(s,l),e.logger.info(`Updated referential constraint file: ${i.entitySetName}.js`)):e.logger.debug(`Referential constraint for '${a}' already present in ${i.entitySetName}.js \u2014 skipping`)}else{let c=V8t(a,u);this.writeDestination(s,c),e.logger.info(`Written referential constraint file: ${i.entitySetName}.js`)}}),ya.sendTelemetry("ODATA_DOWNLOADER_WRITE_DATA_FILES_END",{writeFileDuration:`${Date.now()-t} ms`,numberOfFiles:`${n.length}`})}catch(t){e.logger.error(t),ya.sendTelemetry("ODATA_DOWNLOADER_WRITING_DATA_ERROR",{writeFileErrorTime:Date()})}else e.logger.info(Nt("info.noServiceEntityData"));if(this.state.valueHelpData?.length)try{let t=Date.now();ya.sendTelemetry("ODATA_DOWNLOADER_WRITE_VALUE_HELP_FILES_START",{time:Date()});let r=(0,ZS.join)(this.state.appRootPath,oi.Webapp);if(await I4(this.fs,r,this.state.valueHelpData,this.state.mainServiceName,this.state.mainServicePath),this.state.mockServerConfig){let n={webappPath:r,packageJsonConfig:{skip:!0},ui5MockYamlConfig:{overwrite:!0}};n.ui5MockYamlConfig&&this.state.mainServiceName&&(n.ui5MockYamlConfig.resolveExternalServiceReferences={[this.state.mainServiceName]:!0},await d4(this.state.appRootPath,n,this.fs))}ya.sendTelemetry("ODATA_DOWNLOADER_WRITE_VALUE_HELP_DATA_FILES_END",{writeFileDuration:`${Date.now()-t} ms`,numberOfExternalServices:`${this.state.valueHelpData.length}`})}catch(t){e.logger.error(t),ya.sendTelemetry("ODATA_DOWNLOADER_WRITING_BALUE_HELP_DATA_ERROR",{writeFileErrorTime:Date()})}else e.logger.info(Nt("info.noValueHelpData"));if(this.state.updateMainServiceMetadata&&this.state.mainServiceMetadata&&this.state.mainServiceName){let t=(0,ZS.join)(this.state.appRootPath,oi.Webapp,oi.LocalService,this.state.mainServiceName,"metadata.xml");this.writeDestination(t,(0,S4t.default)(this.state.mainServiceMetadata,{indent:4}))}}}async _promptMissingReferentialConstraints(t,r){let n=t.referencedEntities?.listEntity.entitySetName,i=new Set([...n?[n]:[],...(r[Ol.relatedEntitySelection]??[]).map(o=>o.entity.entitySetName)]),s=t.referencedEntities?.hierarchyEntities?.filter(o=>!o.parentProperty&&o.missingReferentialConstraints&&i.has(o.entitySetName))??[];if(s.length>0){this.prompts.splice(1,0,[{name:Nt("steps.addConstraints.name"),description:Nt("steps.addConstraints.description")}]);let o=f4t(s),a=await this.prompt(o),u=[t.referencedEntities?.listEntity,...t.referencedEntities?.pageObjectEntities??[]];s.forEach(c=>{let l=a[`${c.entitySetName}/${c.nodeProperty}/source`],f=a[`${c.entitySetName}/${c.nodeProperty}/target`];if(l&&f){c.missingReferentialConstraints.constraints=[{sourceProperty:l,targetProperty:f}],c.parentProperty=l;let p=u.find(d=>d?.entitySetName===c.entitySetName)?.entityType;c.parentPropertyType=p?.entityProperties.find(d=>d.name===l)?.type??"Edm.String"}})}}_exitOnError(t){throw Uc()!==un.cli&&this.appWizard?.showError(t,P7.MessageType.notification),new Error(t)}_configureLogging(t,r,n){let i=new l4(this.rootGeneratorName(),this.log,t,r,n);return i.info(Nt("info.loggingInitialised",{logLevel:i.getLogLevel()})),i}};
|
|
733
|
+
${s}${e.slice(o)}`:e}var Z8t=require("node:fs/promises"),e4t=require("node:path");var H8t=require("node:crypto"),W8t=Te(F8());var G8t={name:"@sap-ux/generator-odata-downloader",displayName:"Fiori Elements Data Downloader",description:"Yeoman generator that supports download of app data, typically for mock data server use.",version:"0.3.14",repository:{type:"git",url:"https://github.com/SAP/open-ux-tools.git",directory:"packages/generator-odata-downloader"},bugs:{url:"https://github.com/SAP/open-ux-tools/issues?q=is%3Aopen+is%3Aissue+label%3Abug+label%3Aodata-download"},license:"Apache-2.0",main:"generators/app/index.js",keywords:["yeoman-generator"],scripts:{build:"npm-run-all clean bundle:prod",compile:"tsc --build",clean:"rimraf --glob generators prebuilds test/test-output coverage *.tsbuildinfo",watch:"tsc --watch",lint:"eslint","lint:fix":"eslint --fix",test:"cross-env NODE_OPTIONS='--experimental-vm-modules' jest --ci --forceExit --detectOpenHandles --colors","test-u":"cross-env NODE_OPTIONS='--experimental-vm-modules' jest --ci --forceExit --detectOpenHandles --colors -u",link:"pnpm link --global",unlink:"pnpm unlink --global",bundle:"node esbuild.mjs","bundle:dev":"pnpm clean && node esbuild.mjs --development && pnpm pack","bundle:prod":"node esbuild.mjs --production"},files:["LICENSE","generators","!generators/*.map","!generators/**/*.map","prebuilds","yeoman.png"],devDependencies:{"@jest/globals":"30.3.0"},dependencies:{"@sap-devx/yeoman-ui-types":"1.25.0","@sap-ux/annotation-converter":"0.10.21","@sap-ux/axios-extension":"workspace:*","@sap-ux/btp-utils":"workspace:*","@sap-ux/edmx-parser":"0.10.0","@sap-ux/fiori-generator-shared":"workspace:*","@sap-ux/inquirer-common":"workspace:*","@sap-ux/logger":"workspace:*","@sap-ux/mockserver-config-writer":"workspace:*","@sap-ux/odata-service-inquirer":"workspace:*","@sap-ux/odata-service-writer":"workspace:*","@sap-ux/project-access":"workspace:*","@sap-ux/store":"workspace:*","@sap-ux/telemetry":"workspace:*","@sap-ux/ui5-config":"workspace:*","@sap-ux/vocabularies-types":"0.15.0","@sap/ux-specification":"1.144.0","@types/inquirer":"8.2.6","@types/yeoman-generator":"5.2.14","@vscode-logging/logger":"2.0.9",deepmerge:"4.3.1",i18next:"25.10.10",inquirer:"8.2.7","odata-query":"8.0.5","os-name":"4.0.1","prettify-xml":"1.2.0",rimraf:"6.1.3","yeoman-generator":"5.10.0"},engines:{node:">=22.x"}};var kQn="@sap-ux/odata-download-sub-generator",BQn="0a65e45d-6bf4-421d-b845-61e888c50e9e",ya=class{static _telemetryData;static _sessionId;static async initTelemetrySettings(t){this._sessionId=(0,H8t.randomUUID)(),cr.logger.info(`Telemetry session initialized with ID: ${this._sessionId}`);let r={consumerModule:{name:kQn,version:G8t.version},watchTelemetrySettingStore:!1,internalFeature:!0,resourceId:BQn,...t};try{await bL(r)}catch(n){cr.logger.error(`Error initializing telemetry settings: ${n}`)}}static createTelemetryData(t){if(!this._telemetryData){let r=Nt("telemetry.unknownOs");try{r=(0,W8t.default)()}catch{}this._telemetryData={Platform:jr()?"SBAS":"VSCode",OperatingSystem:r,SessionId:this._sessionId}}return this._telemetryData=Object.assign(this._telemetryData,t),this._telemetryData}static prepareTelemetryEvent(t,r){return{eventName:t,properties:r,measurements:{}}}static async sendTelemetry(t,r){let n=this.createTelemetryData(r),i=this.prepareTelemetryEvent(t,n);await nc.getTelemetryClient().reportEvent(i,Ci.NoSampling)}};var qQn=["eq","ne","gt","ge","lt","le"],w7=["and","or","not"],jQn=["any","all"],VQn=["startswith","endswith","contains","matchespattern"],$Qn=["expand","levels","select","skip","top","count","orderby","filter"],Y8t=/\((.*)\)/,z8t=/(?!indexof)\((\w+)\)/;var im="";function hbe({select:e,search:t,skiptoken:r,format:n,top:i,skip:s,filter:o,transform:a,orderBy:u,key:c,count:l,expand:f,action:p,func:d}={}){let h="",g=[],v={};if(c!=null&&(h+=`(${od(c,g)})`),(o||typeof l=="object")&&(v.$filter=C7(typeof l=="object"?l:o,g)),a&&(v.$apply=X8t(a)),f&&(v.$expand=O7(f)),u&&(v.$orderby=mbe(u)),l&&(typeof l=="boolean"?v.$count=!0:h+="/$count"),typeof i=="number"&&(v.$top=i),typeof s=="number"&&(v.$skip=s),p&&(h+=`/${p}`),d){if(typeof d=="string")h+=`/${d}`;else if(typeof d=="object"){let[S]=Object.keys(d),b=od(d[S],g);h+=`/${S}`,b!==""&&(h+=`(${b})`)}}return g.length>0&&Object.assign(v,g.reduce((S,b)=>Object.assign(S,{[`@${b.name}`]:od(b.value)}),{})),zQn(h,{$select:e,$search:t,$skiptoken:r,$format:n,...v})}function dbe(e,t,r=[]){return`${e} eq ${od(t,r)}`}function C7(e={},t=[],r=""){return(Array.isArray(e)?e:[e]).reduce((s,o)=>{if(o){let a=n(o,t,r);a&&s.push(a)}return s},[]).join(" and ");function n(s={},o=[],a=""){let u="";return typeof s=="string"?u=s:s&&typeof s=="object"&&(u=Object.keys(s).reduce((c,l)=>{let f=s[l];if(f===void 0)return c;let p="";if(a?l===im?p=a:z8t.test(l)?p=l.replace(z8t,(d,h)=>h.trim()===im?`(${a})`:`(${a}/${h.trim()})`):Y8t.test(l)?p=l.replace(Y8t,(d,h)=>h.trim()===im?`(${a})`:`(${a}/${h.trim()})`):p=`${a}/${l}`:p=l,l===im&&Array.isArray(f))return c.concat(f.map(d=>dbe(p,d)));if(["number","string","boolean"].indexOf(typeof f)!==-1||f instanceof Date||f===null)c.push(dbe(p,f,o));else if(Array.isArray(f)){let d=l,h=f.map(g=>C7(g,o,a)).filter(g=>g).map(g=>w7.indexOf(d)!==-1?`(${g})`:g);h.length&&(w7.indexOf(d)!==-1?h.length&&(d==="not"?c.push(K8t(h)):c.push(`(${h.join(` ${d} `)})`)):c.push(h.join(` ${d} `)))}else if(w7.indexOf(p)!==-1){let d=p,h=Object.keys(f).map(g=>n({[g]:f[g]}));h.length&&(d==="not"?c.push(K8t(h)):c.push(`(${h.join(` ${d} `)})`))}else if(typeof f=="object")"type"in f?c.push(dbe(p,f,o)):Object.keys(f).forEach(d=>{if(f[d]!==void 0)if(qQn.indexOf(d)!==-1)c.push(`${p} ${d} ${od(f[d],o)}`);else if(w7.indexOf(d)!==-1)Array.isArray(f[d])?c.push(f[d].map(h=>"("+n(h,o,p)+")").join(` ${d} `)):c.push("("+n(f[d],o,p)+")");else if(jQn.indexOf(d)!==-1){let h=i(l.toLowerCase(),f[d],d,p);h&&c.push(h)}else if(d==="has")c.push(`${p} ${d} ${od(f[d],o)}`);else if(d==="in"){let h=Array.isArray(f[d])?f[d]:f[d].value.map(g=>({type:f[d].type,value:g}));c.push(p+" in ("+h.map(g=>od(g,o)).join(",")+")")}else if(VQn.indexOf(d)!==-1)c.push(`${d}(${p},${od(f[d],o)})`);else{let h=n({[d]:f[d]},o,p);h&&c.push(h)}});else throw new Error(`Unexpected value type: ${f}`);return c},[]).join(" and ")),u}function i(s,o,a,u){let c="";if(typeof o=="string"||o instanceof String)c=GQn(s,o,a,u);else if(o){let l=Array.isArray(o)?o.reduce((p,d)=>d.hasOwnProperty(im)?(p.hasOwnProperty(im)||(p[im]=[]),p[im].push(d[im]),p):{...p,...d},{}):o,f=n(l,t,s);c=`${u}/${a}(${f?`${s}:${f}`:""})`}return c}}function GQn(e,t,r,n){let i=r=="all"?"ne":"eq";return`${n}/${r}(${e}: ${e} ${i} '${t}')`}function HQn(e){return e=e.replace(/%/g,"%25"),e=e.replace(/\+/g,"%2B"),e=e.replace(/\//g,"%2F"),e=e.replace(/\?/g,"%3F"),e=e.replace(/#/g,"%23"),e=e.replace(/&/g,"%26"),e=e.replace(/'/g,"''"),e}function od(e,t){if(typeof e=="string")return`'${HQn(e)}'`;if(e instanceof Date)return e.toISOString();if(typeof e=="number")return e;if(Array.isArray(e))return`[${e.map(r=>od(r)).join(",")}]`;if(e===null)return e;if(typeof e=="object")switch(e.type){case"raw":case"guid":return e.value;case"duration":return`duration'${e.value}'`;case"binary":return`binary'${e.value}'`;case"alias":return Array.isArray(t)&&t.push(e),`@${e.name}`;case"json":return escape(JSON.stringify(e.value));case"decimal":return`${e.value}M`;default:return Object.entries(e).filter(([,r])=>r!==void 0).map(([r,n])=>`${r}=${od(n,t)}`).join(",")}return e}function O7(e){if(typeof e=="number")return e;if(typeof e=="string")return e.indexOf("/")===-1?e:e.split("/").reverse().reduce((t,r,n,i)=>n===0?`$expand=${r}`:n===i.length-1?`${r}(${t})`:`$expand=${r}(${t})`,"");if(Array.isArray(e))return`${e.map(t=>O7(t)).join(",")}`;if(typeof e=="object"){let t=Object.keys(e);return t.some(r=>$Qn.indexOf(r.toLowerCase())!==-1)?t.map(r=>{let n;switch(r){case"filter":n=C7(e[r]);break;case"orderBy":n=mbe(e[r]);break;case"levels":case"count":case"skip":case"top":n=`${e[r]}`;break;default:n=O7(e[r])}return`$${r.toLowerCase()}=${n}`}).join(";"):t.map(r=>{let n=O7(e[r]);return n?`${r}(${n})`:r}).join(",")}return""}function X8t(e){return(Array.isArray(e)?e:[e]).reduce((t,r)=>{for(let n of Object.keys(r))switch(n){case"aggregate":{let i=r[n];i&&t.push(`aggregate(${WQn(i)})`);break}case"filter":{let i=r[n];if(i){let s=C7(i);s&&t.push(`filter(${s})`)}break}case"groupBy":{let i=r[n];i&&t.push(`groupby(${YQn(i)})`);break}default:throw new Error(`Unsupported transform: ${n}`)}return t},[]).join("/")||void 0}function WQn(e){return(Array.isArray(e)?e:[e]).map(t=>typeof t=="string"?t:Object.keys(t).map(r=>{let n=t[r];if(!n.with&&n.as)return`${r} as ${n.as}`;if(!n.with)throw new Error(`'with' property required for '${r}'`);if(!n.as)throw new Error(`'as' property required for '${r}'`);return`${r} with ${n.with} as ${n.as}`})).join(",")}function YQn(e){if(!e.properties)throw new Error("'properties' property required for groupBy");let t=`(${e.properties.join(",")})`;return e.transform&&(t+=`,${X8t(e.transform)}`),t}function mbe(e,t=""){return Array.isArray(e)?e.map(r=>Array.isArray(r)&&r.length===2&&["asc","desc"].indexOf(r[1])!==-1?r.join(" "):r).map(r=>`${t}${String(r)}`).join(","):typeof e=="object"?Object.entries(e).map(([r,n])=>mbe(n,`${r}/`)).map(r=>`${t}${r}`).join(","):`${t}${String(e)}`}function zQn(e,t){let r=Object.getOwnPropertyNames(t).filter(n=>t[n]!==void 0&&t[n]!=="").map(n=>`${n}=${t[n]}`);return r.length?`${e}?${r.join("&")}`:e}function K8t(e){return`not (${e.join(" and ")})`}function KQn(e){let t=[];return{expands:e.reduce((n,{entityPath:i})=>{let s=i.split("/"),o=n;return s.forEach((a,u)=>{o.expand||(o.expand={}),o.expand[a]??=u===s.length-1?{}:{expand:{}},o=o.expand[a],t.includes(a)||t.push(a)}),n},{expand:{}}),entityPathParts:t}}function XQn(e,t,r=1,n){let i=t?.map(d=>({entityPath:d.fullPath,entitySetName:d.entity.entitySetName})),{expands:s,entityPathParts:o}=KQn(i),a=o.map(d=>t.find(g=>d===g.entity.entityPath?g.entity.entitySetName:void 0)?.entity.entitySetName).filter(d=>d!==void 0);cr.logger.info(Nt("info.entityFilesToBeGenerated",{entities:a.join(", ")}));let u=e;if(n){let d=[];u.semanticKeys.forEach(x=>{if(x.value!==void 0&&x.value!=="")if(x.type==="Edm.Boolean")d.push(`${x.name} eq ${x.value}`);else{let N=String(x.value).split(","),F=["Edm.UUID","Edm.Guid"].includes(x.type),D=V=>F?V.trim():`'${V.trim()}'`;if(N.length===1)d.push(`${x.name} eq ${D(N[0])}`);else{let V=N.map(z=>`${x.name} eq ${D(z)}`);d.push(`(${V.join(" or ")})`)}}});let h=d.length>0?`,filter(${d.join(" and ")})`:"",g=`$root/${u.entitySetName},${n.qualifier},${n.nodeProperty}`,v=`com.sap.vocabularies.Hierarchy.v1.TopLevels(HierarchyNodes=$root/${u.entitySetName},HierarchyQualifier='${n.qualifier}',NodeProperty='${n.nodeProperty}')`,S=n.isDraft?`$apply=ancestors(${g}${h},keep start)/${v}`:`$apply=${v}`,b=s?hbe(s):"",A=b?`&${b.substring(1)}`:"",w=`${u.entitySetName}?${S}${A}`;return cr.logger.debug(`Query for odata: ${w}`),{query:w}}let c=[];u.semanticKeys.forEach(d=>{if(d.value!==void 0&&d.value!=="")if(["Edm.UUID","Edm.Guid"].includes(d.type)){let g=String(d.value).split(",").map(v=>({[d.name]:{type:"guid",value:v.trim()}}));c.push(g.length===1?g[0]:{or:g})}else if(d.type==="Edm.Boolean")c.push({[d.name]:String(d.value)==="true"});else if(d.type==="Edm.String"){let h=String(d.value).split(","),g=[];h.forEach(v=>{let S=v.trim().split("-");S.length===1?g.push({[d.name]:v.trim()}):S.length===2&&g.push({[d.name]:{ge:S[0].trim(),le:S[1].trim()}})}),c.push(g.length==1?g[0]:{or:g})}else c.push({[d.name]:d.value})});let l={};s&&Object.assign(l,s),c.length>0?Object.assign(l,{filter:c.length===1?c[0]:c,count:!0}):r&&Object.assign(l,{top:r});let f=hbe(l),p=`${u.entitySetName}${f}`;return cr.logger.debug(`Query for odata: ${p}`),{query:p}}function JQn(e,t,r){let n=new Set(["DraftUUID","IsActiveEntity"]),i=[];for(let f of e.semanticKeys){if(f.value===void 0||f.value===""||n.has(f.name))continue;let p=f.keyName??f.name,d=String(f.value).split(",")[0].trim(),h=["Edm.UUID","Edm.Guid"].includes(f.type),g=f.type==="Edm.Boolean";i.push(`${p}=${h||g?d:`'${d}'`}`)}if(i.length===0){cr.logger.debug(`buildNavPropHierarchyQuery: no key values available for '${e.entitySetName}', skipping nav-prop hierarchy query for '${t}'`);return}let s={DraftUUID:"00000000-0000-0000-0000-000000000000",IsActiveEntity:"true"};e.entityType?.keys?.filter(f=>f.name in s).forEach(f=>i.push(`${f.name}=${s[f.name]}`)),cr.logger.debug(`buildNavPropHierarchyQuery: key segment for '${e.entitySetName}': (${i.join(",")})`);let a=`${`${e.entitySetName}(${i.join(",")})`}/${t}`,c=`com.sap.vocabularies.Hierarchy.v1.TopLevels(HierarchyNodes=${`$root/${a}`},HierarchyQualifier='${r.qualifier}',NodeProperty='${r.nodeProperty}')`,l=`${a}?$apply=${c}`;return cr.logger.debug(`Nav-prop hierarchy query: ${l}`),l}async function Q8t(e,t,r,n,i,s=[]){let o=XQn(e,r,n,i),a=await J8t(t,o.query);for(let u of s){let c=r.find(v=>v.entity.entitySetName===u.entitySetName);if(!c){cr.logger.debug(`fetchData: no selected entity matched hierarchy entity '${u.entitySetName}', skipping`);continue}let l=JQn(e,c.entity.entityPath,u);if(!l){cr.logger.debug(`fetchData: could not build nav-prop hierarchy query for '${u.entitySetName}', skipping`);continue}let f=await J8t(t,l);if(!f.entityData||!a.entityData){cr.logger.debug(`fetchData: no data returned for nav-prop hierarchy query '${u.entitySetName}', skipping merge`);continue}cr.logger.debug(`fetchData: merging ${f.entityData.length} hierarchy records into '${c.entity.entityPath}' expanded items`);let p=c.entity.entityPath,d=u.nodeProperty.split("/")[0],h=f.entityData,g=0;for(let v of a.entityData){let S=v[p];if(Array.isArray(S))for(let b of S){let A=h.find(w=>u.entityTypeKeys.every(x=>w[x]===b[x]));A&&(b[d]=A[d],g++)}}cr.logger.debug(`fetchData: patched '${d}' onto ${g} expanded '${p}' records`)}return{odataResult:a}}async function J8t(e,t){try{cr.logger.info(`OData query request: ${encodeURI(e.defaults.baseURL+t).replaceAll("'","%27")}`),cr.logger.debug(`OData query request headers: ${JSON.stringify(e.defaults.headers)}`);let r=await e.get(t),n=r?.data?.match(/"@odata\.count":(\d+)/)?.[1];return cr.logger.info(`OData query records count: ${n}`),{entityData:r?.odata()}}catch(r){let n=Nt("errors.odataQueryError",{error:r});return cr.logger.error(n),{error:n}}}var xu=class e{static externalServiceRequestCache={};static entityTypeRefFacetCache={};static resetExternalServiceCache(t){if(t){delete e.externalServiceRequestCache[t];return}e.externalServiceRequestCache={}}static resetRefFacetCache(){e.entityTypeRefFacetCache={}}static resetServiceCaches(){e.resetExternalServiceCache(),e.resetRefFacetCache()}};async function t4t(e,t,r){if(e.metadata&&t.appAccess&&e.connectedSystem&&e.servicePath&&t.appAccess&&t.referencedEntities){e.connectedSystem.serviceProvider.log=cr.logger;let n=e.connectedSystem?.serviceProvider.service(e.servicePath);if(n){let i=Date.now();ya.sendTelemetry("ODATA_DOWNLOAD_SEND_QUERY",{time:Date()});let s=t.referencedEntities.hierarchyEntities?.find(u=>u.entitySetName===t.referencedEntities.listEntity.entitySetName),o=t.referencedEntities.hierarchyEntities?.filter(u=>u.entitySetName!==t.referencedEntities.listEntity.entitySetName&&r.some(c=>c.entity.entitySetName===u.entitySetName))??[],{odataResult:a}=await Q8t(t.referencedEntities.listEntity,n,r,s?void 0:1,s,o);if(a.entityData)return ya.sendTelemetry("ODATA_DOWNLOAD_RECEIVED_QUERY_RESULT",{duration:`${Date.now()-i} ms`,resultSize:`${a.entityData.length} rows`}),cr.logger.debug(`Got result rows: ${a.entityData.length}`),{odataQueryResult:a.entityData};if(a.error)return ya.sendTelemetry("ODATA_DOWNLOAD_QUERY_ERRORED",{duration:`${Date.now()-i} ms`}),`${a.error}`}}return Nt("errors.dataNotFetched")}function r4t(e){let t=[];return e.Facets.forEach(r=>{if(r.$Type==="com.sap.vocabularies.UI.v1.ReferenceFacet"&&r.Target.type==="AnnotationPath"){let n=r.Target.value;n.lastIndexOf("/")>-1&&t.push(n.substring(0,n.lastIndexOf("/")))}else r.$Type==="com.sap.vocabularies.UI.v1.CollectionFacet"&&t.push(...r4t(r))}),t}function QQn(e){if(xu.entityTypeRefFacetCache[e.name])return xu.entityTypeRefFacetCache[e.name];let t=[];return e.annotations?.UI?.Facets?.forEach(r=>{if(r.$Type==="com.sap.vocabularies.UI.v1.ReferenceFacet"&&r.Target?.type==="AnnotationPath"){let n=r.Target.value;n?.lastIndexOf("/")>-1&&t.push(n.substring(0,n.lastIndexOf("/")))}r.$Type==="com.sap.vocabularies.UI.v1.CollectionFacet"&&t.push(...r4t(r))}),xu.entityTypeRefFacetCache[e.name]=t,t??[]}function n4t(e,t="",r=[],n,i){let s={},o=e.navPropEntities;if(o&&o.length>0){let a=e.entityType?QQn(e.entityType):[];for(let u of o){let c=u.entityPath,l=i??e;if(u.entityType?.name===l?.entityType?.name||t.includes(c))continue;let f=t.concat(`${t?"/":""}${c}`);u.navPropEntities&&u.navPropEntities.length>0&&Object.assign(s,n4t(u,f,r,n,i??e).entitySetsFlat);let p={fullPath:f,entity:{entityPath:u.entityPath,entitySetName:u.entitySetName,defaultSelected:a.includes(u.entityPath)||!!n?.includes(f)}},d=`${f}`;r||(r=[]),r.push({name:d,value:p,checked:p.entity.defaultSelected}),s[f]=u.entitySetName}}return{entitySetsFlat:s,choices:r}}function i4t(e,t){let r=t?.map(n=>{let i=n.page?.contextPath??n.page?.routePattern?.replace(":?query:","").replaceAll(/\(\{[^}]*\}\)/g,"");return i?.startsWith(`/${e.entityPath}/`)?i.replace(`/${e.entityPath}/`,""):i}).filter(n=>n!==void 0);if(e.navPropEntities){let n=n4t(e,void 0,void 0,r);return n.choices.sort((i,s)=>(i.name??"").localeCompare(s.name??"")),n}}async function s4t(e,t){let n=(await Co.newInstance(await(0,Z8t.readFile)((0,e4t.join)(e,vt.Ui5Yaml),"utf-8"))).getBackendConfigsFromFioriToolsProxyMiddleware()[0],i;if(n){let s=n.url;if(n.connectPath){let o=n.connectPath.startsWith("/")?n.connectPath:`/${n.connectPath}`;s=new URL(o,n.url).href}i=jr()?n?.destination:await B8t(s,n?.client)}return{servicePath:t.uri,systemName:i}}async function o4t(e){let t=await fL(e.app.appRoot),r=t.getApiVersion(),n=typeof r?.version=="string"?Number.parseInt(r.version,10):0;return n<24?(cr.logger.debug(`@sap/ux-specification from module cache API version is: ${n}. API version '24' at least is required.`),Nt("prompts.appSelection.validation.specficationApiVersionOutdated",{specApiVersion:n})):t}var a4t,ZQn=(...e)=>new Promise(t=>{clearTimeout(a4t),a4t=setTimeout(async()=>t(await t4t(...e)),1e3)}),Ol={appSelection:"appSelection",toggleSelection:"toggleSelection",relatedEntitySelection:"relatedEntitySelection",skipDataDownload:"skipDataDownload",updateMainServiceMetadata:"updateMainServiceMetadata"},eZn=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,u4t=["."];async function c4t(e,t,r){let n=!1;if(!r.referencedEntities?.listEntity.semanticKeys.every((a,u)=>(a.name!=="IsActiveEntity"&&!n&&(n=!!a.value),a.value!==void 0&&a.value!==""||!e[`entityKeyIdx:${u}`]))||!n)return Nt("prompts.skipDataDownload.validation.keyRequired");let s=[];r.relatedEntityChoices?.choices?.length&&(s=e[Ol.relatedEntitySelection]);let o=await ZQn(t,r,s);return o}function tZn(e){return xu.resetServiceCaches(),e.appAccess=void 0,e.referencedEntities=void 0,e.servicePath=void 0,e.systemName&&(e.systemName.value=void 0),e.relatedEntityChoices.choices=[],e.relatedEntityChoices.entitySetsFlat={},e}async function l4t(e){let t=[],r={appAccess:void 0,referencedEntities:void 0,servicePath:void 0,systemName:{value:void 0},connectPath:{value:void 0},relatedEntityChoices:{choices:[],entitySetsFlat:{}}},n=[],i=rZn(r,n,e?.appPath),s=await J$t({datasourceType:{includeNone:!1},systemSelection:{includeCloudFoundryAbapEnvChoice:!1,defaultChoice:r.systemName,connectPath:r.connectPath,hideNewSystem:!0},serviceSelection:{serviceFilter:n,requiredOdataVersion:zn.v4}},Uc()!==un.cli,cr.logger);s.prompts=Ps(s.prompts,()=>!!r.appAccess);let o={odata:[]},a=iZn(r,r.relatedEntityChoices),u=sZn(5,r,s.answers,o),c=nZn(r.relatedEntityChoices,s.answers,r,o);return t.push(i,...s.prompts,aZn(s.answers,r),oZn(s.answers,r),...u,a,c),{questions:t,answers:{application:r,odataQueryResult:o,odataServiceAnswers:s.answers}}}function rZn(e,t,r){return{type:"input",guiType:"folder-browser",name:Ol.appSelection,message:Nt("prompts.appSelection.message"),default:n=>r??n.appSelection??e.appAccess?.app.appRoot,guiOptions:{mandatory:!0,breadcrumb:Nt("prompts.appSelection.breadcrumb")},validate:async n=>{if(!n)return!1;if(n===e.appAccess?.app.appRoot)return!0;t.length=0,tZn(e);let i;try{i=await X5(n)}catch(c){let l=c;return c instanceof Error&&(l=c.message),cr.logger.error(Nt("prompts.appSelection.validation.selectedPathDoesNotContainValidApp",{error:l})),`${Nt("prompts.appSelection.validation.selectedPathDoesNotContainValidApp")}${Nt("texts.seeLogForDetails")}`}let s=i.app.services[i.app.mainService??"mainService"];if(!s?.odataVersion?.startsWith("4."))return Nt("prompts.appSelection.validation.appMainServiceOdataVersionNotSupported",{serviceOdataVersion:s.odataVersion});let o=await o4t(i);if(typeof o=="string")return o;e.appAccess=i,e.specification=o;let{servicePath:a,systemName:u}=await s4t(i.app.appRoot,s);return a&&(e.servicePath=a,t.push(a)),e.systemName&&(e.systemName.value=u),e.connectPath&&(e.connectPath.value=a),!0}}}function nZn(e,t,r,n){let i;return{when:async s=>e.choices.length>0,name:Ol.relatedEntitySelection,type:"checkbox",guiOptions:{applyDefaultWhenDirty:!0},message:Nt("prompts.relatedEntitySelection.message"),choices:()=>e.choices,validate:async(s,o)=>{if(e.choices.forEach(a=>{a.disabled||(a.checked=s.some(u=>u.fullPath===a.value.fullPath))}),o&&!o[Ol.skipDataDownload]?.[0]){if(i=await c4t(o,t,r),typeof i=="string")return i;n.odata=i.odataQueryResult}return!0},additionalMessages:()=>{if(i&&typeof i!="string")return{message:Nt("prompts.skipDataDownload.querySuccess",{count:i.odataQueryResult.length}),severity:gbe.Severity.information}},showOutputTabLink:()=>({show:!!i,linkMessage:Nt("prompts.relatedEntitySelection.openLogs")})}}function iZn(e,t){let r,n,i;return{when:()=>{if((n!==e.systemName?.value||e.servicePath!==r)&&e.referencedEntities?.listEntity){let o=i4t(e.referencedEntities.listEntity,e.referencedEntities.pageObjectEntities);o&&(t.choices=o.choices,Object.assign(t.entitySetsFlat,o.entitySetsFlat)),r=e.servicePath,n=e.systemName?.value}return t.choices.length>0},name:Ol.toggleSelection,type:"confirm",message:Nt("prompts.toggleSelection.message"),labelTrue:Nt("prompts.toggleSelection.labelTrue"),labelFalse:Nt("prompts.toggleSelection.labelFalse"),default:!1,validate:o=>(o!==i&&(t.choices.forEach(a=>{if(a.disabled)return;let u=a.value;a.checked=o===!1?u.entity.defaultSelected:!1}),i=o),!0)}}function sZn(e,t,r,n){let i=[],s,o=0,a=u=>({when:async()=>{let c=t.referencedEntities?.listEntity.semanticKeys[u],l=!!c?.name&&c.name!=="IsActiveEntity";return l&&u>o&&(o=u),l},name:`entityKeyIdx:${u}`,message:()=>Nt("prompts.entityKey.message",{keyName:`${t.referencedEntities?.listEntity.semanticKeys[u]?.name} (${t.referencedEntities?.listEntity.entitySetName})`}),type:"input",guiOptions:{hint:Nt("prompts.entityKey.hint")},validate:async(c,l)=>{let f=t.referencedEntities?.listEntity.semanticKeys[u];if(f&&delete f.value,u4t.includes(c))return Nt("prompts.entityKey.validation.invalidKeyValueChars",{chars:u4t.join()});if(c&&f)if(f.type==="Edm.Boolean")try{f.value=JSON.parse(c)}catch{return Nt("prompts.entityKey.validation.invalidBooleanValue")}else if(["Edm.UUID","Edm.Guid"].includes(f.type)){let d=c.split(",");for(let h of d)if(!eZn.test(h.trim()))return Nt("prompts.entityKey.validation.invalidGuidValue");f.value=c.trim()}else f.value=c.trim();let p=c.split(",");if(f?.type&&!["Edm.UUID","Edm.Guid"].includes(f.type)){for(let d of p)if(d.split("-").length>2)return f&&delete f.value,Nt("prompts.entityKey.validation.invalidRangeSpecified")}if(l&&!t.relatedEntityChoices?.choices?.length&&u===o&&!l[Ol.skipDataDownload]?.[0]&&t.referencedEntities?.listEntity.semanticKeys[u]?.name){if(s=await c4t(l,r,t),typeof s=="string")return s;n.odata=s.odataQueryResult}return!0}});for(let u=0;u<e;u++)i.push(a(u));return i}function oZn(e,t){return{when:()=>!!e.metadata&&!!t.servicePath,name:Ol.skipDataDownload,type:"checkbox",message:Nt("prompts.skipDataDownload.message"),guiOptions:{hint:Nt("prompts.skipDataDownload.hint")},default:!1,choices:[{name:Nt("prompts.skipDataDownload.choiceLabel"),value:"skipDownload",checked:!1}]}}function aZn(e,t){let r;return{when:async()=>t.appAccess&&t.specification&&e?.metadata?(r=await j8t(t.appAccess,t.specification,e.metadata),typeof r=="object"&&(t.referencedEntities=r),!0):!1,name:Ol.updateMainServiceMetadata,type:"confirm",message:Nt("prompts.updateMainServiceMetadata.message"),default:!1,additionalMessages:async()=>{if(typeof r=="string")return{message:r,severity:gbe.Severity.error}}}}function f4t(e){let t=[],r=n=>[{name:`${n.entitySetName}/${n.nodeProperty}/source`,type:"list",message:`Source: ${n.entitySetName} > ${n.missingReferentialConstraints?.navPropName}`,default:!1,choices:n.entityProperties.map(i=>({name:i,value:i}))},{name:`${n.entitySetName}/${n.nodeProperty}/target`,type:"list",message:`Target: ${n.entitySetName} > ${n.missingReferentialConstraints?.navPropName}`,default:!1,choices:n.entityProperties.map(i=>({name:i,value:i}))}];return e.forEach(n=>{!n.parentProperty&&n.missingReferentialConstraints?.navPropName&&t.push(...r(n))}),t}var g4t=Te(Oy()),y4t=Te(Py());var E4t=Te(m4t()),_4t=require("node:path");function v4t(e,t,r){xu.resetExternalServiceCache();let n=bZn(e,t),i=[];return{questions:[{name:"valueHelpSelection",type:"checkbox",message:Nt("prompts.valueHelpSelection.message"),choices:()=>n,validate:async o=>{if(!o||o.length===0)return xu.resetExternalServiceCache(),!0;let a=await TZn(o,r),u=(0,E4t.default)(i,a);return i.length=0,i.push(...u),await SZn(i,r),!0}}],valueHelpData:i}}async function SZn(e,t){let r=[],n={transformResponse:s=>typeof s=="string"?JSON.parse(s):s},i=e.map(async s=>{let o=s,[a]=o.path.split(";");xu.externalServiceRequestCache[a]??=[];let l=(0,g4t.convert)((0,y4t.parse)(s.metadata)).entitySets.map(async f=>{let p=f.name;if(xu.externalServiceRequestCache[a].includes(p))return;xu.externalServiceRequestCache[a].push(p);let d=await t.get((0,_4t.join)(o.path,p),n);o.entityData=o.entityData??[],o.entityData?.push({entitySetName:p,items:d.data.value})});await Promise.allSettled(l),o.entityData&&r.push(o)});return await Promise.allSettled(i),r}async function TZn(e,t){let r=e.flat();return await t.fetchExternalServices(r)}function bZn(e,t){let r=lM(e,t,[]),n={};for(let s of r)if(s.type==="value-list"){if(L8t.includes(s.target))continue;let[o]=s.value.split(";"),a=s.target.split("/").pop();a&&(n[o]??={},n[o][a]??=[],n[o][a].push(s))}else s.type==="code-list"&&(n[s.value]??={},n[s.value]["Code list"]??=[],n[s.value]["Code list"].push(s));let i=[];for(let s of Object.values(n))for(let[o,a]of Object.entries(s)){let u=a.map(c=>{if(c.type==="value-list")return c.target.replace(/\/[^/]*$/,"");if(c.type==="code-list"&&c.collectionPath)return c.collectionPath}).filter(c=>c!==void 0);i.push({name:`${o} (${u.join()})`,value:a})}return i.sort((s,o)=>s.name.localeCompare(o.name))}var cr=class e extends T4t.default{vscode;appWizard;static _logger=f4;generatorVersion=this.rootGeneratorVersion();prompts;setPromptsCallback;state={};constructor(t,r){super(t,{...r,skipInstall:!0},{unique:"namespace"}),p_e(this.env,!0),this.options.force=!0,this.prompts=new P7.Prompts([{description:Nt("steps.odataDownloader.description"),name:Nt("steps.odataDownloader.name")},{description:Nt("steps.valueHelpSelection.description"),name:Nt("steps.valueHelpSelection.name")}]),this.setPromptsCallback=n=>{this.prompts&&this.prompts.setCallback(n)},typeof r.appWizard?.setHeaderTitle=="function"&&r.appWizard.setHeaderTitle(Nt("texts.generatorTitle"),`${this.rootGeneratorName()}@${this.rootGeneratorVersion()}`)}static get logger(){return e._logger}async initializing(){await _ve(),e._logger=this._configureLogging(this.options.logLevel,this.options.logger,this.options.vscode),await ya.initTelemetrySettings(),ya.sendTelemetry("ODATA_DOWNLOADER_STARTED",{startUpTime:Date()})}async prompting(){try{let{answers:{application:t,odataQueryResult:r,odataServiceAnswers:n},questions:i}=await l4t(this.options?.data),s=await this.prompt(i);if(this.state.entityOData=r.odata,this.state.entityPropertyToEntitySet=t.relatedEntityChoices.entitySetsFlat,this.state.appRootPath=t.appAccess?.getAppRoot(),this.state.mainServicePath=n.servicePath,this.state.mainServiceName=t.appAccess?.app.mainService,this.state.appEntities=t.referencedEntities,this.state.appRootPath){this.state.mockServerConfig=await Ax(this.state.appRootPath);let o;this.state.mockServerConfig?.services&&(e.logger.debug(`Mock config: ${JSON.stringify(this.state.mockServerConfig)}`),o=this.state.mockServerConfig.services.find(a=>a.urlPath.replaceAll(/(^\/)|(\/$)/g,"")===this.state.mainServicePath?.replaceAll(/(^\/)|(\/$)/g,""))),this.state.mockDataRootPath=o?.mockdataPath??(0,ZS.join)(oi.Webapp,oi.LocalService,oi.Mockdata)}if(this.state.updateMainServiceMetadata=s[Ol.updateMainServiceMetadata],this.state.mainServiceMetadata=n.metadata,s[Ol.skipDataDownload]?.[0]||await this._promptMissingReferentialConstraints(t,s),n.servicePath&&n.metadata&&n.connectedSystem?.serviceProvider instanceof ja){let{questions:o,valueHelpData:a}=v4t(n.servicePath,n.metadata,n.connectedSystem?.serviceProvider);await this.prompt(o),this.state.valueHelpData=a}}catch(t){e.logger.error(t),this._exitOnError(t)}}async writing(){if(this.state.appRootPath){if(this.state.entityOData&&this.state.entityPropertyToEntitySet&&this.state.appEntities)try{let t=Date.now();ya.sendTelemetry("ODATA_DOWNLOADER_WRITE_DATA_FILES_START",{time:Date()}),this.destinationRoot((0,ZS.join)(this.state.appRootPath));let r=pbe(this.state.entityOData,this.state.entityPropertyToEntitySet,this.state.appEntities.listEntity.entitySetName,this.state.appEntities.hierarchyEntities);e.logger.info(Nt("info.entityFilesToBeGenerated",{entities:Object.keys(r).join(", ")}));let n=Object.entries(r);n.forEach(([i,s])=>{this.writeDestinationJSON((0,ZS.join)(this.state.mockDataRootPath,`${i}.json`),s)}),this.state.appEntities.hierarchyEntities?.filter(i=>i.missingReferentialConstraints&&n.some(([s])=>s===i.entitySetName))?.forEach(i=>{let s=(0,ZS.join)(this.state.mockDataRootPath,`${i.entitySetName}.js`),o=this.destinationPath(s),{navPropName:a,constraints:u}=i.missingReferentialConstraints;if(this.fs.exists(o)){let c=this.fs.read(o),l=$8t(c,a,u);l!==c?(this.writeDestination(s,l),e.logger.info(`Updated referential constraint file: ${i.entitySetName}.js`)):e.logger.debug(`Referential constraint for '${a}' already present in ${i.entitySetName}.js \u2014 skipping`)}else{let c=V8t(a,u);this.writeDestination(s,c),e.logger.info(`Written referential constraint file: ${i.entitySetName}.js`)}}),ya.sendTelemetry("ODATA_DOWNLOADER_WRITE_DATA_FILES_END",{writeFileDuration:`${Date.now()-t} ms`,numberOfFiles:`${n.length}`})}catch(t){e.logger.error(t),ya.sendTelemetry("ODATA_DOWNLOADER_WRITING_DATA_ERROR",{writeFileErrorTime:Date()})}else e.logger.info(Nt("info.noServiceEntityData"));if(this.state.valueHelpData?.length)try{let t=Date.now();ya.sendTelemetry("ODATA_DOWNLOADER_WRITE_VALUE_HELP_FILES_START",{time:Date()});let r=(0,ZS.join)(this.state.appRootPath,oi.Webapp);if(await I4(this.fs,r,this.state.valueHelpData,this.state.mainServiceName,this.state.mainServicePath),this.state.mockServerConfig){let n={webappPath:r,packageJsonConfig:{skip:!0},ui5MockYamlConfig:{overwrite:!0}};n.ui5MockYamlConfig&&this.state.mainServiceName&&(n.ui5MockYamlConfig.resolveExternalServiceReferences={[this.state.mainServiceName]:!0},await d4(this.state.appRootPath,n,this.fs))}ya.sendTelemetry("ODATA_DOWNLOADER_WRITE_VALUE_HELP_DATA_FILES_END",{writeFileDuration:`${Date.now()-t} ms`,numberOfExternalServices:`${this.state.valueHelpData.length}`})}catch(t){e.logger.error(t),ya.sendTelemetry("ODATA_DOWNLOADER_WRITING_BALUE_HELP_DATA_ERROR",{writeFileErrorTime:Date()})}else e.logger.info(Nt("info.noValueHelpData"));if(this.state.updateMainServiceMetadata&&this.state.mainServiceMetadata&&this.state.mainServiceName){let t=(0,ZS.join)(this.state.appRootPath,oi.Webapp,oi.LocalService,this.state.mainServiceName,"metadata.xml");this.writeDestination(t,(0,S4t.default)(this.state.mainServiceMetadata,{indent:4}))}}}async _promptMissingReferentialConstraints(t,r){let n=t.referencedEntities?.listEntity.entitySetName,i=new Set([...n?[n]:[],...(r[Ol.relatedEntitySelection]??[]).map(o=>o.entity.entitySetName)]),s=t.referencedEntities?.hierarchyEntities?.filter(o=>!o.parentProperty&&o.missingReferentialConstraints&&i.has(o.entitySetName))??[];if(s.length>0){this.prompts.splice(1,0,[{name:Nt("steps.addConstraints.name"),description:Nt("steps.addConstraints.description")}]);let o=f4t(s),a=await this.prompt(o),u=[t.referencedEntities?.listEntity,...t.referencedEntities?.pageObjectEntities??[]];s.forEach(c=>{let l=a[`${c.entitySetName}/${c.nodeProperty}/source`],f=a[`${c.entitySetName}/${c.nodeProperty}/target`];if(l&&f){c.missingReferentialConstraints.constraints=[{sourceProperty:l,targetProperty:f}],c.parentProperty=l;let p=u.find(d=>d?.entitySetName===c.entitySetName)?.entityType;c.parentPropertyType=p?.entityProperties.find(d=>d.name===l)?.type??"Edm.String"}})}}_exitOnError(t){throw Uc()!==un.cli&&this.appWizard?.showError(t,P7.MessageType.notification),new Error(t)}_configureLogging(t,r,n){let i=new l4(this.rootGeneratorName(),this.log,t,r,n);return i.info(Nt("info.loggingInitialised",{logLevel:i.getLogLevel()})),i}};
|
|
734
734
|
/*! Bundled license information:
|
|
735
735
|
|
|
736
736
|
mime-db/index.js:
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@sap-ux/generator-odata-downloader",
|
|
3
3
|
"displayName": "Fiori Elements Data Downloader",
|
|
4
4
|
"description": "Yeoman generator that supports download of app data, typically for mock data server use.",
|
|
5
|
-
"version": "0.3.
|
|
5
|
+
"version": "0.3.14",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "https://github.com/SAP/open-ux-tools.git",
|
|
@@ -44,17 +44,17 @@
|
|
|
44
44
|
"prettify-xml": "1.2.0",
|
|
45
45
|
"rimraf": "6.1.3",
|
|
46
46
|
"yeoman-generator": "5.10.0",
|
|
47
|
-
"@sap-ux/axios-extension": "2.0.
|
|
47
|
+
"@sap-ux/axios-extension": "2.0.3",
|
|
48
48
|
"@sap-ux/btp-utils": "2.0.2",
|
|
49
|
+
"@sap-ux/fiori-generator-shared": "1.0.11",
|
|
50
|
+
"@sap-ux/inquirer-common": "1.0.11",
|
|
49
51
|
"@sap-ux/logger": "1.0.1",
|
|
50
|
-
"@sap-ux/
|
|
51
|
-
"@sap-ux/inquirer
|
|
52
|
-
"@sap-ux/odata-service-inquirer": "3.0.9",
|
|
52
|
+
"@sap-ux/mockserver-config-writer": "1.0.6",
|
|
53
|
+
"@sap-ux/odata-service-inquirer": "3.0.11",
|
|
53
54
|
"@sap-ux/odata-service-writer": "1.0.6",
|
|
54
55
|
"@sap-ux/project-access": "2.1.2",
|
|
55
|
-
"@sap-ux/mockserver-config-writer": "1.0.6",
|
|
56
56
|
"@sap-ux/store": "2.0.1",
|
|
57
|
-
"@sap-ux/telemetry": "1.0.
|
|
57
|
+
"@sap-ux/telemetry": "1.0.9",
|
|
58
58
|
"@sap-ux/ui5-config": "1.0.3"
|
|
59
59
|
},
|
|
60
60
|
"engines": {
|