@sap/ux-ui5-tooling 1.3.7 → 1.4.0

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.
@@ -47289,364 +47289,6 @@ function plural(ms, msAbs, n, name) {
47289
47289
  });
47290
47290
 
47291
47291
 
47292
- /***/ }),
47293
-
47294
- /***/ 37964:
47295
- /***/ (function(module, exports, __webpack_require__) {
47296
-
47297
- /* module decorator */ module = __webpack_require__.nmd(module);
47298
- /**
47299
- * Copyright (c) 2010,2011,2012,2013,2014 Morgan Roderick http://roderick.dk
47300
- * License: MIT - http://mrgnrdrck.mit-license.org
47301
- *
47302
- * https://github.com/mroderick/PubSubJS
47303
- */
47304
-
47305
- (function (root, factory){
47306
- 'use strict';
47307
-
47308
- var PubSub = {};
47309
- root.PubSub = PubSub;
47310
- factory(PubSub);
47311
- // CommonJS and Node.js module support
47312
- if (true){
47313
- if (module !== undefined && module.exports) {
47314
- exports = module.exports = PubSub; // Node.js specific `module.exports`
47315
- }
47316
- exports.PubSub = PubSub; // CommonJS module 1.1.1 spec
47317
- module.exports = exports = PubSub; // CommonJS
47318
- }
47319
- // AMD support
47320
- /* eslint-disable no-undef */
47321
- else {}
47322
-
47323
- }(( typeof window === 'object' && window ) || this, function (PubSub){
47324
- 'use strict';
47325
-
47326
- var messages = {},
47327
- lastUid = -1,
47328
- ALL_SUBSCRIBING_MSG = '*';
47329
-
47330
- function hasKeys(obj){
47331
- var key;
47332
-
47333
- for (key in obj){
47334
- if ( Object.prototype.hasOwnProperty.call(obj, key) ){
47335
- return true;
47336
- }
47337
- }
47338
- return false;
47339
- }
47340
-
47341
- /**
47342
- * Returns a function that throws the passed exception, for use as argument for setTimeout
47343
- * @alias throwException
47344
- * @function
47345
- * @param { Object } ex An Error object
47346
- */
47347
- function throwException( ex ){
47348
- return function reThrowException(){
47349
- throw ex;
47350
- };
47351
- }
47352
-
47353
- function callSubscriberWithDelayedExceptions( subscriber, message, data ){
47354
- try {
47355
- subscriber( message, data );
47356
- } catch( ex ){
47357
- setTimeout( throwException( ex ), 0);
47358
- }
47359
- }
47360
-
47361
- function callSubscriberWithImmediateExceptions( subscriber, message, data ){
47362
- subscriber( message, data );
47363
- }
47364
-
47365
- function deliverMessage( originalMessage, matchedMessage, data, immediateExceptions ){
47366
- var subscribers = messages[matchedMessage],
47367
- callSubscriber = immediateExceptions ? callSubscriberWithImmediateExceptions : callSubscriberWithDelayedExceptions,
47368
- s;
47369
-
47370
- if ( !Object.prototype.hasOwnProperty.call( messages, matchedMessage ) ) {
47371
- return;
47372
- }
47373
-
47374
- for (s in subscribers){
47375
- if ( Object.prototype.hasOwnProperty.call(subscribers, s)){
47376
- callSubscriber( subscribers[s], originalMessage, data );
47377
- }
47378
- }
47379
- }
47380
-
47381
- function createDeliveryFunction( message, data, immediateExceptions ){
47382
- return function deliverNamespaced(){
47383
- var topic = String( message ),
47384
- position = topic.lastIndexOf( '.' );
47385
-
47386
- // deliver the message as it is now
47387
- deliverMessage(message, message, data, immediateExceptions);
47388
-
47389
- // trim the hierarchy and deliver message to each level
47390
- while( position !== -1 ){
47391
- topic = topic.substr( 0, position );
47392
- position = topic.lastIndexOf('.');
47393
- deliverMessage( message, topic, data, immediateExceptions );
47394
- }
47395
-
47396
- deliverMessage(message, ALL_SUBSCRIBING_MSG, data, immediateExceptions);
47397
- };
47398
- }
47399
-
47400
- function hasDirectSubscribersFor( message ) {
47401
- var topic = String( message ),
47402
- found = Boolean(Object.prototype.hasOwnProperty.call( messages, topic ) && hasKeys(messages[topic]));
47403
-
47404
- return found;
47405
- }
47406
-
47407
- function messageHasSubscribers( message ){
47408
- var topic = String( message ),
47409
- found = hasDirectSubscribersFor(topic) || hasDirectSubscribersFor(ALL_SUBSCRIBING_MSG),
47410
- position = topic.lastIndexOf( '.' );
47411
-
47412
- while ( !found && position !== -1 ){
47413
- topic = topic.substr( 0, position );
47414
- position = topic.lastIndexOf( '.' );
47415
- found = hasDirectSubscribersFor(topic);
47416
- }
47417
-
47418
- return found;
47419
- }
47420
-
47421
- function publish( message, data, sync, immediateExceptions ){
47422
- message = (typeof message === 'symbol') ? message.toString() : message;
47423
-
47424
- var deliver = createDeliveryFunction( message, data, immediateExceptions ),
47425
- hasSubscribers = messageHasSubscribers( message );
47426
-
47427
- if ( !hasSubscribers ){
47428
- return false;
47429
- }
47430
-
47431
- if ( sync === true ){
47432
- deliver();
47433
- } else {
47434
- setTimeout( deliver, 0 );
47435
- }
47436
- return true;
47437
- }
47438
-
47439
- /**
47440
- * Publishes the message, passing the data to it's subscribers
47441
- * @function
47442
- * @alias publish
47443
- * @param { String } message The message to publish
47444
- * @param {} data The data to pass to subscribers
47445
- * @return { Boolean }
47446
- */
47447
- PubSub.publish = function( message, data ){
47448
- return publish( message, data, false, PubSub.immediateExceptions );
47449
- };
47450
-
47451
- /**
47452
- * Publishes the message synchronously, passing the data to it's subscribers
47453
- * @function
47454
- * @alias publishSync
47455
- * @param { String } message The message to publish
47456
- * @param {} data The data to pass to subscribers
47457
- * @return { Boolean }
47458
- */
47459
- PubSub.publishSync = function( message, data ){
47460
- return publish( message, data, true, PubSub.immediateExceptions );
47461
- };
47462
-
47463
- /**
47464
- * Subscribes the passed function to the passed message. Every returned token is unique and should be stored if you need to unsubscribe
47465
- * @function
47466
- * @alias subscribe
47467
- * @param { String } message The message to subscribe to
47468
- * @param { Function } func The function to call when a new message is published
47469
- * @return { String }
47470
- */
47471
- PubSub.subscribe = function( message, func ){
47472
- if ( typeof func !== 'function'){
47473
- return false;
47474
- }
47475
-
47476
- message = (typeof message === 'symbol') ? message.toString() : message;
47477
-
47478
- // message is not registered yet
47479
- if ( !Object.prototype.hasOwnProperty.call( messages, message ) ){
47480
- messages[message] = {};
47481
- }
47482
-
47483
- // forcing token as String, to allow for future expansions without breaking usage
47484
- // and allow for easy use as key names for the 'messages' object
47485
- var token = 'uid_' + String(++lastUid);
47486
- messages[message][token] = func;
47487
-
47488
- // return token for unsubscribing
47489
- return token;
47490
- };
47491
-
47492
- PubSub.subscribeAll = function( func ){
47493
- return PubSub.subscribe(ALL_SUBSCRIBING_MSG, func);
47494
- };
47495
-
47496
- /**
47497
- * Subscribes the passed function to the passed message once
47498
- * @function
47499
- * @alias subscribeOnce
47500
- * @param { String } message The message to subscribe to
47501
- * @param { Function } func The function to call when a new message is published
47502
- * @return { PubSub }
47503
- */
47504
- PubSub.subscribeOnce = function( message, func ){
47505
- var token = PubSub.subscribe( message, function(){
47506
- // before func apply, unsubscribe message
47507
- PubSub.unsubscribe( token );
47508
- func.apply( this, arguments );
47509
- });
47510
- return PubSub;
47511
- };
47512
-
47513
- /**
47514
- * Clears all subscriptions
47515
- * @function
47516
- * @public
47517
- * @alias clearAllSubscriptions
47518
- */
47519
- PubSub.clearAllSubscriptions = function clearAllSubscriptions(){
47520
- messages = {};
47521
- };
47522
-
47523
- /**
47524
- * Clear subscriptions by the topic
47525
- * @function
47526
- * @public
47527
- * @alias clearAllSubscriptions
47528
- * @return { int }
47529
- */
47530
- PubSub.clearSubscriptions = function clearSubscriptions(topic){
47531
- var m;
47532
- for (m in messages){
47533
- if (Object.prototype.hasOwnProperty.call(messages, m) && m.indexOf(topic) === 0){
47534
- delete messages[m];
47535
- }
47536
- }
47537
- };
47538
-
47539
- /**
47540
- Count subscriptions by the topic
47541
- * @function
47542
- * @public
47543
- * @alias countSubscriptions
47544
- * @return { Array }
47545
- */
47546
- PubSub.countSubscriptions = function countSubscriptions(topic){
47547
- var m;
47548
- // eslint-disable-next-line no-unused-vars
47549
- var token;
47550
- var count = 0;
47551
- for (m in messages) {
47552
- if (Object.prototype.hasOwnProperty.call(messages, m) && m.indexOf(topic) === 0) {
47553
- for (token in messages[m]) {
47554
- count++;
47555
- }
47556
- break;
47557
- }
47558
- }
47559
- return count;
47560
- };
47561
-
47562
-
47563
- /**
47564
- Gets subscriptions by the topic
47565
- * @function
47566
- * @public
47567
- * @alias getSubscriptions
47568
- */
47569
- PubSub.getSubscriptions = function getSubscriptions(topic){
47570
- var m;
47571
- var list = [];
47572
- for (m in messages){
47573
- if (Object.prototype.hasOwnProperty.call(messages, m) && m.indexOf(topic) === 0){
47574
- list.push(m);
47575
- }
47576
- }
47577
- return list;
47578
- };
47579
-
47580
- /**
47581
- * Removes subscriptions
47582
- *
47583
- * - When passed a token, removes a specific subscription.
47584
- *
47585
- * - When passed a function, removes all subscriptions for that function
47586
- *
47587
- * - When passed a topic, removes all subscriptions for that topic (hierarchy)
47588
- * @function
47589
- * @public
47590
- * @alias subscribeOnce
47591
- * @param { String | Function } value A token, function or topic to unsubscribe from
47592
- * @example // Unsubscribing with a token
47593
- * var token = PubSub.subscribe('mytopic', myFunc);
47594
- * PubSub.unsubscribe(token);
47595
- * @example // Unsubscribing with a function
47596
- * PubSub.unsubscribe(myFunc);
47597
- * @example // Unsubscribing from a topic
47598
- * PubSub.unsubscribe('mytopic');
47599
- */
47600
- PubSub.unsubscribe = function(value){
47601
- var descendantTopicExists = function(topic) {
47602
- var m;
47603
- for ( m in messages ){
47604
- if ( Object.prototype.hasOwnProperty.call(messages, m) && m.indexOf(topic) === 0 ){
47605
- // a descendant of the topic exists:
47606
- return true;
47607
- }
47608
- }
47609
-
47610
- return false;
47611
- },
47612
- isTopic = typeof value === 'string' && ( Object.prototype.hasOwnProperty.call(messages, value) || descendantTopicExists(value) ),
47613
- isToken = !isTopic && typeof value === 'string',
47614
- isFunction = typeof value === 'function',
47615
- result = false,
47616
- m, message, t;
47617
-
47618
- if (isTopic){
47619
- PubSub.clearSubscriptions(value);
47620
- return;
47621
- }
47622
-
47623
- for ( m in messages ){
47624
- if ( Object.prototype.hasOwnProperty.call( messages, m ) ){
47625
- message = messages[m];
47626
-
47627
- if ( isToken && message[value] ){
47628
- delete message[value];
47629
- result = value;
47630
- // tokens are unique, so we can just stop here
47631
- break;
47632
- }
47633
-
47634
- if (isFunction) {
47635
- for ( t in message ){
47636
- if (Object.prototype.hasOwnProperty.call(message, t) && message[t] === value){
47637
- delete message[t];
47638
- result = true;
47639
- }
47640
- }
47641
- }
47642
- }
47643
- }
47644
-
47645
- return result;
47646
- };
47647
- }));
47648
-
47649
-
47650
47292
  /***/ }),
