@sap-ux/ui5-application-writer 0.10.9 → 0.10.10
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/dist/data/defaults.d.ts +6 -2
- package/dist/data/defaults.d.ts.map +1 -1
- package/dist/data/defaults.js +58 -26
- package/dist/data/defaults.js.map +1 -1
- package/dist/data/index.d.ts +1 -1
- package/dist/data/index.js +1 -1
- package/dist/data/validators.d.ts +9 -0
- package/dist/data/validators.d.ts.map +1 -1
- package/dist/data/validators.js +28 -4
- package/dist/data/validators.js.map +1 -1
- package/dist/data/version-to-descriptor-mapping.json +6 -1
- package/dist/i18n.d.ts +14 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +50 -0
- package/dist/i18n.js.map +1 -0
- package/dist/translations/ui5-application-writer.i18n.json +14 -0
- package/package.json +4 -2
package/dist/data/defaults.d.ts
CHANGED
|
@@ -17,15 +17,19 @@ export declare function mergeApp(app: App): App;
|
|
|
17
17
|
export declare enum UI5_DEFAULT {
|
|
18
18
|
DEFAULT_UI5_VERSION = "",
|
|
19
19
|
DEFAULT_LOCAL_UI5_VERSION = "1.95.0",
|
|
20
|
-
MIN_UI5_VERSION = "1.60",
|
|
20
|
+
MIN_UI5_VERSION = "1.60.0",
|
|
21
21
|
MIN_LOCAL_SAPUI5_VERSION = "1.76.0",
|
|
22
22
|
MIN_LOCAL_OPENUI5_VERSION = "1.52.5",
|
|
23
23
|
SAPUI5_CDN = "https://ui5.sap.com",
|
|
24
|
-
OPENUI5_CDN = "https://openui5.hana.ondemand.com"
|
|
24
|
+
OPENUI5_CDN = "https://openui5.hana.ondemand.com",
|
|
25
|
+
TYPES_VERSION_SINCE = "1.76.0",
|
|
26
|
+
TYPES_VERSION_PREVIOUS = "1.71.18",
|
|
27
|
+
MANIFEST_VERSION = "1.12.0"
|
|
25
28
|
}
|
|
26
29
|
export declare const defaultUI5Libs: string[];
|
|
27
30
|
/**
|
|
28
31
|
* Merges version properties with the provided UI5 instance.
|
|
32
|
+
* Coerces provided UI5 versions to valid semantic versions.
|
|
29
33
|
*
|
|
30
34
|
* @param {UI5} [ui5] - the UI5 instance
|
|
31
35
|
* @returns {UI5} the updated copy of UI5 instance (does not change `ui5`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/data/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAgB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/data/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAgB,MAAM,UAAU,CAAC;AAM3D;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBxF;AACD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAWtC;AAED,oBAAY,WAAW;IACnB,mBAAmB,KAAK;IACxB,yBAAyB,WAAW;IACpC,eAAe,WAAW;IAC1B,wBAAwB,WAAW;IACnC,yBAAyB,WAAW;IACpC,UAAU,wBAAwB;IAClC,WAAW,sCAAsC;IACjD,mBAAmB,WAAW;IAC9B,sBAAsB,YAAY;IAClC,gBAAgB,WAAW;CAC9B;AAGD,eAAO,MAAM,cAAc,UAA2B,CAAC;AAEvD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAuB/C"}
|
package/dist/data/defaults.js
CHANGED
|
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.mergeUi5 = exports.defaultUI5Libs = exports.UI5_DEFAULT = exports.mergeApp = exports.packageDefaults = void 0;
|
|
7
7
|
const version_to_descriptor_mapping_json_1 = __importDefault(require("./version-to-descriptor-mapping.json")); // from https://github.com/SAP/ui5-manifest/blob/master/mapping.json
|
|
8
8
|
const ui5Libs_1 = require("./ui5Libs");
|
|
9
|
+
const semver_1 = __importDefault(require("semver"));
|
|
10
|
+
const i18n_1 = require("../i18n");
|
|
9
11
|
/**
|
|
10
12
|
* Returns a package instance with default properties.
|
|
11
13
|
*
|
|
@@ -42,8 +44,8 @@ function mergeApp(app) {
|
|
|
42
44
|
// Return merged, does not update passed ref
|
|
43
45
|
return Object.assign({
|
|
44
46
|
version: '0.0.1',
|
|
45
|
-
title:
|
|
46
|
-
description:
|
|
47
|
+
title: (0, i18n_1.t)('text.defaultAppTitle', { id: app.id }),
|
|
48
|
+
description: (0, i18n_1.t)('text.defaultAppDescription', { id: app.id }),
|
|
47
49
|
baseComponent: 'sap/ui/core/UIComponent'
|
|
48
50
|
}, app);
|
|
49
51
|
}
|
|
@@ -52,43 +54,75 @@ var UI5_DEFAULT;
|
|
|
52
54
|
(function (UI5_DEFAULT) {
|
|
53
55
|
UI5_DEFAULT["DEFAULT_UI5_VERSION"] = "";
|
|
54
56
|
UI5_DEFAULT["DEFAULT_LOCAL_UI5_VERSION"] = "1.95.0";
|
|
55
|
-
UI5_DEFAULT["MIN_UI5_VERSION"] = "1.60";
|
|
57
|
+
UI5_DEFAULT["MIN_UI5_VERSION"] = "1.60.0";
|
|
56
58
|
UI5_DEFAULT["MIN_LOCAL_SAPUI5_VERSION"] = "1.76.0";
|
|
57
59
|
UI5_DEFAULT["MIN_LOCAL_OPENUI5_VERSION"] = "1.52.5";
|
|
58
60
|
UI5_DEFAULT["SAPUI5_CDN"] = "https://ui5.sap.com";
|
|
59
61
|
UI5_DEFAULT["OPENUI5_CDN"] = "https://openui5.hana.ondemand.com";
|
|
62
|
+
UI5_DEFAULT["TYPES_VERSION_SINCE"] = "1.76.0";
|
|
63
|
+
UI5_DEFAULT["TYPES_VERSION_PREVIOUS"] = "1.71.18";
|
|
64
|
+
UI5_DEFAULT["MANIFEST_VERSION"] = "1.12.0";
|
|
60
65
|
})(UI5_DEFAULT = exports.UI5_DEFAULT || (exports.UI5_DEFAULT = {}));
|
|
61
66
|
// Required default libs
|
|
62
67
|
exports.defaultUI5Libs = ['sap.m', 'sap.ui.core'];
|
|
63
68
|
/**
|
|
64
69
|
* Merges version properties with the provided UI5 instance.
|
|
70
|
+
* Coerces provided UI5 versions to valid semantic versions.
|
|
65
71
|
*
|
|
66
72
|
* @param {UI5} [ui5] - the UI5 instance
|
|
67
73
|
* @returns {UI5} the updated copy of UI5 instance (does not change `ui5`)
|
|
68
74
|
*/
|
|
69
75
|
function mergeUi5(ui5) {
|
|
70
|
-
var _a, _b, _c, _d, _e
|
|
71
|
-
const version = (_a = ui5.version) !== null && _a !== void 0 ? _a : UI5_DEFAULT.DEFAULT_UI5_VERSION; //
|
|
76
|
+
var _a, _b, _c, _d, _e;
|
|
77
|
+
const version = (_a = ui5.version) !== null && _a !== void 0 ? _a : UI5_DEFAULT.DEFAULT_UI5_VERSION; // Undefined or null indicates the latest available should be used
|
|
72
78
|
const framework = (_b = ui5.framework) !== null && _b !== void 0 ? _b : 'SAPUI5';
|
|
73
79
|
const defaultFrameworkUrl = framework === 'SAPUI5' ? UI5_DEFAULT.SAPUI5_CDN : UI5_DEFAULT.OPENUI5_CDN;
|
|
74
80
|
const merged = {
|
|
75
|
-
minUI5Version: (
|
|
81
|
+
minUI5Version: getMinUI5Version(version, ui5.minUI5Version),
|
|
76
82
|
localVersion: getLocalVersion({ framework, version, localVersion: ui5.localVersion }),
|
|
77
83
|
version,
|
|
78
84
|
framework,
|
|
79
|
-
frameworkUrl: (
|
|
85
|
+
frameworkUrl: (_c = ui5.frameworkUrl) !== null && _c !== void 0 ? _c : defaultFrameworkUrl
|
|
80
86
|
};
|
|
81
|
-
|
|
82
|
-
merged.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
87
|
+
// typesVersion must be a valid npm semantic version, we know they cannot be null as already validated
|
|
88
|
+
const localSemVer = semver_1.default.valid(semver_1.default.coerce(merged.localVersion));
|
|
89
|
+
const typesVersion = semver_1.default.gte(localSemVer, UI5_DEFAULT.TYPES_VERSION_SINCE)
|
|
90
|
+
? localSemVer
|
|
91
|
+
: UI5_DEFAULT.TYPES_VERSION_PREVIOUS;
|
|
92
|
+
merged.descriptorVersion = getManifestVersion(merged.minUI5Version, ui5.descriptorVersion);
|
|
93
|
+
merged.typesVersion = (_d = ui5.typesVersion) !== null && _d !== void 0 ? _d : typesVersion;
|
|
94
|
+
merged.ui5Theme = (_e = ui5.ui5Theme) !== null && _e !== void 0 ? _e : 'sap_fiori_3';
|
|
86
95
|
merged.ui5Libs = (0, ui5Libs_1.getUI5Libs)(ui5.ui5Libs);
|
|
87
96
|
return Object.assign({}, ui5, merged);
|
|
88
97
|
}
|
|
89
98
|
exports.mergeUi5 = mergeUi5;
|
|
90
|
-
// if a specific local version is provided, use it, otherwise, sync with version but keep minimum versions in mind
|
|
91
99
|
/**
|
|
100
|
+
* Gets the miminum UI5 version based on the specified version.
|
|
101
|
+
*
|
|
102
|
+
* @param ui5Version - the ui5 version
|
|
103
|
+
* @param minUI5Version - optional minimum ui5 version
|
|
104
|
+
* @returns minimum UI5 version for manifest
|
|
105
|
+
*/
|
|
106
|
+
function getMinUI5Version(ui5Version, minUI5Version) {
|
|
107
|
+
return minUI5Version !== null && minUI5Version !== void 0 ? minUI5Version : (ui5Version ? ui5Version : UI5_DEFAULT.MIN_UI5_VERSION);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Get the manifest descriptor version from the specified miminum UI5 version.
|
|
111
|
+
* Snapshots are handled by coercion to proper versions.
|
|
112
|
+
*
|
|
113
|
+
* @param minUI5Version - the ui5 version to be used to map to the manifest descriptor version
|
|
114
|
+
* @param manifestVersion - optional manifest descriptor version to be used if provided
|
|
115
|
+
* @returns - the manifest descriptor version
|
|
116
|
+
*/
|
|
117
|
+
function getManifestVersion(minUI5Version, manifestVersion) {
|
|
118
|
+
var _a;
|
|
119
|
+
const minUI5SemVer = semver_1.default.coerce(minUI5Version);
|
|
120
|
+
return ((_a = manifestVersion !== null && manifestVersion !== void 0 ? manifestVersion : (minUI5Version &&
|
|
121
|
+
version_to_descriptor_mapping_json_1.default[`${semver_1.default.major(minUI5SemVer)}.${semver_1.default.minor(minUI5SemVer)}`])) !== null && _a !== void 0 ? _a : UI5_DEFAULT.MANIFEST_VERSION);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* If a specific local version is provided, use it, otherwise, sync with version but keep minimum versions in mind.
|
|
125
|
+
*
|
|
92
126
|
* @param inputObj input object
|
|
93
127
|
* @param inputObj.framework UI framework
|
|
94
128
|
* @param inputObj.version UI version
|
|
@@ -96,21 +130,19 @@ exports.mergeUi5 = mergeUi5;
|
|
|
96
130
|
* @returns {string} of the local UI5 version
|
|
97
131
|
*/
|
|
98
132
|
function getLocalVersion({ framework, version, localVersion }) {
|
|
99
|
-
|
|
133
|
+
// If explictly provided use, we deliberately do not coerce
|
|
100
134
|
if (localVersion) {
|
|
101
|
-
|
|
135
|
+
return localVersion;
|
|
102
136
|
}
|
|
103
|
-
else {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
result = version;
|
|
113
|
-
}
|
|
137
|
+
else if (version === UI5_DEFAULT.DEFAULT_UI5_VERSION) {
|
|
138
|
+
return UI5_DEFAULT.DEFAULT_LOCAL_UI5_VERSION;
|
|
139
|
+
}
|
|
140
|
+
let result = framework === 'SAPUI5' ? UI5_DEFAULT.MIN_LOCAL_SAPUI5_VERSION : UI5_DEFAULT.MIN_LOCAL_OPENUI5_VERSION; // minimum version available as local libs
|
|
141
|
+
// If the ui5 `version` is higher than the min framework version 'result' then use that as the local version instead
|
|
142
|
+
// Update to a valid coerced version string e.g. snapshot-1.80 -> 1.80.0. Cannot be null as previously validated.
|
|
143
|
+
const versionSemVer = semver_1.default.coerce(version);
|
|
144
|
+
if (semver_1.default.gt(versionSemVer, semver_1.default.coerce(result))) {
|
|
145
|
+
result = semver_1.default.valid(versionSemVer);
|
|
114
146
|
}
|
|
115
147
|
return result;
|
|
116
148
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/data/defaults.ts"],"names":[],"mappings":";;;;;;AACA,8GAAgF,CAAC,oEAAoE;AACrJ,uCAAuC;AACvC;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,OAAgB,EAAE,WAAoB;IAClE,OAAO;QACH,OAAO,EAAE,OAAO,IAAI,OAAO;QAC3B,WAAW,EAAE,WAAW,IAAI,EAAE;QAC9B,eAAe,EAAE;YACb,UAAU,EAAE,SAAS;YACrB,qBAAqB,EAAE,GAAG;SAC7B;QACD,OAAO,EAAE;YACL,KAAK,EAAE,+CAA+C;YACtD,aAAa,EAAE,qDAAqD;YACpE,KAAK,EAAE,sDAAsD;SAChE;QACD,GAAG,EAAE;YACD,YAAY,EAAE,CAAC,qBAAqB,CAAC;SACxC;KACJ,CAAC;AACN,CAAC;AAjBD,0CAiBC;AACD;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,GAAQ;IAC7B,4CAA4C;IAC5C,OAAO,MAAM,CAAC,MAAM,CAChB;QACI,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/data/defaults.ts"],"names":[],"mappings":"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"}
|
package/dist/data/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { App, UI5, AppOptions, Package, Ui5App } from '../types';
|
|
2
2
|
/**
|
|
3
3
|
* Merges Ui5App instance with default properties.
|
|
4
|
-
* Replaces undefined mandatory properties with
|
|
4
|
+
* Replaces undefined mandatory properties with default values.
|
|
5
5
|
*
|
|
6
6
|
* @param {Ui5App} ui5App - the Ui5App instance
|
|
7
7
|
* @returns {Ui5App} - a new Ui5App instance with all required defaults set
|
package/dist/data/index.js
CHANGED
|
@@ -5,7 +5,7 @@ const defaults_1 = require("./defaults");
|
|
|
5
5
|
const validators_1 = require("./validators");
|
|
6
6
|
/**
|
|
7
7
|
* Merges Ui5App instance with default properties.
|
|
8
|
-
* Replaces undefined mandatory properties with
|
|
8
|
+
* Replaces undefined mandatory properties with default values.
|
|
9
9
|
*
|
|
10
10
|
* @param {Ui5App} ui5App - the Ui5App instance
|
|
11
11
|
* @returns {Ui5App} - a new Ui5App instance with all required defaults set
|
|
@@ -7,6 +7,15 @@ import { Ui5App } from '../types';
|
|
|
7
7
|
* @returns true, if app id is validated
|
|
8
8
|
*/
|
|
9
9
|
export declare function validateAppId(appId: string): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Validates by throwing if the specified version does not have a coercible semantic version.
|
|
12
|
+
* Currently we have special handling for empty string and undefined otherwise see: https://github.com/npm/node-semver#coercion.
|
|
13
|
+
* Example: 'snapshot-1.2.4' can be coerced to '1.2.4' and so is considered valid.
|
|
14
|
+
*
|
|
15
|
+
* @param version - the UI5 version string to validate
|
|
16
|
+
* @returns - true if the specified UI5 version is considered valid
|
|
17
|
+
*/
|
|
18
|
+
export declare function validateUI5Version(version: string | undefined): boolean;
|
|
10
19
|
/**
|
|
11
20
|
* Validates the specified ui5App.
|
|
12
21
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/data/validators.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/data/validators.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAWpD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAKvE;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOhD"}
|
package/dist/data/validators.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validate = exports.validateAppId = void 0;
|
|
6
|
+
exports.validate = exports.validateUI5Version = exports.validateAppId = void 0;
|
|
7
|
+
const semver_1 = __importDefault(require("semver"));
|
|
8
|
+
const i18n_1 = require("../i18n");
|
|
4
9
|
/**
|
|
5
10
|
* Validates the specified app id to ensure we do not create malformed documents.
|
|
6
11
|
*
|
|
@@ -10,15 +15,30 @@ exports.validate = exports.validateAppId = void 0;
|
|
|
10
15
|
*/
|
|
11
16
|
function validateAppId(appId) {
|
|
12
17
|
if (!appId) {
|
|
13
|
-
throw new Error('
|
|
18
|
+
throw new Error((0, i18n_1.t)('error.missingRequiredProperty', { propertyName: 'app.id' }));
|
|
14
19
|
}
|
|
15
20
|
const match = appId.match(/["]/);
|
|
16
21
|
if (match) {
|
|
17
|
-
throw new Error(
|
|
22
|
+
throw new Error((0, i18n_1.t)('error.disallowedCharacters', { propertyName: 'app.id', disallowedChars: `${match === null || match === void 0 ? void 0 : match.join()}` }));
|
|
18
23
|
}
|
|
19
24
|
return true;
|
|
20
25
|
}
|
|
21
26
|
exports.validateAppId = validateAppId;
|
|
27
|
+
/**
|
|
28
|
+
* Validates by throwing if the specified version does not have a coercible semantic version.
|
|
29
|
+
* Currently we have special handling for empty string and undefined otherwise see: https://github.com/npm/node-semver#coercion.
|
|
30
|
+
* Example: 'snapshot-1.2.4' can be coerced to '1.2.4' and so is considered valid.
|
|
31
|
+
*
|
|
32
|
+
* @param version - the UI5 version string to validate
|
|
33
|
+
* @returns - true if the specified UI5 version is considered valid
|
|
34
|
+
*/
|
|
35
|
+
function validateUI5Version(version) {
|
|
36
|
+
if (version && semver_1.default.coerce(version) === null) {
|
|
37
|
+
throw new Error((0, i18n_1.t)('error.invalidUI5Version', { version }));
|
|
38
|
+
}
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
exports.validateUI5Version = validateUI5Version;
|
|
22
42
|
/**
|
|
23
43
|
* Validates the specified ui5App.
|
|
24
44
|
*
|
|
@@ -27,7 +47,11 @@ exports.validateAppId = validateAppId;
|
|
|
27
47
|
* @throws Error with validation message, if the ui5App is not valid
|
|
28
48
|
*/
|
|
29
49
|
function validate(ui5App) {
|
|
30
|
-
|
|
50
|
+
var _a, _b, _c;
|
|
51
|
+
return (validateAppId(ui5App.app.id) &&
|
|
52
|
+
validateUI5Version((_a = ui5App.ui5) === null || _a === void 0 ? void 0 : _a.version) &&
|
|
53
|
+
validateUI5Version((_b = ui5App.ui5) === null || _b === void 0 ? void 0 : _b.localVersion) &&
|
|
54
|
+
validateUI5Version((_c = ui5App.ui5) === null || _c === void 0 ? void 0 : _c.minUI5Version));
|
|
31
55
|
}
|
|
32
56
|
exports.validate = validate;
|
|
33
57
|
//# sourceMappingURL=validators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/data/validators.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/data/validators.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,kCAA4B;AAG5B;;;;;;GAMG;AACH,SAAgB,aAAa,CAAC,KAAa;IACvC,IAAI,CAAC,KAAK,EAAE;QACR,MAAM,IAAI,KAAK,CAAC,IAAA,QAAC,EAAC,+BAA+B,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;KACnF;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,KAAK,EAAE;QACP,MAAM,IAAI,KAAK,CACX,IAAA,QAAC,EAAC,4BAA4B,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CACnG,CAAC;KACL;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAXD,sCAWC;AAED;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,OAA2B;IAC1D,IAAI,OAAO,IAAI,gBAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;QAC5C,MAAM,IAAI,KAAK,CAAC,IAAA,QAAC,EAAC,yBAAyB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;KAC9D;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AALD,gDAKC;AAED;;;;;;GAMG;AACH,SAAgB,QAAQ,CAAC,MAAc;;IACnC,OAAO,CACH,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,kBAAkB,CAAC,MAAA,MAAM,CAAC,GAAG,0CAAE,OAAO,CAAC;QACvC,kBAAkB,CAAC,MAAA,MAAM,CAAC,GAAG,0CAAE,YAAY,CAAC;QAC5C,kBAAkB,CAAC,MAAA,MAAM,CAAC,GAAG,0CAAE,aAAa,CAAC,CAChD,CAAC;AACN,CAAC;AAPD,4BAOC"}
|
package/dist/i18n.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TOptions } from 'i18next';
|
|
2
|
+
/**
|
|
3
|
+
* Initialize i18next with the translations for this module.
|
|
4
|
+
*/
|
|
5
|
+
export declare function initI18n(): Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* Helper function facading the call to i18next.
|
|
8
|
+
*
|
|
9
|
+
* @param key i18n key
|
|
10
|
+
* @param options additional options
|
|
11
|
+
* @returns {string} localized string stored for the given key
|
|
12
|
+
*/
|
|
13
|
+
export declare function t(key: string, options?: TOptions): string;
|
|
14
|
+
//# sourceMappingURL=i18n.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAK5C;;GAEG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAY9C;AAED;;;;;;GAMG;AACH,wBAAgB,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,MAAM,CAEzD"}
|
package/dist/i18n.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.t = exports.initI18n = void 0;
|
|
16
|
+
const i18next_1 = __importDefault(require("i18next"));
|
|
17
|
+
const ui5_application_writer_i18n_json_1 = __importDefault(require("./translations/ui5-application-writer.i18n.json"));
|
|
18
|
+
const NS = 'ui5-application-writer';
|
|
19
|
+
/**
|
|
20
|
+
* Initialize i18next with the translations for this module.
|
|
21
|
+
*/
|
|
22
|
+
function initI18n() {
|
|
23
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
+
yield i18next_1.default.init({
|
|
25
|
+
resources: {
|
|
26
|
+
en: {
|
|
27
|
+
[NS]: ui5_application_writer_i18n_json_1.default
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
lng: 'en',
|
|
31
|
+
fallbackLng: 'en',
|
|
32
|
+
defaultNS: NS,
|
|
33
|
+
ns: [NS]
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
exports.initI18n = initI18n;
|
|
38
|
+
/**
|
|
39
|
+
* Helper function facading the call to i18next.
|
|
40
|
+
*
|
|
41
|
+
* @param key i18n key
|
|
42
|
+
* @param options additional options
|
|
43
|
+
* @returns {string} localized string stored for the given key
|
|
44
|
+
*/
|
|
45
|
+
function t(key, options) {
|
|
46
|
+
return i18next_1.default.t(key, options);
|
|
47
|
+
}
|
|
48
|
+
exports.t = t;
|
|
49
|
+
initI18n();
|
|
50
|
+
//# sourceMappingURL=i18n.js.map
|
package/dist/i18n.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sDAA4C;AAC5C,uHAA2E;AAE3E,MAAM,EAAE,GAAG,wBAAwB,CAAC;AAEpC;;GAEG;AACH,SAAsB,QAAQ;;QAC1B,MAAM,iBAAO,CAAC,IAAI,CAAC;YACf,SAAS,EAAE;gBACP,EAAE,EAAE;oBACA,CAAC,EAAE,CAAC,EAAE,0CAAY;iBACrB;aACJ;YACD,GAAG,EAAE,IAAI;YACT,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,EAAE;YACb,EAAE,EAAE,CAAC,EAAE,CAAC;SACX,CAAC,CAAC;IACP,CAAC;CAAA;AAZD,4BAYC;AAED;;;;;;GAMG;AACH,SAAgB,CAAC,CAAC,GAAW,EAAE,OAAkB;IAC7C,OAAO,iBAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAFD,cAEC;AAED,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"info": {
|
|
3
|
+
"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"
|
|
4
|
+
},
|
|
5
|
+
"error": {
|
|
6
|
+
"missingRequiredProperty": "The property: {{ propertyName }} must have a value",
|
|
7
|
+
"disallowedCharacters": "The property: {{ propertyName }} contains disallowed characters: {{- disallowedChars }}",
|
|
8
|
+
"invalidUI5Version": "The specified UI5 version is invalid: {{ version }}"
|
|
9
|
+
},
|
|
10
|
+
"text": {
|
|
11
|
+
"defaultAppTitle": "Title of {{ id }}",
|
|
12
|
+
"defaultAppDescription": "Description of {{ id }}"
|
|
13
|
+
}
|
|
14
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sap-ux/ui5-application-writer",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.10",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
"ejs": "3.1.6",
|
|
14
14
|
"mem-fs": "2.1.0",
|
|
15
15
|
"mem-fs-editor": "9.0.0",
|
|
16
|
-
"json-merger": "1.1.7"
|
|
16
|
+
"json-merger": "1.1.7",
|
|
17
|
+
"semver": "7.3.5",
|
|
18
|
+
"i18next": "21.6.11"
|
|
17
19
|
},
|
|
18
20
|
"devDependencies": {
|
|
19
21
|
"@types/ejs": "3.1.0",
|