UNPKG

@sap/generator-fiori

Version:

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

5 lines (3 loc) 7.53 kB
const __esmImportMetaUrl = require('node:url').pathToFileURL(__filename).href; var W=Object.create;var p=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var K=Object.getPrototypeOf,X=Object.prototype.hasOwnProperty;var n=(e,t)=>p(e,"name",{value:t,configurable:!0});var Z=(e,t)=>{for(var i in t)p(e,i,{get:t[i],enumerable:!0})},C=(e,t,i,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of G(t))!X.call(e,r)&&r!==i&&p(e,r,{get:()=>t[r],enumerable:!(o=z(t,r))||o.enumerable});return e};var b=(e,t,i)=>(i=e!=null?W(K(e)):{},C(t||!e||!e.__esModule?p(i,"default",{value:e,enumerable:!0}):i,e)),J=e=>C(p({},"__esModule",{value:!0}),e);var me={};Z(me,{default:()=>le,generateMockserverConfig:()=>A,getMockserverConfigQuestions:()=>_,removeMockserverConfig:()=>E,t:()=>g});module.exports=J(me);var h=require("../commonlibs/mem-fs/index.js"),y=require("../commonlibs/mem-fs-editor/index.js");var x=require("node:path");function U(e,t,i){let o=(0,x.join)(t,"package.json"),r=e.readJSON(o);ee(r,i?.mockserverModule,i?.mockserverVersion),te(e,r),e.writeJSON(o,r)}n(U,"enhancePackageJson");function ee(e,t="@sap-ux/ui5-middleware-fe-mockserver",i="2"){if(e.devDependencies=e.devDependencies??{},delete e.devDependencies["@sap/ux-ui5-fe-mockserver-middleware"],e.devDependencies[t]=i,oe(e.devDependencies))Y(e);else{e.ui5||={},e.ui5.dependencies||=[];let o=e.ui5.dependencies.filter(r=>r!=="@sap/ux-ui5-fe-mockserver-middleware");o.includes(t)||o.push(t),e.ui5.dependencies=o}}n(ee,"enhanceDependencies");function te(e,t){t.scripts||={},t.scripts["start-mock"]=ie(t.scripts.start)??t.scripts["start-mock"]??'fiori run --config ./ui5-mock.yaml --open "/"'}n(te,"enhanceScripts");function ie(e){if(typeof e!="string")return;let t="fiori run",i=e.indexOf(t);if(i<0)return;let o=e.indexOf("--config",i);return o<0?e.replace(t,`${t} --config ./ui5-mock.yaml`):re(e,o)}n(ie,"copyStartScript");function oe(e){let t=!1;try{let i=e["@ui5/cli"];typeof i=="string"&&(t=Number.parseInt(i.split(".")[0].match(/\d+/)?.[0]||"0",10)>2)}catch{}return t}n(oe,"isUi5CliHigherTwo");function re(e,t){let i=t+8+1,o=e.slice(i).search(/[^\s]/)+i,r=" ",c=0;(e[o]==='"'||e[o]==="'")&&(r=e[o],c=1);let a=e.indexOf(r,o+c);return a=a===-1?e.length:a+c,`${e.substring(0,i)}./ui5-mock.yaml${e.substring(a)}`}n(re,"replaceConfig");function Y(e){let t=new Set(["@sap/ux-ui5-fe-mockserver-middleware","@sap-ux/ui5-middleware-fe-mockserver"]);e.ui5?.dependencies&&Array.isArray(e.ui5.dependencies)&&(e.ui5.dependencies=e.ui5.dependencies.filter(i=>!t.has(i)),e.ui5.dependencies.length===0&&delete e.ui5.dependencies),e.ui5&&Object.keys(e.ui5).length===0&&delete e.ui5}n(Y,"removeMockserverUi5Dependencies");function j(e,t){let i=(0,x.join)(t,"package.json"),o=e.readJSON(i);delete o.scripts?.["start-mock"],o.scripts&&Object.keys(o.scripts).length===0&&delete o.scripts,delete o.devDependencies?.["@sap/ux-ui5-fe-mockserver-middleware"],delete o.devDependencies?.["@sap-ux/ui5-middleware-fe-mockserver"],o.devDependencies&&Object.keys(o.devDependencies).length===0&&delete o.devDependencies,Y(o),e.writeJSON(i,o)}n(j,"removeFromPackageJson");var s=require("node:path"),M=require("../open-ux-shared/ui5-config/index.js"),l=require("../open-ux-shared/project-access/index.js");function ne(e){let t=e["sap.ovp"]?.globalFilterModel??"";return e["sap.ui5"]?.models?.[t]?.dataSource}n(ne,"getMainServiceDataSourceName");function I(e){let t,i=ne(e);return i&&(t=e["sap.app"].dataSources?.[i]),t}n(I,"getMainServiceDataSource");function v(e,t="OData"){let i={},o=e["sap.app"]?.dataSources??{};for(let r in o)o[r].uri&&o[r].type===t&&(i[r]=o[r]);return i}n(v,"getODataSources");async function $(e,t,i,o){let r=!!o?.overwrite,c=(0,s.join)(t,"ui5-mock.yaml"),a,u=e.readJSON((0,s.join)(i,"manifest.json")),d=Object.values(v(u,"ODataAnnotation")),w=[];d.forEach(m=>{if(m.settings?.localUri!==m.uri){let f=m.settings?.localUri;w.push({localPath:f?`.${s.posix.sep}${(0,s.relative)(t,(0,s.join)(i,f)).replaceAll(s.sep,s.posix.sep)}`:void 0,urlPath:m.uri})}});let S=v(u),k=[];for(let m in S){let f=S[m].settings?.localUri,B=o?.resolveExternalServiceReferences?.[m];k.push({serviceName:m,servicePath:S[m].uri,metadataPath:f?`.${s.posix.sep}${(0,s.relative)(t,(0,s.join)(i,f)).replaceAll(s.sep,s.posix.sep)}`:void 0,resolveExternalServiceReferences:B})}e.exists(c)?a=await ce(e,t,i,c,k,w,r):a=e.exists((0,s.join)(t,"ui5.yaml"))?await se(e,t,i,k,w):await ae(u["sap.app"]?.id||"",t,i,k,w);let Q=a.toString();e.write(c,Q)}n($,"enhanceYaml");async function F(e,t){let i=await(0,l.getWebappPath)(t,e),o=(0,s.join)(i,l.FileName.Manifest),c=e.readJSON(o)["sap.app"].dataSources;c&&Object.keys(c).forEach(u=>{let d=(0,s.join)(i,l.DirName.LocalService,u,l.DirName.Data);d&&e.delete(d)})}n(F,"removeMockDataFolders");async function ce(e,t,i,o,r,c,a=!1){let u=await M.UI5Config.newInstance(e.read(o));if(a){let d=await T(t,i,r,c);u.updateCustomMiddleware(d)}else for(let d in r)u.addServiceToMockserverMiddleware(t,i,r[d],c);return u}n(ce,"updateUi5MockYamlConfig");async function se(e,t,i,o,r){let c=await(0,l.readUi5Yaml)(t,l.FileName.Ui5Yaml,e),a=await T(t,i,o,r);return c.updateCustomMiddleware(a),c}n(se,"generateUi5MockYamlBasedOnUi5Yaml");async function ae(e,t,i,o,r){let c=await M.UI5Config.newInstance(`# yaml-language-server: $schema=https://sap.github.io/ui5-tooling/schema/ui5.yaml.json specVersion: "2.5"`);return c.setMetadata({name:e}),c.setType("application"),c.addFioriToolsProxyMiddleware({ui5:{}}),c.addFioriToolsAppReloadMiddleware(),c.addMockServerMiddleware(t,i,o,r),c}n(ae,"generateNewUi5MockYamlConfig");async function T(e,t,i,o){let r=await M.UI5Config.newInstance("");r.addMockServerMiddleware(e,t,i,o);let c=r.findCustomMiddleware("sap-fe-mockserver");if(!c)throw Error("Could not create new mockserver config");return c}n(T,"getNewMockserverMiddleware");function q(e,t){let i=(0,s.join)(t,"ui5-mock.yaml");e.exists(i)&&e.delete(i)}n(q,"removeUi5MockYaml");async function A(e,t,i){return i||(i=(0,y.create)((0,h.create)())),t.packageJsonConfig?.skip||U(i,e,t.packageJsonConfig),await $(i,e,t.webappPath,t.ui5MockYamlConfig),i}n(A,"generateMockserverConfig");async function E(e,t){return t||(t=(0,y.create)((0,h.create)())),j(t,e),q(t,e),await F(t,e),t}n(E,"removeMockserverConfig");var P=require("node:path"),R=require("../commonlibs/mem-fs/index.js"),V=require("../commonlibs/mem-fs-editor/index.js");function _(e){let t=[],i={name:"path",message:g("questions.pathToMock")};if(e?.webappPath){let o=e.fs??(0,V.create)((0,R.create)()),r=JSON.parse(o.read((0,P.join)(e.webappPath,"manifest.json"))),c=I(r)?.uri??"",a=v(r),u=[];for(let d in a)u.push({title:`${d}: ${a[d].uri}`,value:a[d].uri,description:a[d].settings?.odataVersion??void 0});u.length>0&&(i.type="select",i.choices=u,i.initial=u.findIndex(d=>d.value===c))}if(i.type||="text",t.push(i),e?.askForOverwrite){let o={type:"confirm",name:"overwrite",message:g("questions.overwrite")};t.push(o)}return t}n(_,"getMockserverConfigQuestions");var L=b(require("../commonlibs/i18next/index.js"),1);var H={questions:{pathToMock:"Path to mocked service",overwrite:"Overwrite services"}};var D="mockserver-config-writer",O;async function de(){O=L.default.createInstance({resources:{en:{[D]:H}},lng:"en",fallbackLng:"en",defaultNS:D,ns:[D],showSupportNotice:!1}),await O.init()}n(de,"initI18n");function g(e,t){return O.t(e,t)}n(g,"t");de().catch(()=>{});var le=void 0;0&&(module.exports={generateMockserverConfig,getMockserverConfigQuestions,removeMockserverConfig,t});