47651
47293
 
47652
47294
  /***/ 92775:
@@ -49520,8 +49162,6 @@ exports.getAppStudioBaseURL = appStudio_1.getAppStudioBaseURL;
49520
49162
  exports.getAppStudioProxyURL = appStudio_1.getAppStudioProxyURL;
49521
49163
  __export(__webpack_require__(68093));
49522
49164
  __export(__webpack_require__(37039));
49523
- __export(__webpack_require__(80461));
49524
- __export(__webpack_require__(68345));
49525
49165
  __export(__webpack_require__(65678));
49526
49166
  var FioriToolsSettings;
49527
49167
  (function (FioriToolsSettings) {
@@ -49575,33 +49215,6 @@ function allSettled(promises) {
49575
49215
  exports.allSettled = allSettled;
49576
49216
 
49577
49217
 
49578
- /***/ }),
49579
-
49580
- /***/ 80461:
49581
- /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
49582
-
49583
- "use strict";
49584
-
49585
- Object.defineProperty(exports, "__esModule", ({ value: true }));
49586
- // This is ugly but necessary as our modules get bundled by webpack and each of
49587
- // them contain their own copy of pubsub-js. Consequently we lose the benefit of
49588
- // Node module being cached after being loaded once
49589
- function getPubSubInstance() {
49590
- const PUBSUB_GLOBAL_INSTANCE_KEY = 'fiori/tools/pubsub';
49591
- let pubsub = global[PUBSUB_GLOBAL_INSTANCE_KEY];
49592
- if (!pubsub) {
49593
- pubsub = __webpack_require__(37964);
49594
- global[PUBSUB_GLOBAL_INSTANCE_KEY] = pubsub;
49595
- }
49596
- return {
49597
- subscribe: pubsub.subscribe.bind(pubsub),
49598
- unsubscribe: pubsub.unsubscribe.bind(pubsub),
49599
- publish: pubsub.publish.bind(pubsub)
49600
- };
49601
- }
49602
- exports.getPubSubInstance = getPubSubInstance;
49603
-
49604
-
49605
49218
  /***/ }),
