@sap-ux/flp-config-sub-generator 0.4.13 → 1.0.1
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/index.d.ts +1 -1
- package/generators/app/index.js +47 -54
- package/generators/app/types.js +1 -2
- package/generators/telemetryEvents/index.js +2 -5
- package/generators/utils/constants.js +3 -6
- package/generators/utils/i18n.js +9 -19
- package/generators/utils/index.d.ts +2 -2
- package/generators/utils/index.js +2 -21
- package/generators/utils/logger.js +4 -7
- package/generators/utils/prompts.js +10 -14
- package/package.json +14 -12
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Generator from 'yeoman-generator';
|
|
2
2
|
import { promptNames } from '@sap-ux/flp-config-inquirer';
|
|
3
3
|
import type { FLPConfigPromptOptions } from '@sap-ux/flp-config-inquirer';
|
|
4
|
-
import type { FlpConfigOptions } from './types';
|
|
4
|
+
import type { FlpConfigOptions } from './types.js';
|
|
5
5
|
/**
|
|
6
6
|
* FLP config generator adds an inbound navigation config to an existing manifest.json.
|
|
7
7
|
*/
|
package/generators/app/index.js
CHANGED
|
@@ -1,30 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const i18n_1 = require("@sap-ux/i18n");
|
|
17
|
-
const feature_toggle_1 = require("@sap-ux/feature-toggle");
|
|
18
|
-
const fiori_generator_shared_1 = require("@sap-ux/fiori-generator-shared");
|
|
19
|
-
const inquirer_common_1 = require("@sap-ux/inquirer-common");
|
|
20
|
-
const constants_1 = require("../utils/constants");
|
|
21
|
-
const utils_1 = require("../utils");
|
|
22
|
-
const telemetryEvents_1 = require("../telemetryEvents");
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import Generator from 'yeoman-generator';
|
|
3
|
+
import FlpGenLogger from '../utils/logger.js';
|
|
4
|
+
import { AppWizard, Prompts, MessageType } from '@sap-devx/yeoman-ui-types';
|
|
5
|
+
import { handleErrorMessage, getExtensionGenPromptOpts } from '@sap-ux/deploy-config-generator-shared';
|
|
6
|
+
import { getPrompts, promptNames } from '@sap-ux/flp-config-inquirer';
|
|
7
|
+
import { generateInboundNavigationConfig } from '@sap-ux/app-config-writer';
|
|
8
|
+
import { FileName, getWebappPath, getI18nPropertiesPaths } from '@sap-ux/project-access';
|
|
9
|
+
import { createPropertiesI18nEntries } from '@sap-ux/i18n';
|
|
10
|
+
import { isInternalFeaturesSettingEnabled } from '@sap-ux/feature-toggle';
|
|
11
|
+
import { sendTelemetry, TelemetryHelper, isExtensionInstalled, YUI_EXTENSION_ID, YUI_MIN_VER_FILES_GENERATED_MSG, setYeomanEnvConflicterForce } from '@sap-ux/fiori-generator-shared';
|
|
12
|
+
import { extendWithOptions } from '@sap-ux/inquirer-common';
|
|
13
|
+
import { generatorTitle, i18nKeySubTitle, i18nKeyTitle } from '../utils/constants.js';
|
|
14
|
+
import { t, getPromptOptions, getYUIDetails } from '../utils/index.js';
|
|
15
|
+
import { EventName } from '../telemetryEvents/index.js';
|
|
23
16
|
const flpConfigSubGenNamespace = '@sap-ux/flp-config-sub-generator';
|
|
24
17
|
/**
|
|
25
18
|
* FLP config generator adds an inbound navigation config to an existing manifest.json.
|
|
26
19
|
*/
|
|
27
|
-
class
|
|
20
|
+
export default class extends Generator {
|
|
28
21
|
appWizard;
|
|
29
22
|
vscode;
|
|
30
23
|
launchFlpConfigAsSubGenerator;
|
|
@@ -46,17 +39,17 @@ class default_1 extends yeoman_generator_1.default {
|
|
|
46
39
|
*/
|
|
47
40
|
constructor(args, opts) {
|
|
48
41
|
super(args, opts);
|
|
49
|
-
this.appWizard = opts.appWizard ??
|
|
42
|
+
this.appWizard = opts.appWizard ?? AppWizard.create(opts);
|
|
50
43
|
this.vscode = opts.vscode;
|
|
51
44
|
this.launchFlpConfigAsSubGenerator = opts.launchFlpConfigAsSubGenerator ?? false;
|
|
52
45
|
this.appRootPath = opts.data?.appRootPath ?? opts?.appRootPath ?? this.destinationRoot();
|
|
53
46
|
this.promptOptions = this.options?.inquirerPromptOptions;
|
|
54
47
|
this.options = opts;
|
|
55
|
-
|
|
48
|
+
FlpGenLogger.configureLogging(this.rootGeneratorName(), this.log, this.options.logWrapper, this.options.logLevel, this.options.logger, this.vscode);
|
|
56
49
|
// If launched standalone, set the header, title and description
|
|
57
50
|
if (!this.launchFlpConfigAsSubGenerator) {
|
|
58
|
-
this.appWizard.setHeaderTitle(
|
|
59
|
-
this.prompts = new
|
|
51
|
+
this.appWizard.setHeaderTitle(generatorTitle);
|
|
52
|
+
this.prompts = new Prompts(getYUIDetails(this.appRootPath));
|
|
60
53
|
this.setPromptsCallback = (fn) => {
|
|
61
54
|
if (this.prompts) {
|
|
62
55
|
this.prompts.setCallback(fn);
|
|
@@ -66,28 +59,28 @@ class default_1 extends yeoman_generator_1.default {
|
|
|
66
59
|
}
|
|
67
60
|
}
|
|
68
61
|
async initializing() {
|
|
69
|
-
|
|
70
|
-
const extensionPromptOpts = await
|
|
62
|
+
setYeomanEnvConflicterForce(this.env, this.options.force);
|
|
63
|
+
const extensionPromptOpts = await getExtensionGenPromptOpts(this.env.create.bind(this.env), flpConfigSubGenNamespace, this.vscode);
|
|
71
64
|
this.promptOptions = {
|
|
72
65
|
...extensionPromptOpts,
|
|
73
66
|
...this.promptOptions
|
|
74
67
|
};
|
|
75
|
-
await
|
|
68
|
+
await TelemetryHelper.initTelemetrySettings({
|
|
76
69
|
consumerModule: {
|
|
77
70
|
name: flpConfigSubGenNamespace,
|
|
78
71
|
version: this.rootGeneratorVersion()
|
|
79
72
|
},
|
|
80
|
-
internalFeature:
|
|
73
|
+
internalFeature: isInternalFeaturesSettingEnabled(),
|
|
81
74
|
watchTelemetrySettingStore: false
|
|
82
75
|
});
|
|
83
76
|
if (this.existingApp) {
|
|
84
|
-
this.manifestPath =
|
|
77
|
+
this.manifestPath = join(await getWebappPath(this.appRootPath), FileName.Manifest);
|
|
85
78
|
this.manifest = this.fs.readJSON(this.manifestPath);
|
|
86
79
|
if (!this.manifest) {
|
|
87
|
-
|
|
80
|
+
handleErrorMessage(this.appWizard, { errorMsg: t('error.noManifest', { path: this.manifestPath }) });
|
|
88
81
|
}
|
|
89
82
|
if (!this.manifest['sap.app']) {
|
|
90
|
-
|
|
83
|
+
handleErrorMessage(this.appWizard, { errorMsg: t('error.sapNotDefined') });
|
|
91
84
|
}
|
|
92
85
|
}
|
|
93
86
|
}
|
|
@@ -113,12 +106,12 @@ class default_1 extends yeoman_generator_1.default {
|
|
|
113
106
|
inbounds = this.manifest?.['sap.app']?.crossNavigation?.inbounds;
|
|
114
107
|
}
|
|
115
108
|
const silentOverwrite = this.options.overwrite;
|
|
116
|
-
let questions = (await
|
|
109
|
+
let questions = (await getPrompts(inbounds, {
|
|
117
110
|
silentOverwrite,
|
|
118
|
-
...
|
|
111
|
+
...getPromptOptions(this.promptOptions)
|
|
119
112
|
}));
|
|
120
113
|
if (this.promptOptions) {
|
|
121
|
-
questions =
|
|
114
|
+
questions = extendWithOptions(questions, this.promptOptions);
|
|
122
115
|
}
|
|
123
116
|
this.answers = {};
|
|
124
117
|
const answers = await this.prompt(questions);
|
|
@@ -157,11 +150,11 @@ class default_1 extends yeoman_generator_1.default {
|
|
|
157
150
|
subTitle
|
|
158
151
|
});
|
|
159
152
|
}
|
|
160
|
-
await
|
|
153
|
+
await generateInboundNavigationConfig(this.appRootPath, {
|
|
161
154
|
semanticObject,
|
|
162
155
|
action,
|
|
163
|
-
title: keysAdded ? `{{${semanticObject}-${action}.${
|
|
164
|
-
subTitle: keysAdded && subTitle ? `{{${semanticObject}-${action}.${
|
|
156
|
+
title: keysAdded ? `{{${semanticObject}-${action}.${i18nKeyTitle}}}` : title,
|
|
157
|
+
subTitle: keysAdded && subTitle ? `{{${semanticObject}-${action}.${i18nKeySubTitle}}}` : subTitle
|
|
165
158
|
}, true, this.fs);
|
|
166
159
|
}
|
|
167
160
|
/**
|
|
@@ -178,21 +171,21 @@ class default_1 extends yeoman_generator_1.default {
|
|
|
178
171
|
*/
|
|
179
172
|
async _updateI18n(manifestPath, manifest, { semanticObject, action, title, subTitle }) {
|
|
180
173
|
let createProps = false;
|
|
181
|
-
const { 'sap.app': i18nPath } = await
|
|
174
|
+
const { 'sap.app': i18nPath } = await getI18nPropertiesPaths(manifestPath, manifest);
|
|
182
175
|
try {
|
|
183
|
-
const i18nEntries = [{ key: `${semanticObject}-${action}.${
|
|
176
|
+
const i18nEntries = [{ key: `${semanticObject}-${action}.${i18nKeyTitle}`, value: title }];
|
|
184
177
|
if (subTitle) {
|
|
185
178
|
i18nEntries.push({
|
|
186
|
-
key: `${semanticObject}-${action}.${
|
|
179
|
+
key: `${semanticObject}-${action}.${i18nKeySubTitle}`,
|
|
187
180
|
value: subTitle
|
|
188
181
|
});
|
|
189
182
|
}
|
|
190
|
-
createProps = await
|
|
183
|
+
createProps = await createPropertiesI18nEntries(i18nPath, i18nEntries, this.appRootPath, this.fs);
|
|
191
184
|
}
|
|
192
185
|
catch (error) {
|
|
193
|
-
const errorMsg =
|
|
194
|
-
this.appWizard.showWarning(errorMsg,
|
|
195
|
-
|
|
186
|
+
const errorMsg = t('warning.updatei18n', { path: i18nPath });
|
|
187
|
+
this.appWizard.showWarning(errorMsg, MessageType.notification);
|
|
188
|
+
FlpGenLogger.logger?.error(errorMsg);
|
|
196
189
|
}
|
|
197
190
|
return createProps;
|
|
198
191
|
}
|
|
@@ -202,26 +195,26 @@ class default_1 extends yeoman_generator_1.default {
|
|
|
202
195
|
}
|
|
203
196
|
// The app would not have been generated until after the writing phase due to the current ordering of the composeWith from Fiori generators
|
|
204
197
|
if (this.abort === false && !this.existingApp) {
|
|
205
|
-
this.manifestPath =
|
|
198
|
+
this.manifestPath = join(await getWebappPath(this.appRootPath), FileName.Manifest);
|
|
206
199
|
this.manifest = this.fs.readJSON(this.manifestPath);
|
|
207
200
|
await this._updateFiles(this.answers);
|
|
208
201
|
}
|
|
209
202
|
try {
|
|
210
203
|
if (!this.options.launchFlpConfigAsSubGenerator &&
|
|
211
|
-
|
|
212
|
-
this.appWizard?.showInformation(
|
|
204
|
+
isExtensionInstalled(this.vscode, YUI_EXTENSION_ID, YUI_MIN_VER_FILES_GENERATED_MSG)) {
|
|
205
|
+
this.appWizard?.showInformation(t('info.filesGenerated'), MessageType.notification);
|
|
213
206
|
}
|
|
214
|
-
|
|
207
|
+
sendTelemetry(EventName.GENERATION_SUCCESS, TelemetryHelper.createTelemetryData({
|
|
215
208
|
appType: 'flp-config',
|
|
216
209
|
...this.options.telemetryData
|
|
217
210
|
}) ?? {}).catch((error) => {
|
|
218
|
-
|
|
211
|
+
FlpGenLogger.logger.error(t('error.telemetry', { error }));
|
|
219
212
|
});
|
|
220
213
|
}
|
|
221
214
|
catch (error) {
|
|
222
|
-
|
|
215
|
+
FlpGenLogger.logger?.error(t('error.endPhase', { error }));
|
|
223
216
|
}
|
|
224
217
|
}
|
|
225
218
|
}
|
|
226
|
-
|
|
219
|
+
export { promptNames };
|
|
227
220
|
//# sourceMappingURL=index.js.map
|
package/generators/app/types.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EventName = void 0;
|
|
4
1
|
/**
|
|
5
2
|
* Event names for telemetry for the FLP config generator
|
|
6
3
|
*/
|
|
7
|
-
var EventName;
|
|
4
|
+
export var EventName;
|
|
8
5
|
(function (EventName) {
|
|
9
6
|
EventName["GENERATION_SUCCESS"] = "GENERATION_SUCCESS";
|
|
10
|
-
})(EventName || (
|
|
7
|
+
})(EventName || (EventName = {}));
|
|
11
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
exports.i18nKeyTitle = 'flpTitle';
|
|
5
|
-
exports.i18nKeySubTitle = 'flpSubtitle';
|
|
6
|
-
exports.generatorTitle = 'Fiori Launchpad Configuration Generator';
|
|
1
|
+
export const i18nKeyTitle = 'flpTitle';
|
|
2
|
+
export const i18nKeySubTitle = 'flpSubtitle';
|
|
3
|
+
export const generatorTitle = 'Fiori Launchpad Configuration Generator';
|
|
7
4
|
//# sourceMappingURL=constants.js.map
|
package/generators/utils/i18n.js
CHANGED
|
@@ -1,25 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.i18n = void 0;
|
|
7
|
-
exports.initI18n = initI18n;
|
|
8
|
-
exports.t = t;
|
|
9
|
-
const i18next_1 = __importDefault(require("i18next"));
|
|
10
|
-
const flp_config_sub_generator_i18n_json_1 = __importDefault(require("../translations/flp-config-sub-generator.i18n.json"));
|
|
1
|
+
import i18next from 'i18next';
|
|
2
|
+
import translations from '../translations/flp-config-sub-generator.i18n.json' with { type: 'json' };
|
|
11
3
|
const flpConfigGeneratorNs = 'flp-config-generator';
|
|
12
|
-
|
|
4
|
+
export const i18n = i18next.createInstance();
|
|
13
5
|
/**
|
|
14
6
|
* Initialize i18next with the translations for this module.
|
|
15
7
|
*/
|
|
16
|
-
async function initI18n() {
|
|
17
|
-
await
|
|
8
|
+
export async function initI18n() {
|
|
9
|
+
await i18n.init({
|
|
18
10
|
lng: 'en',
|
|
19
11
|
fallbackLng: 'en',
|
|
20
12
|
showSupportNotice: false
|
|
21
13
|
});
|
|
22
|
-
|
|
14
|
+
i18n.addResourceBundle('en', flpConfigGeneratorNs, translations);
|
|
23
15
|
}
|
|
24
16
|
/**
|
|
25
17
|
* Helper function facading the call to i18next. Unless a namespace option is provided the local namespace will be used.
|
|
@@ -28,13 +20,11 @@ async function initI18n() {
|
|
|
28
20
|
* @param options additional options
|
|
29
21
|
* @returns {string} localized string stored for the given key
|
|
30
22
|
*/
|
|
31
|
-
function t(key, options) {
|
|
23
|
+
export function t(key, options) {
|
|
32
24
|
if (!options?.ns) {
|
|
33
25
|
options = Object.assign(options ?? {}, { ns: flpConfigGeneratorNs });
|
|
34
26
|
}
|
|
35
|
-
return
|
|
27
|
+
return i18n.t(key, options);
|
|
36
28
|
}
|
|
37
|
-
initI18n().catch(() =>
|
|
38
|
-
// Needed for lint
|
|
39
|
-
});
|
|
29
|
+
void initI18n().catch(() => undefined);
|
|
40
30
|
//# sourceMappingURL=i18n.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from './i18n';
|
|
2
|
-
export { getYUIDetails, getPromptOptions } from './prompts';
|
|
1
|
+
export * from './i18n.js';
|
|
2
|
+
export { getYUIDetails, getPromptOptions } from './prompts.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,22 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.getPromptOptions = exports.getYUIDetails = void 0;
|
|
18
|
-
__exportStar(require("./i18n"), exports);
|
|
19
|
-
var prompts_1 = require("./prompts");
|
|
20
|
-
Object.defineProperty(exports, "getYUIDetails", { enumerable: true, get: function () { return prompts_1.getYUIDetails; } });
|
|
21
|
-
Object.defineProperty(exports, "getPromptOptions", { enumerable: true, get: function () { return prompts_1.getPromptOptions; } });
|
|
1
|
+
export * from './i18n.js';
|
|
2
|
+
export { getYUIDetails, getPromptOptions } from './prompts.js';
|
|
22
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const fiori_generator_shared_1 = require("@sap-ux/fiori-generator-shared");
|
|
1
|
+
import { DefaultLogger, LogWrapper } from '@sap-ux/fiori-generator-shared';
|
|
4
2
|
/**
|
|
5
3
|
* Static logger prevents passing of logger references through all functions, as this is a cross-cutting concern.
|
|
6
4
|
*/
|
|
7
|
-
class FlpGenLogger {
|
|
8
|
-
static _logger =
|
|
5
|
+
export default class FlpGenLogger {
|
|
6
|
+
static _logger = DefaultLogger;
|
|
9
7
|
/**
|
|
10
8
|
* Get the logger.
|
|
11
9
|
*
|
|
@@ -33,9 +31,8 @@ class FlpGenLogger {
|
|
|
33
31
|
* @param vscode - the vscode instance
|
|
34
32
|
*/
|
|
35
33
|
static configureLogging(loggerName, yoLogger, logWrapper, logLevel, vscLogger, vscode) {
|
|
36
|
-
const logger = logWrapper ?? new
|
|
34
|
+
const logger = logWrapper ?? new LogWrapper(loggerName, yoLogger, logLevel, vscLogger, vscode);
|
|
37
35
|
FlpGenLogger.logger = logger;
|
|
38
36
|
}
|
|
39
37
|
}
|
|
40
|
-
exports.default = FlpGenLogger;
|
|
41
38
|
//# sourceMappingURL=logger.js.map
|
|
@@ -1,20 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.getYUIDetails = getYUIDetails;
|
|
4
|
-
exports.getPromptOptions = getPromptOptions;
|
|
5
|
-
const node_path_1 = require("node:path");
|
|
6
|
-
const flp_config_inquirer_1 = require("@sap-ux/flp-config-inquirer");
|
|
1
|
+
import { basename } from 'node:path';
|
|
2
|
+
import { promptNames } from '@sap-ux/flp-config-inquirer';
|
|
7
3
|
/**
|
|
8
4
|
* Returns the details for the YUI prompt.
|
|
9
5
|
*
|
|
10
6
|
* @param appRootPath - path to the application to be displayed in YUI step description
|
|
11
7
|
* @returns step details
|
|
12
8
|
*/
|
|
13
|
-
function getYUIDetails(appRootPath) {
|
|
9
|
+
export function getYUIDetails(appRootPath) {
|
|
14
10
|
return [
|
|
15
11
|
{
|
|
16
12
|
name: 'Fiori Launchpad Configuration',
|
|
17
|
-
description: `Configure Fiori Launchpad settings - ${
|
|
13
|
+
description: `Configure Fiori Launchpad settings - ${basename(appRootPath)}`
|
|
18
14
|
}
|
|
19
15
|
];
|
|
20
16
|
}
|
|
@@ -24,14 +20,14 @@ function getYUIDetails(appRootPath) {
|
|
|
24
20
|
* @param promptOptions - FLP configuration prompt options
|
|
25
21
|
* @returns - FLP configuration prompt options with defaults applied
|
|
26
22
|
*/
|
|
27
|
-
function getPromptOptions(promptOptions) {
|
|
23
|
+
export function getPromptOptions(promptOptions) {
|
|
28
24
|
return {
|
|
29
25
|
...promptOptions,
|
|
30
|
-
[
|
|
31
|
-
[
|
|
32
|
-
[
|
|
33
|
-
[
|
|
34
|
-
[
|
|
26
|
+
[promptNames.inboundId]: { hide: true, ...promptOptions?.inboundId },
|
|
27
|
+
[promptNames.existingFlpConfigInfo]: { hide: true, ...promptOptions?.existingFlpConfigInfo },
|
|
28
|
+
[promptNames.icon]: { hide: true, ...promptOptions?.icon },
|
|
29
|
+
[promptNames.additionalParameters]: { hide: true, ...promptOptions?.additionalParameters },
|
|
30
|
+
[promptNames.confirmReplace]: { hide: true, ...promptOptions?.confirmReplace }
|
|
35
31
|
};
|
|
36
32
|
}
|
|
37
33
|
//# sourceMappingURL=prompts.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sap-ux/flp-config-sub-generator",
|
|
3
3
|
"description": "Generator for creating Fiori Launcpad configuration",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "1.0.1",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/SAP/open-ux-tools.git",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"bugs": {
|
|
11
11
|
"url": "https://github.com/SAP/open-ux-tools/issues?q=is%3Aopen+is%3Aissue"
|
|
12
12
|
},
|
|
13
|
+
"type": "module",
|
|
13
14
|
"license": "Apache-2.0",
|
|
14
15
|
"main": "generators/app/index.js",
|
|
15
16
|
"files": [
|
|
@@ -23,16 +24,17 @@
|
|
|
23
24
|
"i18next": "25.10.10",
|
|
24
25
|
"inquirer": "8.2.7",
|
|
25
26
|
"yeoman-generator": "5.10.0",
|
|
26
|
-
"@sap-ux/app-config-writer": "0.
|
|
27
|
-
"@sap-ux/deploy-config-generator-shared": "0.
|
|
28
|
-
"@sap-ux/feature-toggle": "0.
|
|
29
|
-
"@sap-ux/fiori-generator-shared": "0.
|
|
30
|
-
"@sap-ux/flp-config-inquirer": "0.
|
|
31
|
-
"@sap-ux/i18n": "0.
|
|
32
|
-
"@sap-ux/inquirer-common": "0.
|
|
33
|
-
"@sap-ux/project-access": "
|
|
27
|
+
"@sap-ux/app-config-writer": "1.0.1",
|
|
28
|
+
"@sap-ux/deploy-config-generator-shared": "1.0.1",
|
|
29
|
+
"@sap-ux/feature-toggle": "1.0.0",
|
|
30
|
+
"@sap-ux/fiori-generator-shared": "1.0.1",
|
|
31
|
+
"@sap-ux/flp-config-inquirer": "1.0.1",
|
|
32
|
+
"@sap-ux/i18n": "1.0.0",
|
|
33
|
+
"@sap-ux/inquirer-common": "1.0.1",
|
|
34
|
+
"@sap-ux/project-access": "2.0.1"
|
|
34
35
|
},
|
|
35
36
|
"devDependencies": {
|
|
37
|
+
"@jest/globals": "30.3.0",
|
|
36
38
|
"@jest/types": "30.3.0",
|
|
37
39
|
"@types/inquirer": "8.2.6",
|
|
38
40
|
"@types/mem-fs": "1.1.2",
|
|
@@ -48,7 +50,7 @@
|
|
|
48
50
|
"rimraf": "6.1.3",
|
|
49
51
|
"unionfs": "4.6.0",
|
|
50
52
|
"yeoman-test": "6.3.0",
|
|
51
|
-
"@sap-ux/nodejs-utils": "0.
|
|
53
|
+
"@sap-ux/nodejs-utils": "1.0.0"
|
|
52
54
|
},
|
|
53
55
|
"engines": {
|
|
54
56
|
"node": ">=22.x"
|
|
@@ -59,8 +61,8 @@
|
|
|
59
61
|
"watch": "tsc --watch",
|
|
60
62
|
"lint": "eslint",
|
|
61
63
|
"lint:fix": "eslint --fix",
|
|
62
|
-
"test": "jest --ci --forceExit --detectOpenHandles --colors",
|
|
63
|
-
"test-u": "jest --ci --forceExit --detectOpenHandles --colors -u",
|
|
64
|
+
"test": "cross-env NODE_OPTIONS='--experimental-vm-modules' jest --ci --forceExit --detectOpenHandles --colors",
|
|
65
|
+
"test-u": "cross-env NODE_OPTIONS='--experimental-vm-modules' jest --ci --forceExit --detectOpenHandles --colors -u",
|
|
64
66
|
"link": "pnpm link --global",
|
|
65
67
|
"unlink": "pnpm unlink --global"
|
|
66
68
|
}
|