@sap/generator-fiori
Version:
Create an SAPUI5 application using SAP Fiori elements or a freestyle approach
1 lines • 26.2 kB
JavaScript
"use strict";exports.id=8080,exports.ids=[8080],exports.modules={76972(e,r,a){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.getAbapDeployConfig=void 0,r.getAppConfig=async function getAppConfig(e,r,a,o,n){try{const o=(0,l.readManifest)((0,g.join)(r,u.FileName.Manifest),n),h=c.PromptState.systemSelection?.connectedSystem?.serviceProvider;a.serviceProvider=h,o?.["sap.app"]?.dataSources||m.default.logger?.error((0,p.t)("error.dataSourcesNotFound"));const v=o?.["sap.app"]?.dataSources?.mainService?.settings?.odataVersion?.startsWith("4")?s.OdataVersion.v4:s.OdataVersion.v2,y=await(async(e,r)=>{try{const a=await e.service(r).metadata();return m.default.logger?.debug("Metadata fetched successfully"),a}catch(e){m.default.logger?.error((0,p.t)("error.metadataFetchError",{error:e.message}))}})(h,o?.["sap.app"]?.dataSources?.mainService.uri??""),w=await(0,f.getUI5Versions)({onlyNpmVersion:!0}),S=w[0]?.version,P={app:{id:e.appId,title:e.title,description:e.description,sourceTemplate:{id:d.fioriAppSourcetemplateId},projectType:"EDMXBackend",flpAppId:`${e.appId.replace(/[-_.#]/g,"")}-tile`},package:{name:e.appId,description:e.description,devDependencies:{},scripts:{},version:o?.["sap.app"]?.applicationVersion?.version??"0.0.1"},template:{type:i.TemplateType.ListReportObjectPage,settings:{entityConfig:{mainEntityName:a.qfaJson.serviceBindingDetails.mainEntityName}}},service:{path:o?.["sap.app"]?.dataSources?.mainService.uri,version:v,metadata:y,url:c.PromptState.baseURL,client:c.PromptState.sapClient},appOptions:{addAnnotations:v===s.OdataVersion.v4,addTests:!0,useVirtualPreviewEndpoints:!0},ui5:{localVersion:S}};return c.PromptState.destinationName&&(P.service.destination={name:c.PromptState.destinationName}),P}catch(e){throw m.default.logger?.error((0,p.t)("error.appConfigGenError",{error:e.message})),e}};const i=a(74174),s=a(69884),n=a(60987),p=a(33242),l=a(52052),d=a(18157),c=a(93078),m=o(a(50774)),u=a(20787),g=a(76760),f=a(97133);r.getAbapDeployConfig=async e=>{const{qfaJson:r}=e,a=await async function resolveTransportRequest(e){const{serviceProvider:r,qfaJson:a}=e,o=a.metadata.package,i=a.deploymentDetails.repositoryName;if("$TMP"===o)return"";try{const e=await(r?.getAdtService(n.TransportChecksService)),a=await(e?.getTransportRequests(o,i));return 1===a?.length?a[0].transportNumber:"REPLACE_WITH_TRANSPORT"}catch(e){if(e.message===n.TransportChecksService.LocalPackageError)return"";const r=(0,p.t)("error.transportCheckFailed",{error:e?.message});throw m.default.logger?.error(r),new Error(r)}}(e);return{target:{url:c.PromptState.baseURL,client:c.PromptState.sapClient,destination:c.PromptState.destinationName},app:{name:r.deploymentDetails.repositoryName,package:r.metadata.package,description:r.deploymentDetails.repositoryDescription,transport:a}}}},36102(e,r,a){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.PromptNames=void 0;const i=o(a(91170)),s=o(a(50774)),n=a(73667),p=a(98434),l=a(18157),d=a(33242),c=a(93394),m=a(19131),u=a(58012),g=a(421),f=a(74174),h=a(76760),v=a(48161),y=a(48962),w=a(97133),S=a(15669),P=a(75199),N=a(69884),A=a(69342),_=a(99214),F=a(93078),E=a(15227);Object.defineProperty(r,"PromptNames",{enumerable:!0,get:function(){return E.PromptNames}});const b=a(76972),I=a(52052),D=a(24342),M=a(40258),C=a(8433),T=a(20787);class default_1 extends i.default{appWizard;vscode;appRootPath;prompts;answers=l.defaultAnswers;options;projectPath;extractedProjectPath;debugOptions;setPromptsCallback;constructor(e,r){super(e,r),this.appWizard=r.appWizard??n.AppWizard.create(r),this.vscode=r.vscode,this.appRootPath=r?.appRootPath??(0,u.getDefaultTargetFolder)(this.vscode)??this.destinationRoot(),this.options=r,s.default.configureLogging(this.rootGeneratorName(),this.log,this.options.logWrapper,this.options.logLevel,this.options.logger,this.vscode),this.appWizard.setHeaderTitle(l.generatorTitle),this.prompts=new n.Prompts((0,M.getYUIDetails)()),this.setPromptsCallback=e=>{this.prompts&&this.prompts.setCallback(e)}}async initializing(){(0,u.setYeomanEnvConflicterForce)(this.env,this.options.force),await u.TelemetryHelper.initTelemetrySettings({consumerModule:{name:l.generatorName,version:this.rootGeneratorVersion()},internalFeature:(0,p.isInternalFeaturesSettingEnabled)(),watchTelemetrySettingStore:!1})}async prompting(){const e=this.options?.data?.quickDeployedAppConfig,r=await(0,g.getPrompts)(this.appRootPath,e,this.appWizard,(0,u.isCli)()),a=await this.prompt(r),{targetFolder:o}=a;e?.appId?(this.answers.targetFolder=o,this.answers.systemSelection=F.PromptState.systemSelection,this.answers.selectedApp=a.selectedApp):Object.assign(this.answers,a),(0,C.isValidPromptState)(this.answers.targetFolder,this.answers.selectedApp.appId)&&(this.projectPath=(0,h.join)(this.answers.targetFolder,this.answers.selectedApp.appId),this.extractedProjectPath=(0,h.join)(this.projectPath,l.extractedFilePath))}async writing(){await(0,c.extractZip)(this.extractedProjectPath,this.fs);const e=(0,h.join)(this.extractedProjectPath,l.qfaJsonFileName),r=(0,I.makeValidJson)(e,this.fs);(0,C.validateQfaJsonFile)(r);const a={qfaJson:r},o=await(0,b.getAppConfig)(this.answers.selectedApp,this.extractedProjectPath,a,this.answers.systemSelection,this.fs);await(0,f.generate)(this.projectPath,o,this.fs);const i=await(0,b.getAbapDeployConfig)(a);if(await(0,_.generate)(this.projectPath,i,void 0,this.fs),this.vscode){const e=this._getLaunchConfig(o);await(0,S.createLaunchConfig)(this.projectPath,e,this.fs,s.default.logger),(0,A.writeApplicationInfoSettings)(this.projectPath)}const n=this._getReadMeConfig(o);(0,u.generateAppGenInfo)(this.projectPath,n,this.fs),await(0,D.replaceWebappFiles)(this.projectPath,this.extractedProjectPath,this.fs),await(0,D.validateAndUpdateManifestUI5Version)((0,h.join)(this.projectPath,T.DirName.Webapp,T.FileName.Manifest),this.fs),this.fs.delete(this.extractedProjectPath)}_getReadMeConfig(e){return{appName:e.app.id,appTitle:e.app.title??"",appNamespace:e.app.id.substring(0,e.app.id.lastIndexOf(".")),appDescription:(0,d.t)("readMe.appDescription"),ui5Theme:(0,w.getDefaultUI5Theme)(e.ui5?.version),generatorName:l.generatorName,generatorVersion:this.rootGeneratorVersion(),ui5Version:e.ui5?.version??"",template:f.TemplateType.ListReportObjectPage,serviceUrl:e.service.url,launchText:(0,d.t)("readMe.launchText")}}_getLaunchConfig(e){const r={vscode:this.vscode,addStartCmd:!0,sapClientParam:F.PromptState.sapClient,flpAppId:e.app.flpAppId??e.app.id,flpSandboxAvailable:!0,isAppStudio:(0,P.isAppStudio)(),odataVersion:e.service.version===N.OdataVersion.v2?"2.0":"4.0"};this.debugOptions=r;return{name:e.app.id,projectRoot:this.projectPath,enableVSCodeReload:!1,debugOptions:r}}async install(){if(this.options.skipInstall)s.default.logger?.info((0,d.t)("info.installationErrors.skippedInstallation"));else try{s.default.logger?.debug("Running npm install..."),await this._runNpmInstall(this.projectPath),s.default.logger?.debug("npm install completed successfully.")}catch(e){s.default.logger?.error((0,d.t)("error.installationErrors.npmInstall",{error:e}))}}async _runNpmInstall(e){const r="win32"===(0,v.platform)()?"npm.cmd":"npm";await this.spawnCommand(r,["install","--no-audit","--no-fund","--silent","--prefer-offline","--no-progress"],{cwd:e})}async _handlePostAppGeneration(){if(this.vscode){const e=this.projectPath,{workspaceFolderUri:r}=(0,S.handleWorkspaceConfig)(e,this.debugOptions),a=r?{uri:r,projectName:(0,h.basename)(e),vscode:this.debugOptions.vscode}:void 0;(0,S.updateWorkspaceFoldersIfNeeded)(a)}this.options.data?.postGenCommand&&await(0,y.runPostAppGenHook)({path:this.projectPath,vscodeInstance:this.vscode,postGenCommand:this.options.data?.postGenCommand})}async end(){try{this.appWizard.showInformation((0,d.t)("info.repoAppDownloadCompleteMsg"),n.MessageType.notification),await this._handlePostAppGeneration(),await(0,u.sendTelemetry)(m.EventName.GENERATION_SUCCESS,u.TelemetryHelper.createTelemetryData({appType:"repo-app-import-sub-generator",...this.options.telemetryData})??{}).catch(e=>{s.default.logger?.error((0,d.t)("error.telemetry",{error:e.message}))})}catch(e){s.default.logger?.error((0,d.t)("error.endPhase",{error:e.message}))}}}r.default=default_1},15227(e,r){var a;Object.defineProperty(r,"__esModule",{value:!0}),r.PromptNames=void 0,function(e){e.selectedApp="selectedApp",e.systemSelection="systemSelection",e.targetFolder="targetFolder"}(a||(r.PromptNames=a={}))},40258(e,r,a){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.formatAppChoices=r.extractAppData=void 0,r.getYUIDetails=function getYUIDetails(){return[{name:i.generatorTitle,description:i.generatorDescription}]},r.fetchAppListForSelectedSystem=async function fetchAppListForSelectedSystem(e,r){if(e?.serviceProvider)return s.PromptState.systemSelection={connectedSystem:e},await async function getAppList(e,r){try{const a=r?{...i.appListSearchParams,"sap.app/id":r}:i.appListSearchParams;return await e.getAppIndex().search(a,i.appListResultFields)}catch(e){return p.default.logger?.error((0,n.t)("error.applicationListFetchError",{error:e.message})),p.default.logger?.debug((0,n.t)("error.applicationListFetchError",{error:JSON.stringify(e)})),[]}}(e.serviceProvider,r);return[]};const i=a(18157),s=a(93078),n=a(33242),p=o(a(50774));r.extractAppData=e=>{const r=e["sap.app/id"];return{name:r,value:{appId:r,title:e["sap.app/title"],description:e["sap.app/description"]??"",repoName:e.repoName,url:e.url}}};r.formatAppChoices=e=>e.filter(e=>{p.default.logger?.debug(`formatAppChoices: ${JSON.stringify(e)}`);const r=e["sap.app/id"]&&e.repoName&&e.url&&Object.prototype.hasOwnProperty.call(e,"sap.app/title");return r||p.default.logger?.warn((0,n.t)("warn.requiredFieldsMissing",{app:e["sap.app/id"]})),r}).map(e=>(0,r.extractAppData)(e))},93078(e,r,a){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.PromptState=void 0;const i=o(a(35817)),s=a(69884);class PromptState{static _systemSelection={datasourceType:s.DatasourceType.sapSystem};static _admZipInstance;static get systemSelection(){return this._systemSelection}static set systemSelection(e){this._systemSelection=e}static set admZip(e){this._admZipInstance=new i.default(e)}static get admZip(){return this._admZipInstance}static get baseURL(){return this._systemSelection.connectedSystem?.backendSystem?.url??this._systemSelection.connectedSystem?.destination?.Host}static get sapClient(){return this._systemSelection.connectedSystem?.backendSystem?.client??this._systemSelection.connectedSystem?.destination?.["sap-client"]}static get destinationName(){return this._systemSelection.connectedSystem?.destination?.Name}static reset(){PromptState.systemSelection={},PromptState._admZipInstance=void 0}}r.PromptState=PromptState},421(e,r,a){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.getPrompts=async function getPrompts(e,r,a,o=!1){try{l.PromptState.reset();const u=await(0,i.getSystemSelectionQuestions)({serviceSelection:{hide:!0,useAutoComplete:o},systemSelection:{defaultChoice:r?.serviceProviderInfo?.name,hideNewSystem:!0}},!o);let g=[];const f=[{when:async e=>(e[s.PromptNames.systemSelection]&&u.answers.connectedSystem?.serviceProvider&&(g=await(0,d.fetchAppListForSelectedSystem)(u.answers.connectedSystem,r?.appId)),!!u.answers.connectedSystem?.serviceProvider),type:"list",name:s.PromptNames.selectedApp,default:()=>r?.appId?0:void 0,guiOptions:{mandatory:!!g.length,breadcrumb:(0,n.t)("prompts.appSelection.breadcrumb"),applyDefaultWhenDirty:!0},message:(0,n.t)("prompts.appSelection.message"),choices:()=>g.length?(0,d.formatAppChoices)(g):[],validate:async e=>await(0,c.validateAppSelection)(e,g,r,a)}];o&&f?.push(((e,r,a)=>({type:"input",when:async o=>{if(o?.[s.PromptNames.selectedApp])try{await(0,c.validateAppSelection)(o[s.PromptNames.selectedApp],e,r,a)}catch(e){e instanceof Error?m.default.logger?.error(e.message):m.default.logger?.error((0,n.t)("error.appDownloadErrors.validationError",{error:e}))}return!1},name:`${s.PromptNames.selectedApp}-validation`}))(g,r,a));const h=((e,r)=>({type:"input",name:s.PromptNames.targetFolder,message:(0,n.t)("prompts.targetPath.message"),guiType:"folder-browser",when:e=>!!r||Boolean(e?.selectedApp?.appId),guiOptions:{applyDefaultWhenDirty:!0,mandatory:!0,breadcrumb:(0,n.t)("prompts.targetPath.breadcrumb")},validate:async(e,a)=>{const o=a.selectedApp?.appId??r;return await(0,p.validateFioriAppTargetFolder)(e,o,!0)},default:()=>e}))(e,r?.appId);return[...u.prompts,...f,h]}catch(e){throw new Error(`Failed to generate prompts: ${e.message}`)}};const i=a(69884),s=a(15227),n=a(33242),p=a(57848),l=a(93078),d=a(40258),c=a(8433),m=o(a(50774))},19131(e,r){var a;Object.defineProperty(r,"__esModule",{value:!0}),r.EventName=void 0,function(e){e.GENERATION_SUCCESS="GENERATION_SUCCESS"}(a||(r.EventName=a={}))},18157(e,r,a){Object.defineProperty(r,"__esModule",{value:!0}),r.appListResultFields=r.appListSearchParams=r.extractedFilePath=r.defaultAnswers=r.qfaJsonFileName=r.fioriAppSourcetemplateId=r.adtSourceTemplateId=r.generatorName=r.generatorDescription=r.generatorTitle=void 0;const o=a(69884),i=a(15227);r.generatorTitle="Download ADT deployed app from UI5 ABAP repository",r.generatorDescription="Download an application that was generated with the ADT Quick Fiori Application generator",r.generatorName="@sap-ux/repo-app-import-sub-generator",r.adtSourceTemplateId="@sap.adt.sevicebinding.deploy:lrop",r.fioriAppSourcetemplateId="@sap/generator-fiori:lrop",r.qfaJsonFileName="qfa.json",r.defaultAnswers={[i.PromptNames.systemSelection]:{datasourceType:o.DatasourceType.sapSystem},[i.PromptNames.selectedApp]:{appId:"",title:"",description:"",repoName:"",url:""},[i.PromptNames.targetFolder]:""},r.extractedFilePath="extractedFiles",r.appListSearchParams={"sap.app/sourceTemplate/id":r.adtSourceTemplateId},r.appListResultFields=["sap.app/id","sap.app/title","sap.app/description","sap.app/sourceTemplate/id","repoName","fileType","url"]},93394(e,r,a){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.hasQfaJson=function hasQfaJson(){const e=s.PromptState.admZip?.getEntries().filter(e=>e.entryName===l.qfaJsonFileName);return 1===e?.length},r.extractZip=async function extractZip(e,r){try{s.PromptState.admZip?.getEntries().forEach(function(a){if(!a.isDirectory){const o=a.getData().toString("utf8"),s=(0,i.join)(e,a.entryName);p.default.logger?.debug(`extractZip: Extracting file: "${s}" with contents: "${o}" .`),r.write((0,i.join)(e,a.entryName),o)}})}catch(e){p.default.logger?.error((0,n.t)("error.appDownloadErrors.zipExtractionError",{error:e.message}))}},r.downloadApp=async function downloadApp(e){const r=s.PromptState.systemSelection?.connectedSystem?.serviceProvider,a=await r.getUi5AbapRepository();a.log=p.default.logger,p.default.logger?.debug(`App download started: ${e}`);const o=await a.downloadFiles(e);p.default.logger?.debug(`App download completed: ${e}`),s.PromptState.admZip=o};const i=a(76760),s=a(93078),n=a(33242),p=o(a(50774)),l=a(18157)},48962(e,r,a){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.runPostAppGenHook=async function runPostAppGenHook(e){try{e.vscodeInstance||i.default.logger?.error((0,s.t)("error.eventHookErrors.vscodeInstanceMissing")),e.postGenCommand&&""!==e.postGenCommand.trim()||i.default.logger?.error((0,s.t)("error.eventHookErrors.postGenCommandMissing")),await(e.vscodeInstance?.commands?.executeCommand?.(e.postGenCommand,{fsPath:e.path}))}catch(e){i.default.logger?.error((0,s.t)("error.eventHookErrors.commandExecutionFailed",e.message))}};const i=o(a(50774)),s=a(33242)},52052(e,r,a){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.makeValidJson=function makeValidJson(e,r){try{const a=r.read(e);return JSON.parse(a)}catch(e){throw new Error((0,s.t)("error.errorProcessingJsonFile",{error:e}))}},r.readManifest=function readManifest(e,r){r.exists(e)||n.default.logger?.error((0,s.t)("error.readManifestErrors.manifestFileNotFound"));const a=r.readJSON(e);a||n.default.logger?.error((0,s.t)("error.readManifestErrors.readManifestFailed"));a?.["sap.app"]||n.default.logger?.error((0,s.t)("error.readManifestErrors.sapAppNotDefined"));a?.["sap.app"]?.sourceTemplate?.id!==i.adtSourceTemplateId&&n.default.logger?.error((0,s.t)("error.readManifestErrors.sourceTemplateNotSupported"));return a};const i=a(18157),s=a(33242),n=o(a(50774))},33242(e,r,a){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.i18n=void 0,r.initI18n=initI18n,r.t=function t(e,a){a?.ns||(a=Object.assign(a??{},{ns:n}));return r.i18n.t(e,a)};const i=o(a(68801)),s=o(a(69083)),n="repo-app-import-sub-generator";async function initI18n(){await r.i18n.init({lng:"en",fallbackLng:"en",showSupportNotice:!1}),r.i18n.addResourceBundle("en",n,s.default)}r.i18n=i.default.createInstance(),initI18n().catch(()=>{})},50774(e,r,a){Object.defineProperty(r,"__esModule",{value:!0});const o=a(58012);class RepoAppDownloadLogger{static _logger=o.DefaultLogger;static get logger(){return RepoAppDownloadLogger._logger}static set logger(e){RepoAppDownloadLogger._logger=e}static configureLogging(e,r,a,i,s,n){const p=a??new o.LogWrapper(e,r,i,s,n);RepoAppDownloadLogger.logger=p}}r.default=RepoAppDownloadLogger},24342(e,r,a){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.validateAndUpdateManifestUI5Version=async function validateAndUpdateManifestUI5Version(e,r){const a=(0,c.readManifest)(e,r);if(!a?.["sap.ui5"]?.dependencies||!a?.["sap.app"]?.sourceTemplate)throw new Error((0,n.t)("error.readManifestErrors.invalidManifestStructureError"));const o=a["sap.ui5"]?.dependencies?.minUI5Version,i=await(0,d.getUI5Versions)({includeMaintained:!0});if(i.find(e=>e.version===o));else if((0,l.isInternalFeaturesSettingEnabled)())a["sap.ui5"].dependencies.minUI5Version="${sap.ui5.dist.version}";else{const e=i[0]?.version;a["sap.ui5"].dependencies.minUI5Version=e}a["sap.app"].sourceTemplate.id=m.fioriAppSourcetemplateId,r.writeJSON(e,a,void 0,2)},r.replaceWebappFiles=async function replaceWebappFiles(e,r,a){try{const o=(0,i.join)(e,s.DirName.Webapp),l=[{webappFile:s.FileName.Manifest,extractedFile:s.FileName.Manifest},{webappFile:(0,i.join)("i18n","i18n.properties"),extractedFile:(0,i.join)("i18n","i18n.properties")},{webappFile:"index.html",extractedFile:"index.html"},{webappFile:"Component.js",extractedFile:"component.js"}];for(const{webappFile:e,extractedFile:d}of l){const l=(0,i.join)(o,e),c=(0,i.join)(r,d);if(a.exists(c))if(d===s.FileName.Manifest){const e=a.readJSON(c),r=a.readJSON(l);r?.["sap.app"]?.dataSources&&e?.["sap.app"]&&(e["sap.app"].dataSources=r["sap.app"].dataSources),r?.["sap.ui5"]?.models&&e?.["sap.ui5"]&&(e["sap.ui5"].models=r["sap.ui5"]?.models),r?.["sap.ui5"]?.resources&&e?.["sap.ui5"]?.resources&&(e["sap.ui5"].resources=r?.["sap.ui5"].resources),a.writeJSON(l,e,void 0,2)}else a.copy(c,l);else p.default.logger?.warn((0,n.t)("warn.extractedFileNotFound",{extractedFilePath:c}))}}catch(e){p.default.logger?.error((0,n.t)("error.replaceWebappFilesError",{error:e}))}};const i=a(76760),s=a(20787),n=a(33242),p=o(a(50774)),l=a(98434),d=a(97133),c=a(52052),m=a(18157)},8433(e,r,a){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0}),r.isValidPromptState=r.validateQfaJsonFile=void 0,r.validateAppSelection=async function validateAppSelection(e,r,a,o){if(a?.appId&&0===r.length)return await generateAppNotFoundHelpLink();if(0===r.length&&!e?.appId)return await generateAppNotFoundHelpLink();if(e?.appId)try{await(0,d.downloadApp)(e.repoName);const r=(0,d.hasQfaJson)();return r||o?.showError((0,i.t)("error.qfaJsonNotFound",{jsonFileName:m.qfaJsonFileName}),c.MessageType.notification),r}catch(e){return s.default.logger?.debug(`validateAppSelection: Error downloading app: ${e.message}`),(0,i.t)("error.appDownloadErrors.appDownloadFailure",{error:e.message})}return!1};const i=a(33242),s=o(a(50774)),n=a(93078),p=a(9422),l=a(12450),d=a(93394),c=a(73667),m=a(18157);r.validateQfaJsonFile=e=>{return!(n=e.metadata,(!n.package||"string"!=typeof n.package)&&(s.default.logger?.error((0,i.t)("error.invalidMetadataPackage")),1)||(o=e.serviceBindingDetails,o.serviceName&&"string"==typeof o.serviceName?o.serviceVersion&&"string"==typeof o.serviceVersion?(!o.mainEntityName||"string"!=typeof o.mainEntityName)&&(s.default.logger?.error((0,i.t)("error.invalidMainEntityName")),1):(s.default.logger?.error((0,i.t)("error.invalidServiceVersion")),1):(s.default.logger?.error((0,i.t)("error.invalidServiceName")),1))||(a=e.projectAttribute,(!a.moduleName||"string"!=typeof a.moduleName)&&(s.default.logger?.error((0,i.t)("error.invalidModuleName")),1))||(r=e.deploymentDetails,!r.repositoryName&&(s.default.logger?.error((0,i.t)("error.invalidRepositoryName")),1)));var r,a,o,n};async function generateAppNotFoundHelpLink(){return l.ErrorHandler.getHelpLink(p.HELP_NODES.ADT_APP_NOT_FOUND_ERROR,l.ERROR_TYPE.INTERNAL_SERVER_ERROR,(0,i.t)("error.noAppsDeployed"))}r.isValidPromptState=(e,r)=>!!(n.PromptState.systemSelection.connectedSystem?.serviceProvider&&r&&e)},69083(e){e.exports=JSON.parse('{"error":{"telemetry":"Failed to send telemetry data after downloading the application from the SAPUI5 ABAP Repository. {{- error}}","qfaJsonNotFound":"The {{- jsonFileName }} file was not found in the downloaded application. Ensure the downloaded application is properly deployed to the ABAP repository.","replaceWebappFilesError":"An error occurred when replacing files in the downloaded application: {{- error}}. For more information, view the logs.","applicationListFetchError":"An error occurred when fetching the application list: {{- error}}. Check if your application is available in the system.","metadataFetchError":"An error occurred when fetching metadata: {{- error}}. For more information, view the logs.","appConfigGenError":"An error occurred when generating the application configuration: {{- error}}. For more information, view the logs.","endPhase":"An error occurred in the end phase: {{- error}}. For more information, view the logs.","errorProcessingJsonFile":"An error occurred when processing the JSON file: {{- error}}. Check the file is valid.","noAppsDeployed":"No applications deployed to this system can be downloaded.","validationErrors":{"invalidMetadataPackage":"Invalid or missing package in the metadata. Check the metadata.","invalidServiceName":"Invalid or missing `serviceName` in `serviceBindingDetails`. Check the `serviceName`.","invalidServiceVersion":"Invalid or missing `serviceVersion` in `serviceBindingDetails`. Check the `serviceVersion`.","invalidMainEntityName":"Invalid or missing `mainEntityName` in `serviceBindingDetails`. Check the `mainEntityName`.","invalidModuleName":"Invalid or missing `moduleName` in serviceBindingDetails. Check the `moduleName`.","invalidRepositoryName":"Invalid or missing `repositoryName` in `serviceBindingDetails`. Check the `repositoryName`."},"installationErrors":{"npmInstall":"An error occurred in the install phase: {{- error}}. For more information, view the logs.","skippedInstallation":"`--skipInstall` option was specified. Installation of dependencies will be skipped."},"appDownloadErrors":{"downloadedFileNotBufferError":"Error: The downloaded file is not a buffer. Check the file.","appDownloadFailure":"An error occurred when downloading the application: {{- error}}. For more information, view the logs.","zipExtractionError":"An error occurred when extracting the zip file: {{- error}}. For more information, view the logs."},"eventHookErrors":{"vscodeInstanceMissing":"Error: Missing VS Code instance in event hook.","postGenCommandMissing":"Error: Missing `postGenCommand` in event hook.","commandExecutionFailed":"Error executing `postGenCommand` in event hook: {{- error}}"},"readManifestErrors":{"manifestFileNotFound":"Error: the `manifest.json` file was not found in the downloaded application. Check the file exists.","readManifestFailed":"Error: Failed to read the `manifest.json` file. Check the file is valid.","sapAppNotDefined":"Error: `sap.app` not defined in the `manifest.json` file. Check `sap.app` is defined.","sourceTemplateNotSupported":"Error: Source template not supported. Use a supported template.","invalidManifestStructureError":"Invalid `manifest.json file` structure: `sap.ui5` or `sap.app` are missing. Check they exist."},"quickDeployedAppDownloadErrors":{"noAppsFound":"No application with the ID {{ appId }} was found in the system. Please check if the application is deployed correctly or select another app.","transportCheckFailed":"Transport request resolution failed with error: {error}."}},"warn":{"extractedFileNotFound":"Extracted file not found: {{- extractedFilePath}}. For more information, view the logs.","requiredFieldsMissing":"Required fields are missing for the {{- appId }} application. Check if the application is deployed correctly."},"prompts":{"appSelection":{"message":"Application","hint":"Select the application to download.","breadcrumb":"Application"},"targetPath":{"message":"Project Folder Path","breadcrumb":"Project Path"}},"readMe":{"appDescription":"This application was converted from an SAP Fiori application that was deployed from ADT using the ADT Quick Fiori Application generator.","launchText":"To launch the generated application, run the following command from the generated app root folder:\\n\\n```\\n npm start\\n```"},"info":{"repoAppDownloadCompleteMsg":"The selected application has been downloaded and updated to support SAP Fiori tools."}}')}};