@sap-ux/repo-app-import-sub-generator 1.1.20 → 1.1.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/generators/app/app-config-abap-repo.d.ts +8 -18
- package/generators/app/app-config-abap-repo.js +27 -3
- package/generators/app/app-config-quick-deploy.js +1 -18
- package/generators/app/index.js +8 -5
- package/generators/app/types.d.ts +22 -1
- package/generators/utils/download-utils.d.ts +8 -0
- package/generators/utils/download-utils.js +17 -0
- package/generators/utils/file-helpers.d.ts +13 -3
- package/generators/utils/file-helpers.js +39 -6
- package/package.json +19 -18
|
@@ -1,25 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { AbapServiceProvider } from '@sap-ux/axios-extension';
|
|
2
2
|
import type { Editor } from 'mem-fs-editor';
|
|
3
|
-
import type { AppInfo, AbapRepositoryContext } from '../app/types.js';
|
|
3
|
+
import type { AppInfo, AbapRepositoryContext, AbapRepoAppConfig } from '../app/types.js';
|
|
4
4
|
import type { AbapDeployConfig } from '@sap-ux/ui5-config';
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* Fetches OData metadata for the main service and writes it to local service folder in the webapp.
|
|
7
|
+
*
|
|
8
|
+
* @param {AbapServiceProvider} provider - The connected ABAP service provider.
|
|
9
|
+
* @param {string} webappPath - Absolute path to the webapp folder.
|
|
10
|
+
* @param {Editor} fs - The mem-fs editor.
|
|
8
11
|
*/
|
|
9
|
-
export
|
|
10
|
-
app: {
|
|
11
|
-
id: string;
|
|
12
|
-
title: string;
|
|
13
|
-
flpAppId: string;
|
|
14
|
-
};
|
|
15
|
-
service: {
|
|
16
|
-
url: string | undefined;
|
|
17
|
-
version: OdataVersion;
|
|
18
|
-
};
|
|
19
|
-
ui5: {
|
|
20
|
-
version: string;
|
|
21
|
-
};
|
|
22
|
-
}
|
|
12
|
+
export declare function writeServiceMetadata(provider: AbapServiceProvider, webappPath: string, fs: Editor): Promise<void>;
|
|
23
13
|
/**
|
|
24
14
|
* Builds the app configuration for the ABAP repository download flow by reading
|
|
25
15
|
* the downloaded manifest. Returns a typed config object used for README generation, launch config, and deploy config.
|
|
@@ -3,11 +3,31 @@ import { PromptState } from '../prompts/prompt-state.js';
|
|
|
3
3
|
import RepoAppDownloadLogger from '../utils/logger.js';
|
|
4
4
|
import { t } from '../utils/i18n.js';
|
|
5
5
|
import { getFlpId } from '@sap-ux/fiori-generator-shared';
|
|
6
|
-
import { FileName, getMainService } from '@sap-ux/project-access';
|
|
7
|
-
import { resolveTransportRequest } from '../utils/download-utils.js';
|
|
6
|
+
import { FileName, DirName, getMainService } from '@sap-ux/project-access';
|
|
7
|
+
import { resolveTransportRequest, fetchServiceMetadata } from '../utils/download-utils.js';
|
|
8
8
|
import { AuthenticationType } from '@sap-ux/store';
|
|
9
|
-
import { readManifest } from '../utils/file-helpers.js';
|
|
9
|
+
import { readManifest, getTemplateTypeFromManifest } from '../utils/file-helpers.js';
|
|
10
10
|
import { join } from 'node:path';
|
|
11
|
+
/**
|
|
12
|
+
* Fetches OData metadata for the main service and writes it to local service folder in the webapp.
|
|
13
|
+
*
|
|
14
|
+
* @param {AbapServiceProvider} provider - The connected ABAP service provider.
|
|
15
|
+
* @param {string} webappPath - Absolute path to the webapp folder.
|
|
16
|
+
* @param {Editor} fs - The mem-fs editor.
|
|
17
|
+
*/
|
|
18
|
+
export async function writeServiceMetadata(provider, webappPath, fs) {
|
|
19
|
+
const manifest = readManifest(join(webappPath, FileName.Manifest), fs);
|
|
20
|
+
const serviceName = getMainService(manifest);
|
|
21
|
+
const serviceUri = serviceName ? manifest?.['sap.app']?.dataSources?.[serviceName]?.uri : undefined;
|
|
22
|
+
if (!serviceName || !serviceUri) {
|
|
23
|
+
RepoAppDownloadLogger.logger?.debug('No main service URI found in manifest; skipping metadata fetch.');
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const metadata = await fetchServiceMetadata(provider, serviceUri);
|
|
27
|
+
if (metadata) {
|
|
28
|
+
fs.write(join(webappPath, DirName.LocalService, serviceName, 'metadata.xml'), metadata);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
11
31
|
/**
|
|
12
32
|
* Builds the app configuration for the ABAP repository download flow by reading
|
|
13
33
|
* the downloaded manifest. Returns a typed config object used for README generation, launch config, and deploy config.
|
|
@@ -28,6 +48,7 @@ export function getAbapRepoAppConfig(webappPath, appInfo, fs) {
|
|
|
28
48
|
? manifest?.['sap.app']?.dataSources?.[mainServiceName]?.settings?.odataVersion
|
|
29
49
|
: undefined;
|
|
30
50
|
const odataVersion = odataVersionStr === '4.0' ? OdataVersion.v4 : OdataVersion.v2;
|
|
51
|
+
const templateType = getTemplateTypeFromManifest(manifest);
|
|
31
52
|
return {
|
|
32
53
|
app: {
|
|
33
54
|
id: appId,
|
|
@@ -40,6 +61,9 @@ export function getAbapRepoAppConfig(webappPath, appInfo, fs) {
|
|
|
40
61
|
},
|
|
41
62
|
ui5: {
|
|
42
63
|
version: ui5Version
|
|
64
|
+
},
|
|
65
|
+
template: {
|
|
66
|
+
type: templateType
|
|
43
67
|
}
|
|
44
68
|
};
|
|
45
69
|
}
|
|
@@ -8,24 +8,7 @@ import RepoAppDownloadLogger from '../utils/logger.js';
|
|
|
8
8
|
import { FileName } from '@sap-ux/project-access';
|
|
9
9
|
import { join } from 'node:path';
|
|
10
10
|
import { getUI5Versions } from '@sap-ux/ui5-info';
|
|
11
|
-
import { resolveTransportRequest } from '../utils/download-utils.js';
|
|
12
|
-
/**
|
|
13
|
-
* Fetches the metadata of a given service from the provided ABAP service provider.
|
|
14
|
-
*
|
|
15
|
-
* @param {AbapServiceProvider} provider - The ABAP service provider instance.
|
|
16
|
-
* @param {string} serviceUrl - The URL of the service to retrieve metadata for.
|
|
17
|
-
* @returns {Promise<string | undefined>} - A promise resolving to the service metadata.
|
|
18
|
-
*/
|
|
19
|
-
const fetchServiceMetadata = async (provider, serviceUrl) => {
|
|
20
|
-
try {
|
|
21
|
-
const metadata = await provider.service(serviceUrl).metadata();
|
|
22
|
-
RepoAppDownloadLogger.logger?.debug('Metadata fetched successfully');
|
|
23
|
-
return metadata;
|
|
24
|
-
}
|
|
25
|
-
catch (err) {
|
|
26
|
-
RepoAppDownloadLogger.logger?.error(t('error.metadataFetchError', { error: err.message }));
|
|
27
|
-
}
|
|
28
|
-
};
|
|
11
|
+
import { resolveTransportRequest, fetchServiceMetadata } from '../utils/download-utils.js';
|
|
29
12
|
/**
|
|
30
13
|
* Gets the application configuration based on the provided user answers and manifest data.
|
|
31
14
|
* This configuration will be used to initialize a new Fiori application.
|
package/generators/app/index.js
CHANGED
|
@@ -9,7 +9,7 @@ import { EventName } from '../telemetryEvents/index.js';
|
|
|
9
9
|
import { getDefaultTargetFolder, generateAppGenInfo, sendTelemetry, TelemetryHelper, isCli, setYeomanEnvConflicterForce } from '@sap-ux/fiori-generator-shared';
|
|
10
10
|
import { AppDownloadType, PromptNames } from './types.js';
|
|
11
11
|
import { getPrompts } from '../prompts/prompts.js';
|
|
12
|
-
import { generate
|
|
12
|
+
import { generate } from '@sap-ux/fiori-elements-writer';
|
|
13
13
|
import { join, basename } from 'node:path';
|
|
14
14
|
import { platform } from 'node:os';
|
|
15
15
|
import { runPostAppGenHook } from '../utils/event-hook.js';
|
|
@@ -21,7 +21,7 @@ import { writeApplicationInfoSettings } from '@sap-ux/fiori-tools-settings';
|
|
|
21
21
|
import { generate as generateDeployConfig } from '@sap-ux/abap-deploy-config-writer';
|
|
22
22
|
import { PromptState } from '../prompts/prompt-state.js';
|
|
23
23
|
import { getAppConfig, getAdtDeployConfig } from './app-config-quick-deploy.js';
|
|
24
|
-
import { getAbapRepoAppConfig, getAbapRepoDeployConfig } from './app-config-abap-repo.js';
|
|
24
|
+
import { getAbapRepoAppConfig, getAbapRepoDeployConfig, writeServiceMetadata } from './app-config-abap-repo.js';
|
|
25
25
|
import { makeValidJson, processDebugArtifacts, addPackageJsonIfNotFound } from '../utils/file-helpers.js';
|
|
26
26
|
import { replaceWebappFiles, validateAndUpdateManifestUI5Version } from '../utils/updates.js';
|
|
27
27
|
import { getYUIDetails } from '../prompts/prompt-helpers.js';
|
|
@@ -123,12 +123,15 @@ export default class extends Generator {
|
|
|
123
123
|
async _generateAbapRepositoryApp() {
|
|
124
124
|
const webappPath = join(this.projectPath, DirName.Webapp);
|
|
125
125
|
await extractZip(webappPath, this.fs);
|
|
126
|
+
const serviceProvider = PromptState.systemSelection?.connectedSystem?.serviceProvider;
|
|
127
|
+
if (serviceProvider) {
|
|
128
|
+
await writeServiceMetadata(serviceProvider, webappPath, this.fs);
|
|
129
|
+
}
|
|
126
130
|
processDebugArtifacts(webappPath, this.fs);
|
|
127
131
|
const appConfig = getAbapRepoAppConfig(webappPath, this.answers.selectedApp, this.fs);
|
|
128
132
|
// If package.json does not exist in the extracted app, add a minimal one with the appId as the package name.
|
|
129
|
-
addPackageJsonIfNotFound(this.projectPath, appConfig
|
|
133
|
+
addPackageJsonIfNotFound(this.projectPath, appConfig, this.fs);
|
|
130
134
|
// Generate deploy config
|
|
131
|
-
const serviceProvider = PromptState.systemSelection?.connectedSystem?.serviceProvider;
|
|
132
135
|
const context = {
|
|
133
136
|
serviceProvider,
|
|
134
137
|
appDownloadType: AppDownloadType.AbapRepository
|
|
@@ -198,7 +201,7 @@ export default class extends Generator {
|
|
|
198
201
|
generatorName: generatorName,
|
|
199
202
|
generatorVersion: this.rootGeneratorVersion(),
|
|
200
203
|
ui5Version: config.ui5?.version ?? '',
|
|
201
|
-
template:
|
|
204
|
+
template: config.template.type,
|
|
202
205
|
serviceUrl: config.service.url,
|
|
203
206
|
launchText: t('readMe.launchText')
|
|
204
207
|
};
|
|
@@ -2,9 +2,30 @@ import type Generator from 'yeoman-generator';
|
|
|
2
2
|
import type { AppWizard } from '@sap-devx/yeoman-ui-types';
|
|
3
3
|
import type { VSCodeInstance, TelemetryData, LogWrapper } from '@sap-ux/fiori-generator-shared';
|
|
4
4
|
import type { AppIndex, AbapServiceProvider } from '@sap-ux/axios-extension';
|
|
5
|
-
import type { OdataServiceAnswers } from '@sap-ux/odata-service-inquirer';
|
|
5
|
+
import type { OdataServiceAnswers, OdataVersion } from '@sap-ux/odata-service-inquirer';
|
|
6
6
|
import type { YUIQuestion } from '@sap-ux/inquirer-common';
|
|
7
7
|
import type { AutocompleteQuestionOptions } from 'inquirer-autocomplete-prompt';
|
|
8
|
+
/**
|
|
9
|
+
* App configuration derived from the downloaded manifest for the ABAP repository flow.
|
|
10
|
+
* Used for README generation, launch config creation, and adding a minimal package.json.
|
|
11
|
+
*/
|
|
12
|
+
export interface AbapRepoAppConfig {
|
|
13
|
+
app: {
|
|
14
|
+
id: string;
|
|
15
|
+
title: string;
|
|
16
|
+
flpAppId: string;
|
|
17
|
+
};
|
|
18
|
+
service: {
|
|
19
|
+
url: string | undefined;
|
|
20
|
+
version: OdataVersion;
|
|
21
|
+
};
|
|
22
|
+
ui5: {
|
|
23
|
+
version: string;
|
|
24
|
+
};
|
|
25
|
+
template: {
|
|
26
|
+
type: string;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
8
29
|
/**
|
|
9
30
|
* Identifies which download flow is active.
|
|
10
31
|
* ADTQuickDeploy: app was quick-deployed via ADT; uses qfa.json for config.
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import type { AbapServiceProvider } from '@sap-ux/axios-extension';
|
|
2
2
|
import type { Editor } from 'mem-fs-editor';
|
|
3
|
+
/**
|
|
4
|
+
* Fetches the metadata of a given service from the provided ABAP service provider.
|
|
5
|
+
*
|
|
6
|
+
* @param {AbapServiceProvider} provider - The ABAP service provider instance.
|
|
7
|
+
* @param {string} serviceUrl - The URL of the service to retrieve metadata for.
|
|
8
|
+
* @returns {Promise<string | undefined>} - A promise resolving to the service metadata XML string.
|
|
9
|
+
*/
|
|
10
|
+
export declare function fetchServiceMetadata(provider: AbapServiceProvider, serviceUrl: string): Promise<string | undefined>;
|
|
3
11
|
/**
|
|
4
12
|
* Checks whether the ZIP archive contains an entry named qfa.json
|
|
5
13
|
* and verifies that a file named qfa.json exists in the archive.
|
|
@@ -5,6 +5,23 @@ import RepoAppDownloadLogger from '../utils/logger.js';
|
|
|
5
5
|
import { qfaJsonFileName } from './constants.js';
|
|
6
6
|
import { TransportChecksService } from '@sap-ux/axios-extension';
|
|
7
7
|
import { restoreServiceProviderLoggers } from '@sap-ux/fiori-generator-shared';
|
|
8
|
+
/**
|
|
9
|
+
* Fetches the metadata of a given service from the provided ABAP service provider.
|
|
10
|
+
*
|
|
11
|
+
* @param {AbapServiceProvider} provider - The ABAP service provider instance.
|
|
12
|
+
* @param {string} serviceUrl - The URL of the service to retrieve metadata for.
|
|
13
|
+
* @returns {Promise<string | undefined>} - A promise resolving to the service metadata XML string.
|
|
14
|
+
*/
|
|
15
|
+
export async function fetchServiceMetadata(provider, serviceUrl) {
|
|
16
|
+
try {
|
|
17
|
+
const metadata = await provider.service(serviceUrl).metadata();
|
|
18
|
+
RepoAppDownloadLogger.logger?.debug('Metadata fetched successfully');
|
|
19
|
+
return metadata;
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
RepoAppDownloadLogger.logger?.error(t('error.metadataFetchError', { error: err.message }));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
8
25
|
/**
|
|
9
26
|
* Checks whether the ZIP archive contains an entry named qfa.json
|
|
10
27
|
* and verifies that a file named qfa.json exists in the archive.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Editor } from 'mem-fs-editor';
|
|
2
|
+
import type { QfaJsonConfig, AbapRepoAppConfig } from '../app/types.js';
|
|
2
3
|
import { type Manifest } from '@sap-ux/project-access';
|
|
3
|
-
import type { QfaJsonConfig } from '../app/types.js';
|
|
4
4
|
/**
|
|
5
5
|
*
|
|
6
6
|
* @param filePath - Path to the JSON file
|
|
@@ -27,10 +27,20 @@ export declare function readManifest(manifestFilePath: string, fs: Editor): Mani
|
|
|
27
27
|
export declare function processDebugArtifacts(extractedProjectPath: string, fs: Editor): void;
|
|
28
28
|
/**
|
|
29
29
|
* Writes a minimal package.json to the project path if one does not already exist.
|
|
30
|
+
* Sets `sapux: true` for all apps except freestyle templates.
|
|
30
31
|
*
|
|
31
32
|
* @param {string} projectPath - The project root path.
|
|
32
|
-
* @param {
|
|
33
|
+
* @param {AbapRepoAppConfig} appConfig - The app configuration.
|
|
33
34
|
* @param {Editor} fs - The file system editor.
|
|
34
35
|
*/
|
|
35
|
-
export declare function addPackageJsonIfNotFound(projectPath: string,
|
|
36
|
+
export declare function addPackageJsonIfNotFound(projectPath: string, appConfig: AbapRepoAppConfig, fs: Editor): void;
|
|
37
|
+
/**
|
|
38
|
+
* Derives the template type string from a manifest's sourceTemplate id.
|
|
39
|
+
* Returns the suffix after `@sap/generator-fiori:` (e.g. `lrop`, `fpm`),
|
|
40
|
+
* or `'unknown'` if the id is absent or is not a fiori generated app.
|
|
41
|
+
*
|
|
42
|
+
* @param {Manifest} manifest - The parsed manifest object.
|
|
43
|
+
* @returns {string} The template type string.
|
|
44
|
+
*/
|
|
45
|
+
export declare function getTemplateTypeFromManifest(manifest: Manifest): string;
|
|
36
46
|
//# sourceMappingURL=file-helpers.d.ts.map
|
|
@@ -2,6 +2,9 @@ import { t } from './i18n.js';
|
|
|
2
2
|
import RepoAppDownloadLogger from './logger.js';
|
|
3
3
|
import { PromptState } from '../prompts/prompt-state.js';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
|
+
import { TemplateType as FioriElementsTemplateType } from '@sap-ux/fiori-elements-writer';
|
|
6
|
+
import { TemplateType as FioriFreestyleTemplateType } from '@sap-ux/fiori-freestyle-writer';
|
|
7
|
+
import { FileName } from '@sap-ux/project-access';
|
|
5
8
|
/**
|
|
6
9
|
*
|
|
7
10
|
* @param filePath - Path to the JSON file
|
|
@@ -48,10 +51,12 @@ export function readManifest(manifestFilePath, fs) {
|
|
|
48
51
|
* @param {Editor} fs - The file system editor.
|
|
49
52
|
*/
|
|
50
53
|
export function processDebugArtifacts(extractedProjectPath, fs) {
|
|
54
|
+
const dbgSuffix = '-dbg.';
|
|
51
55
|
PromptState.admZip?.getEntries().forEach((entry) => {
|
|
52
56
|
const name = entry.entryName;
|
|
53
|
-
if (name.
|
|
54
|
-
|
|
57
|
+
if (name.includes(dbgSuffix)) {
|
|
58
|
+
// copies contents of -dbg.js to .js file and removes the -dbg.js file
|
|
59
|
+
const extractedDebugPath = join(extractedProjectPath, name.replace(dbgSuffix, '.'));
|
|
55
60
|
const debugPath = join(extractedProjectPath, name);
|
|
56
61
|
fs.write(extractedDebugPath, entry.getData().toString('utf8'));
|
|
57
62
|
fs.delete(debugPath);
|
|
@@ -68,15 +73,43 @@ export function processDebugArtifacts(extractedProjectPath, fs) {
|
|
|
68
73
|
}
|
|
69
74
|
/**
|
|
70
75
|
* Writes a minimal package.json to the project path if one does not already exist.
|
|
76
|
+
* Sets `sapux: true` for all apps except freestyle templates.
|
|
71
77
|
*
|
|
72
78
|
* @param {string} projectPath - The project root path.
|
|
73
|
-
* @param {
|
|
79
|
+
* @param {AbapRepoAppConfig} appConfig - The app configuration.
|
|
74
80
|
* @param {Editor} fs - The file system editor.
|
|
75
81
|
*/
|
|
76
|
-
export function addPackageJsonIfNotFound(projectPath,
|
|
77
|
-
const packageJsonPath = join(projectPath,
|
|
82
|
+
export function addPackageJsonIfNotFound(projectPath, appConfig, fs) {
|
|
83
|
+
const packageJsonPath = join(projectPath, FileName.Package);
|
|
78
84
|
if (!fs.exists(packageJsonPath)) {
|
|
79
|
-
|
|
85
|
+
const packageJson = { name: appConfig.app.id };
|
|
86
|
+
const freestyleTemplates = new Set(Object.values(FioriFreestyleTemplateType));
|
|
87
|
+
if (!freestyleTemplates.has(appConfig.template.type)) {
|
|
88
|
+
packageJson['sapux'] = true;
|
|
89
|
+
}
|
|
90
|
+
fs.writeJSON(packageJsonPath, packageJson);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Derives the template type string from a manifest's sourceTemplate id.
|
|
95
|
+
* Returns the suffix after `@sap/generator-fiori:` (e.g. `lrop`, `fpm`),
|
|
96
|
+
* or `'unknown'` if the id is absent or is not a fiori generated app.
|
|
97
|
+
*
|
|
98
|
+
* @param {Manifest} manifest - The parsed manifest object.
|
|
99
|
+
* @returns {string} The template type string.
|
|
100
|
+
*/
|
|
101
|
+
export function getTemplateTypeFromManifest(manifest) {
|
|
102
|
+
const sourceTemplateId = manifest?.['sap.app']?.sourceTemplate?.id ?? '';
|
|
103
|
+
const fioriGeneratorPrefix = '@sap/generator-fiori:';
|
|
104
|
+
// set of all known @sap/generator-fiori template suffixes for validating sourceTemplate.id in manifest.json.
|
|
105
|
+
const knownTemplates = new Set([
|
|
106
|
+
...Object.values(FioriElementsTemplateType),
|
|
107
|
+
...Object.values(FioriFreestyleTemplateType)
|
|
108
|
+
]);
|
|
109
|
+
if (!sourceTemplateId.startsWith(fioriGeneratorPrefix)) {
|
|
110
|
+
return 'unknown';
|
|
80
111
|
}
|
|
112
|
+
const suffix = sourceTemplateId.slice(fioriGeneratorPrefix.length);
|
|
113
|
+
return knownTemplates.has(suffix) ? suffix : 'unknown';
|
|
81
114
|
}
|
|
82
115
|
//# sourceMappingURL=file-helpers.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sap-ux/repo-app-import-sub-generator",
|
|
3
3
|
"description": "Generator to download LROP Fiori applications deployed from an ABAP repository.",
|
|
4
|
-
"version": "1.1.
|
|
4
|
+
"version": "1.1.22",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/SAP/open-ux-tools.git",
|
|
@@ -21,26 +21,27 @@
|
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@sap-devx/yeoman-ui-types": "1.25.0",
|
|
24
|
-
"adm-zip": "0.5.
|
|
24
|
+
"adm-zip": "0.5.17",
|
|
25
25
|
"i18next": "25.10.10",
|
|
26
26
|
"inquirer": "8.2.7",
|
|
27
27
|
"yeoman-generator": "5.10.0",
|
|
28
|
-
"@sap-ux/feature-toggle": "1.0.
|
|
29
|
-
"@sap-ux/fiori-generator-shared": "1.0.
|
|
30
|
-
"@sap-ux/inquirer
|
|
28
|
+
"@sap-ux/feature-toggle": "1.0.3",
|
|
29
|
+
"@sap-ux/fiori-generator-shared": "1.0.13",
|
|
30
|
+
"@sap-ux/odata-service-inquirer": "3.0.16",
|
|
31
|
+
"@sap-ux/inquirer-common": "1.0.14",
|
|
31
32
|
"@sap-ux/project-access": "2.1.3",
|
|
32
|
-
"@sap-ux/
|
|
33
|
-
"@sap-ux/fiori-elements-writer": "3.0.38",
|
|
33
|
+
"@sap-ux/fiori-elements-writer": "3.0.39",
|
|
34
34
|
"@sap-ux/logger": "1.0.1",
|
|
35
|
-
"@sap-ux/
|
|
36
|
-
"@sap-ux/launch-config": "1.0.
|
|
35
|
+
"@sap-ux/fiori-freestyle-writer": "3.0.35",
|
|
36
|
+
"@sap-ux/launch-config": "1.0.8",
|
|
37
37
|
"@sap-ux/fiori-tools-settings": "1.0.1",
|
|
38
|
-
"@sap-ux/abap-deploy-config-writer": "1.0.
|
|
39
|
-
"@sap-ux/btp-utils": "2.0.
|
|
40
|
-
"@sap-ux/
|
|
41
|
-
"@sap-ux/
|
|
42
|
-
"@sap-ux/
|
|
43
|
-
"@sap-ux/system-access": "1.0.
|
|
38
|
+
"@sap-ux/abap-deploy-config-writer": "1.0.10",
|
|
39
|
+
"@sap-ux/btp-utils": "2.0.3",
|
|
40
|
+
"@sap-ux/project-input-validator": "1.0.7",
|
|
41
|
+
"@sap-ux/ui5-info": "1.0.2",
|
|
42
|
+
"@sap-ux/axios-extension": "2.0.4",
|
|
43
|
+
"@sap-ux/system-access": "1.0.4",
|
|
44
|
+
"@sap-ux/store": "2.0.2",
|
|
44
45
|
"@sap-ux/guided-answers-helper": "1.0.1"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
@@ -55,7 +56,7 @@
|
|
|
55
56
|
"@types/inquirer-autocomplete-prompt": "2.0.2",
|
|
56
57
|
"@types/yeoman-test": "4.0.6",
|
|
57
58
|
"@types/fs-extra": "11.0.4",
|
|
58
|
-
"fs-extra": "11.3.
|
|
59
|
+
"fs-extra": "11.3.5",
|
|
59
60
|
"@vscode-logging/logger": "2.0.9",
|
|
60
61
|
"@types/adm-zip": "0.5.8",
|
|
61
62
|
"memfs": "3.4.13",
|
|
@@ -66,8 +67,8 @@
|
|
|
66
67
|
"unionfs": "4.6.0",
|
|
67
68
|
"yeoman-environment": "3.19.3",
|
|
68
69
|
"yeoman-test": "6.3.0",
|
|
69
|
-
"@sap-ux/nodejs-utils": "1.0.
|
|
70
|
-
"@sap-ux/store": "2.0.
|
|
70
|
+
"@sap-ux/nodejs-utils": "1.0.4",
|
|
71
|
+
"@sap-ux/store": "2.0.2",
|
|
71
72
|
"@sap-ux/ui5-config": "1.0.3"
|
|
72
73
|
},
|
|
73
74
|
"engines": {
|