@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.
- package/cli/dist/commercetools-frontend-application-cli-cli.cjs.dev.js +125 -90
- package/cli/dist/commercetools-frontend-application-cli-cli.cjs.prod.js +125 -90
- package/cli/dist/commercetools-frontend-application-cli-cli.esm.js +124 -89
- package/dist/commercetools-frontend-application-cli.cjs.dev.js +3 -1
- package/dist/commercetools-frontend-application-cli.cjs.prod.js +3 -1
- package/dist/commercetools-frontend-application-cli.esm.js +2 -1
- package/dist/declarations/src/constants.d.ts +2 -0
- package/dist/declarations/src/storage-buckets-config.d.ts +3 -2
- package/dist/declarations/src/types.d.ts +16 -11
- package/dist/{storage-buckets-config-0b3808a3.cjs.prod.js → storage-buckets-config-06a6b7d2.cjs.prod.js} +33 -0
- package/dist/{storage-buckets-config-478b8585.cjs.dev.js → storage-buckets-config-30d0f671.cjs.dev.js} +33 -0
- package/dist/{storage-buckets-config-7845a091.esm.js → storage-buckets-config-7277eecb.esm.js} +32 -1
- package/package.json +6 -6
|
@@ -12,20 +12,23 @@ import _defineProperty from '@babel/runtime-corejs3/helpers/esm/defineProperty';
|
|
|
12
12
|
import _mapInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/map';
|
|
13
13
|
import _Object$entries from '@babel/runtime-corejs3/core-js-stable/object/entries';
|
|
14
14
|
import _Set from '@babel/runtime-corejs3/core-js-stable/set';
|
|
15
|
-
import
|
|
15
|
+
import _flatMapInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/flat-map';
|
|
16
|
+
import { s as storageProviders, l as loadStorageBucketsConfig, c as clusterContexts } from '../../dist/storage-buckets-config-7277eecb.esm.js';
|
|
16
17
|
import fs from 'node:fs';
|
|
17
18
|
import path$1 from 'node:path';
|
|
18
19
|
import { Listr } from 'listr2';
|
|
19
20
|
import execa from 'execa';
|
|
20
|
-
import { cosmiconfig } from 'cosmiconfig';
|
|
21
21
|
import { findRootSync } from '@manypkg/find-root';
|
|
22
22
|
import path from 'path';
|
|
23
23
|
import _possibleConstructorReturn from '@babel/runtime-corejs3/helpers/esm/possibleConstructorReturn';
|
|
24
|
+
import _assertThisInitialized from '@babel/runtime-corejs3/helpers/esm/assertThisInitialized';
|
|
24
25
|
import _get from '@babel/runtime-corejs3/helpers/esm/get';
|
|
25
26
|
import _getPrototypeOf from '@babel/runtime-corejs3/helpers/esm/getPrototypeOf';
|
|
26
27
|
import _inherits from '@babel/runtime-corejs3/helpers/esm/inherits';
|
|
27
28
|
import _classCallCheck from '@babel/runtime-corejs3/helpers/esm/classCallCheck';
|
|
28
29
|
import _createClass from '@babel/runtime-corejs3/helpers/esm/createClass';
|
|
30
|
+
import _classPrivateFieldLooseBase from '@babel/runtime-corejs3/helpers/esm/classPrivateFieldLooseBase';
|
|
31
|
+
import _classPrivateFieldLooseKey from '@babel/runtime-corejs3/helpers/esm/classPrivateFieldLooseKey';
|
|
29
32
|
import _Reflect$construct from '@babel/runtime-corejs3/core-js-stable/reflect/construct';
|
|
30
33
|
import fs$1 from 'fs';
|
|
31
34
|
import dotenv from 'dotenv';
|
|
@@ -33,9 +36,9 @@ import _findInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instanc
|
|
|
33
36
|
import _JSON$stringify from '@babel/runtime-corejs3/core-js-stable/json/stringify';
|
|
34
37
|
import { processConfig } from '@commercetools-frontend/application-config';
|
|
35
38
|
import { getSupportedLocales } from '@commercetools-frontend/l10n';
|
|
36
|
-
import { c as clusterContexts } from '../../dist/storage-buckets-config-7845a091.esm.js';
|
|
37
39
|
import _sliceInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/slice';
|
|
38
40
|
import { Validator } from 'jsonschema';
|
|
41
|
+
import 'cosmiconfig';
|
|
39
42
|
import 'ts-deepmerge';
|
|
40
43
|
|
|
41
44
|
function getApplicationDirectory(cwd) {
|
|
@@ -67,23 +70,34 @@ function _callSuper(_this, derived, args) {
|
|
|
67
70
|
derived = _getPrototypeOf(derived);
|
|
68
71
|
return _possibleConstructorReturn(_this, isNativeReflectConstruct() ? _Reflect$construct(derived, args || [], _getPrototypeOf(_this).constructor) : derived.apply(_this, args));
|
|
69
72
|
}
|
|
73
|
+
var _bucketRegion = /*#__PURE__*/_classPrivateFieldLooseKey("bucketRegion");
|
|
74
|
+
var _bucketEnvironment$1 = /*#__PURE__*/_classPrivateFieldLooseKey("bucketEnvironment");
|
|
70
75
|
let StorageProvider = /*#__PURE__*/function () {
|
|
71
|
-
function StorageProvider() {
|
|
76
|
+
function StorageProvider(config) {
|
|
72
77
|
_classCallCheck(this, StorageProvider);
|
|
78
|
+
_Object$defineProperty(this, _bucketRegion, {
|
|
79
|
+
writable: true,
|
|
80
|
+
value: void 0
|
|
81
|
+
});
|
|
82
|
+
_Object$defineProperty(this, _bucketEnvironment$1, {
|
|
83
|
+
writable: true,
|
|
84
|
+
value: void 0
|
|
85
|
+
});
|
|
86
|
+
_classPrivateFieldLooseBase(this, _bucketRegion)[_bucketRegion] = config.bucketRegion;
|
|
87
|
+
_classPrivateFieldLooseBase(this, _bucketEnvironment$1)[_bucketEnvironment$1] = config.bucketEnvironment;
|
|
73
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Construct the storage bucket URL for the specific application and cloud environment.
|
|
91
|
+
*
|
|
92
|
+
* 1. Static assets are uploaded to `:bucketRegion/:prNumber?/:applicationName`
|
|
93
|
+
* 2. The application index is uploaded to `:bucketRegion/:prNumber?/:applicationName/:cloudEnvironment`
|
|
94
|
+
*
|
|
95
|
+
* This allows all cloud environments sharing the same static assets while each application's index
|
|
96
|
+
* is uploaded with different headers (e.g. CSP rules).
|
|
97
|
+
*/
|
|
74
98
|
_createClass(StorageProvider, [{
|
|
75
99
|
key: "getBucketNamespace",
|
|
76
|
-
value:
|
|
77
|
-
/**
|
|
78
|
-
* Construct the storage bucket URL for the specific application and cloud environment.
|
|
79
|
-
*
|
|
80
|
-
* 1. Static assets are uploaded to `:bucketRegion/:prNumber?/:applicationName`
|
|
81
|
-
* 2. The application index is uploaded to `:bucketRegion/:prNumber?/:applicationName/:cloudEnvironment`
|
|
82
|
-
*
|
|
83
|
-
* This allows all cloud environments sharing the same static assets while each application's index
|
|
84
|
-
* is uploaded with different headers (e.g. CSP rules).
|
|
85
|
-
*/
|
|
86
|
-
function getBucketNamespace(prNumber) {
|
|
100
|
+
value: function getBucketNamespace(prNumber) {
|
|
87
101
|
if (!prNumber) return;
|
|
88
102
|
if (prNumber === 'merchant-center-preview') return prNumber;
|
|
89
103
|
return `mc-${prNumber}`;
|
|
@@ -96,56 +110,85 @@ let StorageProvider = /*#__PURE__*/function () {
|
|
|
96
110
|
key: "getAssetsBucketUrl",
|
|
97
111
|
value: function getAssetsBucketUrl(_ref) {
|
|
98
112
|
var _context;
|
|
99
|
-
let
|
|
100
|
-
|
|
101
|
-
bucketNamespace = _ref.bucketNamespace
|
|
102
|
-
|
|
103
|
-
const assetsBucketUrl = _filterInstanceProperty(_context = [bucketRegion, bucketNamespace, applicationName]).call(_context, Boolean).join('/');
|
|
113
|
+
let applicationName = _ref.applicationName,
|
|
114
|
+
bucketProtocol = _ref.bucketProtocol,
|
|
115
|
+
bucketNamespace = _ref.bucketNamespace;
|
|
116
|
+
const assetsBucketUrl = _filterInstanceProperty(_context = [_classPrivateFieldLooseBase(this, _bucketRegion)[_bucketRegion], bucketNamespace, applicationName]).call(_context, Boolean).join('/');
|
|
104
117
|
return `${bucketProtocol}${assetsBucketUrl}`;
|
|
105
118
|
}
|
|
106
119
|
}, {
|
|
107
120
|
key: "getApplicationIndexBucketUrl",
|
|
108
121
|
value: function getApplicationIndexBucketUrl(_ref2) {
|
|
109
|
-
let
|
|
110
|
-
bucketRegion = _ref2.bucketRegion,
|
|
111
|
-
bucketNamespace = _ref2.bucketNamespace,
|
|
112
|
-
prNumber = _ref2.prNumber,
|
|
122
|
+
let prNumber = _ref2.prNumber,
|
|
113
123
|
applicationName = _ref2.applicationName,
|
|
114
|
-
|
|
124
|
+
bucketProtocol = _ref2.bucketProtocol,
|
|
125
|
+
bucketNamespace = _ref2.bucketNamespace;
|
|
115
126
|
const applicationAssetsBucketUrl = this.getAssetsBucketUrl({
|
|
116
|
-
|
|
117
|
-
bucketRegion,
|
|
118
|
-
bucketNamespace,
|
|
127
|
+
applicationName,
|
|
119
128
|
prNumber,
|
|
120
|
-
|
|
129
|
+
bucketProtocol,
|
|
130
|
+
bucketNamespace
|
|
121
131
|
});
|
|
122
|
-
const applicationIndexBucketUrl = `${applicationAssetsBucketUrl}/${
|
|
132
|
+
const applicationIndexBucketUrl = `${applicationAssetsBucketUrl}/${_classPrivateFieldLooseBase(this, _bucketEnvironment$1)[_bucketEnvironment$1]}`;
|
|
123
133
|
return applicationIndexBucketUrl;
|
|
124
134
|
}
|
|
125
135
|
}, {
|
|
126
136
|
key: "getCdnUrl",
|
|
127
137
|
value: function getCdnUrl(_ref3) {
|
|
128
138
|
var _context2;
|
|
129
|
-
let
|
|
130
|
-
bucketRegion = _ref3.bucketRegion,
|
|
139
|
+
let applicationName = _ref3.applicationName,
|
|
131
140
|
prNumber = _ref3.prNumber,
|
|
132
|
-
|
|
133
|
-
return _filterInstanceProperty(_context2 = [publicBaseUrl,
|
|
141
|
+
publicBaseUrl = _ref3.publicBaseUrl;
|
|
142
|
+
return _filterInstanceProperty(_context2 = [publicBaseUrl, _classPrivateFieldLooseBase(this, _bucketRegion)[_bucketRegion], this.getBucketNamespace(prNumber), applicationName]).call(_context2, Boolean).join('/');
|
|
143
|
+
}
|
|
144
|
+
}, {
|
|
145
|
+
key: "getPublicBaseUrl",
|
|
146
|
+
value: function getPublicBaseUrl(tag) {
|
|
147
|
+
if (!_classPrivateFieldLooseBase(this, _bucketEnvironment$1)[_bucketEnvironment$1]) {
|
|
148
|
+
throw new Error("'bucketEnvironment is not defined. Required to determine 'publicBaseUrl'.");
|
|
149
|
+
}
|
|
150
|
+
const storageProvider = storageProviders[tag];
|
|
151
|
+
const publicBaseUrl = storageProvider.urls[_classPrivateFieldLooseBase(this, _bucketEnvironment$1)[_bucketEnvironment$1]] ?? storageProvider.urls.default;
|
|
152
|
+
return publicBaseUrl;
|
|
134
153
|
}
|
|
135
154
|
}]);
|
|
136
155
|
return StorageProvider;
|
|
137
156
|
}();
|
|
157
|
+
var _bucketRegion2 = /*#__PURE__*/_classPrivateFieldLooseKey("bucketRegion");
|
|
158
|
+
var _bucketEnvironment2 = /*#__PURE__*/_classPrivateFieldLooseKey("bucketEnvironment");
|
|
138
159
|
let GoogleStorageProvider = /*#__PURE__*/function (_StorageProvider) {
|
|
139
160
|
_inherits(GoogleStorageProvider, _StorageProvider);
|
|
140
|
-
function GoogleStorageProvider() {
|
|
161
|
+
function GoogleStorageProvider(config) {
|
|
162
|
+
var _this;
|
|
141
163
|
_classCallCheck(this, GoogleStorageProvider);
|
|
142
|
-
|
|
164
|
+
_this = _callSuper(this, GoogleStorageProvider, [config]);
|
|
165
|
+
_Object$defineProperty(_assertThisInitialized(_this), _bucketRegion2, {
|
|
166
|
+
writable: true,
|
|
167
|
+
value: void 0
|
|
168
|
+
});
|
|
169
|
+
_Object$defineProperty(_assertThisInitialized(_this), _bucketEnvironment2, {
|
|
170
|
+
writable: true,
|
|
171
|
+
value: void 0
|
|
172
|
+
});
|
|
173
|
+
_classPrivateFieldLooseBase(_assertThisInitialized(_this), _bucketRegion2)[_bucketRegion2] = config.bucketRegion;
|
|
174
|
+
_classPrivateFieldLooseBase(_assertThisInitialized(_this), _bucketEnvironment2)[_bucketEnvironment2] = config.bucketEnvironment;
|
|
175
|
+
return _this;
|
|
143
176
|
}
|
|
144
177
|
_createClass(GoogleStorageProvider, [{
|
|
145
178
|
key: "getTag",
|
|
146
179
|
value: function getTag() {
|
|
147
180
|
return 'gs';
|
|
148
181
|
}
|
|
182
|
+
}, {
|
|
183
|
+
key: "getBucketRegion",
|
|
184
|
+
value: function getBucketRegion() {
|
|
185
|
+
return _classPrivateFieldLooseBase(this, _bucketRegion2)[_bucketRegion2];
|
|
186
|
+
}
|
|
187
|
+
}, {
|
|
188
|
+
key: "getBucketEnvironment",
|
|
189
|
+
value: function getBucketEnvironment() {
|
|
190
|
+
return _classPrivateFieldLooseBase(this, _bucketEnvironment2)[_bucketEnvironment2];
|
|
191
|
+
}
|
|
149
192
|
}, {
|
|
150
193
|
key: "getProtocol",
|
|
151
194
|
value: function getProtocol() {
|
|
@@ -154,7 +197,7 @@ let GoogleStorageProvider = /*#__PURE__*/function (_StorageProvider) {
|
|
|
154
197
|
}, {
|
|
155
198
|
key: "getPublicBaseUrl",
|
|
156
199
|
value: function getPublicBaseUrl() {
|
|
157
|
-
return
|
|
200
|
+
return _get(_getPrototypeOf(GoogleStorageProvider.prototype), "getPublicBaseUrl", this).call(this, this.getTag());
|
|
158
201
|
}
|
|
159
202
|
}, {
|
|
160
203
|
key: "getCdnUrl",
|
|
@@ -182,18 +225,24 @@ let GoogleStorageProvider = /*#__PURE__*/function (_StorageProvider) {
|
|
|
182
225
|
}]);
|
|
183
226
|
return GoogleStorageProvider;
|
|
184
227
|
}(StorageProvider); // TODO: to be implemented.
|
|
185
|
-
function getStorageProvider(storageProvider) {
|
|
228
|
+
function getStorageProvider(storageProvider, config) {
|
|
186
229
|
switch (storageProvider) {
|
|
187
230
|
case 'gs':
|
|
188
|
-
return new GoogleStorageProvider();
|
|
231
|
+
return new GoogleStorageProvider(config);
|
|
189
232
|
default:
|
|
190
233
|
throw new Error(`Storage provider ${storageProvider} not supported`);
|
|
191
234
|
}
|
|
192
235
|
}
|
|
193
236
|
|
|
237
|
+
var _bucketEnvironment = /*#__PURE__*/_classPrivateFieldLooseKey("bucketEnvironment");
|
|
194
238
|
let GoogleStorageUploadScriptsGenerator = /*#__PURE__*/function () {
|
|
195
|
-
function GoogleStorageUploadScriptsGenerator() {
|
|
239
|
+
function GoogleStorageUploadScriptsGenerator(config) {
|
|
196
240
|
_classCallCheck(this, GoogleStorageUploadScriptsGenerator);
|
|
241
|
+
_Object$defineProperty(this, _bucketEnvironment, {
|
|
242
|
+
writable: true,
|
|
243
|
+
value: void 0
|
|
244
|
+
});
|
|
245
|
+
_classPrivateFieldLooseBase(this, _bucketEnvironment)[_bucketEnvironment] = config.bucketEnvironment;
|
|
197
246
|
}
|
|
198
247
|
_createClass(GoogleStorageUploadScriptsGenerator, [{
|
|
199
248
|
key: "getApplicationIndexUploadScript",
|
|
@@ -201,10 +250,12 @@ let GoogleStorageUploadScriptsGenerator = /*#__PURE__*/function () {
|
|
|
201
250
|
let packageManagerName = _ref.packageManagerName,
|
|
202
251
|
bucketUrl = _ref.bucketUrl,
|
|
203
252
|
cdnUrl = _ref.cdnUrl,
|
|
204
|
-
bucketEnvironment = _ref.bucketEnvironment,
|
|
205
253
|
buildRevision = _ref.buildRevision,
|
|
206
254
|
buildNumber = _ref.buildNumber,
|
|
207
255
|
applicationIndexOutFile = _ref.applicationIndexOutFile;
|
|
256
|
+
if (!_classPrivateFieldLooseBase(this, _bucketEnvironment)[_bucketEnvironment]) {
|
|
257
|
+
throw new Error("Missing 'bucketEnvironment' when generating application index.");
|
|
258
|
+
}
|
|
208
259
|
return `
|
|
209
260
|
#!/usr/bin/env bash
|
|
210
261
|
|
|
@@ -222,7 +273,7 @@ gcloud storage cp \\
|
|
|
222
273
|
echo "Creating version.json and uploading it to bucket ${bucketUrl}"
|
|
223
274
|
|
|
224
275
|
NODE_ENV=production ${packageManagerName} application-cli create-version \\
|
|
225
|
-
--version-url=${cdnUrl}/${
|
|
276
|
+
--version-url=${cdnUrl}/${_classPrivateFieldLooseBase(this, _bucketEnvironment)[_bucketEnvironment]}/version.json \\
|
|
226
277
|
--build-revision=${buildRevision} \\
|
|
227
278
|
--build-number=${buildNumber} \\
|
|
228
279
|
--out-file=$(dirname "$0")/version.json
|
|
@@ -309,10 +360,10 @@ fi
|
|
|
309
360
|
}]);
|
|
310
361
|
return GoogleStorageUploadScriptsGenerator;
|
|
311
362
|
}(); // TODO: To be implemented.
|
|
312
|
-
function getUploadScriptsGenerator(storageProvider) {
|
|
363
|
+
function getUploadScriptsGenerator(storageProvider, config) {
|
|
313
364
|
switch (storageProvider) {
|
|
314
365
|
case 'gs':
|
|
315
|
-
return new GoogleStorageUploadScriptsGenerator();
|
|
366
|
+
return new GoogleStorageUploadScriptsGenerator(config);
|
|
316
367
|
default:
|
|
317
368
|
throw new Error(`Storage provider ${storageProvider} not supported`);
|
|
318
369
|
}
|
|
@@ -356,10 +407,7 @@ function loadDotenvFiles(_ref) {
|
|
|
356
407
|
}
|
|
357
408
|
|
|
358
409
|
function ownKeys$2(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
359
|
-
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
360
|
-
const storageBucketConfigExplorer = cosmiconfig('storage-buckets', {
|
|
361
|
-
searchStrategy: 'project'
|
|
362
|
-
});
|
|
410
|
+
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(_context3 = ownKeys$2(Object(t), !0)).call(_context3, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context4 = ownKeys$2(Object(t))).call(_context4, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
363
411
|
function writeUploadScriptFile(_ref) {
|
|
364
412
|
let fileName = _ref.fileName,
|
|
365
413
|
fileContent = _ref.fileContent,
|
|
@@ -374,12 +422,10 @@ async function compileApplicationAssets(_ref2) {
|
|
|
374
422
|
let cliFlags = _ref2.cliFlags,
|
|
375
423
|
storageProvider = _ref2.storageProvider,
|
|
376
424
|
uploadScriptsGenerator = _ref2.uploadScriptsGenerator,
|
|
377
|
-
bucketRegion = _ref2.bucketRegion,
|
|
378
425
|
paths = _ref2.paths;
|
|
379
426
|
const applicationAssetsUploadScriptContent = uploadScriptsGenerator.getProductionBundlesUploadScript({
|
|
380
427
|
storageProvider,
|
|
381
428
|
bucketUrl: storageProvider.getAssetsBucketUrl({
|
|
382
|
-
bucketRegion,
|
|
383
429
|
prNumber: cliFlags.prNumber,
|
|
384
430
|
applicationName: cliFlags.applicationName
|
|
385
431
|
}),
|
|
@@ -387,7 +433,7 @@ async function compileApplicationAssets(_ref2) {
|
|
|
387
433
|
skipMenu: cliFlags.skipMenu
|
|
388
434
|
});
|
|
389
435
|
const parsedApplicationAssetsUploadScriptFile = path$1.parse(cliFlags.applicationAssetsUploadScriptOutFile);
|
|
390
|
-
const applicationAssetsUploadScriptFileName = `${parsedApplicationAssetsUploadScriptFile.name}-${
|
|
436
|
+
const applicationAssetsUploadScriptFileName = `${parsedApplicationAssetsUploadScriptFile.name}-${storageProvider.getBucketRegion()}${parsedApplicationAssetsUploadScriptFile.ext}`;
|
|
391
437
|
writeUploadScriptFile({
|
|
392
438
|
fileName: applicationAssetsUploadScriptFileName,
|
|
393
439
|
fileContent: applicationAssetsUploadScriptContent,
|
|
@@ -399,9 +445,7 @@ async function compileEnvironmentApplicationIndexes(_ref3) {
|
|
|
399
445
|
storageProvider = _ref3.storageProvider,
|
|
400
446
|
uploadScriptsGenerator = _ref3.uploadScriptsGenerator,
|
|
401
447
|
paths = _ref3.paths,
|
|
402
|
-
|
|
403
|
-
cloudEnvironment = _ref3.cloudEnvironment,
|
|
404
|
-
bucketEnvironment = _ref3.bucketEnvironment;
|
|
448
|
+
cloudEnvironment = _ref3.cloudEnvironment;
|
|
405
449
|
const cloudEnvironmentDeploymentPath = path$1.join(paths.deploymentsPath, storageProvider.getTag(), cloudEnvironment);
|
|
406
450
|
// Ensure the folder exists
|
|
407
451
|
const createDeploymentsFolderResult = await execa('mkdir', ['-p', cloudEnvironmentDeploymentPath], {
|
|
@@ -413,7 +457,6 @@ async function compileEnvironmentApplicationIndexes(_ref3) {
|
|
|
413
457
|
|
|
414
458
|
// Construct the proper CDN URL for the specific application
|
|
415
459
|
const cdnUrl = storageProvider.getCdnUrl({
|
|
416
|
-
bucketRegion,
|
|
417
460
|
prNumber: cliFlags.prNumber,
|
|
418
461
|
applicationName: cliFlags.applicationName
|
|
419
462
|
});
|
|
@@ -459,13 +502,10 @@ async function compileEnvironmentApplicationIndexes(_ref3) {
|
|
|
459
502
|
storageProvider,
|
|
460
503
|
packageManagerName: cliFlags.packageManagerName,
|
|
461
504
|
bucketUrl: storageProvider.getApplicationIndexBucketUrl({
|
|
462
|
-
bucketRegion,
|
|
463
505
|
prNumber: cliFlags.prNumber,
|
|
464
|
-
applicationName: cliFlags.applicationName
|
|
465
|
-
bucketEnvironment
|
|
506
|
+
applicationName: cliFlags.applicationName
|
|
466
507
|
}),
|
|
467
508
|
cdnUrl,
|
|
468
|
-
bucketEnvironment,
|
|
469
509
|
buildRevision: cliFlags.buildRevision,
|
|
470
510
|
buildNumber: cliFlags.buildNumber,
|
|
471
511
|
applicationIndexOutFile: cliFlags.applicationIndexOutFile
|
|
@@ -484,16 +524,7 @@ async function compileEnvironmentApplicationIndexes(_ref3) {
|
|
|
484
524
|
}
|
|
485
525
|
async function command$3(cliFlags, cwd) {
|
|
486
526
|
var _context;
|
|
487
|
-
|
|
488
|
-
try {
|
|
489
|
-
// This is the list of the supported cloud environments and their related bucket location.
|
|
490
|
-
cloudEnvironmentsGroupedByBucketRegions = await storageBucketConfigExplorer.search();
|
|
491
|
-
} catch (e) {
|
|
492
|
-
throw new Error('Failed to load a storage bucket configuration. Create a cosmiconfig for `storage-buckets` for example `storage-buckets.config.cjs`.');
|
|
493
|
-
}
|
|
494
|
-
if (!cloudEnvironmentsGroupedByBucketRegions) {
|
|
495
|
-
throw new Error('Failed loading a storage bucket configuration');
|
|
496
|
-
}
|
|
527
|
+
const storageBucketConfig = await loadStorageBucketsConfig();
|
|
497
528
|
const applicationDirectory = getApplicationDirectory(cwd);
|
|
498
529
|
let assetsPath;
|
|
499
530
|
if (cliFlags.ciAssetsRootPath && isCI()) {
|
|
@@ -508,28 +539,30 @@ async function command$3(cliFlags, cwd) {
|
|
|
508
539
|
dotenvPath: cliFlags.dotenvFolder && path$1.join(monorepoRoot.rootDir, cliFlags.dotenvFolder),
|
|
509
540
|
assetsPath
|
|
510
541
|
};
|
|
511
|
-
const defaultStorageProviders = [
|
|
512
|
-
const taskList = new Listr(_mapInstanceProperty(_context = _Object$entries(
|
|
542
|
+
const defaultStorageProviders = [storageProviders.gs.tag];
|
|
543
|
+
const taskList = new Listr(_mapInstanceProperty(_context = _Object$entries(storageBucketConfig)).call(_context, _ref4 => {
|
|
513
544
|
let _ref5 = _slicedToArray(_ref4, 2),
|
|
514
545
|
bucketRegion = _ref5[0],
|
|
515
546
|
bucketEnvironmentConfigs = _ref5[1];
|
|
516
547
|
return {
|
|
517
548
|
title: `Compiling for bucket region ${bucketRegion}`,
|
|
518
549
|
task: (_bucketRegionCtx, bucketRegionTask) => {
|
|
519
|
-
var _context2;
|
|
520
550
|
// NOTE: Application assets need to be compiled
|
|
521
551
|
// for all storage providers once per region.
|
|
522
|
-
const allStorageProvidersForBucketRegion = [...new _Set(
|
|
552
|
+
const allStorageProvidersForBucketRegion = [...new _Set(_flatMapInstanceProperty(bucketEnvironmentConfigs).call(bucketEnvironmentConfigs, bucketEnvironmentConfig => bucketEnvironmentConfig.storageProviders || defaultStorageProviders))];
|
|
523
553
|
const allApplicationAssetTasks = _mapInstanceProperty(allStorageProvidersForBucketRegion).call(allStorageProvidersForBucketRegion, storageProviderTag => {
|
|
524
|
-
const
|
|
525
|
-
const
|
|
554
|
+
const uploadScriptsGeneratorConfig = {};
|
|
555
|
+
const storageProviderConfig = {
|
|
556
|
+
bucketRegion: bucketRegion
|
|
557
|
+
};
|
|
558
|
+
const storageProvider = getStorageProvider(storageProviderTag, storageProviderConfig);
|
|
559
|
+
const uploadScriptsGenerator = getUploadScriptsGenerator(storageProviderTag, uploadScriptsGeneratorConfig);
|
|
526
560
|
return {
|
|
527
561
|
title: `Compiling application assets for '${storageProviderTag}'`,
|
|
528
562
|
task: () => compileApplicationAssets({
|
|
529
563
|
cliFlags,
|
|
530
564
|
storageProvider,
|
|
531
565
|
uploadScriptsGenerator,
|
|
532
|
-
bucketRegion: bucketRegion,
|
|
533
566
|
paths
|
|
534
567
|
})
|
|
535
568
|
};
|
|
@@ -538,13 +571,17 @@ async function command$3(cliFlags, cwd) {
|
|
|
538
571
|
const cloudEnvironment = bucketEnvironmentConfig.cloudEnvironment,
|
|
539
572
|
bucketEnvironment = bucketEnvironmentConfig.bucketEnvironment,
|
|
540
573
|
storageProviders = bucketEnvironmentConfig.storageProviders;
|
|
574
|
+
const storageProviderConfig = {
|
|
575
|
+
bucketRegion: bucketRegion,
|
|
576
|
+
bucketEnvironment
|
|
577
|
+
};
|
|
541
578
|
return {
|
|
542
579
|
title: `Compiling for cloud environment '${cloudEnvironment}'`,
|
|
543
580
|
task: (_storageProviderCtx, storageProviderTask) => {
|
|
544
|
-
var
|
|
545
|
-
const applicationIndexTasksForStorageProviders = _mapInstanceProperty(
|
|
546
|
-
const storageProvider = getStorageProvider(storageProviderTag);
|
|
547
|
-
const uploadScriptsGenerator = getUploadScriptsGenerator(storageProviderTag);
|
|
581
|
+
var _context2;
|
|
582
|
+
const applicationIndexTasksForStorageProviders = _mapInstanceProperty(_context2 = storageProviders || defaultStorageProviders).call(_context2, storageProviderTag => {
|
|
583
|
+
const storageProvider = getStorageProvider(storageProviderTag, storageProviderConfig);
|
|
584
|
+
const uploadScriptsGenerator = getUploadScriptsGenerator(storageProviderTag, storageProviderConfig);
|
|
548
585
|
return {
|
|
549
586
|
title: `Compiling application index for storage provider '${storageProviderTag}'`,
|
|
550
587
|
task: () => {
|
|
@@ -553,9 +590,7 @@ async function command$3(cliFlags, cwd) {
|
|
|
553
590
|
storageProvider,
|
|
554
591
|
uploadScriptsGenerator,
|
|
555
592
|
paths,
|
|
556
|
-
|
|
557
|
-
cloudEnvironment,
|
|
558
|
-
bucketEnvironment
|
|
593
|
+
cloudEnvironment
|
|
559
594
|
});
|
|
560
595
|
}
|
|
561
596
|
};
|
|
@@ -839,7 +874,7 @@ async function command(cliFlags) {
|
|
|
839
874
|
|
|
840
875
|
var pkgJson = {
|
|
841
876
|
name: "@commercetools-frontend/application-cli",
|
|
842
|
-
version: "2.
|
|
877
|
+
version: "2.2.0",
|
|
843
878
|
description: "Internal CLI to manage Merchant Center application deployments across various environments.",
|
|
844
879
|
keywords: [
|
|
845
880
|
"commercetools",
|
|
@@ -864,13 +899,13 @@ var pkgJson = {
|
|
|
864
899
|
"@babel/core": "^7.22.11",
|
|
865
900
|
"@babel/runtime-corejs3": "^7.21.0",
|
|
866
901
|
"@babel/runtime": "^7.21.0",
|
|
867
|
-
"@commercetools-frontend/application-config": "22.
|
|
868
|
-
"@commercetools-frontend/constants": "22.
|
|
869
|
-
"@commercetools-frontend/l10n": "22.
|
|
902
|
+
"@commercetools-frontend/application-config": "22.19.0",
|
|
903
|
+
"@commercetools-frontend/constants": "22.19.0",
|
|
904
|
+
"@commercetools-frontend/l10n": "22.19.0",
|
|
870
905
|
"@manypkg/find-root": "2.2.1",
|
|
871
906
|
cac: "^6.7.14",
|
|
872
907
|
cosmiconfig: "9.0.0",
|
|
873
|
-
dotenv: "16.4.
|
|
908
|
+
dotenv: "16.4.2",
|
|
874
909
|
execa: "5.1.1",
|
|
875
910
|
jsonschema: "^1.4.1",
|
|
876
911
|
listr2: "8.0.2",
|
|
@@ -879,7 +914,7 @@ var pkgJson = {
|
|
|
879
914
|
},
|
|
880
915
|
devDependencies: {
|
|
881
916
|
"@tsconfig/node20": "20.1.2",
|
|
882
|
-
"@types/node": "20.11.
|
|
917
|
+
"@types/node": "20.11.25",
|
|
883
918
|
typescript: "5.2.2"
|
|
884
919
|
},
|
|
885
920
|
engines: {
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var storageBucketsConfig = require('./storage-buckets-config-
|
|
5
|
+
var storageBucketsConfig = require('./storage-buckets-config-30d0f671.cjs.dev.js');
|
|
6
6
|
require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
|
|
7
7
|
require('@babel/runtime-corejs3/core-js-stable/object/keys');
|
|
8
|
+
require('cosmiconfig');
|
|
8
9
|
require('ts-deepmerge');
|
|
9
10
|
|
|
10
11
|
|
|
@@ -13,3 +14,4 @@ exports.bucketEnvironments = storageBucketsConfig.bucketEnvironments;
|
|
|
13
14
|
exports.bucketRegions = storageBucketsConfig.bucketRegions;
|
|
14
15
|
exports.clusterContexts = storageBucketsConfig.clusterContexts;
|
|
15
16
|
exports.defineStorageBucketsConfig = storageBucketsConfig.defineStorageBucketsConfig;
|
|
17
|
+
exports.storageProviders = storageBucketsConfig.storageProviders;
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var storageBucketsConfig = require('./storage-buckets-config-
|
|
5
|
+
var storageBucketsConfig = require('./storage-buckets-config-06a6b7d2.cjs.prod.js');
|
|
6
6
|
require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
|
|
7
7
|
require('@babel/runtime-corejs3/core-js-stable/object/keys');
|
|
8
|
+
require('cosmiconfig');
|
|
8
9
|
require('ts-deepmerge');
|
|
9
10
|
|
|
10
11
|
|
|
@@ -13,3 +14,4 @@ exports.bucketEnvironments = storageBucketsConfig.bucketEnvironments;
|
|
|
13
14
|
exports.bucketRegions = storageBucketsConfig.bucketRegions;
|
|
14
15
|
exports.clusterContexts = storageBucketsConfig.clusterContexts;
|
|
15
16
|
exports.defineStorageBucketsConfig = storageBucketsConfig.defineStorageBucketsConfig;
|
|
17
|
+
exports.storageProviders = storageBucketsConfig.storageProviders;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { b as bucketEnvironments, a as bucketRegions, c as clusterContexts, d as defineStorageBucketsConfig } from './storage-buckets-config-
|
|
1
|
+
export { b as bucketEnvironments, a as bucketRegions, c as clusterContexts, d as defineStorageBucketsConfig, s as storageProviders } from './storage-buckets-config-7277eecb.esm.js';
|
|
2
2
|
import '@babel/runtime-corejs3/core-js-stable/instance/for-each';
|
|
3
3
|
import '@babel/runtime-corejs3/core-js-stable/object/keys';
|
|
4
|
+
import 'cosmiconfig';
|
|
4
5
|
import 'ts-deepmerge';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TStorageProviderTag, TStorageProvider } from "./types.js";
|
|
1
2
|
export declare const clusterContexts: {
|
|
2
3
|
readonly 'ctp_staging_gcp_europe-west1_v1': "ctp_staging_gcp_europe-west1_v1";
|
|
3
4
|
readonly 'vw_staging_aws_eu-central-1_v1': "vw_staging_aws_eu-central-1_v1";
|
|
@@ -32,3 +33,4 @@ export declare const bucketRegions: {
|
|
|
32
33
|
readonly northAmerica: "merchant-center-north-america";
|
|
33
34
|
readonly asia: "merchant-center-asia";
|
|
34
35
|
};
|
|
36
|
+
export declare const storageProviders: Record<TStorageProviderTag, TStorageProvider>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TBucketRegion, TCloudEnvironment,
|
|
1
|
+
import type { TBucketRegion, TCloudEnvironment, TStorageBucketsConfig } from "./types.js";
|
|
2
2
|
type TConfigOptions = {
|
|
3
3
|
disabledBucketRegions?: TBucketRegion[];
|
|
4
4
|
disabledEnvironments?: TCloudEnvironment[];
|
|
@@ -8,4 +8,5 @@ type TDefineConfigArgs = {
|
|
|
8
8
|
options?: TConfigOptions;
|
|
9
9
|
};
|
|
10
10
|
declare function defineStorageBucketsConfig({ regions, options, }?: TDefineConfigArgs): TStorageBucketsConfig;
|
|
11
|
-
|
|
11
|
+
declare function loadStorageBucketsConfig(): Promise<TStorageBucketsConfig>;
|
|
12
|
+
export { defineStorageBucketsConfig, loadStorageBucketsConfig };
|
|
@@ -3,16 +3,10 @@ export type TCloudEnvironment = (typeof clusterContexts)[keyof typeof clusterCon
|
|
|
3
3
|
export type TBucketEnvironment = (typeof bucketEnvironments)[keyof typeof bucketEnvironments];
|
|
4
4
|
export type TBucketRegion = (typeof bucketRegions)[keyof typeof bucketRegions];
|
|
5
5
|
export type TApplicationAssetsBucketConfig = {
|
|
6
|
-
bucketRegion: TBucketRegion;
|
|
7
6
|
prNumber?: string;
|
|
8
7
|
applicationName: string;
|
|
9
8
|
};
|
|
10
|
-
export type TApplicationIndexBucketConfig =
|
|
11
|
-
bucketRegion: TBucketRegion;
|
|
12
|
-
prNumber?: string;
|
|
13
|
-
applicationName: string;
|
|
14
|
-
bucketEnvironment: TBucketEnvironment;
|
|
15
|
-
};
|
|
9
|
+
export type TApplicationIndexBucketConfig = TApplicationAssetsBucketConfig;
|
|
16
10
|
export type TUploadScriptFile = {
|
|
17
11
|
fileName: string;
|
|
18
12
|
fileContent: string;
|
|
@@ -25,14 +19,29 @@ type TPaths = {
|
|
|
25
19
|
assetsPath: string;
|
|
26
20
|
};
|
|
27
21
|
export type TStorageProviderTag = 'gs' | 's3';
|
|
22
|
+
export type TStorageProvider = {
|
|
23
|
+
tag: TStorageProviderTag;
|
|
24
|
+
urls: {
|
|
25
|
+
default: string;
|
|
26
|
+
} & Partial<Record<TBucketEnvironment, string>>;
|
|
27
|
+
};
|
|
28
|
+
export type TStorageProviderConfig = {
|
|
29
|
+
bucketRegion?: TBucketRegion;
|
|
30
|
+
bucketEnvironment?: TBucketEnvironment;
|
|
31
|
+
};
|
|
28
32
|
export interface IStorageProvider {
|
|
29
33
|
getTag(): TStorageProviderTag;
|
|
34
|
+
getBucketRegion(): TBucketRegion | undefined;
|
|
35
|
+
getBucketEnvironment(): TBucketEnvironment | undefined;
|
|
30
36
|
getProtocol(): string;
|
|
31
37
|
getPublicBaseUrl(): string;
|
|
32
38
|
getCdnUrl(config: TApplicationAssetsBucketConfig): string;
|
|
33
39
|
getAssetsBucketUrl(config: TApplicationAssetsBucketConfig): string;
|
|
34
40
|
getApplicationIndexBucketUrl(config: TApplicationIndexBucketConfig): string;
|
|
35
41
|
}
|
|
42
|
+
export type TUploadScriptsGeneratorConfig = {
|
|
43
|
+
bucketEnvironment?: TBucketEnvironment;
|
|
44
|
+
};
|
|
36
45
|
export interface IUploadScriptsGenerator {
|
|
37
46
|
getProductionBundlesUploadScript(config: TCreateApplicationAssetsUploadScript): string;
|
|
38
47
|
getApplicationIndexUploadScript(config: TCreateApplicationIndexUploadScript): string;
|
|
@@ -42,16 +51,13 @@ export type TCompileEnvApplicationIndexes = {
|
|
|
42
51
|
storageProvider: IStorageProvider;
|
|
43
52
|
uploadScriptsGenerator: IUploadScriptsGenerator;
|
|
44
53
|
paths: TPaths;
|
|
45
|
-
bucketRegion: TBucketRegion;
|
|
46
54
|
cloudEnvironment: TCloudEnvironment;
|
|
47
|
-
bucketEnvironment: TBucketEnvironment;
|
|
48
55
|
};
|
|
49
56
|
export type TCompileApplicationAssets = {
|
|
50
57
|
cliFlags: TCompileDeploymentsFlags;
|
|
51
58
|
storageProvider: IStorageProvider;
|
|
52
59
|
uploadScriptsGenerator: IUploadScriptsGenerator;
|
|
53
60
|
paths: TPaths;
|
|
54
|
-
bucketRegion: TBucketRegion;
|
|
55
61
|
};
|
|
56
62
|
export type TBucketEnvironmentConfig = {
|
|
57
63
|
cloudEnvironment: TCloudEnvironment;
|
|
@@ -67,7 +73,6 @@ export type TCreateApplicationIndexUploadScript = {
|
|
|
67
73
|
storageProvider: IStorageProvider;
|
|
68
74
|
bucketUrl: string;
|
|
69
75
|
cdnUrl: string;
|
|
70
|
-
bucketEnvironment: TBucketEnvironment;
|
|
71
76
|
buildRevision: string;
|
|
72
77
|
buildNumber: number;
|
|
73
78
|
applicationIndexOutFile: string;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
|
|
4
4
|
var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
|
|
5
|
+
var cosmiconfig = require('cosmiconfig');
|
|
5
6
|
var tsDeepmerge = require('ts-deepmerge');
|
|
6
7
|
|
|
7
8
|
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
@@ -43,6 +44,20 @@ const bucketRegions = {
|
|
|
43
44
|
northAmerica: 'merchant-center-north-america',
|
|
44
45
|
asia: 'merchant-center-asia'
|
|
45
46
|
};
|
|
47
|
+
const storageProviders = {
|
|
48
|
+
gs: {
|
|
49
|
+
tag: 'gs',
|
|
50
|
+
urls: {
|
|
51
|
+
default: 'https://storage.googleapis.com'
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
s3: {
|
|
55
|
+
tag: 's3',
|
|
56
|
+
urls: {
|
|
57
|
+
default: 'https://s3.amazonaws.com'
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
};
|
|
46
61
|
|
|
47
62
|
const defaultConfig = {
|
|
48
63
|
[bucketRegions.previews]: [{
|
|
@@ -104,8 +119,26 @@ function defineStorageBucketsConfig() {
|
|
|
104
119
|
});
|
|
105
120
|
return actualConfig;
|
|
106
121
|
}
|
|
122
|
+
async function loadStorageBucketsConfig() {
|
|
123
|
+
let explorerResult;
|
|
124
|
+
const storageBucketConfigExplorer = cosmiconfig.cosmiconfig('storage-buckets', {
|
|
125
|
+
searchStrategy: 'project'
|
|
126
|
+
});
|
|
127
|
+
try {
|
|
128
|
+
// This is the list of the supported cloud environments and their related bucket location.
|
|
129
|
+
explorerResult = await storageBucketConfigExplorer.search();
|
|
130
|
+
} catch (e) {
|
|
131
|
+
throw new Error('Failed to load a storage bucket configuration. Create a cosmiconfig for `storage-buckets` for example `storage-buckets.config.cjs`.');
|
|
132
|
+
}
|
|
133
|
+
if (!explorerResult) {
|
|
134
|
+
throw new Error('Failed loading a storage bucket configuration');
|
|
135
|
+
}
|
|
136
|
+
return explorerResult?.config;
|
|
137
|
+
}
|
|
107
138
|
|
|
108
139
|
exports.bucketEnvironments = bucketEnvironments;
|
|
109
140
|
exports.bucketRegions = bucketRegions;
|
|
110
141
|
exports.clusterContexts = clusterContexts;
|
|
111
142
|
exports.defineStorageBucketsConfig = defineStorageBucketsConfig;
|
|
143
|
+
exports.loadStorageBucketsConfig = loadStorageBucketsConfig;
|
|
144
|
+
exports.storageProviders = storageProviders;
|