UNPKG

@sap/generator-fiori

Version:

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

1 lines 18.5 kB
"use strict";exports.id=4901,exports.ids=[4901],exports.modules={98524(e,i){Object.defineProperty(i,"__esModule",{value:!0}),i.annotationLibs=void 0,i.getAnnotationV4Libs=function getAnnotationV4Libs(e){const n=[],a=new RegExp(i.annotationLibs.map(e=>e.annotation).join("|"),"g").exec(e);return a?.forEach(e=>{const a=i.annotationLibs.find(i=>i.annotation===e);a&&n.push(a.library)}),Array.from(n)},i.annotationLibs=[{annotation:"UI.Note",library:"sap.nw.core.gbt.notes.lib.reuse"}]},62733(e,i,n){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(i,"__esModule",{value:!0}),i.setVirtualEndpointDefaults=function setVirtualEndpointDefaults(e){e.app.flpAppId="app-preview",e.app.startFile=c,e.app.localStartFile=c},i.setDefaultTemplateSettings=function setDefaultTemplateSettings(e,i){const n=e.settings;if(e.type===s.TemplateType.AnalyticalListPage){const a=e.settings;if(Object.assign(n,{tableType:a.tableType??s.TableType.ANALYTICAL}),i===o.OdataVersion.v4){const i=e.settings;return Object.assign(n,{selectionMode:i.selectionMode??s.TableSelectionMode.NONE}),n}if(i===o.OdataVersion.v2){const i=e.settings;return Object.assign(n,{multiSelect:i.multiSelect,qualifier:i.qualifier,autoHide:i.autoHide,smartVariantManagement:i.smartVariantManagement}),n}}else if(e.type===s.TemplateType.ListReportObjectPage||e.type===s.TemplateType.Worklist){const i=e.settings;Object.assign(n,{tableType:i.tableType??s.TableType.RESPONSIVE}),i.tableType!==s.TableType.TREE&&delete i.hierarchyQualifier}return n},i.getUi5Libs=getUi5Libs,i.getManifestLibs=getManifestLibs,i.setAppDefaults=function setAppDefaults(e){if(!e.app.sourceTemplate?.version||!e.app.sourceTemplate?.id){const i=r.default.sync({cwd:__dirname});e.app.sourceTemplate={id:`${i?.packageJson.name}:${e.template.type}`,version:i?.packageJson.version,toolsId:e.app.sourceTemplate?.toolsId}}!function setFioriAppDefaults(e,i,n){e.baseComponent=e.baseComponent||(0,p.getBaseComponent)(i,n),e.flpAction=e.flpAction||m,e.flpAppId=e.flpAppId||(0,d.getFlpId)(e.id,e.flpAction)}(e.app,e.template.type,e.service.version);const i=e.service.version===o.OdataVersion.v4&&e.service.metadata?(0,l.getAnnotationV4Libs)(e.service.metadata):[];e.ui5={...e.ui5,ui5Libs:getUi5Libs(e.template.type,e.service.version,e.ui5?.ui5Libs),manifestLibs:getManifestLibs(e.template.type,e.service.version,e.ui5?.manifestLibs),customUi5Libs:i};let n=e.service.type;n||=o.ServiceType.EDMX,n!==o.ServiceType.EDMX||e.service.localAnnotationsName||(e.service.localAnnotationsName="annotation");e.template.type===s.TemplateType.OverviewPage&&(e.service.model="mainModel");e.ui5=e.ui5??{},e.ui5.minUI5Version||(e.ui5.minUI5Version=e.ui5.version??p.TemplateTypeAttributes[e.template.type].minimumUi5Version[e.service.version]);e.appOptions=e.appOptions??{},!1!==e.appOptions.sapux&&(e.appOptions.sapux=!0);return e},i.getTemplateOptions=function getTemplateOptions(e,i,n){const a=u.default.coerce(n),r=!(!e||!n)&&u.default.lt(a,p.changesPreviewToVersion),s=e&&i===o.OdataVersion.v2;return{changesPreview:r,changesLoader:s}};const o=n(10894),r=a(n(63422)),s=n(53843),p=n(7428),l=n(98524),u=a(n(85263)),d=n(58012),c="test/flp.html",m="tile";function getUi5Libs(e,i,n){return[...(0,p.getTemplateUi5Libs)(e,i)].concat(n??[])}function getManifestLibs(e,i,n){return[...(0,p.getTemplateManifestLibs)(e,i)].concat(n??[])}},33431(e,i,n){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(i,"__esModule",{value:!0}),i.extendManifestJson=function extendManifestJson(e,i,n,a){let u=a.template.type;if(a.service.version===r.OdataVersion.v4&&[o.TemplateType.FormEntryObjectPage,o.TemplateType.AnalyticalListPage,o.TemplateType.ListReportObjectPage,o.TemplateType.Worklist].includes(a.template.type)){u=o.TemplateType.ListReportObjectPage;const e=l.default.coerce(a.ui5?.minUI5Version);if(!e||l.default.gte(e,"1.94.0")){const e=a.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 d={...a.template.settings,defaultModel:a.service.model,type:a.template.type},c=[(0,s.join)(n,"common","extend","webapp"),(0,s.join)(n,u,"extend","webapp"),(0,s.join)(n,`v${a.service.version}`,u,"extend","webapp"),(0,s.join)(n,`v${a.service.version}`,"common","extend","webapp")],m=(0,s.join)(i,"webapp","manifest.json");c.forEach(i=>{const n=(0,s.join)(i,"manifest.json");e.exists(n)&&e.extendJSON(m,JSON.parse((0,p.render)(e.read(n),d,{})))})};const o=n(53843),r=n(10894),s=n(76760),p=n(29473),l=a(n(85263))},7428(e,i,n){Object.defineProperty(i,"__esModule",{value:!0}),i.TemplateTypeAttributes=i.escapeFLPText=i.changesPreviewToVersion=i.minSupportedUI5VersionV4=i.minSupportedUI5Version=void 0,i.getBaseComponent=function getBaseComponent(e,i){return l[i][e]?.baseComponent},i.getTemplateUi5Libs=function getTemplateUi5Libs(e,i){return l[i][e]?.ui5Libs??[]},i.getTemplateManifestLibs=function getTemplateManifestLibs(e,i){return l[i][e]?.manifestLibs??[]};const a=n(53843);i.minSupportedUI5Version="1.65.0",i.minSupportedUI5VersionV4="1.84.0",i.changesPreviewToVersion="1.78.0";i.escapeFLPText=e=>e.replace(/\\/g,"\\\\").replace(/(")/g,"\\$&");const o="sap/suite/ui/generic/template/lib/AppComponent",r="sap/ovp/app/Component",s="sap/fe/core/AppComponent",p={[a.OdataVersion.v2]:["sap.m","sap.ushell","sap.ui.core","sap.f","sap.ui.comp","sap.ui.generic.app","sap.suite.ui.generic.template"],[a.OdataVersion.v4]:["sap.m","sap.fe.templates"]},l={[a.OdataVersion.v2]:{[a.TemplateType.AnalyticalListPage]:{baseComponent:o,ui5Libs:[...p[a.OdataVersion.v2]]},[a.TemplateType.ListReportObjectPage]:{baseComponent:o,ui5Libs:[...p[a.OdataVersion.v2]]},[a.TemplateType.OverviewPage]:{baseComponent:r,ui5Libs:[...p[a.OdataVersion.v2],"sap.ovp","sap.ui.rta","sap.ui.layout"]},[a.TemplateType.Worklist]:{baseComponent:o,ui5Libs:[...p[a.OdataVersion.v2],"sap.collaboration"]}},[a.OdataVersion.v4]:{[a.TemplateType.ListReportObjectPage]:{baseComponent:s,ui5Libs:[...p[a.OdataVersion.v4],"sap.ushell"],manifestLibs:[...p[a.OdataVersion.v4]]},[a.TemplateType.FormEntryObjectPage]:{baseComponent:s,ui5Libs:[...p[a.OdataVersion.v4],"sap.ushell"],manifestLibs:[...p[a.OdataVersion.v4]]},[a.TemplateType.AnalyticalListPage]:{baseComponent:s,ui5Libs:[...p[a.OdataVersion.v4],"sap.ushell"],manifestLibs:[...p[a.OdataVersion.v4]]},[a.TemplateType.Worklist]:{baseComponent:s,ui5Libs:[...p[a.OdataVersion.v4],"sap.ushell"],manifestLibs:[...p[a.OdataVersion.v4]]},[a.TemplateType.OverviewPage]:{baseComponent:r,ui5Libs:[...p[a.OdataVersion.v4],"sap.ushell","sap.ovp","sap.ui.rta","sap.ui.layout"],manifestLibs:[...p[a.OdataVersion.v4],"sap.ovp","sap.ui.rta","sap.ui.layout"]},[a.TemplateType.FlexibleProgrammingModel]:{baseComponent:s,ui5Libs:[...p[a.OdataVersion.v4],"sap.fe.core","sap.ushell"],manifestLibs:["sap.m","sap.fe.core"]}}};i.TemplateTypeAttributes={[a.TemplateType.Worklist]:{supportedODataVersions:[a.OdataVersion.v2,a.OdataVersion.v4],minimumUi5Version:{[a.OdataVersion.v2]:i.minSupportedUI5Version,[a.OdataVersion.v4]:"1.99.0"},annotationGenerationSupport:{[a.OdataVersion.v4]:!0}},[a.TemplateType.ListReportObjectPage]:{supportedODataVersions:[a.OdataVersion.v2,a.OdataVersion.v4],minimumUi5Version:{[a.OdataVersion.v2]:i.minSupportedUI5Version,[a.OdataVersion.v4]:"1.84.0"},annotationGenerationSupport:{[a.OdataVersion.v4]:!0}},[a.TemplateType.AnalyticalListPage]:{supportedODataVersions:[a.OdataVersion.v2,a.OdataVersion.v4],minimumUi5Version:{[a.OdataVersion.v2]:i.minSupportedUI5Version,[a.OdataVersion.v4]:"1.90.0"}},[a.TemplateType.OverviewPage]:{supportedODataVersions:[a.OdataVersion.v2,a.OdataVersion.v4],minimumUi5Version:{[a.OdataVersion.v2]:i.minSupportedUI5Version,[a.OdataVersion.v4]:"1.96.8"}},[a.TemplateType.FormEntryObjectPage]:{supportedODataVersions:[a.OdataVersion.v4],minimumUi5Version:{[a.OdataVersion.v4]:"1.90.0"},annotationGenerationSupport:{[a.OdataVersion.v4]:!0}},[a.TemplateType.FlexibleProgrammingModel]:{supportedODataVersions:[a.OdataVersion.v4],minimumUi5Version:{[a.OdataVersion.v4]:"1.94.0"}}}},41845(e,i,n){Object.defineProperty(i,"__esModule",{value:!0}),i.generateFpmConfig=async function generateFpmConfig(e,i,n){const o=e.template.settings;await(0,a.generateCustomPage)(i,{entity:o.entityConfig.mainEntityName,name:o.pageName,minUI5Version:e.ui5?.minUI5Version,typescript:e.appOptions?.typescript,pageBuildingBlockTitle:o.pageBuildingBlockTitle},n)};const a=n(96692)},94436(e,i,n){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(i,"__esModule",{value:!0}),i.i18n=void 0,i.initI18n=initI18n,i.t=function t(e,n){return i.i18n.t(e,n)};const o=a(n(68801)),r=a(n(13406)),s="fiori-freestyle-writer";async function initI18n(){await i.i18n.init({resources:{en:{[s]:r.default}},lng:"en",fallbackLng:"en",defaultNS:s,ns:[s],showSupportNotice:!1})}i.i18n=o.default.createInstance(),initI18n().catch(()=>{})},74174(e,i,n){var a=this&&this.__createBinding||(Object.create?function(e,i,n,a){void 0===a&&(a=n);var o=Object.getOwnPropertyDescriptor(i,n);o&&!("get"in o?!i.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return i[n]}}),Object.defineProperty(e,a,o)}:function(e,i,n,a){void 0===a&&(a=n),e[a]=i[n]}),o=this&&this.__exportStar||function(e,i){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(i,n)||a(i,e,n)},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(i,"__esModule",{value:!0}),i.minSupportedUI5VersionV4=i.minSupportedUI5Version=i.TemplateTypeAttributes=i.V2_FE_TYPES_AVAILABLE=void 0,i.generate=async function generate(e,i,n,a){await(0,b.initI18n)();const o=(0,c.default)(i);(0,v.validateRequiredProperties)(o),(0,f.setAppDefaults)(o),n=await(0,l.generate)(e,o,n),o.template.settings=(0,f.setDefaultTemplateSettings)(o.template,o.service.version),(0,v.validateApp)(o),await(0,u.generate)(e,o.service,n);const r=T.default.coerce(o.ui5?.version),h=(0,s.join)(__dirname,"..","templates"),A=[...!0===o.appOptions?.typescript?getTypeScriptIgnoreGlob(o,r):["**/*.ts"],...o.appOptions?.useVirtualPreviewEndpoints?["**/webapp/test/**"]:[]];o.appOptions?.useVirtualPreviewEndpoints&&(0,f.setVirtualEndpointDefaults)(o);const w="EDMXBackend"===o.app.projectType,{uShellBootstrapResourceUrl:I,uiBootstrapResourceUrl:E}=(0,V.getBootstrapResourceUrls)(w,o.ui5?.frameworkUrl,o.ui5?.version),S=w?o.ui5?.ui5Libs:void 0,U=(0,f.getTemplateOptions)(w,o.service.version,o.ui5?.version),j={...o,templateOptions:U,uShellBootstrapResourceUrl:I,uiBootstrapResourceUrl:E,ui5Libs:S};n.copyTpl((0,s.join)(h,"common","add","**/*.*"),e,{...j,escapeFLPText:y.escapeFLPText},void 0,{globOptions:{ignore:A,dot:!0}}),n.copyTpl((0,s.join)(h,"common","add","**/*.*"),e,{...j,templateOptions:U,escapeFLPText:y.escapeFLPText},void 0,{globOptions:{ignore:A,dot:!0}});const _=(0,s.join)(e,"package.json");if(n.extendJSON(_,JSON.parse((0,p.render)(n.read((0,s.join)(h,"common","extend","package.json")),o,{}))),o.template.type===m.TemplateType.FlexibleProgrammingModel)await(0,O.generateFpmConfig)(o,e,n);else{const i=(0,s.join)(h,`v${o.service?.version}`);[(0,s.join)(i,"common","add"),(0,s.join)(i,o.template.type,"add")].forEach(i=>{n.copyTpl((0,s.join)(i,"**/*.*"),e,o,{},{ignoreNoMatch:!0,globOptions:{ignore:A,dot:!0}})})}(0,g.extendManifestJson)(n,e,h,o);const M=JSON.parse(n.read(_)),x=function shouldAddTest(e,i){return!(!i||e?.version!==u.OdataVersion.v4||!e?.metadata&&e?.type!==u.ServiceType.CDS)}(o.service,o.appOptions?.addTests);M.scripts=w?Object.assign(M.scripts??{},{...(0,V.getPackageScripts)({localOnly:!o.service?.url,addMock:!!o.service?.metadata,addTest:x,flpAppId:o.app.flpAppId,startFile:o.app?.startFile,localStartFile:o.app?.localStartFile,generateIndex:o.appOptions?.generateIndex,supportVirtualEndpoints:o.appOptions?.useVirtualPreviewEndpoints})}):{"deploy-config":"npx -p @sap/ux-ui5-tooling fiori add deploy-config cf"};if(n.writeJSON(_,M),o.service.capService){const i={appRoot:e,packageName:o.package.name??"",appId:o.app.id,sapux:o.appOptions?.sapux,enableCdsUi5Plugin:o.appOptions?.addCdsUi5Plugin,enableTypescript:o.appOptions?.typescript,disableRootPackageJsonUpdates:o.appOptions?.disableCapRootPkgJsonUpdates};await(0,P.applyCAPUpdates)(n,o.service.capService,i)}o.appOptions?.addAnnotations&&await(0,L.writeAnnotations)(e,o,n,a);if(x){const r=function getOpaConfig({useVirtualPreviewEndpoints:e},i){return{htmlTarget:`test/${e?"flp":"flpSandbox"}.html#${i}`}}({useVirtualPreviewEndpoints:o.appOptions?.useVirtualPreviewEndpoints},o.app.flpAppId);await(0,d.generateOPAFiles)(e,r,i.service.metadata,n,a)}return n};const s=n(76760),p=n(29473),l=n(57727),u=n(10894),d=n(53069),c=r(n(27381)),m=n(53843),v=n(92170),f=n(62733),y=n(7428);Object.defineProperty(i,"TemplateTypeAttributes",{enumerable:!0,get:function(){return y.TemplateTypeAttributes}}),Object.defineProperty(i,"minSupportedUI5Version",{enumerable:!0,get:function(){return y.minSupportedUI5Version}}),Object.defineProperty(i,"minSupportedUI5VersionV4",{enumerable:!0,get:function(){return y.minSupportedUI5VersionV4}});const g=n(33431),T=r(n(85263)),b=n(94436),V=n(58012),O=n(41845),P=n(64872),L=n(14463);function getTypeScriptIgnoreGlob(e,n){let a=[];const o=!!e.ui5?.version&&T.default.gte(n,i.V2_FE_TYPES_AVAILABLE);return a=["**/*.js"],e.service.version===u.OdataVersion.v2?o&&a.push("**/ui5.d.ts"):e.template.type!==m.TemplateType.OverviewPage&&a.push("**/ui5.d.ts"),a}i.V2_FE_TYPES_AVAILABLE="1.108.0",o(n(53843),i)},53843(e,i,n){Object.defineProperty(i,"__esModule",{value:!0}),i.OdataVersion=i.TableSelectionMode=i.TableType=i.ValidationError=i.TemplateType=void 0,i.TemplateType={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}}i.ValidationError=ValidationError,i.TableType={GRID:"GridTable",ANALYTICAL:"AnalyticalTable",RESPONSIVE:"ResponsiveTable",TREE:"TreeTable"},i.TableSelectionMode={NONE:"None",AUTO:"Auto",MULTI:"Multi",SINGLE:"Single"};var a=n(10894);Object.defineProperty(i,"OdataVersion",{enumerable:!0,get:function(){return a.OdataVersion}})},92170(e,i,n){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(i,"__esModule",{value:!0}),i.validateApp=function validateApp(e){if(e.service.version&&!r.TemplateTypeAttributes[e.template.type].supportedODataVersions.includes(e.service.version))throw new p.ValidationError((0,s.t)("error.unsupportedOdataVersion",{serviceVersion:e.service.version,templateType:e.template.type}));let i,n=null;if(e.ui5?.version&&(n=o.default.coerce(e.ui5?.version),!n))throw new p.ValidationError((0,s.t)("error.invalidUI5Version",{versionProperty:"version",ui5Version:e.ui5?.version}));const a=r.TemplateTypeAttributes[e.template.type].minimumUi5Version[e.service.version];if(e.ui5?.minUI5Version){if(i=o.default.coerce(e.ui5?.minUI5Version),!i)throw new p.ValidationError((0,s.t)("error.invalidUI5Version",{versionProperty:"minUI5Version",ui5Version:e.ui5?.minUI5Version}))}else i=o.default.coerce(a);if(n&&o.default.lt(n,a))throw new p.ValidationError((0,s.t)("error.unsupportedUI5Version",{versionProperty:"version",ui5Version:e.ui5?.version,templateType:e.template.type,minRequiredUI5Version:a}));if(o.default.lt(i,a))throw new p.ValidationError((0,s.t)("error.unsupportedUI5Version",{versionProperty:"minUI5Version",ui5Version:e.ui5?.minUI5Version,templateType:e.template.type,minRequiredUI5Version:a}))},i.validateRequiredProperties=function validateRequiredProperties(e){if(!e.service)throw new p.ValidationError((0,s.t)("error.missingRequiredProperty",{propertyName:"FioriElementsApp.service"}))};const o=a(n(85263)),r=n(7428),s=n(94436),p=n(53843)},14463(e,i,n){Object.defineProperty(i,"__esModule",{value:!0}),i.writeAnnotations=async function writeAnnotations(e,i,n,a){if(p.TemplateTypeAttributes[i.template.type]?.annotationGenerationSupport?.[i.service.version]){const{settings:o}=i.template,{capService:p}=i.service,{name:u}=i.package??{},d=o?.entityConfig?.mainEntityName??"",c=i.template.type===r.TemplateType.ListReportObjectPage||i.template.type===r.TemplateType.Worklist;let m="mainService",v=e;p&&(m=p.serviceName,v=p.projectPath);const f={entitySetName:d,annotationFilePath:getAnnotationFilePath(u,p),addFacets:!0,addLineItems:c,addValueHelps:!!p},y={serviceName:m,appName:u,project:v};try{await(0,s.generateAnnotations)(n,y,f)}catch(e){a?.error(`${(0,l.t)("error.errorGeneratingDefaultAnnotations")} ${e}`)}}else a?.warn((0,l.t)("warn.invalidTypeForAnnotationGeneration",{templateType:i.template.type,odataVersion:i.service.version}))};const a=n(76760),o=n(58012),r=n(53843),s=n(65606),p=n(7428),l=n(94436);function getAnnotationFilePath(e,i){if(i){return`${i.appPath??(0,o.getCapFolderPathsSync)(i.projectPath).app}${a.sep}${e}${a.sep}annotations.cds`}return`webapp${a.sep}annotations${a.sep}annotation.xml`}},13406(e){e.exports=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."}}')}};