@commercetools-frontend/application-cli 2.1.2 → 2.2.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.
@@ -16,20 +16,23 @@ var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
16
16
  var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
17
17
  var _Object$entries = require('@babel/runtime-corejs3/core-js-stable/object/entries');
18
18
  var _Set = require('@babel/runtime-corejs3/core-js-stable/set');
19
- var _flatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/flat');
19
+ var _flatMapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/flat-map');
20
+ var storageBucketsConfig = require('../../dist/storage-buckets-config-30d0f671.cjs.dev.js');
20
21
  var fs = require('node:fs');
21
22
  var path$1 = require('node:path');
22
23
  var listr2 = require('listr2');
23
24
  var execa = require('execa');
24
- var cosmiconfig = require('cosmiconfig');
25
25
  var findRoot = require('@manypkg/find-root');
26
26
  var path = require('path');
27
27
  var _possibleConstructorReturn = require('@babel/runtime-corejs3/helpers/possibleConstructorReturn');
28
+ var _assertThisInitialized = require('@babel/runtime-corejs3/helpers/assertThisInitialized');
28
29
  var _get = require('@babel/runtime-corejs3/helpers/get');
29
30
  var _getPrototypeOf = require('@babel/runtime-corejs3/helpers/getPrototypeOf');
30
31
  var _inherits = require('@babel/runtime-corejs3/helpers/inherits');
31
32
  var _classCallCheck = require('@babel/runtime-corejs3/helpers/classCallCheck');
32
33
  var _createClass = require('@babel/runtime-corejs3/helpers/createClass');
34
+ var _classPrivateFieldLooseBase = require('@babel/runtime-corejs3/helpers/classPrivateFieldLooseBase');
35
+ var _classPrivateFieldLooseKey = require('@babel/runtime-corejs3/helpers/classPrivateFieldLooseKey');
33
36
  var _Reflect$construct = require('@babel/runtime-corejs3/core-js-stable/reflect/construct');
34
37
  var fs$1 = require('fs');
35
38
  var dotenv = require('dotenv');
@@ -37,9 +40,9 @@ var _findInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/insta
37
40
  var _JSON$stringify = require('@babel/runtime-corejs3/core-js-stable/json/stringify');
38
41
  var applicationConfig = require('@commercetools-frontend/application-config');
39
42
  var l10n = require('@commercetools-frontend/l10n');
40
- var storageBucketsConfig = require('../../dist/storage-buckets-config-478b8585.cjs.dev.js');
41
43
  var _sliceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/slice');
42
44
  var jsonschema = require('jsonschema');
45
+ require('cosmiconfig');
43
46
  require('ts-deepmerge');
44
47
 
45
48
  function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
@@ -55,7 +58,7 @@ var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defin
55
58
  var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
56
59
  var _Object$entries__default = /*#__PURE__*/_interopDefault(_Object$entries);
57
60
  var _Set__default = /*#__PURE__*/_interopDefault(_Set);
58
- var _flatInstanceProperty__default = /*#__PURE__*/_interopDefault(_flatInstanceProperty);
61
+ var _flatMapInstanceProperty__default = /*#__PURE__*/_interopDefault(_flatMapInstanceProperty);
59
62
  var fs__default = /*#__PURE__*/_interopDefault(fs);
60
63
  var path__default$1 = /*#__PURE__*/_interopDefault(path$1);
61
64
  var execa__default = /*#__PURE__*/_interopDefault(execa);
@@ -96,23 +99,34 @@ function _callSuper(_this, derived, args) {
96
99
  derived = _getPrototypeOf(derived);
97
100
  return _possibleConstructorReturn(_this, isNativeReflectConstruct() ? _Reflect$construct__default["default"](derived, args || [], _getPrototypeOf(_this).constructor) : derived.apply(_this, args));
98
101
  }
