@sap/generator-fiori
Version:
Create an SAPUI5 application using SAP Fiori elements or a freestyle approach
1 lines • 14.2 kB
JavaScript
;exports.id=4901,exports.ids=[4901],exports.modules={25182(e,i,a){a.d(i,{Yw:()=>p.OdataVersion,nY:()=>d,gw:()=>w,cM:()=>generate});var n=a(76760),o=a(73136),s=a(29473),r=a(76750),p=a(55550),l=a(6435),c=a(27381);const d={Worklist:"worklist",ListReportObjectPage:"lrop",AnalyticalListPage:"alp",OverviewPage:"ovp",FormEntryObjectPage:"feop",FlexibleProgrammingModel:"fpm"};class ValidationError extends Error{constructor(e){super(`Validation error: ${e}`),this.name=this.constructor.name}}const u="AnalyticalTable",m="ResponsiveTable",v="TreeTable",g="None";var f=a(85263);const y="1.65.0",escapeFLPText=e=>e.replace(/\\/g,"\\\\").replace(/(")/g,"\\$&"),O="sap/suite/ui/generic/template/lib/AppComponent",V="sap/ovp/app/Component",b="sap/fe/core/AppComponent",P={[p.OdataVersion.v2]:["sap.m","sap.ushell","sap.ui.core","sap.f","sap.ui.comp","sap.ui.generic.app","sap.suite.ui.generic.template"],[p.OdataVersion.v4]:["sap.m","sap.fe.templates"]},h={[p.OdataVersion.v2]:{[d.AnalyticalListPage]:{baseComponent:O,ui5Libs:[...P[p.OdataVersion.v2]]},[d.ListReportObjectPage]:{baseComponent:O,ui5Libs:[...P[p.OdataVersion.v2]]},[d.OverviewPage]:{baseComponent:V,ui5Libs:[...P[p.OdataVersion.v2],"sap.ovp","sap.ui.rta","sap.ui.layout"]},[d.Worklist]:{baseComponent:O,ui5Libs:[...P[p.OdataVersion.v2],"sap.collaboration"]}},[p.OdataVersion.v4]:{[d.ListReportObjectPage]:{baseComponent:b,ui5Libs:[...P[p.OdataVersion.v4],"sap.ushell"],manifestLibs:[...P[p.OdataVersion.v4]]},[d.FormEntryObjectPage]:{baseComponent:b,ui5Libs:[...P[p.OdataVersion.v4],"sap.ushell"],manifestLibs:[...P[p.OdataVersion.v4]]},[d.AnalyticalListPage]:{baseComponent:b,ui5Libs:[...P[p.OdataVersion.v4],"sap.ushell"],manifestLibs:[...P[p.OdataVersion.v4]]},[d.Worklist]:{baseComponent:b,ui5Libs:[...P[p.OdataVersion.v4],"sap.ushell"],manifestLibs:[...P[p.OdataVersion.v4]]},[d.OverviewPage]:{baseComponent:V,ui5Libs:[...P[p.OdataVersion.v4],"sap.ushell","sap.ovp","sap.ui.rta","sap.ui.layout"],manifestLibs:[...P[p.OdataVersion.v4],"sap.ovp","sap.ui.rta","sap.ui.layout"]},[d.FlexibleProgrammingModel]:{baseComponent:b,ui5Libs:[...P[p.OdataVersion.v4],"sap.fe.core","sap.ushell"],manifestLibs:["sap.m","sap.fe.core"]}}};function getTemplateUi5Libs(e,i){return h[i][e]?.ui5Libs??[]}function getTemplateManifestLibs(e,i){return h[i][e]?.manifestLibs??[]}const w={[d.Worklist]:{supportedODataVersions:[p.OdataVersion.v2,p.OdataVersion.v4],minimumUi5Version:{[p.OdataVersion.v2]:y,[p.OdataVersion.v4]:"1.99.0"},annotationGenerationSupport:{[p.OdataVersion.v4]:!0}},[d.ListReportObjectPage]:{supportedODataVersions:[p.OdataVersion.v2,p.OdataVersion.v4],minimumUi5Version:{[p.OdataVersion.v2]:y,[p.OdataVersion.v4]:"1.84.0"},annotationGenerationSupport:{[p.OdataVersion.v4]:!0}},[d.AnalyticalListPage]:{supportedODataVersions:[p.OdataVersion.v2,p.OdataVersion.v4],minimumUi5Version:{[p.OdataVersion.v2]:y,[p.OdataVersion.v4]:"1.90.0"}},[d.OverviewPage]:{supportedODataVersions:[p.OdataVersion.v2,p.OdataVersion.v4],minimumUi5Version:{[p.OdataVersion.v2]:y,[p.OdataVersion.v4]:"1.96.8"}},[d.FormEntryObjectPage]:{supportedODataVersions:[p.OdataVersion.v4],minimumUi5Version:{[p.OdataVersion.v4]:"1.90.0"},annotationGenerationSupport:{[p.OdataVersion.v4]:!0}},[d.FlexibleProgrammingModel]:{supportedODataVersions:[p.OdataVersion.v4],minimumUi5Version:{[p.OdataVersion.v4]:"1.94.0"}}};var T=a(68801);const L=JSON.parse('{"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`."},"warn":{"invalidTypeForAnnotationGeneration":"The provided option: `addAnnotations` is not supported for the specified template: \'{{ templateType }}\' and OData version: \'{{ odataVersion }}\'. Generation will continue but additional annotations will not be added."},"error":{"unsupportedOdataVersion":"The OData version of the specified service: {{ serviceVersion }} is not supported by the template type: {{ templateType }}.","unsupportedUI5Version":"The specified `feApp.ui5` property: \'{{ versionProperty }}\' - {{ ui5Version }} is not supported by the template type: {{ templateType }}. Please specify {{minRequiredUI5Version}} or higher.","invalidUI5Version":"The specified `feApp.ui5` property: \'{{ versionProperty }}\' - {{ ui5Version }} is not a valid semantic version.","missingRequiredProperty":"A property required for application generation is not specified: \'{{ propertyName }}\'.","errorGeneratingDefaultAnnotations":"An error occurred generating the default annotations."}}'),U="fiori-freestyle-writer",j=T.createInstance();async function initI18n(){await j.init({resources:{en:{[U]:L}},lng:"en",fallbackLng:"en",defaultNS:U,ns:[U],showSupportNotice:!1})}function t(e,i){return j.t(e,i)}initI18n().catch(()=>{});var A=a(63422);const E=[{annotation:"UI.Note",library:"sap.nw.core.gbt.notes.lib.reuse"}];var I=a(94443);const S=(0,n.dirname)((0,o.fileURLToPath)(require("node:url").pathToFileURL(__filename).href)),x="test/flp.html";function getManifestLibs(e,i,a){return[...getTemplateManifestLibs(e,i)].concat(a??[])}function setFioriAppDefaults(e,i,a){e.baseComponent=e.baseComponent||function getBaseComponent(e,i){return h[i][e]?.baseComponent}(i,a),e.flpAction=e.flpAction||"tile",e.flpAppId=e.flpAppId||(0,I.getFlpId)(e.id,e.flpAction)}function setAppDefaults(e){if(!e.app.sourceTemplate?.version||!e.app.sourceTemplate?.id){const i=A.sync({cwd:S});e.app.sourceTemplate={id:`${i?.packageJson.name}:${e.template.type}`,version:i?.packageJson.version,toolsId:e.app.sourceTemplate?.toolsId}}setFioriAppDefaults(e.app,e.template.type,e.service.version);const i=e.service.version===p.OdataVersion.v4&&e.service.metadata?function getAnnotationV4Libs(e){const i=[],a=new RegExp(E.map(e=>e.annotation).join("|"),"g").exec(e);return a?.forEach(e=>{const a=E.find(i=>i.annotation===e);a&&i.push(a.library)}),Array.from(i)}(e.service.metadata):[];var a,n,o;e.ui5={...e.ui5,ui5Libs:(a=e.template.type,n=e.service.version,o=e.ui5?.ui5Libs,[...getTemplateUi5Libs(a,n)].concat(o??[])),manifestLibs:getManifestLibs(e.template.type,e.service.version,e.ui5?.manifestLibs),customUi5Libs:i};let s=e.service.type;return s||=p.ServiceType.EDMX,s!==p.ServiceType.EDMX||e.service.localAnnotationsName||(e.service.localAnnotationsName="annotation"),e.template.type===d.OverviewPage&&(e.service.model="mainModel"),e.ui5=e.ui5??{},e.ui5.minUI5Version||(e.ui5.minUI5Version=e.ui5.version??w[e.template.type].minimumUi5Version[e.service.version]),e.appOptions=e.appOptions??{},!1!==e.appOptions.sapux&&(e.appOptions.sapux=!0),e}var F=a(38075);var N=a(88167),R=a(31114);function getAnnotationFilePath(e,i){if(i){return`${i.appPath??(0,I.getCapFolderPathsSync)(i.projectPath).app}${n.sep}${e}${n.sep}annotations.cds`}return`webapp${n.sep}annotations${n.sep}annotation.xml`}const k=(0,n.dirname)((0,o.fileURLToPath)(require("node:url").pathToFileURL(__filename).href));function getTypeScriptIgnoreGlob(e,i){let a=[];const n=!!e.ui5?.version&&f.gte(i,"1.108.0");return a=["**/*.js"],e.service.version===p.OdataVersion.v2?n&&a.push("**/ui5.d.ts"):e.template.type!==d.OverviewPage&&a.push("**/ui5.d.ts"),a}async function generate(e,i,a,o){await initI18n();const y=c(i);!function validateRequiredProperties(e){if(!e.service)throw new ValidationError(t("error.missingRequiredProperty",{propertyName:"FioriElementsApp.service"}))}(y),setAppDefaults(y),a=await(0,r.cM)(e,y,a),y.template.settings=function setDefaultTemplateSettings(e,i){const a=e.settings;if(e.type===d.AnalyticalListPage){const n=e.settings;if(Object.assign(a,{tableType:n.tableType??u}),i===p.OdataVersion.v4){const i=e.settings;return Object.assign(a,{selectionMode:i.selectionMode??g}),a}if(i===p.OdataVersion.v2){const i=e.settings;return Object.assign(a,{multiSelect:i.multiSelect,qualifier:i.qualifier,autoHide:i.autoHide,smartVariantManagement:i.smartVariantManagement}),a}}else if(e.type===d.ListReportObjectPage||e.type===d.Worklist){const i=e.settings;Object.assign(a,{tableType:i.tableType??m}),i.tableType!==v&&delete i.hierarchyQualifier}return a}(y.template,y.service.version),function validateApp(e){if(e.service.version&&!w[e.template.type].supportedODataVersions.includes(e.service.version))throw new ValidationError(t("error.unsupportedOdataVersion",{serviceVersion:e.service.version,templateType:e.template.type}));let i,a=null;if(e.ui5?.version&&(a=f.coerce(e.ui5?.version),!a))throw new ValidationError(t("error.invalidUI5Version",{versionProperty:"version",ui5Version:e.ui5?.version}));const n=w[e.template.type].minimumUi5Version[e.service.version];if(e.ui5?.minUI5Version){if(i=f.coerce(e.ui5?.minUI5Version),!i)throw new ValidationError(t("error.invalidUI5Version",{versionProperty:"minUI5Version",ui5Version:e.ui5?.minUI5Version}))}else i=f.coerce(n);if(a&&f.lt(a,n))throw new ValidationError(t("error.unsupportedUI5Version",{versionProperty:"version",ui5Version:e.ui5?.version,templateType:e.template.type,minRequiredUI5Version:n}));if(f.lt(i,n))throw new ValidationError(t("error.unsupportedUI5Version",{versionProperty:"minUI5Version",ui5Version:e.ui5?.minUI5Version,templateType:e.template.type,minRequiredUI5Version:n}))}(y),await(0,p.generate)(e,y.service,a);const O=f.coerce(y.ui5?.version),V=(0,n.join)(k,"..","templates"),b=[...!0===y.appOptions?.typescript?getTypeScriptIgnoreGlob(y,O):["**/*.ts"],...y.appOptions?.useVirtualPreviewEndpoints?["**/webapp/test/**"]:[]];y.appOptions?.useVirtualPreviewEndpoints&&function setVirtualEndpointDefaults(e){e.app.flpAppId="app-preview",e.app.startFile=x,e.app.localStartFile=x}(y);const P="EDMXBackend"===y.app.projectType,{uShellBootstrapResourceUrl:h,uiBootstrapResourceUrl:T}=(0,I.getBootstrapResourceUrls)(P,y.ui5?.frameworkUrl,y.ui5?.version),L=P?y.ui5?.ui5Libs:void 0,U=function getTemplateOptions(e,i,a){const n=f.coerce(a);return{changesPreview:!(!e||!a)&&f.lt(n,"1.78.0"),changesLoader:e&&i===p.OdataVersion.v2}}(P,y.service.version,y.ui5?.version),j={...y,templateOptions:U,uShellBootstrapResourceUrl:h,uiBootstrapResourceUrl:T,ui5Libs:L};a.copyTpl((0,n.join)(V,"common","add","**/*.*"),e,{...j,escapeFLPText},void 0,{globOptions:{ignore:b,dot:!0}}),a.copyTpl((0,n.join)(V,"common","add","**/*.*"),e,{...j,templateOptions:U,escapeFLPText},void 0,{globOptions:{ignore:b,dot:!0}});const A=(0,n.join)(e,"package.json");if(a.extendJSON(A,JSON.parse((0,s.render)(a.read((0,n.join)(V,"common","extend","package.json")),y,{}))),y.template.type===d.FlexibleProgrammingModel)await async function generateFpmConfig(e,i,a){const n=e.template.settings;await(0,F.Uy)(i,{entity:n.entityConfig.mainEntityName,name:n.pageName,minUI5Version:e.ui5?.minUI5Version,typescript:e.appOptions?.typescript,pageBuildingBlockTitle:n.pageBuildingBlockTitle},a)}(y,e,a);else{const i=(0,n.join)(V,`v${y.service?.version}`);[(0,n.join)(i,"common","add"),(0,n.join)(i,y.template.type,"add")].forEach(i=>{a.copyTpl((0,n.join)(i,"**/*.*"),e,y,{},{ignoreNoMatch:!0,globOptions:{ignore:b,dot:!0}})})}!function extendManifestJson(e,i,a,o){let r=o.template.type;if(o.service.version===p.OdataVersion.v4&&[d.FormEntryObjectPage,d.AnalyticalListPage,d.ListReportObjectPage,d.Worklist].includes(o.template.type)){r=d.ListReportObjectPage;const e=f.coerce(o.ui5?.minUI5Version);if(!e||f.gte(e,"1.94.0")){const e=o.template.settings.entityConfig;e.mainEntityParameterName&&(e.navigationEntity=void 0),e.contextPath=e.mainEntityParameterName?`/${e.mainEntityName}/${e.mainEntityParameterName}`:`/${e.mainEntityName}`,e.navigationEntity?.EntitySet&&(e.navigationEntity.contextPath=`${e.contextPath}/${e.navigationEntity.Name}`)}}const l={...o.template.settings,defaultModel:o.service.model,type:o.template.type},c=[(0,n.join)(a,"common","extend","webapp"),(0,n.join)(a,r,"extend","webapp"),(0,n.join)(a,`v${o.service.version}`,r,"extend","webapp"),(0,n.join)(a,`v${o.service.version}`,"common","extend","webapp")],u=(0,n.join)(i,"webapp","manifest.json");c.forEach(i=>{const a=(0,n.join)(i,"manifest.json");e.exists(a)&&e.extendJSON(u,JSON.parse((0,s.render)(e.read(a),l,{})))})}(a,e,V,y);const E=JSON.parse(a.read(A)),S=function shouldAddTest(e,i){return!(!i||e?.version!==p.OdataVersion.v4||!e?.metadata&&e?.type!==p.ServiceType.CDS)}(y.service,y.appOptions?.addTests);if(E.scripts=P?Object.assign(E.scripts??{},{...(0,I.getPackageScripts)({localOnly:!y.service?.url,addMock:!!y.service?.metadata,addTest:S,flpAppId:y.app.flpAppId,startFile:y.app?.startFile,localStartFile:y.app?.localStartFile,generateIndex:y.appOptions?.generateIndex,supportVirtualEndpoints:y.appOptions?.useVirtualPreviewEndpoints})}):{"deploy-config":"npx -p @sap/ux-ui5-tooling fiori add deploy-config cf"},a.writeJSON(A,E),y.service.capService){const i={appRoot:e,packageName:y.package.name??"",appId:y.app.id,sapux:y.appOptions?.sapux,enableCdsUi5Plugin:y.appOptions?.addCdsUi5Plugin,enableTypescript:y.appOptions?.typescript,disableRootPackageJsonUpdates:y.appOptions?.disableCapRootPkgJsonUpdates};await(0,N.dK)(a,y.service.capService,i)}if(y.appOptions?.addAnnotations&&await async function writeAnnotations(e,i,a,n){if(w[i.template.type]?.annotationGenerationSupport?.[i.service.version]){const{settings:o}=i.template,{capService:s}=i.service,{name:r}=i.package??{},p=o?.entityConfig?.mainEntityName??"",l=i.template.type===d.ListReportObjectPage||i.template.type===d.Worklist;let c="mainService",u=e;s&&(c=s.serviceName,u=s.projectPath);const m={entitySetName:p,annotationFilePath:getAnnotationFilePath(r,s),addFacets:!0,addLineItems:l,addValueHelps:!!s},v={serviceName:c,appName:r,project:u};try{await(0,R.g)(a,v,m)}catch(e){n?.error(`${t("error.errorGeneratingDefaultAnnotations")} ${e}`)}}else n?.warn(t("warn.invalidTypeForAnnotationGeneration",{templateType:i.template.type,odataVersion:i.service.version}))}(e,y,a,o),S){const n=function getOpaConfig({useVirtualPreviewEndpoints:e},i){return{htmlTarget:`test/${e?"flp":"flpSandbox"}.html#${i}`,useVirtualPreviewEndpoints:e}}({useVirtualPreviewEndpoints:y.appOptions?.useVirtualPreviewEndpoints},y.app.flpAppId);await(0,l.fY)(e,{...n,enableTypeScript:y.appOptions?.typescript},i.service.metadata,a,o)}return a}}};