UNPKG

@sap/generator-fiori

Version:

Create an SAPUI5 application using SAP Fiori elements or a freestyle approach

1 lines 21 kB
"use strict";exports.id=491,exports.ids=[491],exports.modules={25077:function(e,a,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0}),a.updateCdsFilesWithAnnotations=async function updateCdsFilesWithAnnotations(e,a){if(Array.isArray(e))for(const n in e){const i=e[n],r=(0,o.join)(i.projectPath,i.appPath??"",i.projectName,"annotations.cds");a.exists(r)?a.append(r,i.cdsFileContents):a.write(r,i.cdsFileContents),await updateCdsIndexOrServiceFile(a,i)}else{const n=(0,o.join)(e.projectPath,e.appPath??"",e.projectName,"annotations.cds");a.write(n,e.cdsFileContents),await updateCdsIndexOrServiceFile(a,e)}},a.removeAnnotationsFromCDSFiles=async function removeAnnotationsFromCDSFiles(e,a){if(Array.isArray(e))for(const n in e){const i=e[n],r=(0,o.join)(i.projectPath,i.appPath??"",i.projectName,"annotations.cds");if(a.exists(r)){const e=a.read(r).replace(i.cdsFileContents,"");a.write(r,e)}await removeCdsIndexOrServiceFile(a,i)}else{const n=(0,o.join)(e.projectPath,e.appPath??"",e.projectName,"annotations.cds");if(a.exists(n)){const i=a.read(n).replace(e.cdsFileContents,"");a.write(n,i)}await removeCdsIndexOrServiceFile(a,e)}},a.writeLocalServiceAnnotationXMLFiles=async function writeLocalServiceAnnotationXMLFiles(e,a,n,i){if(await writeMetadata(e,a,i),i.localAnnotationsName){const r=getAnnotationNamespaces(i);e.copyTpl((0,o.join)(n,"add","annotation.xml"),(0,o.join)(a,l.DirName.Annotations,`${i.localAnnotationsName}.xml`),{...i,namespaces:r})}},a.writeMetadata=writeMetadata,a.removeRemoteServiceAnnotationXmlFiles=async function removeRemoteServiceAnnotationXmlFiles(e,a,n,i){const r=await(0,l.getWebappPath)(a,e);if(Array.isArray(i))for(const a in i){const s=i[a],c=(0,o.join)(r,l.DirName.LocalService,n,`${s.technicalName}.xml`);e.exists(c)&&e.delete(c)}else if(i?.xml){const a=(0,o.join)(r,l.DirName.LocalService,n,`${i.technicalName}.xml`);e.exists(a)&&e.delete(a)}},a.writeRemoteServiceAnnotationXmlFiles=async function writeRemoteServiceAnnotationXmlFiles(e,a,n,i){const r=await(0,l.getWebappPath)(a,e);if(Array.isArray(i))for(const a in i){const s=i[a];s?.xml&&e.write((0,o.join)(r,l.DirName.LocalService,n,`${s.name}.xml`),(0,c.default)(s.xml,{indent:4}))}else i?.xml&&e.write((0,o.join)(r,l.DirName.LocalService,n,`${i.name}.xml`),(0,c.default)(i.xml,{indent:4}))},a.getAnnotationNamespaces=getAnnotationNamespaces;const o=n(16928),r=n(54196),s=n(87572),c=i(n(93407)),l=n(20787);async function updateCdsIndexOrServiceFile(e,a){const n=(0,o.join)(a.projectName,l.DirName.Annotations),i=`\nusing from './${(0,o.normalize)(n).split(/[\\/]/g).join(o.posix.sep)}';`,r=(0,o.join)(a.projectPath,a.appPath??"","index.cds"),s=(0,o.join)(a.projectPath,a.appPath??"","services.cds");r&&e.exists(r)?e.append(r,i):e.exists(s)?e.append(s,i):e.write(s,i)}async function removeCdsIndexOrServiceFile(e,a){const n=(0,o.join)(a.projectName,l.DirName.Annotations),i=`\nusing from './${(0,o.normalize)(n).split(/[\\/]/g).join(o.posix.sep)}';`,r=(0,o.join)(a.projectPath,a.appPath??"","index.cds"),s=(0,o.join)(a.projectPath,a.appPath??"","services.cds");if(r&&e.exists(r)){const a=e.read(r).replace(i,"");e.write(r,a)}else if(e.exists(s)){const a=e.read(s).replace(i,"");e.write(s,a)}}async function writeMetadata(e,a,n){n.metadata&&e.write((0,o.join)(a,l.DirName.LocalService,n.name??"mainService","metadata.xml"),(0,c.default)(n.metadata,{indent:4}))}function getAnnotationNamespacesForSingleAnnotation(e,a){if(e?.xml){const n=xmlToJson(e.xml);return a.map((a=>{const i=e.xml&&a.namespace?function getAliasFromAnnotation(e,a){let n=e["edmx:Edmx"]?.["edmx:Reference"];Array.isArray(n)||(n=[n]);const i=n.find((e=>e["edmx:Include"]?.Namespace===a&&e["edmx:Include"]?.Alias));return i?i["edmx:Include"]?.Alias:""}(n,a.namespace):"";return i&&(a.alias=i),a}))}return a}function getAnnotationNamespaces({metadata:e,annotations:a}){let n=e?function getNamespaces(e){let a=xmlToJson(e)["edmx:Edmx"]?.["edmx:DataServices"]?.Schema;if(!a)return[];Array.isArray(a)||(a=[a]);return a.map((e=>({namespace:e.Namespace,alias:e.Alias||""})))}(e):[];if(Array.isArray(a))for(const e in a){n=getAnnotationNamespacesForSingleAnnotation(a[e],n)}else{n=getAnnotationNamespacesForSingleAnnotation(a,n)}return n}function xmlToJson(e){const a={attributeNamePrefix:"",ignoreAttributes:!1,ignoreNameSpace:!0,parseAttributeValue:!0};try{return new r.XMLParser(a).parse(e,!0)}catch(e){throw new Error((0,s.t)("error.unparseableXML",{error:e}))}}},73814:(e,a)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.DEFAULT_DATASOURCE_NAME=void 0,a.DEFAULT_DATASOURCE_NAME="mainService"},59581:(e,a,n)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.enhanceData=async function enhanceData(e,a,n,l=!1){l||function setDefaultServicePath(e){e.path=e.path?.endsWith("/")?e.path:(e.path??"")+"/"}(a);await async function setDefaultServiceName(e,a,n,o){const c=(0,i.join)(await(0,s.getWebappPath)(e,n),s.FileName.Manifest),l=n.readJSON(c)?.["sap.app"]?.dataSources;if(l){0===Object.values(l).filter((e=>"OData"===e.type)).length?a.name=r.DEFAULT_DATASOURCE_NAME:a.name&&!o&&(a.name=function generateUniqueServiceName(e,a){let n=a,i=1,o=!0;do{e?.[n]?n=`${a}${i++}`:o=!1}while(o);return n}(l,a.name))}else a.name=r.DEFAULT_DATASOURCE_NAME}(e,a,n,l),await async function setDefaultServiceModel(e,a,n,o){const c=(0,i.join)(await(0,s.getWebappPath)(e,n),"manifest.json"),l=n.readJSON(c);if(!a.model){const e=l?.["sap.ui5"]?.models;if(e){const n=Object.values(e).filter((e=>e.dataSource));0===n.length||o&&n.find((e=>e.dataSource===r.DEFAULT_DATASOURCE_NAME))&&a.name===r.DEFAULT_DATASOURCE_NAME?a.model="":a.name&&(a.model=a.name)}else a.model=""}}(e,a,n,l),a.type=a.type??o.ServiceType.EDMX,a.type===o.ServiceType.EDMX&&function setDefaultAnnotationsName(e){if(Array.isArray(e.annotations)){const a=e.annotations;for(const n in a){setDefaultAnnotationName(a[n],e.name)}}else if(e.annotations){setDefaultAnnotationName(e.annotations,e.name)}}(a);await async function setDefaultPreviewSettings(e,a,n){a.previewSettings=a.previewSettings??{},a.previewSettings.path=a.previewSettings.path??`/${a.path?.split("/").filter((e=>""!==e))[0]??""}`,a.previewSettings.url=a.previewSettings.url??a.url??"http://localhost",a.client&&!a.previewSettings.client&&(a.previewSettings.client=a.client);a.destination&&!a.previewSettings.destination&&(a.previewSettings.destination=a.destination.name,a.destination.instance&&(a.previewSettings.destinationInstance=a.destination.instance));const o=(0,i.join)(e,s.FileName.Ui5Yaml);if(n.exists(o)){const e=n.read(o);(await c.UI5Config.newInstance(e)).getBackendConfigsFromFioriToolsProxydMiddleware().find((e=>"/sap"===e.path))&&(a.previewSettings.path=a.path)}}(e,a,n)};const i=n(16928),o=n(40963),r=n(73814),s=n(20787),c=n(8231);function setDefaultAnnotationName(e,a){e?.technicalName&&!e.name&&(e.name=e?.technicalName?.replace(/\//g,"_")?.replace(/^_/,"")),e.name===a&&(e.name+="_Annotation")}},92275:function(e,a,n){var i=this&&this.__createBinding||(Object.create?function(e,a,n,i){void 0===i&&(i=n);var o=Object.getOwnPropertyDescriptor(a,n);o&&!("get"in o?!a.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return a[n]}}),Object.defineProperty(e,i,o)}:function(e,a,n,i){void 0===i&&(i=n),e[i]=a[n]}),o=this&&this.__exportStar||function(e,a){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(a,n)||i(a,e,n)};Object.defineProperty(a,"__esModule",{value:!0}),o(n(59581),a),o(n(25077),a)},27758:function(e,a,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0}),a.deleteServiceFromManifest=function deleteServiceFromManifest(e,a,n){const i=a.name??"mainService",s=(0,o.join)(e,"webapp","manifest.json"),c=n.readJSON(s),l="sap.app",d=c?.[l]?.id;if(!d)throw new Error((0,r.t)("error.requiredProjectPropertyNotFound",{property:"'sap.app'.id",path:s}));const u=c?.[l]?.dataSources;u?.[i]&&removeFileForDataSource(n,s,u?.[i]);const p=u?.[i]?.settings;p?.annotations&&p.annotations.length>0&&function removeAnnotations(e,a,n,i){for(const o of n){const n=i?.[o];"ODataAnnotation"===n?.type&&(n.uri===n?.settings?.localUri||n&&(removeFileForDataSource(e,a,n),delete i?.[o]))}}(n,s,p.annotations,u);u?.[i]&&delete u[i];const m=c?.["sap.ui5"]?.models;if(m)for(const e of Object.keys(m)){m[e]?.dataSource===i&&delete m[e]}n.writeJSON(s,c)},a.updateManifest=async function updateManifest(e,a,n,i=!1){const l=await(0,s.getWebappPath)(e,n),d=(0,o.join)(l,"manifest.json"),u=n.readJSON(d),p="sap.app",m=u?.[p]?.id,f=u[p]?.dataSources??{};if(!m)throw new Error((0,r.t)("error.requiredProjectPropertyNotFound",{property:"'sap.app'.id",path:d}));if(i&&a.name&&!f?.[a.name])throw new Error((0,r.t)("error.requiredProjectPropertyNotFound",{property:`'sap.app.dataSources.${a.name}'`,path:d}));if(!i&&a.path&&Object.values(f).find((e=>e.uri===a.path)))throw new Error((0,r.t)("error.requiredServiceAlreadyExists",{uri:a.path}));const v=await async function addMultipleServiceSupportToManifest(e,a,n){const i=a?.["sap.app"]?.dataSources;for(const a in i){const o=i[a];if(o&&"OData"===o.type){convertSingleService(e,a,o,n);const r=o.settings?.annotations;r&&r.forEach((o=>{const r=i[o];r&&convertSingleService(e,a,r,n)}))}}return a}(l,u,n);(function enhanceManifest(e,a,n,i,r){const l=(0,s.getMinimumUI5Version)(a),d=Object.assign(e,function getModelSettings(e){let a=!1;e&&(a=c.default.satisfies(e,"<=1.110"));return{includeSynchronizationMode:a}}(l));d.name&&d.path&&void 0!==d.model&&(!function enhanceManifestDatasources(e,a,n){const{serviceName:i,servicePath:r,serviceVersion:s,manifest:c,forceServiceUpdate:l,serviceMetadata:d,serviceRemoteAnnotations:u,serviceLocalAnnotations:p}=n,m=c?.["sap.app"].dataSources??{},f=function addRemoteAnnotationDataSources(e,a,n,i,r,s){const c=[];Array.isArray(r)?r.forEach((e=>{e.name&&(n[e.name]={uri:`/sap/opu/odata/IWFND/CATALOGSERVICE;v=2/Annotations(TechnicalName='${encodeURIComponent(e.technicalName)}',Version='0001')/$value/`,type:"ODataAnnotation",settings:{localUri:`localService/${i}/${e.name}.xml`}},c.push(e.name))})):r?.name&&(n[r.name]={uri:`/sap/opu/odata/IWFND/CATALOGSERVICE;v=2/Annotations(TechnicalName='${encodeURIComponent(r.technicalName)}',Version='0001')/$value/`,type:"ODataAnnotation",settings:{localUri:`localService/${i}/${r.name}.xml`}},c.push(r.name));s&&function removeUnusedAnnotations(e,a,n,i,r){(n?.[i].settings?.annotations??[]).forEach((i=>{const s=n[i];if("ODataAnnotation"===s?.type&&s.uri!==s.settings?.localUri&&!r.includes(i)){const r=s.settings?.localUri;r&&e.exists((0,o.join)(a,r))&&e.delete((0,o.join)(a,r)),delete n[i]}}))}(e,a,n,i,c);return c}(e,a,m,i,u,l),v=function addLocalAnnotationDataSources(e,a,n,i){const o=[];if(i){(e?.[a]?.settings?.annotations??[]).forEach((a=>{const n=e[a];"ODataAnnotation"===n?.type&&n.uri===n.settings?.localUri&&o.push(a)}))}else Array.isArray(n)?n.forEach((a=>{e[a]={type:"ODataAnnotation",uri:`annotations/${a}.xml`,settings:{localUri:`annotations/${a}.xml`}},o.push(a)})):n&&(e[n]={type:"ODataAnnotation",uri:`annotations/${n}.xml`,settings:{localUri:`annotations/${n}.xml`}},o.push(n));return o}(m,i,p,l),w={annotations:[...f,...v]};d&&(w.localUri=`localService/${i}/metadata.xml`);"4"===s?w.odataVersion="4.0":"2"===s&&(w.odataVersion="2.0");m[i]={uri:r,type:"OData",settings:w},c["sap.app"].dataSources=m}(i,n,{serviceName:d.name,servicePath:d.path,serviceVersion:d.version,manifest:a,forceServiceUpdate:r,serviceMetadata:d.metadata,serviceRemoteAnnotations:d.annotations,serviceLocalAnnotations:d.localAnnotationsName}),function enhanceManifestModels(e,a,n,i,o){const r=o?.["sap.ui5"]?.models??{};let s={};"4"===a&&(i&&(s.synchronizationMode="None"),s.operationMode="Server",s.autoExpandSelect=!0,s.earlyRequests=!0);r[n]?.settings?(s={...r[n].settings,...s},r[n]={...r[n],dataSource:e,preload:!0,settings:s}):r[n]={dataSource:e,preload:!0,settings:s};o["sap.ui5"]?o["sap.ui5"]={...o["sap.ui5"],models:r}:Object.assign(o,{"sap.ui5":{models:{...r}}})}(d.name,d.version,d.model,d.includeSynchronizationMode,a))})(a,v,l,n,i),n.writeJSON(d,v)};const o=n(16928),r=n(87572),s=n(20787),c=i(n(85263));function convertSingleService(e,a,n,i){const r=n.settings;if(r){const n=r.localUri,c=n?n.split("/"):void 0;if(c&&c[0]===s.DirName.LocalService&&2===c.length){const n=c[c.length-1];r.localUri=`${s.DirName.LocalService}/${a}/${n}`;const l=(0,o.join)(e,c.join(o.sep)),d=(0,o.join)(e,s.DirName.LocalService,a,n);i.exists(l)&&i.move(l,d)}}}function removeFileForDataSource(e,a,n){const i=n.settings??{};if(i?.localUri){const n=(0,o.join)((0,o.dirname)(a),i?.localUri);e.exists(n)&&e.delete(n)}}},60999:(e,a,n)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.updatePackageJson=function updatePackageJson(e,a,n){const o=JSON.parse(a.read(e));o.devDependencies=o.devDependencies??{},(0,i.hasUI5CliV3)(o.devDependencies)||(o.ui5=o.ui5??{},o.ui5.dependencies=o.ui5.dependencies??[],o.ui5.dependencies.includes("@sap/ux-ui5-tooling")||o.ui5.dependencies.push("@sap/ux-ui5-tooling"),!n||o.ui5.dependencies.includes("@sap/ux-ui5-fe-mockserver-middleware")||o.ui5.dependencies.includes("@sap-ux/ui5-middleware-fe-mockserver")||o.ui5.dependencies.push("@sap-ux/ui5-middleware-fe-mockserver"));o.devDependencies["@sap/ux-ui5-tooling"]||(o.devDependencies["@sap/ux-ui5-tooling"]="1");n&&(o.devDependencies["@sap/ux-ui5-fe-mockserver-middleware"]||o.devDependencies["@sap-ux/ui5-middleware-fe-mockserver"]||(o.devDependencies["@sap-ux/ui5-middleware-fe-mockserver"]="2"));a.writeJSON(e,o)};const i=n(20787)},62315:(e,a,n)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.deleteServiceData=async function deleteServiceData(e,a,n,s){if((0,o.deleteServiceFromManifest)(e,n,s),n.path&&n.name){let o,c,l;a.ui5Yaml&&(o=await i.UI5Config.newInstance(s.read(a.ui5Yaml)),o.removeBackendFromFioriToolsProxydMiddleware(n.path),s.write(a.ui5Yaml,o.toString()));const d=function getEDMXAnnotationPaths(e){const a=[];if(Array.isArray(e))e.forEach((e=>{const n=encodeURIComponent(e.technicalName);a.push(`/sap/opu/odata/IWFND/CATALOGSERVICE;v=2/Annotations(TechnicalName='${n}',Version='0001')/$value/`)}));else{const n=encodeURIComponent(e.technicalName);a.push(`/sap/opu/odata/IWFND/CATALOGSERVICE;v=2/Annotations(TechnicalName='${n}',Version='0001')/$value/`)}return a}(n.annotations);a.ui5LocalYaml&&(c=await i.UI5Config.newInstance(s.read(a.ui5LocalYaml)),c.removeBackendFromFioriToolsProxydMiddleware(n.path),c.removeServiceFromMockServerMiddleware(n.path,d),s.write(a.ui5LocalYaml,c.toString())),a.ui5MockYaml&&(l=await i.UI5Config.newInstance(s.read(a.ui5MockYaml)),l.removeBackendFromFioriToolsProxydMiddleware(n.path),l.removeServiceFromMockServerMiddleware(n.path,d),s.write(a.ui5MockYaml,l.toString())),await(0,r.removeRemoteServiceAnnotationXmlFiles)(s,e,n.name,n.annotations)}};const i=n(8231),o=n(27758),r=n(25077)},87572:function(e,a,n){var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0}),a.initI18n=initI18n,a.t=function t(e,a){return o.default.t(e,a)};const o=i(n(91582)),r=i(n(39057)),s="odata-service-writer";async function initI18n(){await o.default.init({resources:{en:{[s]:r.default}},lng:"en",fallbackLng:"en",defaultNS:s,ns:[s]})}initI18n().catch((()=>{}))},10894:(e,a,n)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.getAnnotationNamespaces=a.ServiceType=a.OdataVersion=void 0,a.generate=async function generate(e,a,n){n||(n=(0,r.create)((0,o.create)()));const l=await findProjectFiles(e,n);ensureExists(await(0,p.getWebappPath)(e,n),["manifest.json"],n),await(0,c.enhanceData)(e,a,n);const u=a.type===d.ServiceType.EDMX,f=(0,i.join)(__dirname,"../templates");await(0,m.updateManifest)(e,a,n),u?await(0,s.addServicesData)(e,l,f,a,n):!u&&a.annotations&&await(0,c.updateCdsFilesWithAnnotations)(a.annotations,n);return n},a.update=async function update(e,a,n,i=!0){n||(n=(0,r.create)((0,o.create)()));const l=await findProjectFiles(e,n);ensureExists(await(0,p.getWebappPath)(e,n),["manifest.json"],n),await(0,c.enhanceData)(e,a,n,!0);const u=a.type===d.ServiceType.EDMX;await(0,m.updateManifest)(e,a,n,!0),u&&await(0,s.updateServicesData)(e,l,a,n,i);return n},a.remove=async function remove(e,a,n){n||(n=(0,r.create)((0,o.create)()));const i=await findProjectFiles(e,n);a.type===d.ServiceType.EDMX?await(0,u.deleteServiceData)(e,i,a,n):await(0,c.removeAnnotationsFromCDSFiles)(a.annotations,n);return n};const i=n(16928),o=n(64812),r=n(90718),s=n(37089),c=n(92275);Object.defineProperty(a,"getAnnotationNamespaces",{enumerable:!0,get:function(){return c.getAnnotationNamespaces}});const l=n(87572),d=n(40963);Object.defineProperty(a,"OdataVersion",{enumerable:!0,get:function(){return d.OdataVersion}}),Object.defineProperty(a,"ServiceType",{enumerable:!0,get:function(){return d.ServiceType}});const u=n(62315),p=n(20787),m=n(27758);function ensureExists(e,a,n){a.forEach((a=>{if(!n.exists((0,i.join)(e,a)))throw new Error((0,l.t)("error.requiredProjectFileNotFound",{path:a}))}))}async function findProjectFiles(e,a){const n={},o=e.split(i.sep);for(;o.length>0&&(!n.packageJson||!n.ui5Yaml||!n.ui5LocalYaml||!n.ui5MockYaml);){const e=o.join(i.sep);!n.packageJson&&a.exists((0,i.join)(e,"package.json"))&&(n.packageJson=(0,i.join)(e,"package.json")),!n.ui5Yaml&&a.exists((0,i.join)(e,"ui5.yaml"))&&(n.ui5Yaml=(0,i.join)(e,"ui5.yaml")),!n.ui5LocalYaml&&a.exists((0,i.join)(e,"ui5-local.yaml"))&&(n.ui5LocalYaml=(0,i.join)(e,"ui5-local.yaml")),!n.ui5MockYaml&&a.exists((0,i.join)(e,"ui5-mock.yaml"))&&(n.ui5MockYaml=(0,i.join)(e,"ui5-mock.yaml")),o.pop()}return n}},40963:(e,a)=>{var n,i;Object.defineProperty(a,"__esModule",{value:!0}),a.ServiceType=a.OdataVersion=void 0,function(e){e.v2="2",e.v4="4"}(n||(a.OdataVersion=n={})),function(e){e.EDMX="edmx",e.CDS="cds"}(i||(a.ServiceType=i={}))},37089:(e,a,n)=>{Object.defineProperty(a,"__esModule",{value:!0}),a.addServicesData=async function addServicesData(e,a,n,i,d){let u,p,m;a.ui5Yaml&&(u=await r.UI5Config.newInstance(d.read(a.ui5Yaml)),extendBackendMiddleware(d,i,u,a.ui5Yaml),a.ui5LocalYaml&&(p=await r.UI5Config.newInstance(d.read(a.ui5LocalYaml)),extendBackendMiddleware(d,i,p,a.ui5LocalYaml)));if(i.metadata){const l=await(0,o.getWebappPath)(e,d);if(a.ui5Yaml&&u){const n={webappPath:l};await(0,s.generateMockserverConfig)(e,n,d),await generateMockserverMiddlewareBasedOnUi5MockYaml(d,a.ui5Yaml,a.ui5LocalYaml,p),a.ui5MockYaml&&(m=await r.UI5Config.newInstance(d.read(a.ui5MockYaml)),extendBackendMiddleware(d,i,m,a.ui5MockYaml))}await(0,c.writeLocalServiceAnnotationXMLFiles)(d,l,n,i)}a.packageJson&&a.ui5Yaml&&(0,l.updatePackageJson)(a.packageJson,d,!!i.metadata);a.ui5LocalYaml&&p&&d.write(a.ui5LocalYaml,p.toString());await(0,c.writeRemoteServiceAnnotationXmlFiles)(d,e,i.name??"mainService",i.annotations)},a.updateServicesData=async function updateServicesData(e,a,n,i,l){let d,u,p;l&&(a.ui5Yaml&&(d=await r.UI5Config.newInstance(i.read(a.ui5Yaml)),extendBackendMiddleware(i,n,d,a.ui5Yaml,!0)),a.ui5LocalYaml&&(u=await r.UI5Config.newInstance(i.read(a.ui5LocalYaml)),extendBackendMiddleware(i,n,u,a.ui5LocalYaml,!0)));if(n.metadata){const m=await(0,o.getWebappPath)(e,i);if(a.ui5MockYaml&&a.ui5Yaml&&d&&l){const o={webappPath:m,packageJsonConfig:{skip:!0},ui5MockYamlConfig:{overwrite:!0}};await(0,s.generateMockserverConfig)(e,o,i),await generateMockserverMiddlewareBasedOnUi5MockYaml(i,a.ui5Yaml,a.ui5LocalYaml,u),a.ui5MockYaml&&(p=await r.UI5Config.newInstance(i.read(a.ui5MockYaml)),extendBackendMiddleware(i,n,p,a.ui5MockYaml,!0))}await(0,c.writeMetadata)(i,m,n)}a.ui5LocalYaml&&u&&i.write(a.ui5LocalYaml,u.toString());await(0,c.writeRemoteServiceAnnotationXmlFiles)(i,e,n.name??"mainService",n.annotations)};const i=n(16928),o=n(20787),r=n(8231),s=n(25403),c=n(25077),l=n(60999);async function generateMockserverMiddlewareBasedOnUi5MockYaml(e,a,n,s){const c=(0,i.join)((0,i.dirname)(a),o.FileName.Ui5MockYaml),l=(await r.UI5Config.newInstance(e.read(c))).findCustomMiddleware("sap-fe-mockserver");n&&e.exists(n)&&s&&l&&s.updateCustomMiddleware(l)}function extendBackendMiddleware(e,a,n,i,o=!1){if(o)n.updateBackendToFioriToolsProxydMiddleware(a.previewSettings);else try{n.addBackendToFioriToolsProxydMiddleware(a.previewSettings,a.ignoreCertError)}catch(e){if(!(e instanceof r.YAMLError&&e.code===r.yamlErrorCode.nodeNotFound||"Could not find fiori-tools-proxy"===e.message))throw e;n.addFioriToolsProxydMiddleware({backend:[a.previewSettings],ignoreCertError:a.ignoreCertError})}e.write(i,n.toString())}},39057:e=>{e.exports=JSON.parse('{"error":{"requiredProjectFileNotFound":"Invalid project structure. Cannot find required file {{-path}}","requiredProjectPropertyNotFound":"Required project property: {{-property}} was not found in file: {{-path}}","requiredServiceAlreadyExists":"A service with the {{-uri}} URI already exists. Choose another service.","unparseableXML":"Unparseable XML was specified: {{-error}}"}}')}};