UNPKG

@sap/generator-fiori

Version:

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

1 lines 13.1 kB
"use strict";exports.id=2256,exports.ids=[2256],exports.modules={57328(e,i,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(i,"__esModule",{value:!0}),i.defaultUI5Libs=void 0,i.packageDefaults=function packageDefaults(e,i,a){const n={version:e||"0.0.1",description:i||"",devDependencies:{"@ui5/cli":"^4.0.33","@sap/ux-ui5-tooling":"1"}};if(a)return{...n,scripts:{start:"ui5 serve --config=ui5.yaml --open index.html","start-local":"ui5 serve --config=ui5-local.yaml --open index.html",build:"ui5 build --config=ui5.yaml --clean-dest --dest dist"}};return{...n,scripts:{}}},i.mergeApp=function mergeApp(e){return(0,u.default)({version:"0.0.1",title:(0,l.t)("text.defaultAppTitle",{id:e.id}),description:(0,l.t)("text.defaultAppDescription",{id:e.id}),baseComponent:"sap/ui/core/UIComponent",sourceTemplate:{id:e.sourceTemplate?.id??"",version:e.sourceTemplate?.version??"",toolsId:e.sourceTemplate?.toolsId}},e)},i.mergeUi5=function mergeUi5(e,i){const a=e.version??"",n=e.framework??"SAPUI5",o="SAPUI5"===n?"https://ui5.sap.com":"https://sdk.openui5.org",p={minUI5Version:(l=a,u=e.minUI5Version,u??(l||"1.60.0")),localVersion:getLocalVersion({framework:n,version:a,localVersion:e.localVersion}),version:a,framework:n,frameworkUrl:e.frameworkUrl??o};var l,u;p.descriptorVersion=getManifestVersion(p.minUI5Version,e.descriptorVersion),p.typesVersion=e.typesVersion??(i?.typescript?r.getEsmTypesVersion:r.getTypesVersion)(p.minUI5Version),p.typesPackage=(0,r.getTypesPackage)(p.typesVersion),p.ui5Theme=e.ui5Theme??"sap_fiori_3",e.manifestLibs&&e.manifestLibs.length>0&&(p.manifestLibs=(0,s.getUI5Libs)(e.manifestLibs));return p.ui5Libs=(0,s.getUI5Libs)(e.ui5Libs),{...e,...p}},i.getManifestVersion=getManifestVersion;const r=a(8231),o=n(a(33195)),s=a(45157),p=n(a(85263)),l=a(35975),u=n(a(39306));function getManifestVersion(e,i){const a=p.default.coerce(e);return i??(a&&(e=>{const i=o.default;let a=i[`${p.default.major(e)}.${p.default.minor(e)}`];if(!a){const n=Object.keys(i).filter(e=>"latest"!==e).map(e=>p.default.coerce(e)).sort((e,i)=>p.default.rcompare(e,i)),r=n[0];if(p.default.gt(e,r))a=i[`${r.major}.${r.minor}`];else{const r=n.find(i=>p.default.gt(e,i));r&&(a=i[`${r.major}.${r.minor}`])}}return a})(a))??"1.12.0"}function getLocalVersion({framework:e,version:i,localVersion:a}){if(a)return a;if(""===i)return"1.95.0";const n="SAPUI5"===e?"1.84.54":"1.52.5",r=p.default.coerce(i),o=p.default.coerce(n);return r&&o&&p.default.gt(r,o)?p.default.valid(r):n}i.defaultUI5Libs=["sap.m","sap.ui.core"]},30492(e,i,a){Object.defineProperty(i,"__esModule",{value:!0}),i.mergeWithDefaults=function mergeWithDefaults(e){(0,o.validate)(e),e.app=(0,r.mergeApp)(e.app),e.appOptions=e.appOptions||{},e.appOptions.typescript&&(e.appOptions.eslint=!0);e.ui5=(0,r.mergeUi5)(e.ui5||{},e.appOptions);const i="EDMXBackend"===e.app.projectType;e.package=(0,n.mergeObjects)((0,r.packageDefaults)(e.package.version,e.app.description,i),e.package),i||(e.package.sapuxLayer=void 0);return e};const n=a(8231),r=a(57328),o=a(14893)},45157(e,i,a){Object.defineProperty(i,"__esModule",{value:!0}),i.ui5NPMSupport=i.ui5TSSupport=i.getUI5Libs=void 0;const n=a(57328);i.getUI5Libs=e=>{const i=Array.isArray(e)?e:e?.split(",")||[];return n.defaultUI5Libs.concat(i).filter((e,i,a)=>a.indexOf(e)===i)},i.ui5TSSupport={task:{name:"ui5-tooling-transpile-task",afterTask:"replaceVersion",configuration:{debug:!0,transformModulesToUI5:{overridesToOverride:!0}}},middleware:{name:"ui5-tooling-transpile-middleware",afterMiddleware:"compression",configuration:{debug:!0,transformModulesToUI5:{overridesToOverride:!0},excludePatterns:["/Component-preload.js"]}}},i.ui5NPMSupport={task:{name:"ui5-tooling-modules-task",afterTask:"replaceVersion",configuration:{}},middleware:{name:"ui5-tooling-modules-middleware",afterMiddleware:"compression",configuration:{}}}},14893(e,i,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(i,"__esModule",{value:!0}),i.validateAppId=validateAppId,i.validateUI5Version=validateUI5Version,i.validate=function validate(e){return validateAppId(e.app.id)&&validateUI5Version(e.ui5?.version)&&validateUI5Version(e.ui5?.localVersion)&&validateUI5Version(e.ui5?.minUI5Version)};const r=n(a(85263)),o=a(35975);function validateAppId(e){if(!e)throw new Error((0,o.t)("error.missingRequiredProperty",{propertyName:"app.id"}));const i=e.match(/"/);if(i)throw new Error((0,o.t)("error.disallowedCharacters",{propertyName:"app.id",disallowedChars:`${i?.join()}`}));return!0}function validateUI5Version(e){if(e&&null===r.default.coerce(e))throw new Error((0,o.t)("error.invalidUI5Version",{version:e}));return!0}},35975(e,i,a){var n=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,a){return i.i18n.t(e,a)};const r=n(a(68801)),o=n(a(12063)),s="ui5-application-writer";async function initI18n(){await i.i18n.init({resources:{en:{[s]:o.default}},lng:"en",fallbackLng:"en",defaultNS:s,ns:[s],showSupportNotice:!1})}i.i18n=r.default.createInstance(),initI18n().catch(()=>{})},57727(e,i,a){Object.defineProperty(i,"__esModule",{value:!0}),i.getManifestVersion=i.getTemplateVersionPath=i.processDestinationPath=i.ui5LtsVersion_1_71=i.ui5LtsVersion_1_120=i.compareUI5VersionGte=i.addEslintFeature=void 0,i.generate=async function generate(e,i,a){a||(a=(0,o.create)((0,r.create)()));const p=(0,l.mergeWithDefaults)(i),u=(0,n.join)(__dirname,"..","templates"),m=[i.appOptions?.typescript?"**/*.js":"**/*.ts"];!1===i.appOptions?.generateIndex&&m.push("**/webapp/index.html");const f="EDMXBackend"===i.app.projectType;f||(m.push("**/ui5-local.yaml"),m.push("**/gitignore.tmpl"));const g=(0,c.getTemplateOptions)(f,p.ui5?.frameworkUrl,p.ui5?.version),y={...p,ui5ResourceUrl:g};(0,d.copyTemplates)({fs:a,basePath:e,tmplPath:u,templateOptions:y,ignore:m,ui5Version:p.ui5?.version});const w=(0,n.join)(e,"ui5.yaml"),h=await s.UI5Config.newInstance(a.read(w));h.addFioriToolsProxyMiddleware({ui5:{url:p.ui5?.frameworkUrl}}),h.addFioriToolsAppReloadMiddleware();const b=function getPreviewMiddlewareOpts(e,i,a=!1){return{ui5Theme:i,...a&&{localStartFile:e.localStartFile},...!a&&{localStartFile:e.localStartFile??"test/flpSandbox.html",flpAction:e.flpAction,appId:e.id}}}(p.app,p.ui5?.ui5Theme,i.appOptions?.useVirtualPreviewEndpoints),v=(0,s.getPreviewMiddlewareConfig)(b);(f||i.appOptions?.useVirtualPreviewEndpoints)&&h.updateCustomMiddleware(v);if(f){const i=(0,n.join)(e,"ui5-local.yaml"),r=await s.UI5Config.newInstance(a.read(i));r.addUI5Framework(p.ui5.framework,p.ui5.localVersion,p.ui5.ui5Libs,p.ui5.ui5Theme),r.addFioriToolsAppReloadMiddleware(),await(0,c.applyOptionalFeatures)(p,a,e,u,[h,r]),r.updateCustomMiddleware(v),a.write(i,r.toString())}else await(0,c.applyOptionalFeatures)(p,a,e,u,[h]);return a.write(w,h.toString()),a},i.enableTypescript=async function enableTypescript(e,i){i||(i=(0,o.create)((0,r.create)()));const a=(0,n.join)(e,"webapp/manifest.json"),l=(0,n.join)(e,"ui5.yaml");if(!i.exists(a))throw new Error(`Invalid project folder. Cannot find required file ${a}`);if(!i.exists(l))throw new Error(`Invalid project folder. Cannot find required file ${l}`);const u=i.readJSON(a),d=await s.UI5Config.newInstance(i.read(l)),m=(0,n.join)(__dirname,"..","templates"),f=(0,s.getEsmTypesVersion)((0,p.getMinimumUI5Version)(u)),g=(0,s.getTypesPackage)(f),y={app:u["sap.app"],ui5:{typesPackage:g,typesVersion:f}};return await(0,c.enableTypescript)({basePath:e,fs:i,ui5Configs:[d],tmplPath:m,ui5App:y},!0),i.write(l,d.toString()),i},i.isTypescriptEnabled=async function isTypescriptEnabled(e,i){i||(i=(0,o.create)((0,r.create)()));const a=await s.UI5Config.newInstance(i.read((0,n.join)(e,"ui5.yaml")));if(!a.findCustomMiddleware(u.ui5TSSupport.middleware.name))return!1;if(!a.findCustomTask(u.ui5TSSupport.task.name))return!1;return!0};const n=a(76760),r=a(64812),o=a(90718),s=a(8231),p=a(20787),l=a(30492),u=a(45157),c=a(92517),d=a(33082);var m=a(92517);Object.defineProperty(i,"addEslintFeature",{enumerable:!0,get:function(){return m.addEslintFeature}});var f=a(33082);Object.defineProperty(i,"compareUI5VersionGte",{enumerable:!0,get:function(){return f.compareUI5VersionGte}}),Object.defineProperty(i,"ui5LtsVersion_1_120",{enumerable:!0,get:function(){return f.ui5LtsVersion_1_120}}),Object.defineProperty(i,"ui5LtsVersion_1_71",{enumerable:!0,get:function(){return f.ui5LtsVersion_1_71}}),Object.defineProperty(i,"processDestinationPath",{enumerable:!0,get:function(){return f.processDestinationPath}}),Object.defineProperty(i,"getTemplateVersionPath",{enumerable:!0,get:function(){return f.getTemplateVersionPath}});var g=a(57328);Object.defineProperty(i,"getManifestVersion",{enumerable:!0,get:function(){return g.getManifestVersion}})},92517(e,i,a){Object.defineProperty(i,"__esModule",{value:!0}),i.enableTypescript=enableTypescript,i.enableNpmPackageConsumption=enableNpmPackageConsumption,i.applyOptionalFeatures=async function applyOptionalFeatures(e,i,a,n,r){if(e.appOptions)for(const[o,s]of Object.entries(e.appOptions))!0===s&&await(u[o]?.({ui5App:e,fs:i,basePath:a,tmplPath:n,ui5Configs:r}))},i.addEslintFeature=async function addEslintFeature(e,i){const a={tmplPath:(0,n.join)(__dirname,"../templates"),basePath:e,fs:i,ui5Configs:[],ui5App:{app:{id:"dummy"}}};await copyTemplates("eslint",a)},i.getTemplateOptions=function getTemplateOptions(e,i,a){const n="resources/sap-ui-core.js";if(e||!i)return n;{let e=i;return a&&(e+=`/${a}`),e+=`/${n}`,e}};const n=a(76760),r=a(29473),o=a(20787),s=a(45157),p=a(8231),l=a(33082);async function copyTemplates(e,{ui5App:i,fs:a,basePath:s,tmplPath:u}){let c=(0,n.join)(u,"optional",`${e}`);const d=(0,l.getTemplateVersionPath)(i.ui5);"loadReuseLibs"===e&&(c=(0,n.join)(c,d));(await(0,o.getFilePaths)(c)).forEach(e=>{const o=e.replace(c,""),u=(0,n.join)(s,o);if(a.exists(u)){if(u.endsWith(".json")){const n=JSON.parse((0,r.render)(a.read(e),i,{})),o=JSON.parse(a.read(u)),s=(0,p.mergeObjects)(o,n);a.writeJSON(u,s)}}else a.copyTpl(e,u,i,void 0,{globOptions:{dot:!0},processDestinationPath:l.processDestinationPath})})}const u={eslint:async e=>await copyTemplates("eslint",e),loadReuseLibs:async e=>await copyTemplates("loadReuseLibs",e),sapux:async e=>{"EDMXBackend"===e.ui5App.app.projectType&&await copyTemplates("sapux",e)},typescript:async e=>await enableTypescript(e),npmPackageConsumption:async e=>await enableNpmPackageConsumption(e)};async function enableTypescript(e,i=!1){e.ui5App.app.baseComponent=e.ui5App.app.baseComponent??"sap/ui/core/UIComponent",await copyTemplates("typescript",e),e.ui5Configs.forEach(e=>{e.addCustomMiddleware([s.ui5TSSupport.middleware]),e.addCustomTasks([s.ui5TSSupport.task])});const a=(0,n.join)(e.basePath,"webapp/Component.js");i?e.fs.move(a,`${a}.old`):e.fs.delete(a)}async function enableNpmPackageConsumption(e){await copyTemplates("npmPackageConsumption",e),e.ui5Configs.forEach(e=>{e.addCustomMiddleware([s.ui5NPMSupport.middleware]),e.addCustomTasks([s.ui5NPMSupport.task])})}},33082(e,i,a){Object.defineProperty(i,"__esModule",{value:!0}),i.ui5LtsVersion_1_120=i.ui5LtsVersion_1_71=void 0,i.compareUI5VersionGte=compareUI5VersionGte,i.getTemplateVersionPath=function getTemplateVersionPath(e){let a="";const n=e?.minUI5Version??e?.version??"";a=n&&compareUI5VersionGte(n,i.ui5LtsVersion_1_120)?i.ui5LtsVersion_1_120:i.ui5LtsVersion_1_71;return a},i.processDestinationPath=function processDestinationPath(e){return e.replace("/1.120.0","").replace("/1.71.0","")},i.copyTemplates=function copyTemplates(e){const{fs:a,basePath:n,tmplPath:s,templateOptions:p,ignore:l,ui5Version:u}=e,c=["gitignore.tmpl",o.FileName.Package,o.FileName.Ui5LocalYaml,o.FileName.Ui5Yaml],d=compareUI5VersionGte(u??i.ui5LtsVersion_1_120,i.ui5LtsVersion_1_120)?i.ui5LtsVersion_1_120:i.ui5LtsVersion_1_71;a.copyTpl((0,r.join)(s,"core",d,"**/*.*"),(0,r.join)(n),p,void 0,{globOptions:{dot:!0,ignore:l}}),a.copyTpl(c.map(e=>(0,r.join)(s,"core",e)),(0,r.join)(n),p,void 0,{globOptions:{dot:!0,ignore:l},processDestinationPath:e=>e.replace(/gitignore.tmpl/g,".gitignore")})};const n=a(85263),r=a(76760),o=a(20787);function compareUI5VersionGte(e,i){return""===e||(0,n.gte)(e,i,{loose:!0})}i.ui5LtsVersion_1_71="1.71.0",i.ui5LtsVersion_1_120="1.120.0"},12063(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`."},"error":{"missingRequiredProperty":"The property: {{ propertyName }} must have a value.","disallowedCharacters":"The property: {{ propertyName }} contains disallowed characters: {{- disallowedChars }}. Remove these characters and try again.","invalidUI5Version":"The specified SAPUI5 version is invalid: {{ version }}. Use a different version."},"text":{"defaultAppTitle":"Title of {{ id }}","defaultAppDescription":"Description of {{ id }}."}}')}};