102
+ var _bucketRegion = /*#__PURE__*/_classPrivateFieldLooseKey("bucketRegion");
103
+ var _bucketEnvironment$1 = /*#__PURE__*/_classPrivateFieldLooseKey("bucketEnvironment");
99
104
  let StorageProvider = /*#__PURE__*/function () {
100
- function StorageProvider() {
105
+ function StorageProvider(config) {
101
106
  _classCallCheck(this, StorageProvider);
107
+ _Object$defineProperty__default["default"](this, _bucketRegion, {
108
+ writable: true,
109
+ value: void 0
110
+ });
111
+ _Object$defineProperty__default["default"](this, _bucketEnvironment$1, {
112
+ writable: true,
113
+ value: void 0
114
+ });
115
+ _classPrivateFieldLooseBase(this, _bucketRegion)[_bucketRegion] = config.bucketRegion;
116
+ _classPrivateFieldLooseBase(this, _bucketEnvironment$1)[_bucketEnvironment$1] = config.bucketEnvironment;
102
117
  }
118
+ /**
119
+ * Construct the storage bucket URL for the specific application and cloud environment.
120
+ *
121
+ * 1. Static assets are uploaded to `:bucketRegion/:prNumber?/:applicationName`
122
+ * 2. The application index is uploaded to `:bucketRegion/:prNumber?/:applicationName/:cloudEnvironment`
123
+ *
124
+ * This allows all cloud environments sharing the same static assets while each application's index
125
+ * is uploaded with different headers (e.g. CSP rules).
126
+ */
103
127
  _createClass(StorageProvider, [{
104
128
  key: "getBucketNamespace",
105
- value:
106
- /**
107
- * Construct the storage bucket URL for the specific application and cloud environment.
108
- *
109
- * 1. Static assets are uploaded to `:bucketRegion/:prNumber?/:applicationName`
110
- * 2. The application index is uploaded to `:bucketRegion/:prNumber?/:applicationName/:cloudEnvironment`
111
- *
112
- * This allows all cloud environments sharing the same static assets while each application's index
113
- * is uploaded with different headers (e.g. CSP rules).
114
- */
115
- function getBucketNamespace(prNumber) {
129
+ value: function getBucketNamespace(prNumber) {
116
130
  if (!prNumber) return;
117
131
  if (prNumber === 'merchant-center-preview') return prNumber;
118
132
  return `mc-${prNumber}`;
@@ -125,56 +139,85 @@ let StorageProvider = /*#__PURE__*/function () {
125
139
  key: "getAssetsBucketUrl",
126
140
  value: function getAssetsBucketUrl(_ref) {
127
141
  var _context;
128
- let bucketProtocol = _ref.bucketProtocol,
129
- bucketRegion = _ref.bucketRegion,
130
- bucketNamespace = _ref.bucketNamespace,
131
- applicationName = _ref.applicationName;
132
- const assetsBucketUrl = _filterInstanceProperty__default["default"](_context = [bucketRegion, bucketNamespace, applicationName]).call(_context, Boolean).join('/');
142
+ let applicationName = _ref.applicationName,
143
+ bucketProtocol = _ref.bucketProtocol,
144
+ bucketNamespace = _ref.bucketNamespace;
145
+ const assetsBucketUrl = _filterInstanceProperty__default["default"](_context = [_classPrivateFieldLooseBase(this, _bucketRegion)[_bucketRegion], bucketNamespace, applicationName]).call(_context, Boolean).join('/');
133
146
  return `${bucketProtocol}${assetsBucketUrl}`;
134
147
  }
135
148
  }, {
136
149
  key: "getApplicationIndexBucketUrl",
137
150
  value: function getApplicationIndexBucketUrl(_ref2) {
138
- let bucketProtocol = _ref2.bucketProtocol,
139
- bucketRegion = _ref2.bucketRegion,
140
- bucketNamespace = _ref2.bucketNamespace,
141
- prNumber = _ref2.prNumber,
151
+ let prNumber = _ref2.prNumber,
142
152
  applicationName = _ref2.applicationName,
143
- bucketEnvironment = _ref2.bucketEnvironment;
153
+ bucketProtocol = _ref2.bucketProtocol,
154
+ bucketNamespace = _ref2.bucketNamespace;
144
155
  const applicationAssetsBucketUrl = this.getAssetsBucketUrl({
145
- bucketProtocol,
146
- bucketRegion,
147
- bucketNamespace,
156
+ applicationName,
148
157
  prNumber,
149
- applicationName
158
+ bucketProtocol,
159
+ bucketNamespace
150
160
  });
151
- const applicationIndexBucketUrl = `${applicationAssetsBucketUrl}/${bucketEnvironment}`;
161
+ const applicationIndexBucketUrl = `${applicationAssetsBucketUrl}/${_classPrivateFieldLooseBase(this, _bucketEnvironment$1)[_bucketEnvironment$1]}`;
152
162
  return applicationIndexBucketUrl;
153
163
  }
154
164
  }, {
155
165
  key: "getCdnUrl",
156
166
  value: function getCdnUrl(_ref3) {
157
167
  var _context2;
158
- let publicBaseUrl = _ref3.publicBaseUrl,
159
- bucketRegion = _ref3.bucketRegion,
168
+ let applicationName = _ref3.applicationName,
160
169
  prNumber = _ref3.prNumber,
161
- applicationName = _ref3.applicationName;
162
- return _filterInstanceProperty__default["default"](_context2 = [publicBaseUrl, bucketRegion, this.getBucketNamespace(prNumber), applicationName]).call(_context2, Boolean).join('/');
170
+ publicBaseUrl = _ref3.publicBaseUrl;
171
+ return _filterInstanceProperty__default["default"](_context2 = [publicBaseUrl, _classPrivateFieldLooseBase(this, _bucketRegion)[_bucketRegion], this.getBucketNamespace(prNumber), applicationName]).call(_context2, Boolean).join('/');
172
+ }
173
+ }, {
174
+ key: "getPublicBaseUrl",
175
+ value: function getPublicBaseUrl(tag) {
176
+ if (!_classPrivateFieldLooseBase(this, _bucketEnvironment$1)[_bucketEnvironment$1]) {
177
+ throw new Error("'bucketEnvironment is not defined. Required to determine 'publicBaseUrl'.");
178
+ }
179
+ const storageProvider = storageBucketsConfig.storageProviders[tag];
180
+ const publicBaseUrl = storageProvider.urls[_classPrivateFieldLooseBase(this, _bucketEnvironment$1)[_bucketEnvironment$1]] ?? storageProvider.urls.default;
181
+ return publicBaseUrl;
163
182
  }
164
183
  }]);
165
184
  return StorageProvider;
166
185
  }();
186
+ var _bucketRegion2 = /*#__PURE__*/_classPrivateFieldLooseKey("bucketRegion");
187
+ var _bucketEnvironment2 = /*#__PURE__*/_classPrivateFieldLooseKey("bucketEnvironment");
167
188
  let GoogleStorageProvider = /*#__PURE__*/function (_StorageProvider) {
168
189
  _inherits(GoogleStorageProvider, _StorageProvider);
169
- function GoogleStorageProvider() {
190
+ function GoogleStorageProvider(config) {
191
+ var _this;
170
192
  _classCallCheck(this, GoogleStorageProvider);
171
- return _callSuper(this, GoogleStorageProvider, arguments);
193
+ _this = _callSuper(this, GoogleStorageProvider, [config]);
194
+ _Object$defineProperty__default["default"](_assertThisInitialized(_this), _bucketRegion2, {
195
+ writable: true,
196
+ value: void 0
197
+ });
198
+ _Object$defineProperty__default["default"](_assertThisInitialized(_this), _bucketEnvironment2, {
199
+ writable: true,
200
+ value: void 0
201
+ });
202
+ _classPrivateFieldLooseBase(_assertThisInitialized(_this), _bucketRegion2)[_bucketRegion2] = config.bucketRegion;
203
+ _classPrivateFieldLooseBase(_assertThisInitialized(_this), _bucketEnvironment2)[_bucketEnvironment2] = config.bucketEnvironment;
204
+ return _this;
172
205
  }
173
206
  _createClass(GoogleStorageProvider, [{
174
207
  key: "getTag",
175
208
  value: function getTag() {
176
209
  return 'gs';
177
210
  }
211
+ }, {
212
+ key: "getBucketRegion",
213
+ value: function getBucketRegion() {
214
+ return _classPrivateFieldLooseBase(this, _bucketRegion2)[_bucketRegion2];
215
+ }
216
+ }, {
217
+ key: "getBucketEnvironment",
218
+ value: function getBucketEnvironment() {
219
+ return _classPrivateFieldLooseBase(this, _bucketEnvironment2)[_bucketEnvironment2];
220
+ }
178
221
  }, {
179
222
  key: "getProtocol",
180
223
  value: function getProtocol() {
@@ -183,7 +226,7 @@ let GoogleStorageProvider = /*#__PURE__*/function (_StorageProvider) {
183
226
  }, {
184
227
  key: "getPublicBaseUrl",
185
228
  value: function getPublicBaseUrl() {
186
- return 'https://storage.googleapis.com';
229
+ return _get(_getPrototypeOf(GoogleStorageProvider.prototype), "getPublicBaseUrl", this).call(this, this.getTag());
187
230
  }
188
231
  }, {
189
232
  key: "getCdnUrl",
@@ -211,18 +254,24 @@ let GoogleStorageProvider = /*#__PURE__*/function (_StorageProvider) {
211
254
  }]);
212
255
  return GoogleStorageProvider;
213
256
  }(StorageProvider); // TODO: to be implemented.
214
- function getStorageProvider(storageProvider) {
257
+ function getStorageProvider(storageProvider, config) {
215
258
  switch (storageProvider) {
216
259
  case 'gs':
217
- return new GoogleStorageProvider();
260
+ return new GoogleStorageProvider(config);
218
261
  default:
219
262
  throw new Error(`Storage provider ${storageProvider} not supported`);
220
263
  }
221
264
  }
222
265
 
266
+ var _bucketEnvironment = /*#__PURE__*/_classPrivateFieldLooseKey("bucketEnvironment");
223
267
  let GoogleStorageUploadScriptsGenerator = /*#__PURE__*/function () {
224
- function GoogleStorageUploadScriptsGenerator() {
268
+ function GoogleStorageUploadScriptsGenerator(config) {
225
269
  _classCallCheck(this, GoogleStorageUploadScriptsGenerator);
270
+ _Object$defineProperty__default["default"](this, _bucketEnvironment, {
271
+ writable: true,
272
+ value: void 0
273
+ });
274
+ _classPrivateFieldLooseBase(this, _bucketEnvironment)[_bucketEnvironment] = config.bucketEnvironment;
226
275
  }
227
276
  _createClass(GoogleStorageUploadScriptsGenerator, [{
228
277
  key: "getApplicationIndexUploadScript",
@@ -230,10 +279,12 @@ let GoogleStorageUploadScriptsGenerator = /*#__PURE__*/function () {
230
279
  let packageManagerName = _ref.packageManagerName,
231
280
  bucketUrl = _ref.bucketUrl,
232
281
  cdnUrl = _ref.cdnUrl,
233
- bucketEnvironment = _ref.bucketEnvironment,
234
282
  buildRevision = _ref.buildRevision,
235
283
  buildNumber = _ref.buildNumber,
236
284
  applicationIndexOutFile = _ref.applicationIndexOutFile;
285
+ if (!_classPrivateFieldLooseBase(this, _bucketEnvironment)[_bucketEnvironment]) {
286
+ throw new Error("Missing 'bucketEnvironment' when generating application index.");
287
+ }
237
288
  return `
238
289
  #!/usr/bin/env bash
239
290
 
@@ -251,7 +302,7 @@ gcloud storage cp \\
251
302
  echo "Creating version.json and uploading it to bucket ${bucketUrl}"
252
303
 
253
304
  NODE_ENV=production ${packageManagerName} application-cli create-version \\
254
- --version-url=${cdnUrl}/${bucketEnvironment}/version.json \\
305
+ --version-url=${cdnUrl}/${_classPrivateFieldLooseBase(this, _bucketEnvironment)[_bucketEnvironment]}/version.json \\
255
306
  --build-revision=${buildRevision} \\
256
307
  --build-number=${buildNumber} \\
257
308
  --out-file=$(dirname "$0")/version.json
@@ -338,10 +389,10 @@ fi
338
389
  }]);
339
390
  return GoogleStorageUploadScriptsGenerator;
340
391
  }(); // TODO: To be implemented.
341
- function getUploadScriptsGenerator(storageProvider) {
392
+ function getUploadScriptsGenerator(storageProvider, config) {
342
393
  switch (storageProvider) {
343
394
  case 'gs':
344
- return new GoogleStorageUploadScriptsGenerator();
395
+ return new GoogleStorageUploadScriptsGenerator(config);
345
396
  default:
346
397
  throw new Error(`Storage provider ${storageProvider} not supported`);
347
398
  }
@@ -385,10 +436,7 @@ function loadDotenvFiles(_ref) {
385
436
  }
386
437
 
387
438
  function ownKeys$2(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
388
- function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context4, _context5; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context4 = ownKeys$2(Object(t), !0)).call(_context4, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context5 = ownKeys$2(Object(t))).call(_context5, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
389
- const storageBucketConfigExplorer = cosmiconfig.cosmiconfig('storage-buckets', {
390
- searchStrategy: 'project'
391
- });
439
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context3, _context4; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context3 = ownKeys$2(Object(t), !0)).call(_context3, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context4 = ownKeys$2(Object(t))).call(_context4, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
392
440
  function writeUploadScriptFile(_ref) {
393
441
  let fileName = _ref.fileName,
394
442
  fileContent = _ref.fileContent,
@@ -403,12 +451,10 @@ async function compileApplicationAssets(_ref2) {
403
451
  let cliFlags = _ref2.cliFlags,
404
452
  storageProvider = _ref2.storageProvider,
405
453
  uploadScriptsGenerator = _ref2.uploadScriptsGenerator,
406
- bucketRegion = _ref2.bucketRegion,
407
454
  paths = _ref2.paths;
408
455
  const applicationAssetsUploadScriptContent = uploadScriptsGenerator.getProductionBundlesUploadScript({
409
456
  storageProvider,
410
457
  bucketUrl: storageProvider.getAssetsBucketUrl({
411
- bucketRegion,
412
458
  prNumber: cliFlags.prNumber,
413
459
  applicationName: cliFlags.applicationName
414
460
  }),
@@ -416,7 +462,7 @@ async function compileApplicationAssets(_ref2) {
416
462
  skipMenu: cliFlags.skipMenu
417
463
  });
418
464
  const parsedApplicationAssetsUploadScriptFile = path__default$1["default"].parse(cliFlags.applicationAssetsUploadScriptOutFile);
419
- const applicationAssetsUploadScriptFileName = `${parsedApplicationAssetsUploadScriptFile.name}-${bucketRegion}${parsedApplicationAssetsUploadScriptFile.ext}`;
465
+ const applicationAssetsUploadScriptFileName = `${parsedApplicationAssetsUploadScriptFile.name}-${storageProvider.getBucketRegion()}${parsedApplicationAssetsUploadScriptFile.ext}`;
420
466
  writeUploadScriptFile({
421
467
  fileName: applicationAssetsUploadScriptFileName,
422
468
  fileContent: applicationAssetsUploadScriptContent,
@@ -428,9 +474,7 @@ async function compileEnvironmentApplicationIndexes(_ref3) {
428
474
  storageProvider = _ref3.storageProvider,
429
475
  uploadScriptsGenerator = _ref3.uploadScriptsGenerator,
430
476
  paths = _ref3.paths,
431
- bucketRegion = _ref3.bucketRegion,
432
- cloudEnvironment = _ref3.cloudEnvironment,
433
- bucketEnvironment = _ref3.bucketEnvironment;
477
+ cloudEnvironment = _ref3.cloudEnvironment;
434
478
  const cloudEnvironmentDeploymentPath = path__default$1["default"].join(paths.deploymentsPath, storageProvider.getTag(), cloudEnvironment);
435
479
  // Ensure the folder exists
436
480
  const createDeploymentsFolderResult = await execa__default["default"]('mkdir', ['-p', cloudEnvironmentDeploymentPath], {
@@ -442,7 +486,6 @@ async function compileEnvironmentApplicationIndexes(_ref3) {
442
486
 
443
487
  // Construct the proper CDN URL for the specific application
444
488
  const cdnUrl = storageProvider.getCdnUrl({
445
- bucketRegion,
446
489
  prNumber: cliFlags.prNumber,
447
490
  applicationName: cliFlags.applicationName
448
491
  });
@@ -488,13 +531,10 @@ async function compileEnvironmentApplicationIndexes(_ref3) {
488
531
  storageProvider,
489
532
  packageManagerName: cliFlags.packageManagerName,
490
533
  bucketUrl: storageProvider.getApplicationIndexBucketUrl({
491
- bucketRegion,
492
534
  prNumber: cliFlags.prNumber,
493
- applicationName: cliFlags.applicationName,
494
- bucketEnvironment
535
+ applicationName: cliFlags.applicationName
495
536
  }),
496
537
  cdnUrl,
497
- bucketEnvironment,
498
538
  buildRevision: cliFlags.buildRevision,
499
539
  buildNumber: cliFlags.buildNumber,
500
540
  applicationIndexOutFile: cliFlags.applicationIndexOutFile
@@ -513,16 +553,7 @@ async function compileEnvironmentApplicationIndexes(_ref3) {
513
553
  }
514
554
  async function command$3(cliFlags, cwd) {
515
555
  var _context;
516
- let cloudEnvironmentsGroupedByBucketRegions;
517
- try {
518
- // This is the list of the supported cloud environments and their related bucket location.
519
- cloudEnvironmentsGroupedByBucketRegions = await storageBucketConfigExplorer.search();
520
- } catch (e) {
521
- throw new Error('Failed to load a storage bucket configuration. Create a cosmiconfig for `storage-buckets` for example `storage-buckets.config.cjs`.');
522
- }
523
- if (!cloudEnvironmentsGroupedByBucketRegions) {
524
- throw new Error('Failed loading a storage bucket configuration');
525
- }
556
+ const storageBucketConfig = await storageBucketsConfig.loadStorageBucketsConfig();
526
557
  const applicationDirectory = getApplicationDirectory(cwd);
527
558
  let assetsPath;
528
559
  if (cliFlags.ciAssetsRootPath && isCI()) {
@@ -537,28 +568,30 @@ async function command$3(cliFlags, cwd) {
537
568
  dotenvPath: cliFlags.dotenvFolder && path__default$1["default"].join(monorepoRoot.rootDir, cliFlags.dotenvFolder),
538
569
  assetsPath
539
570
  };
540
- const defaultStorageProviders = ['gs'];
541
- const taskList = new listr2.Listr(_mapInstanceProperty__default["default"](_context = _Object$entries__default["default"](cloudEnvironmentsGroupedByBucketRegions.config)).call(_context, _ref4 => {
571
+ const defaultStorageProviders = [storageBucketsConfig.storageProviders.gs.tag];
572
+ const taskList = new listr2.Listr(_mapInstanceProperty__default["default"](_context = _Object$entries__default["default"](storageBucketConfig)).call(_context, _ref4 => {
542
573
  let _ref5 = _slicedToArray(_ref4, 2),
543
574
  bucketRegion = _ref5[0],
544
575
  bucketEnvironmentConfigs = _ref5[1];
545
576
  return {
546
577
  title: `Compiling for bucket region ${bucketRegion}`,
547
578
  task: (_bucketRegionCtx, bucketRegionTask) => {
548
- var _context2;
549
579
  // NOTE: Application assets need to be compiled
550
580
  // for all storage providers once per region.
551
- const allStorageProvidersForBucketRegion = [...new _Set__default["default"](_flatInstanceProperty__default["default"](_context2 = _mapInstanceProperty__default["default"](bucketEnvironmentConfigs).call(bucketEnvironmentConfigs, bucketEnvironmentConfig => bucketEnvironmentConfig.storageProviders || defaultStorageProviders)).call(_context2))];
581
+ const allStorageProvidersForBucketRegion = [...new _Set__default["default"](_flatMapInstanceProperty__default["default"](bucketEnvironmentConfigs).call(bucketEnvironmentConfigs, bucketEnvironmentConfig => bucketEnvironmentConfig.storageProviders || defaultStorageProviders))];
552
582
  const allApplicationAssetTasks = _mapInstanceProperty__default["default"](allStorageProvidersForBucketRegion).call(allStorageProvidersForBucketRegion, storageProviderTag => {
553
- const storageProvider = getStorageProvider(storageProviderTag);
554
- const uploadScriptsGenerator = getUploadScriptsGenerator(storageProviderTag);
583
+ const uploadScriptsGeneratorConfig = {};
584
+ const storageProviderConfig = {
585
+ bucketRegion: bucketRegion
586
+ };
587
+ const storageProvider = getStorageProvider(storageProviderTag, storageProviderConfig);
588
+ const uploadScriptsGenerator = getUploadScriptsGenerator(storageProviderTag, uploadScriptsGeneratorConfig);
555
589
  return {
556
590
  title: `Compiling application assets for '${storageProviderTag}'`,
557
591
  task: () => compileApplicationAssets({
558
592
  cliFlags,
559
593
  storageProvider,
560
594
  uploadScriptsGenerator,
561
- bucketRegion: bucketRegion,
562
595
  paths
563
596
  })
564
597
  };
@@ -567,13 +600,17 @@ async function command$3(cliFlags, cwd) {
567
600
  const cloudEnvironment = bucketEnvironmentConfig.cloudEnvironment,
568
601
  bucketEnvironment = bucketEnvironmentConfig.bucketEnvironment,
569
602
  storageProviders = bucketEnvironmentConfig.storageProviders;
603
+ const storageProviderConfig = {
604
+ bucketRegion: bucketRegion,
605
+ bucketEnvironment
606
+ };
570
607
  return {
571
608
  title: `Compiling for cloud environment '${cloudEnvironment}'`,
572
609
  task: (_storageProviderCtx, storageProviderTask) => {
573
- var _context3;
574
- const applicationIndexTasksForStorageProviders = _mapInstanceProperty__default["default"](_context3 = storageProviders || defaultStorageProviders).call(_context3, storageProviderTag => {
575
- const storageProvider = getStorageProvider(storageProviderTag);
576
- const uploadScriptsGenerator = getUploadScriptsGenerator(storageProviderTag);
610
+ var _context2;
611
+ const applicationIndexTasksForStorageProviders = _mapInstanceProperty__default["default"](_context2 = storageProviders || defaultStorageProviders).call(_context2, storageProviderTag => {
612
+ const storageProvider = getStorageProvider(storageProviderTag, storageProviderConfig);
613
+ const uploadScriptsGenerator = getUploadScriptsGenerator(storageProviderTag, storageProviderConfig);
577
614
  return {
578
615
  title: `Compiling application index for storage provider '${storageProviderTag}'`,
579
616
  task: () => {
@@ -582,9 +619,7 @@ async function command$3(cliFlags, cwd) {
582
619
  storageProvider,
583
620
  uploadScriptsGenerator,
584
621
  paths,
585
- bucketRegion: bucketRegion,
586
- cloudEnvironment,
587
- bucketEnvironment
622
+ cloudEnvironment
588
623
  });
589
624
  }
590
625
  };
@@ -868,7 +903,7 @@ async function command(cliFlags) {
868
903
 
869
904
  var pkgJson = {
870
905
  name: "@commercetools-frontend/application-cli",
871
- version: "2.1.2",
906
+ version: "2.2.0",
872
907
  description: "Internal CLI to manage Merchant Center application deployments across various environments.",
873
908
  keywords: [
874
909
  "commercetools",
@@ -893,13 +928,13 @@ var pkgJson = {
893
928
  "@babel/core": "^7.22.11",
894
929
  "@babel/runtime-corejs3": "^7.21.0",
895
930
  "@babel/runtime": "^7.21.0",
896
- "@commercetools-frontend/application-config": "22.17.1",
897
- "@commercetools-frontend/constants": "22.17.1",
898
- "@commercetools-frontend/l10n": "22.17.1",
931
+ "@commercetools-frontend/application-config": "22.19.0",
932
+ "@commercetools-frontend/constants": "22.19.0",
933
+ "@commercetools-frontend/l10n": "22.19.0",
899
934
  "@manypkg/find-root": "2.2.1",
900
935
  cac: "^6.7.14",
901
936
  cosmiconfig: "9.0.0",
902
- dotenv: "16.4.1",
937
+ dotenv: "16.4.2",
903
938
  execa: "5.1.1",
904
939
  jsonschema: "^1.4.1",
905
940
  listr2: "8.0.2",
@@ -908,7 +943,7 @@ var pkgJson = {
908
943
  },
909
944
  devDependencies: {
910
945
  "@tsconfig/node20": "20.1.2",
911
- "@types/node": "20.11.5",
946
+ "@types/node": "20.11.25",
912
947
  typescript: "5.2.2"
913
948
  },
914
949
  engines: {