49606
49219
 
49607
49220
  /***/ 65678:
@@ -49621,17 +49234,6 @@ function escapeRegExp(s) {
49621
49234
  exports.escapeRegExp = escapeRegExp;
49622
49235
 
49623
49236
 
49624
- /***/ }),
49625
-
49626
- /***/ 68345:
49627
- /***/ ((__unused_webpack_module, exports) => {
49628
-
49629
- "use strict";
49630
-
49631
- Object.defineProperty(exports, "__esModule", ({ value: true }));
49632
- exports.TOPIC_APP_GENERATED = 'app.generated';
49633
-
49634
-
49635
49237
  /***/ }),
49636
49238
 
49637
49239
  /***/ 52136:
@@ -50959,7 +50561,7 @@ async function connectWithBasicAuth({ target, credentials, autoAddTrailingSlash
50959
50561
  if (hasCredentials) {
50960
50562
  config.auth = credentials;
50961
50563
  }
50962
- if (typeof timeout == 'number' && timeout > 0) {
50564
+ if (typeof timeout === 'number' && timeout > 0) {
50963
50565
  const CancelToken = axios_1.default.CancelToken;
50964
50566
  const source = CancelToken.source();
50965
50567
  setTimeout(() => {
@@ -51038,10 +50640,14 @@ function isSamlLogonNeeded(response) {
51038
50640
  * @param autoAddTrailingSlash
51039
50641
  */
51040
50642
  async function connect({ target, credentials, log, autoAddTrailingSlash = true, timeout, ignoreCertError = false, postConnectionCallback }) {
51041
- if (target.authenticationType === __1.AuthenticationType.OAuth2) {
50643
+ const targetAuthType = target.authenticationType;
50644
+ if (targetAuthType === __1.AuthenticationType.OAuth2RefreshToken) {
51042
50645
  return uaaOauth_1.connectUsingUaa({ target, credentials, log, postConnectionCallback });
51043
50646
  }
51044
- else if (target.authenticationType === __1.AuthenticationType.RentranceTicket) {
50647
+ else if (targetAuthType === __1.AuthenticationType.OAuth2ClientCredential) {
50648
+ return uaaOauth_1.connectUsingUaaClientCredential({ target, credentials, log });
50649
+ }
50650
+ else if (targetAuthType === __1.AuthenticationType.ReentranceTicket) {
51045
50651
  return connectWithReentranceTicket_1.connectWithReentranceTicket({ target, logger: log, ignoreCertError });
51046
50652
  }
51047
50653
  else {
@@ -51121,6 +50727,7 @@ function getAuthCode({ uaa, log, timeout = utils_1.timeoutMs }) {
51121
50727
  });
51122
50728
  }
51123
50729
  async function getAccessToken({ uaa, log, postConnectionCallback, refreshToken }) {
50730
+ var _a;
51124
50731
  let response;
51125
50732
  let startFreshLogin = false;
51126
50733
  let newRefreshToken;
@@ -51165,7 +50772,21 @@ async function getAccessToken({ uaa, log, postConnectionCallback, refreshToken }
51165
50772
  });
51166
50773
  }
51167
50774
  log.info('Got access token successfully');
51168
- return response.data.access_token;
50775
+ return (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.access_token;
50776
+ }
50777
+ async function getAccessTokenByUaaClientCredential({ uaa, log }) {
50778
+ try {
50779
+ const tokenRequest = uaa.getAccessTokenRequestUsingClientCredential();
50780
+ const response = await axios_1.default.request(tokenRequest);
50781
+ log.info('Receiving response from OAuth2 Client Credential grant type');
50782
+ return response.data.access_token;
50783
+ }
50784
+ catch (e) {
50785
+ if (e instanceof error_1.ConnectionError) {
50786
+ throw e;
50787
+ }
50788
+ throw new error_1.ConnectionError(e.message, e);
50789
+ }
51169
50790
  }
51170
50791
  /** Run post connection callback - sync or async depends on the callback properties
51171
50792
  */
@@ -51253,6 +50874,12 @@ class Uaa {
51253
50874
  get clientsecret() {
51254
50875
  return this.serviceInfo.uaa.clientsecret;
51255
50876
  }
50877
+ get username() {
50878
+ return this.serviceInfo.uaa.username;
50879
+ }
50880
+ get password() {
50881
+ return this.serviceInfo.uaa.password;
50882
+ }
51256
50883
  get logoutUrl() {
51257
50884
  return this.url + '/logout.do';
51258
50885
  }
@@ -51285,6 +50912,22 @@ class Uaa {
51285
50912
  }
51286
50913
  };
51287
50914
  }
50915
+ getAccessTokenRequestUsingClientCredential() {
50916
+ return {
50917
+ url: this.url,
50918
+ method: 'POST',
50919
+ data: qs_1.default.stringify({
50920
+ grant_type: 'password',
50921
+ username: this.username,
50922
+ password: this.password
50923
+ }),
50924
+ headers: {
50925
+ 'Content-Type': 'application/x-www-form-urlencoded',
50926
+ Accept: 'application/json',
50927
+ Authorization: `Basic ${Buffer.from(this.clientid + ':' + this.clientsecret).toString('base64')}`
50928
+ }
50929
+ };
50930
+ }
51288
50931
  getTokenRequestForRefreshToken(refreshToken) {
51289
50932
  return {
51290
50933
  url: this.url + '/oauth/token',
@@ -51341,7 +50984,8 @@ exports.getServiceInfo = getServiceInfo;
51341
50984
  exports.defaultUtils = {
51342
50985
  serviceInfo: getServiceInfo,
51343
50986
  connection: newConnection,
51344
- accessToken: getAccessToken
50987
+ accessToken: getAccessToken,
50988
+ accessTokenByUaaClientCredential: getAccessTokenByUaaClientCredential
51345
50989
  };
51346
50990
  async function connectUsingUaa({ target, credentials, log = console, uaaUtils = exports.defaultUtils, postConnectionCallback }) {
51347
50991
  try {
@@ -51363,6 +51007,34 @@ async function connectUsingUaa({ target, credentials, log = console, uaaUtils =
51363
51007
  }
51364
51008
  }
51365
51009
  exports.connectUsingUaa = connectUsingUaa;
51010
+ async function connectUsingUaaClientCredential({ target, credentials, log = console, uaaUtils = exports.defaultUtils }) {
51011
+ let accessToken;
51012
+ try {
51013
+ const uaa = new Uaa(credentials.serviceInfo);
51014
+ accessToken = await uaaUtils.accessTokenByUaaClientCredential({
51015
+ uaa,
51016
+ log
51017
+ });
51018
+ }
51019
+ catch (e) {
51020
+ log.error(`Failed to obtain OAuth2 access token: ${e.message}`);
51021
+ if (e instanceof error_1.ConnectionError) {
51022
+ throw e;
51023
+ }
51024
+ throw new error_1.ConnectionError(e.message, e);
51025
+ }
51026
+ try {
51027
+ return await uaaUtils.connection(target, accessToken);
51028
+ }
51029
+ catch (e) {
51030
+ log.error(e.message);
51031
+ if (e instanceof error_1.ConnectionError) {
51032
+ throw e;
51033
+ }
51034
+ throw new error_1.ConnectionError(e.message, e);
51035
+ }
51036
+ }
51037
+ exports.connectUsingUaaClientCredential = connectUsingUaaClientCredential;
51366
51038
 
51367
51039
 
51368
51040
  /***/ }),
@@ -51807,7 +51479,7 @@ exports.newSapSystemForSteampunk = newSapSystemForSteampunk;
51807
51479
  * Create a new S/4HANA Cloud system instance
51808
51480
  */
51809
51481
  function newS4HCSystem({ name, url, unSaved = false }) {
51810
- return new sapSystem_1.SapSystem(name, { url, authenticationType: __1.AuthenticationType.RentranceTicket }, undefined, undefined, unSaved, postConnectionCallbackCreator);
51482
+ return new sapSystem_1.SapSystem(name, { url, authenticationType: __1.AuthenticationType.ReentranceTicket }, undefined, undefined, unSaved, postConnectionCallbackCreator);
51811
51483
  }
51812
51484
  exports.newS4HCSystem = newS4HCSystem;
51813
51485
  function newSapSystemForDestinaton({ destination, destinationInstance, destinationAuthType, credentials }) {
@@ -51893,7 +51565,7 @@ class SapSystem {
51893
51565
  refreshToken: s.refreshToken
51894
51566
  }
51895
51567
  : undefined;
51896
- const authenticationType = Object.values(__1.AuthenticationType).find((v) => v === s.authenticationType) ||
51568
+ const authenticationType = Object.values(ux_store_1.AuthenticationType).find((v) => v === s.authenticationType) ||
51897
51569
  __1.guessAuthType({ credentials, fallback: false });
51898
51570
  return new SapSystem(s.name, { url: s.url, client: s.client, authenticationType }, credentials, s.userDisplayName);
51899
51571
  }
@@ -51969,11 +51641,11 @@ class SapSystem {
51969
51641
  // @todo: this class clearly needs to be refactored into classes representing OnPrem, BTP, S4HC and Destinations
51970
51642
  isOnPremSystem() {
51971
51643
  var _a;
51972
- return ((_a = this.config) === null || _a === void 0 ? void 0 : _a.authenticationType) === __1.AuthenticationType.Basic || !(this.isScp() || this.isS4HC());
51644
+ return ((_a = this.config) === null || _a === void 0 ? void 0 : _a.authenticationType) === ux_store_1.AuthenticationType.Basic || !(this.isScp() || this.isS4HC());
51973
51645
  }
51974
51646
  isS4HC() {
51975
51647
  var _a;
51976
- return ((_a = this.config) === null || _a === void 0 ? void 0 : _a.authenticationType) === __1.AuthenticationType.RentranceTicket;
51648
+ return ((_a = this.config) === null || _a === void 0 ? void 0 : _a.authenticationType) === ux_store_1.AuthenticationType.ReentranceTicket;
51977
51649
  }
51978
51650
  addS4HCSuffix(name) {
51979
51651
  const S4HC_SUFFIX = ' (S4HC)';
@@ -52244,9 +51916,16 @@ exports.xmlToJson = xmlToJson;
52244
51916
  * Optionally fall back to basic authentication as the default
52245
51917
  */
52246
51918
  function guessAuthType({ credentials, fallback = false }) {
52247
- let authType = (credentials === null || credentials === void 0 ? void 0 : credentials.serviceKeys) || (credentials === null || credentials === void 0 ? void 0 : credentials.serviceKeysContents) ? __1.AuthenticationType.OAuth2 : undefined;
52248
- if (!authType && fallback)
51919
+ var _a, _b;
51920
+ let authType = (credentials === null || credentials === void 0 ? void 0 : credentials.serviceKeys) || (credentials === null || credentials === void 0 ? void 0 : credentials.serviceKeysContents)
51921
+ ? __1.AuthenticationType.OAuth2RefreshToken
51922
+ : undefined;
51923
+ if (!authType && credentials && ((_b = (_a = credentials.serviceInfo) === null || _a === void 0 ? void 0 : _a.uaa) === null || _b === void 0 ? void 0 : _b.username)) {
51924
+ authType = __1.AuthenticationType.OAuth2ClientCredential;
51925
+ }
51926
+ if (!authType && fallback) {
52249
51927
  authType = __1.AuthenticationType.Basic;
51928
+ }
52250
51929
  return authType;
52251
51930
  }
52252
51931
  exports.guessAuthType = guessAuthType;
@@ -54021,8 +53700,9 @@ const decorators_1 = __webpack_require__(8114);
54021
53700
  var AuthenticationType;
54022
53701
  (function (AuthenticationType) {
54023
53702
  AuthenticationType["Basic"] = "basic";
54024
- AuthenticationType["OAuth2"] = "oauth2";
54025
- AuthenticationType["RentranceTicket"] = "reentranceTicket";
53703
+ AuthenticationType["ReentranceTicket"] = "reentranceTicket";
53704
+ AuthenticationType["OAuth2RefreshToken"] = "oauth2";
53705
+ AuthenticationType["OAuth2ClientCredential"] = "oauth2ClientCredential";
54026
53706
  })(AuthenticationType = exports.AuthenticationType || (exports.AuthenticationType = {}));
54027
53707
  class BackendSystemKey {
54028
53708
  constructor({ url, client }) {
@@ -54539,7 +54219,7 @@ class Migration {
54539
54219
  }
54540
54220
  guessAuthType(sys) {
54541
54221
  if (sys.serviceKeys) {
54542
- return backend_system_1.AuthenticationType.OAuth2;
54222
+ return backend_system_1.AuthenticationType.OAuth2RefreshToken;
54543
54223
  }
54544
54224
  else if (sys.username) {
54545
54225
  return backend_system_1.AuthenticationType.Basic;
@@ -69180,7 +68860,7 @@ async function getTemplateDataForVariantManagement(options, reuseLibsExists, lib
69180
68860
  const { component, ui5Theme } = options;
69181
68861
  const ui5ConfigurationMap = getUi5Configuration(libs, component, ui5Theme);
69182
68862
  const ui5Configuration = serializeUi5Configuration(ui5ConfigurationMap);
69183
- const layer = (await utils_1.getSapuxLayer());
68863
+ const layer = await utils_1.getSapuxLayer();
69184
68864
  const data = {
69185
68865
  component,
69186
68866
  layer,
@@ -69195,7 +68875,7 @@ async function getTemplateDataForVariantManagement(options, reuseLibsExists, lib
69195
68875
  }
69196
68876
  async function getTemplateDataForPropertyEditor(options, reuseLibsExists, libs) {
69197
68877
  const { component, ui5Theme } = options;
69198
- const layer = project_spec_1.UI5FlexLayer.VENDOR;
68878
+ const layer = await utils_1.getSapuxLayer();
69199
68879
  const ui5ConfigurationMap = getUi5Configuration(libs, component, ui5Theme);
69200
68880
  // Run application in design time mode
69201
68881
  // Adds bindingString to BindingInfo objects. Required to create and read PropertyBinding changes
@@ -69224,7 +68904,7 @@ async function getTemplateData(options, reuseLibsExists, libs) {
69224
68904
  const { component, ui5Theme } = options;
69225
68905
  const ui5ConfigurationMap = getUi5Configuration(libs, component, ui5Theme);
69226
68906
  const ui5Configuration = serializeUi5Configuration(ui5ConfigurationMap);
69227
- const layer = (await utils_1.getSapuxLayer());
68907
+ const layer = await utils_1.getSapuxLayer();
69228
68908
  const data = {
69229
68909
  component,
69230
68910
  layer,
@@ -69377,6 +69057,7 @@ exports.BOOTSTRAP_LINK = 'resources/sap-ui-core.js';
69377
69057
  exports.SANDBOX_LINK = 'test-resources/sap/ushell/bootstrap/sandbox.js';
69378
69058
  exports.V2_VARIANT_MIN_UI5_VERSION = '1.90.0';
69379
69059
  exports.V4_VARIANT_MIN_UI5_VERSION = '1.73.0';
69060
+ exports.CONTROL_PROPERTY_EDITOR_MIN_UI5_VERSION = '1.84.0';
69380
69061
  exports.HTML_MOUNT_PATHS = ['/index.html', '/**/flpSandbox.html', '/**/flpSandboxMockServer.html'];
69381
69062
  exports.PREVIEW_APP_NAME = 'preview-app';
69382
69063
  exports.FIORI_TOOLS_RTA_MODE_URL_PARAMETER = 'fiori-tools-rta-mode';
@@ -69510,6 +69191,9 @@ async function getRepositoryClient(config, log) {
69510
69191
  }
69511
69192
  // Fallback to using a system with no credentials, request may fail
69512
69193
  if (!system) {
69194
+ if (config.target.scp) {
69195
+ throw new Error(i18next_1.default.t('ERROR_NO_SYSTEM_IN_STORE'));
69196
+ }
69513
69197
  log.warn(i18next_1.default.t('CONNECTING_WITHOUT_CREDS'));
69514
69198
  system = new system_1.SapSystem('', config.target, config.credentials);
69515
69199
  }
@@ -69592,6 +69276,21 @@ function mergeConfigAndParams(config, params) {
69592
69276
  else {
69593
69277
  config.testMode = false;
69594
69278
  }
69279
+ if (params['uaa-url']) {
69280
+ if (config.credentials === undefined) {
69281
+ config.credentials = {
69282
+ serviceInfo: {
69283
+ uaa: {}
69284
+ }
69285
+ };
69286
+ }
69287
+ // config.credentials.username = params.username.startsWith('env:') ? params.username : `env:${params.username}`;
69288
+ config.credentials.serviceInfo.uaa.url = params['uaa-url'];
69289
+ config.credentials.serviceInfo.uaa.username = params['uaa-username'];
69290
+ config.credentials.serviceInfo.uaa.password = params['uaa-password'];
69291
+ config.credentials.serviceInfo.uaa.clientid = params['uaa-clientid'];
69292
+ config.credentials.serviceInfo.uaa.clientsecret = params['uaa-clientsecret'];
69293
+ }
69595
69294
  }
69596
69295
  exports.mergeConfigAndParams = mergeConfigAndParams;
69597
69296
  function parseBoolParamValue(paramValue) {
@@ -69647,8 +69346,10 @@ function getGeneratorIndexPath(parentFolder, type) {
69647
69346
  }
69648
69347
  exports.getGeneratorIndexPath = getGeneratorIndexPath;
69649
69348
  function validateCredential(credentials) {
69650
- var _a, _b;
69651
- if (credentials && (!((_a = credentials === null || credentials === void 0 ? void 0 : credentials.username) === null || _a === void 0 ? void 0 : _a.startsWith('env:')) || !((_b = credentials === null || credentials === void 0 ? void 0 : credentials.password) === null || _b === void 0 ? void 0 : _b.startsWith('env:')))) {
69349
+ function validateUseEnv(property) {
69350
+ return !property || (property && property.startsWith('env:'));
69351
+ }
69352
+ if (credentials && (!validateUseEnv(credentials.username) || !validateUseEnv(credentials.password))) {
69652
69353
  throw new Error(i18next_1.default.t('ERROR_USER_PASSWORD_PLAIN'));
69653
69354
  }
69654
69355
  }
@@ -69960,7 +69661,7 @@ module.exports = webpackEmptyContext;
69960
69661
  /***/ ((module) => {
69961
69662
 
69962
69663
  "use strict";
69963
- module.exports = JSON.parse('{"ABAP_PACKAGE":"ABAP package","ADDING_ARTIFACT_TO_PROJECT":"Adding {{artifact}} to the project.","APPLICATION_NAME":"Application Name","ARTIFACT_ADDED":"{{artifact}} added to the project.","ARTIFACT_NOT_ADDED":"{{artifact}} not added to the project.","CLIENT":"Client","CONFIRM_DEPLOYMENT_TESTMODE":"Confirmation is required to deploy the app in test mode:","CONFIRM_DEPLOYMENT":"Confirmation is required to deploy the app:","CONNECTING_WITHOUT_CREDS":"Connecting without any credentials, deployment may fail if authorization is required","CONSIDER_REMOVING_CLIENT_FROM_CONFIG":"Please remove the client from ui5-deploy.yaml, if you don\'t want to see the above warning again","DEPLOY_CANCELED":"Deploy canceled","DEPLOY_EXECUTED":"deploy executed.","DESTINATION":"Destination","ERROR_COMMAND_CMD":"Command {{cmd}} does not exist.","ERROR_INVALID_DEPLOYMENT_CONFIGURATION":"Invalid deployment configuration. Property {{property}} is missing.","ERROR_USER_PASSWORD_PLAIN":"Username or password must not be provided in plain text. Use environment variables.","ERROR_YO_NOT_INSTALLED":"Yeoman is not installed or available in your executable path. Please check your configuration or use npm/yarn to install it globally","ERROR_INSTALL_FIORI_GENERATOR":"Do you need to install {{fioriGenerator}} globally?\\nnpm install -g {{fioriGenerator}}\\nOR\\nyarn global add {{fioriGenerator}}","FILE_CREATED":"File {{file}} created in {{- folder}}","GENERATE_STANDALONE_INDEX_HTML":"Generate standalone index.html during deployment","INDEX_EXISTS_NOT_OVERWRITING":"\'index.html\' already exists, not generating one","INDEX_HTML_ADDED":"index.html added","INFO_CREATE_ARCHIVE":"Create Archive","INFO_COMMAND_FAILED":"Command {{cmd}} failed with error {{-message}}","INFO_DEPLOYMENT_SUCCESSFUL":"Deployment Successful.","INFO_DEPLOYMENT_FAILED":"Deployment Failed.","INFO_FILE_PATH_ADDED":"{{path}} added","INFO_LIVERELOAD_STARTED":"Livereload middleware started for port {{port}} and path {{-watchPath}}","ERROR_STARTING_LIVERELOAD":"Port {{port}} was not exposed! Livereload will not work!","INFO_STARTING_DEPLOYMENT":"Starting Deployment.","INFO_STORE_DETAILS":"Storing details for system: ","INFO_USED_DESTINATION":"Used destination: ","INVALID_DATA":"Invalid data","INVALID_ODATA_VERSION":"The middleware fiori-tools-preview can only be used with OData version 4","MAINTAIN_CREDENTIALS":"Please maintain correct credentials to avoid seeing this error\\n\\t(see help: https://www.npmjs.com/package/@sap/ux-ui5-tooling#setting-environment-variables-in-a-env-file)","NO_PATH_LOCAL_UI5":"No path to local UI5 sources provided!","PACKAGE":"Package","PACKAGE_JSON_UPDATED":"package.json updated.","PACKAGE_NAME_REQUIRED":"Package name required","PROXY_STARTED_FOR":"Proxy started for ","SERVICE_KEYS_CONTENT_EMPTY":"Service keys contents cannot be empty","START_DEPLOYMENT":"Start deployment (Y/n)?","START_DEPLOYMENT_TESTMODE":"Start deployment in test mode (Y/n)?","SYSTEM_NAME_EMPTY":"System Name cannot be empty","SYSTEM_NAME_IN_USE":"[{{name}}] is already in use","TARGET":"Target","TRANSPORT_REQUEST":"Transport Request","USE_IT_INSTEAD":"Use it instead (Y/n)?","USING_SYSTEM_WITH_SAME_URL_NO_CLIENT":"Using system [{{name}}] with same URL, no client from System Store","USING_SYSTEM_FROM_STORE":"Using system [{{name}}] from System store","VARIANTS_MANAGEMENT_NOT_SUPPORTED":"Variants Management is supported only with OData version 4","WARNING_PACKAGE_IN_CUSTOMER_SPACE":"Your package is in the customer space. Please check the correctness of the application name as it might need to start with a Z.","ERROR_EXTRACT_API_KEY":"Could not extract API hub key from \'{{-envPath}}\'","ERROR_API_HUB_KEY":"Property apiHub is set to true in yaml file, but file \'{{-envPath}}\' doesn\'t contain API key. Error was: ${{-message}}","SSL_IGNORE_WARNING":"You chose not to validate SSL certificate. Please verify the server certificate is trustful before proceeding. See documentation for recommended configuration (https://help.sap.com/viewer/17d50220bcd848aa854c9c182d65b699/Latest/en-US/4b318bede7eb4021a8be385c46c74045.html).","SSL_PROXY_ERROR":"You are trying to connect to a server with a self signed certificate. Please check (https://help.sap.com/viewer/17d50220bcd848aa854c9c182d65b699/Latest/en-US/4b318bede7eb4021a8be385c46c74045.html) for guidance.","NO_DEPLOY_CONFIG":"No deployment configuration has been detected. Run `npm run deploy-config` to add configuration first.","NO_BSP_APPLICATION":"Mandatory parameter --bspApplication <value> is missing. Please provide BSP Application","YAML_NOT_FOUND":"Configuration file {{-yamlPath}} not found. Please provide a valid path","NO_BUILD_SCRIPT":"Warning: No build script was found. You will need to execute build, before running start-flp.","CONFIRM_UNDEPLOYMENT":"Confirmation is required to undeploy the app:","INFO_STARTING_UNDEPLOYMENT":"Starting undeployment.","INFO_UNDEPLOYMENT_SUCCESSFUL":"Undeployment Successful.","INFO_UNDEPLOYMENT_FAILED":"Undeployment Failed.","START_UNDEPLOYMENT":"Start undeployment (Y/n)?","USERNAME":"Username:","PASSWORD":"Password:","REQUIRE_CREDENTIAL":"The deployment destination requires authentication. Please enter your credentials below","REQUIRE_CREDENTIAL_FLP":"The FLP Embedded Preview requires credentials. Please enter your credentials below","ERROR_NO_VSCODE_SETTINGS_FILE":"No VSCode Settings file found.","INFO_SAML_NOT_SUPPORTED":"The backend service seems to require direct SAML authentication, which is not yet supported.","INFO_RESPONSE_UNCERTAIN":"Successful deployment could not be confirmed based on the response message received. Please manually verify if the deployment was successful.","VSCODE_SETTINGS_FILE_NOT_PARSEABLE":"Not able to parse VSCode settings.json file.","ERROR_EMPTY_USERNAME":"Username can not be empty.","ERROR_EMPTY_PASSWORD":"Password can not be empty.","OPERATION_ABORTED":"Operation aborted by the user.","ERROR_ACHIVE_FROM_EXTERNAL_FILEPATH":"The archive file you provided could not be found.","ERROR_ACHIVE_FROM_EXTERNAL_URL":"The archive url you provided could not be reached. Please ensure the URL is accessible and does not require authentication. {{error}}","NO_CAP":"CAP projects are not supported.","DEPLOYMENT_MSG":"To retrieve the deployed URL, run the following command:","DEPLOYMENT_MANAGED_CF_URL":"cf html5-list -u -di {{-mtaId}}-dest-srv -u --runtime launchpad","DEPLOYMENT_HELP":"For more help, go to https://help.sap.com/viewer/17d50220bcd848aa854c9c182d65b699/Latest/en-US/607014e278d941fda4440f92f4a324a6.html","DEPLOYMENT_STANDALONE_CF_URL":"Please see the deployed application URL above","ERROR_NO_UI5_FLEX_LAYER":"The UI5 Flexibility Layer for this project is not set. Please open the command palette and execute the command Fiori: Add Configuration for Variants Creation.","ERROR_WRONG_UI5_FLEX_LAYER":"The value of the UI5 Flexibility Layer is wrong. Please open the command palette and execute the command Fiori: Add Configuration for Variants Creation.","ERROR_NO_MINUI5VERSION":"The minUI5Version is missing. Please update the minUI5Version in the manifest.json to {{version}} or higher.","ERROR_WRONG_MINUI5VERSION":"Variant management works only with minUI5Version {{version}} or higher. Please update the minUI5Version in the manifest.json to {{version}} or higher.","ERROR_WRONG_UI5VERSION":"Variant management works only with UI5 version {{version}} or higher. Please update the UI5 version in the {{ui5Yaml}} to {{version}} or higher.","NO_HELP_MARKDOWN_FOUND":"Help content cannot be loaded","UNKNOWN_ADD_SUBCOMMAND":"Subcommand {{artifact}} is not supported. Please check the following supported subcommands.","CONTROL_PROPERTY_EDITOR_UNSUPPORTED_FE_VERSION":"Control property editor is available only for FE v2 apps"}');
69664
+ module.exports = JSON.parse('{"ABAP_PACKAGE":"ABAP package","ADDING_ARTIFACT_TO_PROJECT":"Adding {{artifact}} to the project.","APPLICATION_NAME":"Application Name","ARTIFACT_ADDED":"{{artifact}} added to the project.","ARTIFACT_NOT_ADDED":"{{artifact}} not added to the project.","CLIENT":"Client","CONFIRM_DEPLOYMENT_TESTMODE":"Confirmation is required to deploy the app in test mode:","CONFIRM_DEPLOYMENT":"Confirmation is required to deploy the app:","CONNECTING_WITHOUT_CREDS":"Connecting without any credentials, deployment may fail if authorization is required","CONSIDER_REMOVING_CLIENT_FROM_CONFIG":"Please remove the client from ui5-deploy.yaml, if you don\'t want to see the above warning again","DEPLOY_CANCELED":"Deploy canceled","DEPLOY_EXECUTED":"deploy executed.","DESTINATION":"Destination","ERROR_COMMAND_CMD":"Command {{cmd}} does not exist.","ERROR_INVALID_DEPLOYMENT_CONFIGURATION":"Invalid deployment configuration. Property {{property}} is missing.","ERROR_USER_PASSWORD_PLAIN":"Username or password must not be provided in plain text. Use environment variables.","ERROR_YO_NOT_INSTALLED":"Yeoman is not installed or available in your executable path. Please check your configuration or use npm/yarn to install it globally","ERROR_INSTALL_FIORI_GENERATOR":"Do you need to install {{fioriGenerator}} globally?\\nnpm install -g {{fioriGenerator}}\\nOR\\nyarn global add {{fioriGenerator}}","FILE_CREATED":"File {{file}} created in {{- folder}}","GENERATE_STANDALONE_INDEX_HTML":"Generate standalone index.html during deployment","INDEX_EXISTS_NOT_OVERWRITING":"\'index.html\' already exists, not generating one","INDEX_HTML_ADDED":"index.html added","INFO_CREATE_ARCHIVE":"Create Archive","INFO_COMMAND_FAILED":"Command {{cmd}} failed with error {{-message}}","INFO_DEPLOYMENT_SUCCESSFUL":"Deployment Successful.","INFO_DEPLOYMENT_FAILED":"Deployment Failed.","ERROR_NO_SYSTEM_IN_STORE":"Error in deployment. The BTP system used in the deployment configuration could not be found as one of your local saved SAP systems. Please ensure you have saved this system locally so that it can be used for deployment.","INFO_FILE_PATH_ADDED":"{{path}} added","INFO_LIVERELOAD_STARTED":"Livereload middleware started for port {{port}} and path {{-watchPath}}","ERROR_STARTING_LIVERELOAD":"Port {{port}} was not exposed! Livereload will not work!","INFO_STARTING_DEPLOYMENT":"Starting Deployment.","INFO_STORE_DETAILS":"Storing details for system: ","INFO_USED_DESTINATION":"Used destination: ","INVALID_DATA":"Invalid data","INVALID_ODATA_VERSION":"The middleware fiori-tools-preview can only be used with OData version 4","MAINTAIN_CREDENTIALS":"Please maintain correct credentials to avoid seeing this error\\n\\t(see help: https://www.npmjs.com/package/@sap/ux-ui5-tooling#setting-environment-variables-in-a-env-file)","NO_PATH_LOCAL_UI5":"No path to local UI5 sources provided!","PACKAGE":"Package","PACKAGE_JSON_UPDATED":"package.json updated.","PACKAGE_NAME_REQUIRED":"Package name required","PROXY_STARTED_FOR":"Proxy started for ","SERVICE_KEYS_CONTENT_EMPTY":"Service keys contents cannot be empty","START_DEPLOYMENT":"Start deployment (Y/n)?","START_DEPLOYMENT_TESTMODE":"Start deployment in test mode (Y/n)?","SYSTEM_NAME_EMPTY":"System Name cannot be empty","SYSTEM_NAME_IN_USE":"[{{name}}] is already in use","TARGET":"Target","TRANSPORT_REQUEST":"Transport Request","USE_IT_INSTEAD":"Use it instead (Y/n)?","USING_SYSTEM_WITH_SAME_URL_NO_CLIENT":"Using system [{{name}}] with same URL, no client from System Store","USING_SYSTEM_FROM_STORE":"Using system [{{name}}] from System store","VARIANTS_MANAGEMENT_NOT_SUPPORTED":"Variants Management is supported only with OData version 4","WARNING_PACKAGE_IN_CUSTOMER_SPACE":"Your package is in the customer space. Please check the correctness of the application name as it might need to start with a Z.","ERROR_EXTRACT_API_KEY":"Could not extract API hub key from \'{{-envPath}}\'","ERROR_API_HUB_KEY":"Property apiHub is set to true in yaml file, but file \'{{-envPath}}\' doesn\'t contain API key. Error was: ${{-message}}","SSL_IGNORE_WARNING":"You chose not to validate SSL certificate. Please verify the server certificate is trustful before proceeding. See documentation for recommended configuration (https://help.sap.com/viewer/17d50220bcd848aa854c9c182d65b699/Latest/en-US/4b318bede7eb4021a8be385c46c74045.html).","SSL_PROXY_ERROR":"You are trying to connect to a server with a self signed certificate. Please check (https://help.sap.com/viewer/17d50220bcd848aa854c9c182d65b699/Latest/en-US/4b318bede7eb4021a8be385c46c74045.html) for guidance.","NO_DEPLOY_CONFIG":"No deployment configuration has been detected. Run `npm run deploy-config` to add configuration first.","NO_BSP_APPLICATION":"Mandatory parameter --bspApplication <value> is missing. Please provide BSP Application","YAML_NOT_FOUND":"Configuration file {{-yamlPath}} not found. Please provide a valid path","NO_BUILD_SCRIPT":"Warning: No build script was found. You will need to execute build, before running start-flp.","CONFIRM_UNDEPLOYMENT":"Confirmation is required to undeploy the app:","INFO_STARTING_UNDEPLOYMENT":"Starting undeployment.","INFO_UNDEPLOYMENT_SUCCESSFUL":"Undeployment Successful.","INFO_UNDEPLOYMENT_FAILED":"Undeployment Failed.","START_UNDEPLOYMENT":"Start undeployment (Y/n)?","USERNAME":"Username:","PASSWORD":"Password:","REQUIRE_CREDENTIAL":"The deployment destination requires authentication. Please enter your credentials below","REQUIRE_CREDENTIAL_FLP":"The FLP Embedded Preview requires credentials. Please enter your credentials below","ERROR_NO_VSCODE_SETTINGS_FILE":"No VSCode Settings file found.","INFO_SAML_NOT_SUPPORTED":"The backend service seems to require direct SAML authentication, which is not yet supported.","INFO_RESPONSE_UNCERTAIN":"Successful deployment could not be confirmed based on the response message received. Please manually verify if the deployment was successful.","VSCODE_SETTINGS_FILE_NOT_PARSEABLE":"Not able to parse VSCode settings.json file.","ERROR_EMPTY_USERNAME":"Username can not be empty.","ERROR_EMPTY_PASSWORD":"Password can not be empty.","OPERATION_ABORTED":"Operation aborted by the user.","ERROR_ACHIVE_FROM_EXTERNAL_FILEPATH":"The archive file you provided could not be found.","ERROR_ACHIVE_FROM_EXTERNAL_URL":"The archive url you provided could not be reached. Please ensure the URL is accessible and does not require authentication. {{error}}","NO_CAP":"CAP projects are not supported.","DEPLOYMENT_MSG":"To retrieve the deployed URL, run the following command:","DEPLOYMENT_MANAGED_CF_URL":"cf html5-list -u -di {{-mtaId}}-dest-srv -u --runtime launchpad","DEPLOYMENT_HELP":"For more help, go to https://help.sap.com/viewer/17d50220bcd848aa854c9c182d65b699/Latest/en-US/607014e278d941fda4440f92f4a324a6.html","DEPLOYMENT_STANDALONE_CF_URL":"Please see the deployed application URL above","ERROR_NO_UI5_FLEX_LAYER":"The UI5 Flexibility Layer for this project is not set. Please open the command palette and execute the command {{command}}.","ERROR_WRONG_UI5_FLEX_LAYER":"The value of the UI5 Flexibility Layer is wrong. Please open the command palette and execute the command {{command}}.","ERROR_NO_MINUI5VERSION":"The minUI5Version is missing. Please update the minUI5Version in the manifest.json to {{version}} or higher.","ERROR_WRONG_MINUI5VERSION":"Variant management works only with minUI5Version {{version}} or higher. Please update the minUI5Version in the manifest.json to {{version}} or higher.","ERROR_WRONG_UI5VERSION":"Variant management works only with UI5 version {{version}} or higher. Please update the UI5 version in the {{ui5Yaml}} to {{version}} or higher.","VARIANT_MANAGEMENT_VSCODE_CONFIGURATION_COMMAND":"Fiori: Add Configuration for Variants Creation","NO_HELP_MARKDOWN_FOUND":"Help content cannot be loaded","UNKNOWN_ADD_SUBCOMMAND":"Subcommand {{artifact}} is not supported. Please check the following supported subcommands.","CONTROL_PROPERTY_EDITOR_UNSUPPORTED_FE_VERSION":"Control property editor is available only for SAP Fiori Elements v2 apps","CONTROL_PROPERTY_EDITOR_MIN_UI5_VERSION":"Control property editor works only with SAP UI5 version {{version}} or higher. Please update the SAP UI5 version in the {{ui5Yaml}} to {{version}} or higher.","CONTROL_PROPERTY_EDITOR_VSCODE_CONFIGURATION_COMMAND":"Fiori: Add Configuration for Control Property Editor"}');
69964
69665
 
69965
69666
  /***/ }),
69966
69667