@sapui5/sap.ushell_abap 1.148.2 → 1.149.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/package.json +1 -1
- package/src/main/js/sap/ushell_abap/.library +2 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/AppStateAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/ClientSideTargetResolutionAdapter.js +3 -3
- package/src/main/js/sap/ushell_abap/adapters/abap/CommonDataModelAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/ConfigurationDefaultsAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/ContainerAdapter.js +4 -2
- package/src/main/js/sap/ushell_abap/adapters/abap/FlpLaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/LaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/NavTargetResolutionInternalAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/PageBuildingAdapter.js +4 -2
- package/src/main/js/sap/ushell_abap/adapters/abap/PagePersistenceAdapter.js +4 -2
- package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/PersonalizationV2Adapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/SearchAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/SupportTicketAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/Ui5ComponentLoaderAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/adapters/abap/UserInfoAdapter.js +3 -1
- package/src/main/js/sap/ushell_abap/adapters/hana/ContainerAdapter.js +1 -1
- package/src/main/js/sap/ushell_abap/bootstrap/BootTask/MarkPerformance.js +25 -0
- package/src/main/js/sap/ushell_abap/bootstrap/BootTask/PrepareDirectAppStart.js +18 -0
- package/src/main/js/sap/ushell_abap/bootstrap/BootTask/RequestGroups.js +36 -2
- package/src/main/js/sap/ushell_abap/bootstrap/BootTask/RequestTargetMappings.js +11 -0
- package/src/main/js/sap/ushell_abap/bootstrap/BootTask.js +32 -14
- package/src/main/js/sap/ushell_abap/bootstrap/DirectAppStart.js +71 -10
- package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad/CreateRenderer.js +21 -2
- package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad/InitXhrLogon.js +59 -19
- package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad/RequestPages.js +56 -5
- package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpad.js +32 -11
- package/src/main/js/sap/ushell_abap/bootstrap/LoadLaunchpadModule.js +4 -1
- package/src/main/js/sap/ushell_abap/bootstrap/PageSetsRequestHandler.js +54 -42
- package/src/main/js/sap/ushell_abap/bootstrap/PlatformConfig.js +7 -9
- package/src/main/js/sap/ushell_abap/bootstrap/SAPCompanionConditionSetter.js +33 -28
- package/src/main/js/sap/ushell_abap/bootstrap/StartupRequestHandler.js +34 -23
- package/src/main/js/sap/ushell_abap/bootstrap/ThemeHandler.js +90 -2
- package/src/main/js/sap/ushell_abap/bootstrap/XhrFactory.js +23 -13
- package/src/main/js/sap/ushell_abap/bootstrap/XhrLogonEventHandler.js +33 -10
- package/src/main/js/sap/ushell_abap/bootstrap/XhrLogonLibLoader.js +49 -1
- package/src/main/js/sap/ushell_abap/bootstrap/abap-def-dev.js +1 -0
- package/src/main/js/sap/ushell_abap/bootstrap/abap-def-loader.js +4 -0
- package/src/main/js/sap/ushell_abap/bootstrap/abap-def.js +1 -0
- package/src/main/js/sap/ushell_abap/bootstrap/abapConstants.js +3 -0
- package/src/main/js/sap/ushell_abap/bootstrap/evo/abap.js +2 -0
- package/src/main/js/sap/ushell_abap/components/TCodeNavigation.js +1 -1
- package/src/main/js/sap/ushell_abap/integration/WebSsoBridge.js +57 -0
- package/src/main/js/sap/ushell_abap/library.js +1 -1
- package/src/main/js/sap/ushell_abap/pbServices/ui2/Contracts.js +3 -3
- package/src/main/js/sap/ushell_abap/pbServices/ui2/PageBuildingService.js +4 -16
- package/src/main/js/sap/ushell_abap/pbServices/ui2/Utils.js +3 -2
- package/ui5.yaml +18 -13
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
// Copyright (c) 2009-2026 SAP SE, All Rights Reserved
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview This module provides a helper class to handle events from the XHR logon lib.
|
|
4
|
+
*/
|
|
3
5
|
sap.ui.define([
|
|
6
|
+
"sap/base/Log",
|
|
4
7
|
"sap/base/util/ObjectPath",
|
|
5
|
-
"sap/
|
|
8
|
+
"sap/ushell/Config"
|
|
6
9
|
], (
|
|
10
|
+
Log,
|
|
7
11
|
ObjectPath,
|
|
8
|
-
|
|
12
|
+
Config
|
|
9
13
|
) => {
|
|
10
14
|
"use strict";
|
|
11
15
|
|
|
@@ -14,9 +18,11 @@ sap.ui.define([
|
|
|
14
18
|
const S_RELOAD_QUERY_PARAM = "sap-ushell-reloaded";
|
|
15
19
|
|
|
16
20
|
/**
|
|
17
|
-
*
|
|
18
|
-
* @
|
|
19
|
-
* @
|
|
21
|
+
* @alias sap.ushell_abap.bootstrap.XhrLogonEventHandler
|
|
22
|
+
* @class
|
|
23
|
+
* @classdesc Helper class for handling events from XHR logon frame provider
|
|
24
|
+
* @param {Window} [oWindow=window] the window object to use for reloading the page
|
|
25
|
+
* @param {string} [sXhrLogonMode="reload"] the XHR logon mode, either "reload" or "logoffAndRedirect"
|
|
20
26
|
*
|
|
21
27
|
* @private
|
|
22
28
|
*/
|
|
@@ -26,6 +32,14 @@ sap.ui.define([
|
|
|
26
32
|
this._bPending = false;
|
|
27
33
|
}
|
|
28
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Handles an XHR logon event.
|
|
37
|
+
*
|
|
38
|
+
* @param {Event} oEvent The event object.
|
|
39
|
+
* @returns {boolean} Always returns true.
|
|
40
|
+
*
|
|
41
|
+
* @private
|
|
42
|
+
*/
|
|
29
43
|
XhrLogonEventHandler.prototype.handleEvent = function (oEvent) {
|
|
30
44
|
if (this._bPending) {
|
|
31
45
|
// only handle first logon event
|
|
@@ -65,9 +79,9 @@ sap.ui.define([
|
|
|
65
79
|
* ensures that the reload is always triggering a GET request. This is important because with SAML logon,
|
|
66
80
|
* window.location.reload() would trigger a POST request with an outdated SAML assertion;
|
|
67
81
|
* the ABAP server does not a redirect to the IDP login page in that case.
|
|
68
|
-
*
|
|
69
|
-
* @param {string} sCurrentLocationSearch - current location search string
|
|
82
|
+
* @param {string} sCurrentLocationSearch current location search string
|
|
70
83
|
* @returns {string} an updated location search string triggering a page reload
|
|
84
|
+
*
|
|
71
85
|
* @private
|
|
72
86
|
*/
|
|
73
87
|
XhrLogonEventHandler.prototype._getUpdatedLocationSearchForReload = function (sCurrentLocationSearch) {
|
|
@@ -125,7 +139,7 @@ sap.ui.define([
|
|
|
125
139
|
*/
|
|
126
140
|
XhrLogonEventHandler.prototype._logoffAndRedirect = function () {
|
|
127
141
|
const sLocationHref = this.getLocationHref();
|
|
128
|
-
const sClientId = ObjectPath.get("
|
|
142
|
+
const sClientId = ObjectPath.get("services.Container.adapter.config.client", Config.getRawBootstrapConfig());
|
|
129
143
|
|
|
130
144
|
const sUrl = new URI("/sap/public/bc/icf/logoff")
|
|
131
145
|
.absoluteTo(sLocationHref)
|
|
@@ -136,7 +150,6 @@ sap.ui.define([
|
|
|
136
150
|
|
|
137
151
|
/**
|
|
138
152
|
* Checks if the page is currently being reloaded by the XHR logon which triggers this by setting query-parameter sap-ushell-reloaded
|
|
139
|
-
*
|
|
140
153
|
* @returns {boolean} true if the page is reloaded, false otherwise
|
|
141
154
|
*
|
|
142
155
|
* @private
|
|
@@ -145,6 +158,12 @@ sap.ui.define([
|
|
|
145
158
|
return new RegExp(["[?&]", S_RELOAD_QUERY_PARAM].join("")).test(this._oWindow.location.search);
|
|
146
159
|
};
|
|
147
160
|
|
|
161
|
+
/**
|
|
162
|
+
* Handles authentication required scenario when UI5 is not yet loaded.
|
|
163
|
+
* @param {function} fnReload The function to call to reload the page.
|
|
164
|
+
*
|
|
165
|
+
* @private
|
|
166
|
+
*/
|
|
148
167
|
XhrLogonEventHandler.prototype._handleAuthenticationRequiredNoUi5 = function (fnReload) {
|
|
149
168
|
// In reload mode, this should not happen (can only occur in very early XHR requests, i.e. start_up).
|
|
150
169
|
// But then the session should still be valid. So if we get in here, the HTML page itself has been cached or
|
|
@@ -183,6 +202,8 @@ sap.ui.define([
|
|
|
183
202
|
* @param {object} oMessageText text key and default text for the dialog message
|
|
184
203
|
* @param {function} fnReload function that is executed to do the actual reload
|
|
185
204
|
* @param {function} fnFallbackIfUi5NotLoaded a fallback function which is executed if UI5 not yet loaded
|
|
205
|
+
*
|
|
206
|
+
* @private
|
|
186
207
|
*/
|
|
187
208
|
XhrLogonEventHandler.prototype._showErrorAndReload = function (oTitleText, oMessageText, fnReload, fnFallbackIfUi5NotLoaded) {
|
|
188
209
|
let sTitle;
|
|
@@ -238,6 +259,8 @@ sap.ui.define([
|
|
|
238
259
|
* @param {object} oText text key and default text
|
|
239
260
|
* @param {object} oResources i18n resources
|
|
240
261
|
* @returns {string} the translated text if the key exists or the provided fallback text
|
|
262
|
+
*
|
|
263
|
+
* @private
|
|
241
264
|
*/
|
|
242
265
|
XhrLogonEventHandler.prototype._getText = function (oText, oResources) {
|
|
243
266
|
const sText = oResources.i18n.getText(oText.key);
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// Copyright (c) 2009-2026 SAP SE, All Rights Reserved
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview This module loads the XHR logon library.
|
|
4
|
+
*/
|
|
3
5
|
sap.ui.define([
|
|
4
6
|
], (
|
|
5
7
|
) => {
|
|
@@ -7,6 +9,16 @@ sap.ui.define([
|
|
|
7
9
|
|
|
8
10
|
const sUiDebugKey = "sap-ui-debug";
|
|
9
11
|
|
|
12
|
+
/**
|
|
13
|
+
* @alias sap.ushell_abap.bootstrap.XhrLogonLibLoader
|
|
14
|
+
* @namespace
|
|
15
|
+
* @description This module loads the XHR logon library.
|
|
16
|
+
* The lib is loaded automatically when this module is required.
|
|
17
|
+
* No call to {@link sap.ushell_abap.bootstrap.XhrLogonLibLoader#getLib} is required.
|
|
18
|
+
*
|
|
19
|
+
* @since 1.147.0
|
|
20
|
+
* @private
|
|
21
|
+
*/
|
|
10
22
|
class XhrLogonLibLoader {
|
|
11
23
|
#pLib;
|
|
12
24
|
|
|
@@ -14,6 +26,13 @@ sap.ui.define([
|
|
|
14
26
|
this.#pLib = this.#loadLib();
|
|
15
27
|
}
|
|
16
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Determines whether to load the XHR logon library in debug mode.
|
|
31
|
+
* @returns {boolean} true if the XHR logon lib should be loaded in debug mode, false otherwise
|
|
32
|
+
*
|
|
33
|
+
* @since 1.147.0
|
|
34
|
+
* @private
|
|
35
|
+
*/
|
|
17
36
|
#isDebug () {
|
|
18
37
|
let sStoredSapUiDebugValue;
|
|
19
38
|
let bDebugSources = /[?&]sap-ui-debug=(true|x|X)(&|$)/.test(this.getWindowLocationSearch());
|
|
@@ -28,20 +47,49 @@ sap.ui.define([
|
|
|
28
47
|
return bDebugSources;
|
|
29
48
|
}
|
|
30
49
|
|
|
50
|
+
/**
|
|
51
|
+
* Loads the XHR logon library.
|
|
52
|
+
* @returns {Promise<object>} Resolves the XHR logon library.
|
|
53
|
+
*
|
|
54
|
+
* @since 1.147.0
|
|
55
|
+
* @private
|
|
56
|
+
*/
|
|
31
57
|
#loadLib () {
|
|
32
58
|
const sFileName = `sap/ushell_abap/thirdparty/sap-xhrlib-esm${this.#isDebug() ? "-dbg" : ""}.js`;
|
|
33
59
|
const sPath = sap.ui.require.toUrl(sFileName);
|
|
34
60
|
return import(sPath).then((oModule) => oModule.xhrlib);
|
|
35
61
|
}
|
|
36
62
|
|
|
63
|
+
/**
|
|
64
|
+
* Returns a promise that resolves the XHR logon library.
|
|
65
|
+
* @returns {Promise<object>} Resolves the XHR logon library.
|
|
66
|
+
*
|
|
67
|
+
* @since 1.147.0
|
|
68
|
+
* @private
|
|
69
|
+
*/
|
|
37
70
|
getLib () {
|
|
38
71
|
return this.#pLib;
|
|
39
72
|
}
|
|
40
73
|
|
|
74
|
+
/**
|
|
75
|
+
* Returns the window.location.search string.
|
|
76
|
+
* Extracted as a method to allow stubbing in tests.
|
|
77
|
+
* @returns {string} The query string portion of the URL
|
|
78
|
+
*
|
|
79
|
+
* @since 1.147.0
|
|
80
|
+
* @private
|
|
81
|
+
*/
|
|
41
82
|
getWindowLocationSearch () {
|
|
42
83
|
return window.location.search;
|
|
43
84
|
}
|
|
44
85
|
|
|
86
|
+
/**
|
|
87
|
+
* Resets the internal state of the loader.
|
|
88
|
+
* Only for testing purposes.
|
|
89
|
+
*
|
|
90
|
+
* @since 1.147.0
|
|
91
|
+
* @private
|
|
92
|
+
*/
|
|
45
93
|
reset () {
|
|
46
94
|
this.#pLib = this.#loadLib();
|
|
47
95
|
}
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
*
|
|
6
6
|
* In a development environment, this script serves as the root of the ABAP bootstrap.
|
|
7
7
|
* And it will load all bootstrap modules and the SAPUI5 modules each as a single requested resource (no preloads and no bundling).
|
|
8
|
+
*
|
|
9
|
+
* @deprecated since 1.136. Use the bootManifest instead.
|
|
8
10
|
*/
|
|
9
11
|
(function () {
|
|
10
12
|
"use strict";
|
|
@@ -8,7 +8,7 @@ sap.ui.define([
|
|
|
8
8
|
"sap/ushell/api/performance/NavigationSource",
|
|
9
9
|
"sap/ushell_abap/components/TCodeNavigation/TCodeNavigationError",
|
|
10
10
|
"sap/ushell_abap/components/TCodeNavigation/MessageCode",
|
|
11
|
-
"sap/ushell/
|
|
11
|
+
"sap/ushell/base/UrlParsing"
|
|
12
12
|
], (
|
|
13
13
|
Container,
|
|
14
14
|
Log,
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// Copyright (c) 2009-2026 SAP SE, All Rights Reserved
|
|
2
|
+
|
|
3
|
+
sap.ui.define([
|
|
4
|
+
"sap/ushell/Container",
|
|
5
|
+
"sap/base/Log"
|
|
6
|
+
], (
|
|
7
|
+
Container,
|
|
8
|
+
Log
|
|
9
|
+
) => {
|
|
10
|
+
"use strict";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @alias sap.ushell_abap.integration.WebSsoBridge
|
|
14
|
+
* @namespace
|
|
15
|
+
* @description ushell API for WebSSO Process, used by Joule Plug-In in S/4 HANA Private Cloud scenarios.
|
|
16
|
+
*
|
|
17
|
+
* @since 1.136.18
|
|
18
|
+
* @private
|
|
19
|
+
*/
|
|
20
|
+
class WebSsoBridge {
|
|
21
|
+
async init () {
|
|
22
|
+
try {
|
|
23
|
+
const oMessageBrokerService = await Container.getServiceAsync("MessageBroker");
|
|
24
|
+
|
|
25
|
+
// Ensure that client ID is free and can be used - by disconnecting first (mainly relevant for tests)
|
|
26
|
+
try {
|
|
27
|
+
await oMessageBrokerService.disconnect("WebSsoBridge");
|
|
28
|
+
} catch { /* when "disconnect" fails, it hasn't been connected before... Which is a valid scenario. Therefore, nothing is done here. */ }
|
|
29
|
+
|
|
30
|
+
await oMessageBrokerService.connect("WebSsoBridge", () => { /* No generic handling needed. */ });
|
|
31
|
+
|
|
32
|
+
await oMessageBrokerService.subscribe("WebSsoBridge", [{ channelId: "com.sap.joule.flp.websso" }], async (sSenderId, sChannelId, sMessageName) => {
|
|
33
|
+
let oData;
|
|
34
|
+
try {
|
|
35
|
+
const response = await fetch(`${location.origin + location.pathname}/websso/url`);
|
|
36
|
+
if (response.status >= 200 && response.status < 300) {
|
|
37
|
+
oData = await response.json();
|
|
38
|
+
oData.status = "success";
|
|
39
|
+
}
|
|
40
|
+
} catch (oError) {
|
|
41
|
+
Log.error(`Retrieving WebSSO URL from ABAP backend failed. Error: ${oError}`, "sap.ushell_abap.integration.WebSsoBridge");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (oData === undefined) {
|
|
45
|
+
oData = {
|
|
46
|
+
status: "error"
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
await oMessageBrokerService.publish("com.sap.joule.flp.websso", "WebSsoBridge", "UrlResponse", "*", oData);
|
|
50
|
+
});
|
|
51
|
+
} catch (oGlobalError) {
|
|
52
|
+
Log.error(`Init of WebSSO Bridge failed. Error: ${oGlobalError}`, "sap.ushell_abap.integration.WebSsoBridge");
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return new WebSsoBridge();
|
|
57
|
+
});
|
|
@@ -5,15 +5,15 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
sap.ui.define([
|
|
8
|
-
"sap/ushell/
|
|
8
|
+
"sap/ushell/base/requireAsync"
|
|
9
9
|
], (
|
|
10
|
-
|
|
10
|
+
requireAsync
|
|
11
11
|
) => {
|
|
12
12
|
"use strict";
|
|
13
13
|
|
|
14
14
|
class Contracts {
|
|
15
15
|
async load () {
|
|
16
|
-
await
|
|
16
|
+
await requireAsync([
|
|
17
17
|
"sap/ushell_abap/pbServices/ui2/contracts/bag",
|
|
18
18
|
"sap/ushell_abap/pbServices/ui2/contracts/configuration",
|
|
19
19
|
"sap/ushell_abap/pbServices/ui2/contracts/configurationUi",
|
|
@@ -821,37 +821,25 @@ sap.ui.define([
|
|
|
821
821
|
* - CHIP instances and their CHIPs, <br>
|
|
822
822
|
* - bags and properties (page, CHIP and CHIP instance bags), <br>
|
|
823
823
|
* - RemoteCatalog data.
|
|
824
|
-
* <p>
|
|
825
|
-
* Via the parameter <code>sCustomExpand</code> you can specify a different $expand statement.
|
|
826
824
|
*
|
|
827
825
|
* @param {string} sId
|
|
828
826
|
* ID of the page to be read
|
|
829
827
|
* @param {function(object)} fnSuccess
|
|
830
828
|
* a callback function that is executed if the request succeeds, taking the processed data
|
|
831
|
-
* @param {function(string, object
|
|
829
|
+
* @param {function(string, object)} [fnFailure]
|
|
832
830
|
* error handler taking an error message and, since version 1.28.6, an
|
|
833
831
|
* optional object containing the complete error information as delivered
|
|
834
832
|
* by the ODataService. See fnFailure parameter of {@link ODataWrapper#onError}
|
|
835
833
|
* for more details.
|
|
836
|
-
* @param {string} [sCustomExpand="Bags/Properties,PageChipInstances/Chip/ChipBags/ChipProperties,PageChipInstances/RemoteCatalog,PageChipInstances/ChipInstanceBags/ChipInstanceProperties"]
|
|
837
|
-
* (since 1.30.0) can be used to overwrite the default $expand value. If "" is used, the
|
|
838
|
-
* entire $expand parameter will be skipped
|
|
839
834
|
* @since 1.2.0
|
|
840
835
|
*/
|
|
841
|
-
this.readPage = function (sId, fnSuccess, fnFailure
|
|
842
|
-
let sUrl = `Pages('${encodeURIComponent(sId)}')`;
|
|
836
|
+
this.readPage = function (sId, fnSuccess, fnFailure) {
|
|
843
837
|
if (!sId) {
|
|
844
838
|
throw new SrvcError("Missing page ID", "PageBuildingService");
|
|
845
839
|
}
|
|
846
840
|
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
sUrl += "?$expand=Bags/Properties,PageChipInstances/Chip/ChipBags/ChipProperties,"
|
|
850
|
-
+ "PageChipInstances/RemoteCatalog,"
|
|
851
|
-
+ "PageChipInstances/ChipInstanceBags/ChipInstanceProperties";
|
|
852
|
-
} else if (sCustomExpand !== "") {
|
|
853
|
-
sUrl += `?$expand=${sCustomExpand}`;
|
|
854
|
-
}
|
|
841
|
+
const sUrl = `Pages('${encodeURIComponent(sId)}')?$expand=PageChipInstances/Chip/ChipBags/ChipProperties,`
|
|
842
|
+
+ "PageChipInstances/RemoteCatalog,PageChipInstances/ChipInstanceBags/ChipInstanceProperties";
|
|
855
843
|
|
|
856
844
|
oWrapper.read(sUrl, fnSuccess, fnFailure);
|
|
857
845
|
};
|
|
@@ -9,11 +9,13 @@
|
|
|
9
9
|
sap.ui.define([
|
|
10
10
|
"sap/ui/thirdparty/URI",
|
|
11
11
|
"sap/base/Log",
|
|
12
|
+
"sap/ushell/Config",
|
|
12
13
|
"sap/ushell_abap/pbServices/ui2/Error",
|
|
13
14
|
"sap/ui/Device"
|
|
14
15
|
], (
|
|
15
16
|
URI,
|
|
16
17
|
Log,
|
|
18
|
+
Config,
|
|
17
19
|
SrvcError,
|
|
18
20
|
Device
|
|
19
21
|
) => {
|
|
@@ -334,8 +336,7 @@ sap.ui.define([
|
|
|
334
336
|
*/
|
|
335
337
|
Utils.addCacheBusterTokenUsingUshellConfig = function (sUrl) {
|
|
336
338
|
// TODO move to sap.ushell.utils
|
|
337
|
-
const oCacheBusting =
|
|
338
|
-
window["sap-ushell-config"].cacheBusting;
|
|
339
|
+
const oCacheBusting = Config.getRawBootstrapConfig()?.cacheBusting;
|
|
339
340
|
const oPatterns = oCacheBusting && oCacheBusting.patterns;
|
|
340
341
|
let sCacheBusterUrl = sUrl;
|
|
341
342
|
let aParameterMap = [];
|
package/ui5.yaml
CHANGED
|
@@ -47,14 +47,6 @@ builder:
|
|
|
47
47
|
# as the boot should ALWAYS include bootstrap
|
|
48
48
|
# It rather ensures that the ushell can always be used via library
|
|
49
49
|
sections:
|
|
50
|
-
- mode: provided
|
|
51
|
-
filters: &exclude-external-libs
|
|
52
|
-
- "**/" # assume everything as provided ...
|
|
53
|
-
- "!sap/ushell_abap/" # ... except the modules from sap/ushell_abap
|
|
54
|
-
- "**/designtime/" # also exclude all designtime ...
|
|
55
|
-
- "**/*.designtime.js" #
|
|
56
|
-
- "**/support/" # ... and support files
|
|
57
|
-
- "**/*.support.js" #
|
|
58
50
|
- mode: preload
|
|
59
51
|
filters:
|
|
60
52
|
- sap/ushell_abap/bootstrap/
|
|
@@ -316,10 +308,13 @@ builder:
|
|
|
316
308
|
# filter to ensure that no other dependencies sneak into the boot bundle
|
|
317
309
|
# and break the assumptions that only base and bootstrap modules are used during boot
|
|
318
310
|
filters:
|
|
319
|
-
- "**/"
|
|
320
|
-
- "!sap/ushell/bootstrap/"
|
|
321
|
-
- "!sap/ushell/base/"
|
|
322
|
-
- "!sap/ushell_abap/bootstrap/"
|
|
311
|
+
- "**/" # assume everything as provided ...
|
|
312
|
+
- "!sap/ushell/bootstrap/" # ... except the modules from sap/ushell/bootstrap
|
|
313
|
+
- "!sap/ushell/base/" # ... and sap/ushell/base
|
|
314
|
+
- "!sap/ushell_abap/bootstrap/" # ... and abap related bootstrap parts
|
|
315
|
+
- "!sap/ushell_abap/thirdparty/sap-xhrlib-esm*.js" # ... and thirdparty that contains ESM modules which
|
|
316
|
+
- "!sap/ui/integration/thirdparty/" # can't be bundled anyways and would cause build errors
|
|
317
|
+
- "!sap/ui/vk/thirdparty/"
|
|
323
318
|
- mode: preload
|
|
324
319
|
filters:
|
|
325
320
|
- sap/ushell_abap/bootstrap/ConfigurationProvider.js
|
|
@@ -649,7 +644,15 @@ builder:
|
|
|
649
644
|
- sap/ushell/adapters/cdm/v3/StaticGroupsAdapter.js
|
|
650
645
|
resolve: false
|
|
651
646
|
- mode: provided
|
|
652
|
-
filters:
|
|
647
|
+
filters: &exclude-external-libs
|
|
648
|
+
- "**/" # assume everything as provided ...
|
|
649
|
+
- "!sap/ushell_abap/" # ... except the modules from sap/ushell_abap
|
|
650
|
+
- "**/designtime/" # also exclude all designtime ...
|
|
651
|
+
- "**/*.designtime.js" #
|
|
652
|
+
- "**/support/" # ... and support files
|
|
653
|
+
- "**/*.support.js" #
|
|
654
|
+
- "!sap/ui/integration/thirdparty/" # Do not include thirdparty that contains ESM modules which
|
|
655
|
+
- "!sap/ui/vk/thirdparty/" # can't be bundled anyways and would cause build errors
|
|
653
656
|
# Include Chunks --------------------------
|
|
654
657
|
- mode: bundleInfo
|
|
655
658
|
name: sap/ushell_abap/library-preload-bootstrap.js
|
|
@@ -670,6 +673,8 @@ builder:
|
|
|
670
673
|
- "!sap/ushell_abap/bootstrap/evo/abap.js"
|
|
671
674
|
- "!sap/ushell_abap/bootstrap/appruntime-min*.js"
|
|
672
675
|
- "!sap/ushell_abap/bootstrap/evo/core-min*.js"
|
|
676
|
+
# Exclude thirdparty that contains ESM modules which can't be bundled and would cause build errors
|
|
677
|
+
- "!sap/ushell_abap/thirdparty/sap-xhrlib-esm*.js"
|
|
673
678
|
resolve: true
|
|
674
679
|
renderer: true
|
|
675
680
|
bundleOptions:
|