@sap-ux/ui5-application-writer 0.10.8 → 0.11.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/dist/data/defaults.d.ts +7 -2
- package/dist/data/defaults.d.ts.map +1 -1
- package/dist/data/defaults.js +63 -28
- 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/ui5Libs.d.ts +6 -0
- package/dist/data/ui5Libs.d.ts.map +1 -1
- package/dist/data/ui5Libs.js +8 -1
- package/dist/data/ui5Libs.js.map +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/index.d.ts.map +1 -1
- package/dist/index.js +3 -5
- package/dist/index.js.map +1 -1
- package/dist/translations/ui5-application-writer.i18n.json +14 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -3
- package/templates/core/webapp/index.html +7 -3
- package/templates/core/webapp/manifest.json +4 -3
- package/templates/optional/loadReuseLibs/webapp/utils/locate-reuse-libs.js +173 -0
package/dist/data/defaults.d.ts
CHANGED
|
@@ -17,14 +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
|
}
|
|
29
|
+
export declare const defaultUI5Libs: string[];
|
|
26
30
|
/**
|
|
27
31
|
* Merges version properties with the provided UI5 instance.
|
|
32
|
+
* Coerces provided UI5 versions to valid semantic versions.
|
|
28
33
|
*
|
|
29
34
|
* @param {UI5} [ui5] - the UI5 instance
|
|
30
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
|
@@ -3,8 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.mergeUi5 = exports.UI5_DEFAULT = exports.mergeApp = exports.packageDefaults = void 0;
|
|
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
|
+
const ui5Libs_1 = require("./ui5Libs");
|
|
9
|
+
const semver_1 = __importDefault(require("semver"));
|
|
10
|
+
const i18n_1 = require("../i18n");
|
|
8
11
|
/**
|
|
9
12
|
* Returns a package instance with default properties.
|
|
10
13
|
*
|
|
@@ -41,8 +44,8 @@ function mergeApp(app) {
|
|
|
41
44
|
// Return merged, does not update passed ref
|
|
42
45
|
return Object.assign({
|
|
43
46
|
version: '0.0.1',
|
|
44
|
-
title:
|
|
45
|
-
description:
|
|
47
|
+
title: (0, i18n_1.t)('text.defaultAppTitle', { id: app.id }),
|
|
48
|
+
description: (0, i18n_1.t)('text.defaultAppDescription', { id: app.id }),
|
|
46
49
|
baseComponent: 'sap/ui/core/UIComponent'
|
|
47
50
|
}, app);
|
|
48
51
|
}
|
|
@@ -51,41 +54,75 @@ var UI5_DEFAULT;
|
|
|
51
54
|
(function (UI5_DEFAULT) {
|
|
52
55
|
UI5_DEFAULT["DEFAULT_UI5_VERSION"] = "";
|
|
53
56
|
UI5_DEFAULT["DEFAULT_LOCAL_UI5_VERSION"] = "1.95.0";
|
|
54
|
-
UI5_DEFAULT["MIN_UI5_VERSION"] = "1.60";
|
|
57
|
+
UI5_DEFAULT["MIN_UI5_VERSION"] = "1.60.0";
|
|
55
58
|
UI5_DEFAULT["MIN_LOCAL_SAPUI5_VERSION"] = "1.76.0";
|
|
56
59
|
UI5_DEFAULT["MIN_LOCAL_OPENUI5_VERSION"] = "1.52.5";
|
|
57
60
|
UI5_DEFAULT["SAPUI5_CDN"] = "https://ui5.sap.com";
|
|
58
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";
|
|
59
65
|
})(UI5_DEFAULT = exports.UI5_DEFAULT || (exports.UI5_DEFAULT = {}));
|
|
66
|
+
// Required default libs
|
|
67
|
+
exports.defaultUI5Libs = ['sap.m', 'sap.ui.core'];
|
|
60
68
|
/**
|
|
61
69
|
* Merges version properties with the provided UI5 instance.
|
|
70
|
+
* Coerces provided UI5 versions to valid semantic versions.
|
|
62
71
|
*
|
|
63
72
|
* @param {UI5} [ui5] - the UI5 instance
|
|
64
73
|
* @returns {UI5} the updated copy of UI5 instance (does not change `ui5`)
|
|
65
74
|
*/
|
|
66
75
|
function mergeUi5(ui5) {
|
|
67
|
-
var _a, _b, _c, _d, _e
|
|
68
|
-
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
|
|
69
78
|
const framework = (_b = ui5.framework) !== null && _b !== void 0 ? _b : 'SAPUI5';
|
|
70
79
|
const defaultFrameworkUrl = framework === 'SAPUI5' ? UI5_DEFAULT.SAPUI5_CDN : UI5_DEFAULT.OPENUI5_CDN;
|
|
71
80
|
const merged = {
|
|
72
|
-
minUI5Version: (
|
|
81
|
+
minUI5Version: getMinUI5Version(version, ui5.minUI5Version),
|
|
73
82
|
localVersion: getLocalVersion({ framework, version, localVersion: ui5.localVersion }),
|
|
74
83
|
version,
|
|
75
84
|
framework,
|
|
76
|
-
frameworkUrl: (
|
|
85
|
+
frameworkUrl: (_c = ui5.frameworkUrl) !== null && _c !== void 0 ? _c : defaultFrameworkUrl
|
|
77
86
|
};
|
|
78
|
-
|
|
79
|
-
merged.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
merged.
|
|
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';
|
|
95
|
+
merged.ui5Libs = (0, ui5Libs_1.getUI5Libs)(ui5.ui5Libs);
|
|
84
96
|
return Object.assign({}, ui5, merged);
|
|
85
97
|
}
|
|
86
98
|
exports.mergeUi5 = mergeUi5;
|
|
87
|
-
// if a specific local version is provided, use it, otherwise, sync with version but keep minimum versions in mind
|
|
88
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
|
+
*
|
|
89
126
|
* @param inputObj input object
|
|
90
127
|
* @param inputObj.framework UI framework
|
|
91
128
|
* @param inputObj.version UI version
|
|
@@ -93,21 +130,19 @@ exports.mergeUi5 = mergeUi5;
|
|
|
93
130
|
* @returns {string} of the local UI5 version
|
|
94
131
|
*/
|
|
95
132
|
function getLocalVersion({ framework, version, localVersion }) {
|
|
96
|
-
|
|
133
|
+
// If explictly provided use, we deliberately do not coerce
|
|
97
134
|
if (localVersion) {
|
|
98
|
-
|
|
135
|
+
return localVersion;
|
|
99
136
|
}
|
|
100
|
-
else {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
result = version;
|
|
110
|
-
}
|
|
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);
|
|
111
146
|
}
|
|
112
147
|
return result;
|
|
113
148
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/data/defaults.ts"],"names":[],"mappings":";;;;;;AACA,
|
|
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
|
package/dist/data/ui5Libs.d.ts
CHANGED
|
@@ -1,2 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merges the specified ui5 libs with the defaults.
|
|
3
|
+
*
|
|
4
|
+
* @param ui5Libs - The ui5 libraries to be merged with the defaults
|
|
5
|
+
* @returns UI5 libs with defaults
|
|
6
|
+
*/
|
|
1
7
|
export declare const getUI5Libs: (ui5Libs?: string | string[] | undefined) => string[];
|
|
2
8
|
//# sourceMappingURL=ui5Libs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui5Libs.d.ts","sourceRoot":"","sources":["../../src/data/ui5Libs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ui5Libs.d.ts","sourceRoot":"","sources":["../../src/data/ui5Libs.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,UAAU,+CAAkC,MAAM,EAK9D,CAAC"}
|
package/dist/data/ui5Libs.js
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getUI5Libs = void 0;
|
|
4
|
+
const defaults_1 = require("./defaults");
|
|
5
|
+
/**
|
|
6
|
+
* Merges the specified ui5 libs with the defaults.
|
|
7
|
+
*
|
|
8
|
+
* @param ui5Libs - The ui5 libraries to be merged with the defaults
|
|
9
|
+
* @returns UI5 libs with defaults
|
|
10
|
+
*/
|
|
4
11
|
const getUI5Libs = (ui5Libs) => {
|
|
5
12
|
const libs = Array.isArray(ui5Libs) ? ui5Libs : (ui5Libs === null || ui5Libs === void 0 ? void 0 : ui5Libs.split(',')) || [];
|
|
6
|
-
return
|
|
13
|
+
return defaults_1.defaultUI5Libs.concat(libs).filter((value, index, self) => {
|
|
7
14
|
return self.indexOf(value) === index;
|
|
8
15
|
});
|
|
9
16
|
};
|
package/dist/data/ui5Libs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui5Libs.js","sourceRoot":"","sources":["../../src/data/ui5Libs.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ui5Libs.js","sourceRoot":"","sources":["../../src/data/ui5Libs.ts"],"names":[],"mappings":";;;AAAA,yCAA4C;AAE5C;;;;;GAKG;AACI,MAAM,UAAU,GAAG,CAAC,OAA2B,EAAY,EAAE;IAChE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC,GAAG,CAAC,KAAI,EAAE,CAAC;IAC1E,OAAO,yBAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;IACzC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AALW,QAAA,UAAU,cAKrB"}
|
|
@@ -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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAU,MAAM,EAAE,MAAM,eAAe,CAAC;AAI/C,OAAO,EAAiC,MAAM,EAAE,MAAM,SAAS,CAAC;AAGhE;;;;;;;GAOG;AACH,iBAAe,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA8D5F;AAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -12,7 +12,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.generate = void 0;
|
|
13
13
|
const path_1 = require("path");
|
|
14
14
|
const data_1 = require("./data");
|
|
15
|
-
const ui5Libs_1 = require("./data/ui5Libs");
|
|
16
15
|
const mem_fs_1 = require("mem-fs");
|
|
17
16
|
const mem_fs_editor_1 = require("mem-fs-editor");
|
|
18
17
|
const json_merger_1 = require("json-merger");
|
|
@@ -28,7 +27,7 @@ const ui5_config_1 = require("@sap-ux/ui5-config");
|
|
|
28
27
|
* @returns {*} {Promise<Editor>} the updated memfs editor instance
|
|
29
28
|
*/
|
|
30
29
|
function generate(basePath, ui5AppConfig, fs) {
|
|
31
|
-
var _a
|
|
30
|
+
var _a;
|
|
32
31
|
return __awaiter(this, void 0, void 0, function* () {
|
|
33
32
|
if (!fs) {
|
|
34
33
|
fs = (0, mem_fs_editor_1.create)((0, mem_fs_1.create)());
|
|
@@ -44,8 +43,7 @@ function generate(basePath, ui5AppConfig, fs) {
|
|
|
44
43
|
const ui5Config = yield ui5_config_1.UI5Config.newInstance(fs.read(ui5ConfigPath));
|
|
45
44
|
ui5Config.addFioriToolsProxydMiddleware({
|
|
46
45
|
ui5: {
|
|
47
|
-
|
|
48
|
-
url: (_b = ui5App.ui5) === null || _b === void 0 ? void 0 : _b.frameworkUrl
|
|
46
|
+
url: (_a = ui5App.ui5) === null || _a === void 0 ? void 0 : _a.frameworkUrl
|
|
49
47
|
}
|
|
50
48
|
});
|
|
51
49
|
ui5Config.addFioriToolsAppReloadMiddleware();
|
|
@@ -53,7 +51,7 @@ function generate(basePath, ui5AppConfig, fs) {
|
|
|
53
51
|
// ui5-local.yaml
|
|
54
52
|
const ui5LocalConfigPath = (0, path_1.join)(basePath, 'ui5-local.yaml');
|
|
55
53
|
const ui5LocalConfig = yield ui5_config_1.UI5Config.newInstance(fs.read(ui5LocalConfigPath));
|
|
56
|
-
ui5LocalConfig.addUI5Framework(ui5App.ui5.framework, ui5App.ui5.localVersion,
|
|
54
|
+
ui5LocalConfig.addUI5Framework(ui5App.ui5.framework, ui5App.ui5.localVersion, ui5App.ui5.ui5Libs, ui5App.ui5.ui5Theme);
|
|
57
55
|
ui5LocalConfig.addFioriToolsAppReloadMiddleware();
|
|
58
56
|
fs.write(ui5LocalConfigPath, ui5LocalConfig.toString());
|
|
59
57
|
// Add optional features
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+BAA4B;AAC5B,iCAA2C;AAC3C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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/dist/types.d.ts
CHANGED
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,GAAG,CAAC,EAAE;QACF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;CACL;AAED,MAAM,WAAW,GAAG;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,oBAAY,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEhD,MAAM,WAAW,GAAG;IAChB,SAAS,EAAE,YAAY,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,GAAG,CAAC,EAAE;QACF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;CACL;AAED,MAAM,WAAW,GAAG;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,oBAAY,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEhD,MAAM,WAAW,GAAG;IAChB,SAAS,EAAE,YAAY,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,MAAM;IACnB,GAAG,EAAE,GAAG,CAAC;IACT,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACjC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CACpB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sap-ux/ui5-application-writer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -9,11 +9,13 @@
|
|
|
9
9
|
"templates"
|
|
10
10
|
],
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@sap-ux/ui5-config": "0.
|
|
12
|
+
"@sap-ux/ui5-config": "0.12.0",
|
|
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",
|
|
@@ -16,12 +16,16 @@
|
|
|
16
16
|
data-sap-ui-theme="<%- ui5.ui5Theme %>"
|
|
17
17
|
data-sap-ui-resourceroots='{
|
|
18
18
|
"<%- app.id %>": "./"
|
|
19
|
-
}'
|
|
20
|
-
data-sap-ui-oninit="module:sap/ui/core/ComponentSupport"
|
|
19
|
+
}'<% if(!appOptions.loadReuseLibs) { %>
|
|
20
|
+
data-sap-ui-oninit="module:sap/ui/core/ComponentSupport"<% } %>
|
|
21
21
|
data-sap-ui-compatVersion="edge"
|
|
22
22
|
data-sap-ui-async="true"
|
|
23
23
|
data-sap-ui-frameOptions="trusted"
|
|
24
|
-
></script
|
|
24
|
+
></script><% if(appOptions.loadReuseLibs) { %>
|
|
25
|
+
<script id="locate-reuse-libs" src="./utils/locate-reuse-libs.js"
|
|
26
|
+
data-sap-ui-manifest-uri="./manifest.json"
|
|
27
|
+
data-sap-ui-componentName="<%- app.id %>">
|
|
28
|
+
</script> <% } %>
|
|
25
29
|
</head>
|
|
26
30
|
<body class="sapUiBody sapUiSizeCompact" id="content">
|
|
27
31
|
<div
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
"version": "<%- app.version %>"
|
|
9
9
|
},
|
|
10
10
|
"title": "{{appTitle}}",
|
|
11
|
-
"description": "{{appDescription}}"
|
|
11
|
+
"description": "{{appDescription}}",
|
|
12
|
+
"resources": "resources.json"
|
|
12
13
|
},
|
|
13
14
|
"sap.ui": {
|
|
14
15
|
"technology": "UI5",
|
|
@@ -30,8 +31,8 @@
|
|
|
30
31
|
"flexEnabled": true,
|
|
31
32
|
"dependencies": {
|
|
32
33
|
"minUI5Version": "<%- ui5.minUI5Version %>",
|
|
33
|
-
"libs": {
|
|
34
|
-
"
|
|
34
|
+
"libs": {<% ui5.ui5Libs.forEach((ui5Lib, idx, libs) => { %>
|
|
35
|
+
<%- `"${ui5Lib}": {}${idx+1 < libs.length ? ',' : ''}` %><% }); %>
|
|
35
36
|
}
|
|
36
37
|
},
|
|
37
38
|
"contentDensities": {
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/*eslint-disable semi, no-console*/
|
|
2
|
+
(function (sap) {
|
|
3
|
+
var fioriToolsGetManifestLibs = function (manifestPath) {
|
|
4
|
+
var url = manifestPath;
|
|
5
|
+
var result = "";
|
|
6
|
+
// SAPUI5 delivered namespaces from https://ui5.sap.com/#/api/sap
|
|
7
|
+
var ui5Libs = [
|
|
8
|
+
"sap.apf",
|
|
9
|
+
"sap.base",
|
|
10
|
+
"sap.chart",
|
|
11
|
+
"sap.collaboration",
|
|
12
|
+
"sap.f",
|
|
13
|
+
"sap.fe",
|
|
14
|
+
"sap.fileviewer",
|
|
15
|
+
"sap.gantt",
|
|
16
|
+
"sap.landvisz",
|
|
17
|
+
"sap.m",
|
|
18
|
+
"sap.ndc",
|
|
19
|
+
"sap.ovp",
|
|
20
|
+
"sap.rules",
|
|
21
|
+
"sap.suite",
|
|
22
|
+
"sap.tnt",
|
|
23
|
+
"sap.ui",
|
|
24
|
+
"sap.uiext",
|
|
25
|
+
"sap.ushell",
|
|
26
|
+
"sap.uxap",
|
|
27
|
+
"sap.viz",
|
|
28
|
+
"sap.webanalytics",
|
|
29
|
+
"sap.zen"
|
|
30
|
+
];
|
|
31
|
+
function getKeys(libOrComp,libOrCompKeysString) {
|
|
32
|
+
Object.keys(libOrComp).forEach(function (libOrCompKey) {
|
|
33
|
+
// ignore libs or Components that start with SAPUI5 delivered namespaces
|
|
34
|
+
if (!ui5Libs.some(function (substring) { return libOrCompKey === substring || libOrCompKey.startsWith(substring + "."); })) {
|
|
35
|
+
if (libOrCompKeysString.length > 0) {
|
|
36
|
+
libOrCompKeysString = libOrCompKeysString + "," + libOrCompKey;
|
|
37
|
+
} else {
|
|
38
|
+
libOrCompKeysString = libOrCompKey;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
return libOrCompKeysString;
|
|
43
|
+
}
|
|
44
|
+
return new Promise(function (resolve, reject) {
|
|
45
|
+
$.ajax(url)
|
|
46
|
+
.done(function (manifest) {
|
|
47
|
+
if (manifest) {
|
|
48
|
+
if (
|
|
49
|
+
manifest["sap.ui5"] &&
|
|
50
|
+
manifest["sap.ui5"].dependencies
|
|
51
|
+
) {
|
|
52
|
+
if (manifest["sap.ui5"].dependencies.libs){
|
|
53
|
+
result = getKeys(manifest["sap.ui5"].dependencies.libs, result)
|
|
54
|
+
}
|
|
55
|
+
if (manifest["sap.ui5"].dependencies.components){
|
|
56
|
+
result = getKeys(manifest["sap.ui5"].dependencies.components, result)
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (
|
|
60
|
+
manifest["sap.ui5"] &&
|
|
61
|
+
manifest["sap.ui5"].componentUsages
|
|
62
|
+
) {
|
|
63
|
+
result = getKeys(manifest["sap.ui5"].componentUsages, result)
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
resolve(result);
|
|
67
|
+
})
|
|
68
|
+
.fail(function (error) {
|
|
69
|
+
reject(new Error("Could not fetch manifest at '" + manifestPath));
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Registers the module paths for dependencies of the given component.
|
|
75
|
+
* @param {string} manifestPath The the path to the app manifest path
|
|
76
|
+
* for which the dependencies should be registered.
|
|
77
|
+
* @returns {Promise} A promise which is resolved when the ajax request for
|
|
78
|
+
* the app-index was successful and the module paths were registered.
|
|
79
|
+
*/
|
|
80
|
+
sap.registerComponentDependencyPaths = function (manifestPath) {
|
|
81
|
+
/*eslint-disable semi, consistent-return*/
|
|
82
|
+
return fioriToolsGetManifestLibs(manifestPath).then(function (libs) {
|
|
83
|
+
if (libs && libs.length > 0) {
|
|
84
|
+
var url = "/sap/bc/ui2/app_index/ui5_app_info?id=" + libs;
|
|
85
|
+
var sapClient = jQuery.sap.getUriParameters().get("sap-client");
|
|
86
|
+
if (sapClient && sapClient.length === 3) {
|
|
87
|
+
url = url + "&sap-client=" + sapClient;
|
|
88
|
+
}
|
|
89
|
+
return $.ajax(url).done(function (data) {
|
|
90
|
+
if (data) {
|
|
91
|
+
Object.keys(data).forEach(function (moduleDefinitionKey) {
|
|
92
|
+
var moduleDefinition = data[moduleDefinitionKey];
|
|
93
|
+
if (moduleDefinition && moduleDefinition.dependencies) {
|
|
94
|
+
moduleDefinition.dependencies.forEach(function (dependency) {
|
|
95
|
+
if (dependency.url && dependency.url.length > 0 && dependency.type === "UI5LIB") {
|
|
96
|
+
jQuery.sap.log.info(
|
|
97
|
+
"Registering Library " +
|
|
98
|
+
dependency.componentId +
|
|
99
|
+
" from server " +
|
|
100
|
+
dependency.url
|
|
101
|
+
);
|
|
102
|
+
jQuery.sap.registerModulePath(dependency.componentId, dependency.url);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
})(sap);
|
|
113
|
+
|
|
114
|
+
/*eslint-disable sap-browser-api-warning, sap-no-dom-access*/
|
|
115
|
+
var scripts = document.getElementsByTagName("script");
|
|
116
|
+
var currentScript = document.getElementById('locate-reuse-libs');
|
|
117
|
+
if(!currentScript){
|
|
118
|
+
currentScript = document.currentScript;
|
|
119
|
+
};
|
|
120
|
+
var manifestUri = currentScript.getAttribute("data-sap-ui-manifest-uri");
|
|
121
|
+
var componentName = currentScript.getAttribute("data-sap-ui-componentName");
|
|
122
|
+
var useMockserver = currentScript.getAttribute("data-sap-ui-use-mockserver");
|
|
123
|
+
sap.registerComponentDependencyPaths(manifestUri)
|
|
124
|
+
.catch(function (error) {
|
|
125
|
+
jQuery.sap.log.error(error);
|
|
126
|
+
})
|
|
127
|
+
.finally(function () {
|
|
128
|
+
|
|
129
|
+
// setting the app title with internationalization
|
|
130
|
+
sap.ui.getCore().attachInit(function () {
|
|
131
|
+
jQuery.sap.require("jquery.sap.resources");
|
|
132
|
+
var sLocale = sap.ui.getCore().getConfiguration().getLanguage();
|
|
133
|
+
var oBundle = jQuery.sap.resources({
|
|
134
|
+
url: "i18n/i18n.properties",
|
|
135
|
+
locale: sLocale
|
|
136
|
+
});
|
|
137
|
+
document.title = oBundle.getText("appTitle");
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
if (componentName && componentName.length > 0) {
|
|
141
|
+
if (useMockserver && useMockserver === "true") {
|
|
142
|
+
sap.ui.getCore().attachInit(function () {
|
|
143
|
+
sap.ui.require([componentName.replace(/\./g, "/") + "/localService/mockserver"], function (server) {
|
|
144
|
+
// set up test service for local testing
|
|
145
|
+
server.init();
|
|
146
|
+
// initialize the ushell sandbox component
|
|
147
|
+
sap.ushell.Container.createRenderer().placeAt("content");
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
} else {
|
|
151
|
+
// Requiring the ComponentSupport module automatically executes the component initialisation for all declaratively defined components
|
|
152
|
+
sap.ui.require(["sap/ui/core/ComponentSupport"]);
|
|
153
|
+
|
|
154
|
+
// setting the app title with the i18n text
|
|
155
|
+
sap.ui.getCore().attachInit(function () {
|
|
156
|
+
jQuery.sap.require("jquery.sap.resources");
|
|
157
|
+
var sLocale = sap.ui.getCore().getConfiguration().getLanguage();
|
|
158
|
+
var oBundle = jQuery.sap.resources({
|
|
159
|
+
url: "i18n/i18n.properties",
|
|
160
|
+
locale: sLocale
|
|
161
|
+
});
|
|
162
|
+
document.title = oBundle.getText("appTitle");
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
} else {
|
|
166
|
+
sap.ui.getCore().attachInit(function () {
|
|
167
|
+
// initialize the ushell sandbox component
|
|
168
|
+
sap.ushell.Container.createRenderer().placeAt("content");
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
sap.registerComponentDependencyPaths(manifestUri);
|