@sap/generator-fiori
Version:
Create an SAPUI5 application using SAP Fiori elements or a freestyle approach
1 lines • 21.3 kB
JavaScript
(()=>{var e,r,s,i,o={48676(e){function webpackEmptyContext(e){var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}webpackEmptyContext.keys=()=>[],webpackEmptyContext.resolve=webpackEmptyContext,webpackEmptyContext.id=48676,e.exports=webpackEmptyContext},1320(e){function webpackEmptyContext(e){var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}webpackEmptyContext.keys=()=>[],webpackEmptyContext.resolve=webpackEmptyContext,webpackEmptyContext.id=1320,e.exports=webpackEmptyContext},53306(e){function webpackEmptyContext(e){var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}webpackEmptyContext.keys=()=>[],webpackEmptyContext.resolve=webpackEmptyContext,webpackEmptyContext.id=53306,e.exports=webpackEmptyContext},9704(e,r,s){var i={"./Find-VisualStudio.cs":78280,"./build":74250,"./build.js":74250,"./clean":20575,"./clean.js":20575,"./configure":38446,"./configure.js":38446,"./create-config-gypi":55331,"./create-config-gypi.js":55331,"./download":73156,"./download.js":73156,"./find-node-directory":36958,"./find-node-directory.js":36958,"./find-python":30754,"./find-python.js":30754,"./find-visualstudio":44962,"./find-visualstudio.js":44962,"./install":83909,"./install.js":83909,"./list":94984,"./list.js":94984,"./log":18496,"./log.js":18496,"./node-gyp":41409,"./node-gyp.js":41409,"./process-release":38003,"./process-release.js":38003,"./rebuild":47437,"./rebuild.js":47437,"./remove":43388,"./remove.js":43388,"./util":82228,"./util.js":82228};function webpackContext(e){var r=webpackContextResolve(e);return s(r)}function webpackContextResolve(e){if(!s.o(i,e)){var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}return i[e]}webpackContext.keys=function webpackContextKeys(){return Object.keys(i)},webpackContext.resolve=webpackContextResolve,e.exports=webpackContext,webpackContext.id=9704},69433(e,r,s){var i={"./cat":4921,"./cat.js":4921,"./cd":5414,"./cd.js":5414,"./chmod":77140,"./chmod.js":77140,"./common":46656,"./common.js":46656,"./cp":92906,"./cp.js":92906,"./dirs":54425,"./dirs.js":54425,"./echo":82448,"./echo.js":82448,"./error":75691,"./error.js":75691,"./exec":38196,"./exec-child":82587,"./exec-child.js":82587,"./exec.js":38196,"./find":1350,"./find.js":1350,"./grep":45965,"./grep.js":45965,"./head":87595,"./head.js":87595,"./ln":8267,"./ln.js":8267,"./ls":3296,"./ls.js":3296,"./mkdir":3890,"./mkdir.js":3890,"./mv":10994,"./mv.js":10994,"./popd":92148,"./popd.js":92148,"./pushd":43573,"./pushd.js":43573,"./pwd":83158,"./pwd.js":83158,"./rm":72836,"./rm.js":72836,"./sed":1285,"./sed.js":1285,"./set":6037,"./set.js":6037,"./sort":62909,"./sort.js":62909,"./tail":77795,"./tail.js":77795,"./tempdir":58988,"./tempdir.js":58988,"./test":99237,"./test.js":99237,"./to":82332,"./to.js":82332,"./toEnd":34339,"./toEnd.js":34339,"./touch":12062,"./touch.js":12062,"./uniq":23256,"./uniq.js":23256,"./which":52540,"./which.js":52540};function webpackContext(e){var r=webpackContextResolve(e);return s(r)}function webpackContextResolve(e){if(!s.o(i,e)){var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}return i[e]}webpackContext.keys=function webpackContextKeys(){return Object.keys(i)},webpackContext.resolve=webpackContextResolve,e.exports=webpackContext,webpackContext.id=69433},66514(e){function webpackEmptyContext(e){var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}webpackEmptyContext.keys=()=>[],webpackEmptyContext.resolve=webpackEmptyContext,webpackEmptyContext.id=66514,e.exports=webpackEmptyContext},6533(e){function webpackEmptyContext(e){var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}webpackEmptyContext.keys=()=>[],webpackEmptyContext.resolve=webpackEmptyContext,webpackEmptyContext.id=6533,e.exports=webpackEmptyContext},29963(e){function webpackEmptyContext(e){var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}webpackEmptyContext.keys=()=>[],webpackEmptyContext.resolve=webpackEmptyContext,webpackEmptyContext.id=29963,e.exports=webpackEmptyContext},40632(e){function webpackEmptyContext(e){var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}webpackEmptyContext.keys=()=>[],webpackEmptyContext.resolve=webpackEmptyContext,webpackEmptyContext.id=40632,e.exports=webpackEmptyContext},5827(e){"use strict";e.exports=require("applicationinsights-native-metrics")},54980(e){"use strict";e.exports=require("vscode")},42613(e){"use strict";e.exports=require("assert")},90290(e){"use strict";e.exports=require("async_hooks")},20181(e){"use strict";e.exports=require("buffer")},35317(e){"use strict";e.exports=require("child_process")},64236(e){"use strict";e.exports=require("console")},49140(e){"use strict";e.exports=require("constants")},76982(e){"use strict";e.exports=require("crypto")},72250(e){"use strict";e.exports=require("dns")},24434(e){"use strict";e.exports=require("events")},79896(e){"use strict";e.exports=require("fs")},91943(e){"use strict";e.exports=require("fs/promises")},58611(e){"use strict";e.exports=require("http")},85675(e){"use strict";e.exports=require("http2")},65692(e){"use strict";e.exports=require("https")},73339(e){"use strict";e.exports=require("module")},69278(e){"use strict";e.exports=require("net")},34589(e){"use strict";e.exports=require("node:assert")},31421(e){"use strict";e.exports=require("node:child_process")},77598(e){"use strict";e.exports=require("node:crypto")},78474(e){"use strict";e.exports=require("node:events")},73024(e){"use strict";e.exports=require("node:fs")},51455(e){"use strict";e.exports=require("node:fs/promises")},37067(e){"use strict";e.exports=require("node:http")},44708(e){"use strict";e.exports=require("node:https")},98995(e){"use strict";e.exports=require("node:module")},48161(e){"use strict";e.exports=require("node:os")},76760(e){"use strict";e.exports=require("node:path")},53916(e){"use strict";e.exports=require("node:path/posix")},58152(e){"use strict";e.exports=require("node:path/win32")},643(e){"use strict";e.exports=require("node:perf_hooks")},1708(e){"use strict";e.exports=require("node:process")},57075(e){"use strict";e.exports=require("node:stream")},46193(e){"use strict";e.exports=require("node:string_decoder")},41692(e){"use strict";e.exports=require("node:tls")},7066(e){"use strict";e.exports=require("node:tty")},73136(e){"use strict";e.exports=require("node:url")},57975(e){"use strict";e.exports=require("node:util")},38522(e){"use strict";e.exports=require("node:zlib")},70857(e){"use strict";e.exports=require("os")},16928(e){"use strict";e.exports=require("path")},82987(e){"use strict";e.exports=require("perf_hooks")},932(e){"use strict";e.exports=require("process")},83480(e){"use strict";e.exports=require("querystring")},23785(e){"use strict";e.exports=require("readline")},2203(e){"use strict";e.exports=require("stream")},13193(e){"use strict";e.exports=require("string_decoder")},53557(e){"use strict";e.exports=require("timers")},16460(e){"use strict";e.exports=require("timers/promises")},64756(e){"use strict";e.exports=require("tls")},52018(e){"use strict";e.exports=require("tty")},87016(e){"use strict";e.exports=require("url")},39023(e){"use strict";e.exports=require("util")},43106(e){"use strict";e.exports=require("zlib")},3082(e,r,s){"use strict";var i=s(22395);var o=s(79811);var n=s(7479);var a=s(56447);var c=s(59423)},2501(e,r,s){"use strict";s.r(r),s.d(r,{default:()=>x});var i=s(73667),o=s(40511),n=s(94443),a=s(59113),c=s(91170);const p=[{key:"SAP_SYSTEM_CONFIG",name:"SAP System selection",description:"",order:0},{key:"SERVICE_CONFIG",name:"UI Service Configuration",description:"",order:1}],u="/sap/bc/adt/bo/behaviordefinitions/",d="$ui-service-cache";class UiServiceGenLogger{static _logger=n.DefaultLogger;static get logger(){return UiServiceGenLogger._logger}static set logger(e){UiServiceGenLogger._logger=e}static configureLogging(e,r,s,i,o){const a=new n.LogWrapper(r,s,o,e,i);UiServiceGenLogger.logger=a}}var _=s(68801);const m=JSON.parse('{"error":{"fetchingGenerator":"An error occurred when fetching the generator: {{error}}","sendingTelemetry":"An error occurred sending the telemetry event.","connectionFailed":"The connection to the discovery service on the back-end system: {{system}} failed. Please check the system details are correct.","authentication":"Authentication failed with the system data provided. Unable to continue with UI Service generation. Check the system details are correct.","generatingService":"The UI Service creation process failed. For more information, see the log in the `Application Wizard.Generators` output.","noGeneratorFoundBo":"No generator found for the selected business object interface."},"info":{"generationSuccessful":"The UI service: {{- serviceName}} was generated.","generationSuccessfulWriteFile":"The UI service: {{- serviceName}} has been created and added to your project.","generationSuccessfulMetadataFail":"The UI service: {{- serviceName}} has been created but could not be added to your project.","generationWarning":"Generating the UI Service can take a few minutes. Please be patient.","generatingUiService":"Generating UI service..."}}'),l="ui-service-generator",g=_.createInstance();async function initI18n(){await g.init({lng:"en",fallbackLng:"en",showSupportNotice:!1}),g.addResourceBundle("en",l,m)}function t(e,r){return r?.ns||(r=Object.assign(r??{},{ns:l})),g.t(e,r)}function getTelemetryData(e,r){let s;return r?.path?s="Storyboard":r?.providerSystem&&(s="ServiceCenter"),{...!!s&&{LaunchSource:s},ObjectType:e.businessObjectInterface?a.an.BUSINESS_OBJECT:a.an.CDS_VIEW,DraftEnabled:!!e.draftEnabled,LaunchAppGen:!!e.launchAppGen}}initI18n().catch(()=>{});const w="BO INTERFACE",h="CDS VIEW";var y=s(76178),v=s(21038),b=s(35685),f=s(76760);async function writeBASMetadata(e,r,s,o,n){const a=getRelativeUrlFromContent(e.content);let c=await getMetadata(a,n);if(c||(await new Promise(e=>setTimeout(e,5e3)),c=await getMetadata(a,n,!0)),c){const n=function getServiceMedadataContent(e,r,s,i){return{providerSystem:e,relativeURL:r,metadata:{odataContent:s},serviceName:i.businessService.serviceBinding.serviceBindingName,providerType:b.ProviderType.SapSystem}}(o.providerSystem,a,c,JSON.parse(e.content));r.writeJSON((0,f.join)(o.path,".service.metadata"),n),s.showInformation(t("info.generationSuccessfulWriteFile",{serviceName:e.serviceName}),i.MessageType.notification),UiServiceGenLogger.logger.info(t("info.generationSuccessfulWriteFile",{serviceName:e.serviceName}))}else s.showInformation(t("info.generationSuccessfulMetadataFail",{serviceName:e.serviceName}),i.MessageType.notification),UiServiceGenLogger.logger.info(t("info.generationSuccessfulMetadataFail",{serviceName:e.serviceName}))}function getRelativeUrlFromContent(e){const r=JSON.parse(e);let s=r?.businessService?.serviceBinding?.serviceBindingName?.replace(/^\/|\/$/g,""),i=r?.businessService?.serviceDefinition?.serviceDefinitionName?.replace(/^\/|\/$/g,"");return r.general?.namespace?.startsWith("/")||(s=`sap/${s}`,i=`sap/${i}`),`/sap/opu/odata4/${s}/srvd/${i}/0001/`}async function getMetadata(e,r,s=!1){return await r.get(`${e}/$metadata`).then(e=>e.data).catch(e=>(s&&UiServiceGenLogger.logger.error(`Error fetching metadata for generated service: ${e.message}`),""))}async function authenticateInputData(e,r){const s=e.user&&e.password?{username:e.user,password:e.password}:void 0;await async function validateConnection(e,r,s){const i={destination:e},o=await(0,v.createAbapServiceProvider)(i,{ignoreCertErrors:!0,auth:s},!1,UiServiceGenLogger.logger);try{return await async function checkConnection(e){try{return await e.get("/sap/bc/adt/discovery",{headers:{Accept:"application/atomsvc+xml"}}),!0}catch{return!1}}(o),void Object.assign(r,{connectedSystem:{serviceProvider:o,destination:{Name:e}}})}catch(r){return void UiServiceGenLogger.logger.error(t("error.connectionFailed",{system:e}))}}(e.systemName,r,s)}const x=class extends c{answers={url:"",package:""};prompts;appWizard;vscode;systemSelectionAnswers={};serviceConfigAnswers={content:"",serviceName:"",showDraftEnabled:!1};setPromptsCallback;constructor(e,r){super(e,r),(0,n.setYeomanEnvConflicterForce)(this.env,this.options.force),this.appWizard=i.AppWizard.create(r),this.vscode=r.vscode,UiServiceGenLogger.configureLogging(this.options.logger,this.rootGeneratorName(),this.log,this.options.vscode,this.options.logLevel);const s=p;this.options.data?.systemName&&s.shift(),this.appWizard=i.AppWizard.create(r),this.appWizard[d]||(this.appWizard[d]={}),this.appWizard.setHeaderTitle("UI Service Generator"),this.prompts=new i.Prompts(s),this.setPromptsCallback=e=>{this.prompts&&this.prompts.setCallback(e)}}async initializing(){await n.TelemetryHelper.initTelemetrySettings({consumerModule:{name:"@sap/generator-fiori-ui-service",version:this.rootGeneratorVersion()},internalFeature:(0,o.isInternalFeaturesSettingEnabled)(),watchTelemetrySettingStore:!1}),await initI18n(),this.options.data?.systemName&&(UiServiceGenLogger.logger.debug("Options passed into generator: "+JSON.stringify(this.options.data)),await this._initSteps())}async _initSteps(){if(await authenticateInputData(this.options.data,this.systemSelectionAnswers),this.systemSelectionAnswers.connectedSystem?.serviceProvider)try{if(this.options.data.id&&this.options.data.type){const e=this.options.data.type===w?u:"/sap/bc/adt/ddic/ddl/sources/";this.systemSelectionAnswers.objectGenerator=await this.systemSelectionAnswers.connectedSystem.serviceProvider.getUiServiceGenerator({name:this.options.data.id,uri:`${e}${this.options.data.id.toLowerCase()}`})}else this.systemSelectionAnswers.objectGenerator=await this.systemSelectionAnswers.connectedSystem.serviceProvider.getUiServiceGenerator({name:this.options.data.businessObject,uri:`${u}${this.options.data.businessObject.toLowerCase()}`});this.systemSelectionAnswers.connectedSystem.destination={Name:this.options.data.systemName}}catch(e){UiServiceGenLogger.logger.error(t("error.fetchingGenerator",{error:e.message}))}}async prompting(){if(!this.options.data?.systemName){const e=await(0,a.ZN)(...function getFromCache(e){return[e[d].systemSelectionAnswers,e[d].systemName]}(this.appWizard),UiServiceGenLogger.logger),r=await this.prompt(e.prompts);Object.assign(this.answers,r),Object.assign(this.systemSelectionAnswers,e.answers),function addToCache(e,r,s){e[d]&&Object.assign(e[d],{systemSelectionAnswers:s,systemName:r.connectedSystem?.destination?.Name??r.connectedSystem?.backendSystem?.name})}(this.appWizard,this.systemSelectionAnswers,this.answers)}!function setToolbarMessage(e,r,s){e?.systemName&&!r.connectedSystem?.serviceProvider?s.showError(t("error.authentication"),i.MessageType.prompt):e?.systemName&&!r.objectGenerator?s.showError(t("error.noGeneratorFoundBo"),i.MessageType.prompt):s.showWarning(t("info.generationWarning"),i.MessageType.prompt)}(this.options.data,this.systemSelectionAnswers,this.appWizard);const e=await(0,a.e2)(this.systemSelectionAnswers,{useDraftEnabled:!(this.answers.objectType===a.an.CDS_VIEW||this.options.data?.type===h)},UiServiceGenLogger.logger),r=await this.prompt(e.prompts);Object.assign(this.answers,r),Object.assign(this.serviceConfigAnswers,e.answers)}async end(){this.appWizard.showWarning(t("info.generatingUiService"),i.MessageType.prompt);const e=this.answers.transportFromList??this.answers.transportManual??this.answers.transportCreated??"";n.TelemetryHelper.createTelemetryData({...getTelemetryData(this.answers,this.options.data)}),n.TelemetryHelper.markAppGenStartTime(),await async function generateService(e,r,s,o){return await e.generate(r,s).catch(e=>{o.showError(`${t("error.generatingService")}`,i.MessageType.notification),UiServiceGenLogger.logger.error(`Error generating service: ${e.message}`),UiServiceGenLogger.logger.error(`${e.code} ${e.response?.status} ${e.response?.data}`),UiServiceGenLogger.logger?.error(JSON.stringify(e,null,2)),UiServiceGenLogger.logger?.error(JSON.stringify(e.response,null,2)),n.TelemetryHelper.createTelemetryData({ErrorMessage:e.message,ErrorCode:e.code,ResponseStatus:e.response?.status}),(0,n.sendTelemetry)("SERVICE_GENERATION_FAIL",n.TelemetryHelper.telemetryData).catch(e=>{UiServiceGenLogger.logger.error(`Error sending telemetry: ${e.message}`)})})}(this.systemSelectionAnswers.objectGenerator,this.serviceConfigAnswers.content,e,this.appWizard).then(async e=>{e&&((0,n.sendTelemetry)("SERVICE_GENERATION_SUCCESS",n.TelemetryHelper.telemetryData).catch(e=>{UiServiceGenLogger.logger.error(t("error.sendingTelemetry",{error:e.message}))}),this.options.data?.path&&this.options.data?.providerSystem?await writeBASMetadata(this.serviceConfigAnswers,this.fs,this.appWizard,this.options.data,this.systemSelectionAnswers.connectedSystem.serviceProvider):(this.appWizard.showInformation(t("info.generationSuccessful",{serviceName:this.serviceConfigAnswers.serviceName}),i.MessageType.notification),UiServiceGenLogger.logger.info(`Generation of service ${this.serviceConfigAnswers.serviceName} successful`),UiServiceGenLogger.logger.debug(`Generation response: ${JSON.stringify(e)}`)),UiServiceGenLogger.logger.info("Generation completed"),this.answers.launchAppGen&&this.systemSelectionAnswers.connectedSystem&&(UiServiceGenLogger.logger.info("Running post generation hook"),await async function runPostGenHook(e,r,s,i){const o=getRelativeUrlFromContent(s),n={type:"SERVICE_GEN_DATA",system:r,service:{url:o,metadata:await getMetadata(o,i)}};e.data?.path&&Object.assign(n,{project:{targetPath:(0,f.dirname)(e.data?.path),name:(0,f.basename)(e.data?.path)}}),UiServiceGenLogger.logger.info(`Launching App Generator with data: ${JSON.stringify(n)} and command ${e.data?.appGenLaunchCommand}`),setTimeout(()=>{e.vscode?.commands?.executeCommand?.(e.data?.appGenLaunchCommand??"sap.ux.service.generated.handler",n)},500)}(this.options,function getAppGenSystemData(e){return(0,y.isAppStudio)()?{destination:e.connectedSystem?.destination?.Name??""}:{name:e.connectedSystem?.backendSystem?.name??"",url:e.connectedSystem?.backendSystem?.url??"",client:e.connectedSystem?.backendSystem?.client??""}}(this.systemSelectionAnswers),this.serviceConfigAnswers.content,this.systemSelectionAnswers.connectedSystem?.serviceProvider)))})}}}},n={};function __webpack_require__(e){var r=n[e];if(void 0!==r)return r.exports;var s=n[e]={id:e,loaded:!1,exports:{}};return o[e].call(s.exports,s,s.exports,__webpack_require__),s.loaded=!0,s.exports}__webpack_require__.m=o,__webpack_require__.c=n,__webpack_require__.x=()=>{var e=__webpack_require__.O(void 0,[6288,5019,3491,4977,8124],()=>__webpack_require__(__webpack_require__.s=2501));return e=__webpack_require__.O(e)},e=[],__webpack_require__.O=(r,s,i,o)=>{if(!s){var n=1/0;for(u=0;u<e.length;u++){for(var[s,i,o]=e[u],a=!0,c=0;c<s.length;c++)(!1&o||n>=o)&&Object.keys(__webpack_require__.O).every(e=>__webpack_require__.O[e](s[c]))?s.splice(c--,1):(a=!1,o<n&&(n=o));if(a){e.splice(u--,1);var p=i();void 0!==p&&(r=p)}}return r}o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[s,i,o]},__webpack_require__.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(r,{a:r}),r},s=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,__webpack_require__.t=function(e,i){if(1&i&&(e=this(e)),8&i)return e;if("object"==typeof e&&e){if(4&i&&e.__esModule)return e;if(16&i&&"function"==typeof e.then)return e}var o=Object.create(null);__webpack_require__.r(o);var n={};r=r||[null,s({}),s([]),s(s)];for(var a=2&i&&e;("object"==typeof a||"function"==typeof a)&&!~r.indexOf(a);a=s(a))Object.getOwnPropertyNames(a).forEach(r=>n[r]=()=>e[r]);return n.default=()=>e,__webpack_require__.d(o,n),o},__webpack_require__.d=(e,r)=>{for(var s in r)__webpack_require__.o(r,s)&&!__webpack_require__.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:r[s]})},__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((r,s)=>(__webpack_require__.f[s](e,r),r),[])),__webpack_require__.u=e=>(({3491:"odata-service-writer/dist",4977:"fiori-generator-shared/dist",5019:"open-ux-shared",6288:"commonlibs"}[e]||e)+"/index.js"),__webpack_require__.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),__webpack_require__.j=5163,__webpack_require__.p="",(()=>{var e={768:1,1006:1,4776:1,5055:1,5163:1,5914:1,6221:1,7235:1};__webpack_require__.O.require=r=>e[r];__webpack_require__.f.require=(r,s)=>{if(!e[r]){var i=require("../"+__webpack_require__.u(r));e[r]||(r=>{var s=r.modules,i=r.ids,o=r.runtime;for(var n in s)__webpack_require__.o(s,n)&&(__webpack_require__.m[n]=s[n]);o&&o(__webpack_require__);for(var a=0;a<i.length;a++)e[i[a]]=1;__webpack_require__.O()})(i)}}})(),i=__webpack_require__.x,__webpack_require__.x=()=>(__webpack_require__.e(6288),__webpack_require__.e(5019),__webpack_require__.e(3491),__webpack_require__.e(4977),__webpack_require__.e(8124),i());var a=__webpack_require__.x();module.exports=a})();