@commercetools-frontend/application-cli 2.1.1 → 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 +138 -92
- package/cli/dist/commercetools-frontend-application-cli-cli.cjs.prod.js +138 -92
- package/cli/dist/commercetools-frontend-application-cli-cli.esm.js +137 -91
- 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 +7 -7
|
@@ -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
|
|
@@ -258,12 +309,23 @@ set -e
|
|
|
258
309
|
echo "Uploading static assets to Google Storage bucket ${bucketUrl}"
|
|
259
310
|
|
|
260
311
|
gcloud storage cp \\
|
|
261
|
-
${assetsPath}/public/{*.css,*.js,*.js.map,*.
|
|
312
|
+
${assetsPath}/public/{*.css,*.js,*.js.map,*.html} \\
|
|
262
313
|
"${bucketUrl}" \\
|
|
263
314
|
-n \\
|
|
264
315
|
-z js,css \\
|
|
265
316
|
--cache-control="public,max-age=31536000,no-transform"
|
|
266
317
|
|
|
318
|
+
# We need to upload the PNG and HTML files separately because we want them
|
|
319
|
+
# to be able to overwrite the existing files (if any). For instance, the
|
|
320
|
+
# file or the favicons.
|
|
321
|
+
# This is controlled with the '-n' option (which is used for the JS and CSS
|
|
322
|
+
# as we don't want to overwrite them)
|
|
323
|
+
gcloud storage cp \\
|
|
324
|
+
${assetsPath}/public/{*.png,robots.txt} \\
|
|
325
|
+
"${bucketUrl}" \\
|
|
326
|
+
-z txt \\
|
|
327
|
+
--cache-control="public,max-age=31536000,no-transform"
|
|
328
|
+
|
|
267
329
|
if ${skipMenu}; then
|
|
268
330
|
echo "Skipping menu.json upload"
|
|
269
331
|
else
|
|
@@ -298,10 +360,10 @@ fi
|
|
|
298
360
|
}]);
|
|
299
361
|
return GoogleStorageUploadScriptsGenerator;
|
|
300
362
|
}(); // TODO: To be implemented.
|
|
301
|
-
function getUploadScriptsGenerator(storageProvider) {
|
|
363
|
+
function getUploadScriptsGenerator(storageProvider, config) {
|
|
302
364
|
switch (storageProvider) {
|
|
303
365
|
case 'gs':
|
|
304
|
-
return new GoogleStorageUploadScriptsGenerator();
|
|
366
|
+
return new GoogleStorageUploadScriptsGenerator(config);
|
|
305
367
|
default:
|
|
306
368
|
throw new Error(`Storage provider ${storageProvider} not supported`);
|
|
307
369
|
}
|
|
@@ -345,10 +407,7 @@ function loadDotenvFiles(_ref) {
|
|
|
345
407
|
}
|
|
346
408
|
|
|
347
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; }
|
|
348
|
-
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
349
|
-
const storageBucketConfigExplorer = cosmiconfig('storage-buckets', {
|
|
350
|
-
searchStrategy: 'project'
|
|
351
|
-
});
|
|
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; }
|
|
352
411
|
function writeUploadScriptFile(_ref) {
|
|
353
412
|
let fileName = _ref.fileName,
|
|
354
413
|
fileContent = _ref.fileContent,
|
|
@@ -363,12 +422,10 @@ async function compileApplicationAssets(_ref2) {
|
|
|
363
422
|
let cliFlags = _ref2.cliFlags,
|
|
364
423
|
storageProvider = _ref2.storageProvider,
|
|
365
424
|
uploadScriptsGenerator = _ref2.uploadScriptsGenerator,
|
|
366
|
-
bucketRegion = _ref2.bucketRegion,
|
|
367
425
|
paths = _ref2.paths;
|
|
368
426
|
const applicationAssetsUploadScriptContent = uploadScriptsGenerator.getProductionBundlesUploadScript({
|
|
369
427
|
storageProvider,
|
|
370
428
|
bucketUrl: storageProvider.getAssetsBucketUrl({
|
|
371
|
-
bucketRegion,
|
|
372
429
|
prNumber: cliFlags.prNumber,
|
|
373
430
|
applicationName: cliFlags.applicationName
|
|
374
431
|
}),
|
|
@@ -376,7 +433,7 @@ async function compileApplicationAssets(_ref2) {
|
|
|
376
433
|
skipMenu: cliFlags.skipMenu
|
|
377
434
|
});
|
|
378
435
|
const parsedApplicationAssetsUploadScriptFile = path$1.parse(cliFlags.applicationAssetsUploadScriptOutFile);
|
|
379
|
-
const applicationAssetsUploadScriptFileName = `${parsedApplicationAssetsUploadScriptFile.name}-${
|
|
436
|
+
const applicationAssetsUploadScriptFileName = `${parsedApplicationAssetsUploadScriptFile.name}-${storageProvider.getBucketRegion()}${parsedApplicationAssetsUploadScriptFile.ext}`;
|
|
380
437
|
writeUploadScriptFile({
|
|
381
438
|
fileName: applicationAssetsUploadScriptFileName,
|
|
382
439
|
fileContent: applicationAssetsUploadScriptContent,
|
|
@@ -388,9 +445,7 @@ async function compileEnvironmentApplicationIndexes(_ref3) {
|
|
|
388
445
|
storageProvider = _ref3.storageProvider,
|
|
389
446
|
uploadScriptsGenerator = _ref3.uploadScriptsGenerator,
|
|
390
447
|
paths = _ref3.paths,
|
|
391
|
-
|
|
392
|
-
cloudEnvironment = _ref3.cloudEnvironment,
|
|
393
|
-
bucketEnvironment = _ref3.bucketEnvironment;
|
|
448
|
+
cloudEnvironment = _ref3.cloudEnvironment;
|
|
394
449
|
const cloudEnvironmentDeploymentPath = path$1.join(paths.deploymentsPath, storageProvider.getTag(), cloudEnvironment);
|
|
395
450
|
// Ensure the folder exists
|
|
396
451
|
const createDeploymentsFolderResult = await execa('mkdir', ['-p', cloudEnvironmentDeploymentPath], {
|
|
@@ -402,7 +457,6 @@ async function compileEnvironmentApplicationIndexes(_ref3) {
|
|
|
402
457
|
|
|
403
458
|
// Construct the proper CDN URL for the specific application
|
|
404
459
|
const cdnUrl = storageProvider.getCdnUrl({
|
|
405
|
-
bucketRegion,
|
|
406
460
|
prNumber: cliFlags.prNumber,
|
|
407
461
|
applicationName: cliFlags.applicationName
|
|
408
462
|
});
|
|
@@ -448,13 +502,10 @@ async function compileEnvironmentApplicationIndexes(_ref3) {
|
|
|
448
502
|
storageProvider,
|
|
449
503
|
packageManagerName: cliFlags.packageManagerName,
|
|
450
504
|
bucketUrl: storageProvider.getApplicationIndexBucketUrl({
|
|
451
|
-
bucketRegion,
|
|
452
505
|
prNumber: cliFlags.prNumber,
|
|
453
|
-
applicationName: cliFlags.applicationName
|
|
454
|
-
bucketEnvironment
|
|
506
|
+
applicationName: cliFlags.applicationName
|
|
455
507
|
}),
|
|
456
508
|
cdnUrl,
|
|
457
|
-
bucketEnvironment,
|
|
458
509
|
buildRevision: cliFlags.buildRevision,
|
|
459
510
|
buildNumber: cliFlags.buildNumber,
|
|
460
511
|
applicationIndexOutFile: cliFlags.applicationIndexOutFile
|
|
@@ -473,16 +524,7 @@ async function compileEnvironmentApplicationIndexes(_ref3) {
|
|
|
473
524
|
}
|
|
474
525
|
async function command$3(cliFlags, cwd) {
|
|
475
526
|
var _context;
|
|
476
|
-
|
|
477
|
-
try {
|
|
478
|
-
// This is the list of the supported cloud environments and their related bucket location.
|
|
479
|
-
cloudEnvironmentsGroupedByBucketRegions = await storageBucketConfigExplorer.search();
|
|
480
|
-
} catch (e) {
|
|
481
|
-
throw new Error('Failed to load a storage bucket configuration. Create a cosmiconfig for `storage-buckets` for example `storage-buckets.config.cjs`.');
|
|
482
|
-
}
|
|
483
|
-
if (!cloudEnvironmentsGroupedByBucketRegions) {
|
|
484
|
-
throw new Error('Failed loading a storage bucket configuration');
|
|
485
|
-
}
|
|
527
|
+
const storageBucketConfig = await loadStorageBucketsConfig();
|
|
486
528
|
const applicationDirectory = getApplicationDirectory(cwd);
|
|
487
529
|
let assetsPath;
|
|
488
530
|
if (cliFlags.ciAssetsRootPath && isCI()) {
|
|
@@ -497,28 +539,30 @@ async function command$3(cliFlags, cwd) {
|
|
|
497
539
|
dotenvPath: cliFlags.dotenvFolder && path$1.join(monorepoRoot.rootDir, cliFlags.dotenvFolder),
|
|
498
540
|
assetsPath
|
|
499
541
|
};
|
|
500
|
-
const defaultStorageProviders = [
|
|
501
|
-
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 => {
|
|
502
544
|
let _ref5 = _slicedToArray(_ref4, 2),
|
|
503
545
|
bucketRegion = _ref5[0],
|
|
504
546
|
bucketEnvironmentConfigs = _ref5[1];
|
|
505
547
|
return {
|
|
506
548
|
title: `Compiling for bucket region ${bucketRegion}`,
|
|
507
549
|
task: (_bucketRegionCtx, bucketRegionTask) => {
|
|
508
|
-
var _context2;
|
|
509
550
|
// NOTE: Application assets need to be compiled
|
|
510
551
|
// for all storage providers once per region.
|
|
511
|
-
const allStorageProvidersForBucketRegion = [...new _Set(
|
|
552
|
+
const allStorageProvidersForBucketRegion = [...new _Set(_flatMapInstanceProperty(bucketEnvironmentConfigs).call(bucketEnvironmentConfigs, bucketEnvironmentConfig => bucketEnvironmentConfig.storageProviders || defaultStorageProviders))];
|
|
512
553
|
const allApplicationAssetTasks = _mapInstanceProperty(allStorageProvidersForBucketRegion).call(allStorageProvidersForBucketRegion, storageProviderTag => {
|
|
513
|
-
const
|
|
514
|
-
const
|
|
554
|
+
const uploadScriptsGeneratorConfig = {};
|
|
555
|
+
const storageProviderConfig = {
|
|
556
|
+
bucketRegion: bucketRegion
|
|
557
|
+
};
|
|
558
|
+
const storageProvider = getStorageProvider(storageProviderTag, storageProviderConfig);
|
|
559
|
+
const uploadScriptsGenerator = getUploadScriptsGenerator(storageProviderTag, uploadScriptsGeneratorConfig);
|
|
515
560
|
return {
|
|
516
561
|
title: `Compiling application assets for '${storageProviderTag}'`,
|
|
517
562
|
task: () => compileApplicationAssets({
|
|
518
563
|
cliFlags,
|
|
519
564
|
storageProvider,
|
|
520
565
|
uploadScriptsGenerator,
|
|
521
|
-
bucketRegion: bucketRegion,
|
|
522
566
|
paths
|
|
523
567
|
})
|
|
524
568
|
};
|
|
@@ -527,13 +571,17 @@ async function command$3(cliFlags, cwd) {
|
|
|
527
571
|
const cloudEnvironment = bucketEnvironmentConfig.cloudEnvironment,
|
|
528
572
|
bucketEnvironment = bucketEnvironmentConfig.bucketEnvironment,
|
|
529
573
|
storageProviders = bucketEnvironmentConfig.storageProviders;
|
|
574
|
+
const storageProviderConfig = {
|
|
575
|
+
bucketRegion: bucketRegion,
|
|
576
|
+
bucketEnvironment
|
|
577
|
+
};
|
|
530
578
|
return {
|
|
531
579
|
title: `Compiling for cloud environment '${cloudEnvironment}'`,
|
|
532
580
|
task: (_storageProviderCtx, storageProviderTask) => {
|
|
533
|
-
var
|
|
534
|
-
const applicationIndexTasksForStorageProviders = _mapInstanceProperty(
|
|
535
|
-
const storageProvider = getStorageProvider(storageProviderTag);
|
|
536
|
-
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);
|
|
537
585
|
return {
|
|
538
586
|
title: `Compiling application index for storage provider '${storageProviderTag}'`,
|
|
539
587
|
task: () => {
|
|
@@ -542,9 +590,7 @@ async function command$3(cliFlags, cwd) {
|
|
|
542
590
|
storageProvider,
|
|
543
591
|
uploadScriptsGenerator,
|
|
544
592
|
paths,
|
|
545
|
-
|
|
546
|
-
cloudEnvironment,
|
|
547
|
-
bucketEnvironment
|
|
593
|
+
cloudEnvironment
|
|
548
594
|
});
|
|
549
595
|
}
|
|
550
596
|
};
|
|
@@ -828,7 +874,7 @@ async function command(cliFlags) {
|
|
|
828
874
|
|
|
829
875
|
var pkgJson = {
|
|
830
876
|
name: "@commercetools-frontend/application-cli",
|
|
831
|
-
version: "2.
|
|
877
|
+
version: "2.2.0",
|
|
832
878
|
description: "Internal CLI to manage Merchant Center application deployments across various environments.",
|
|
833
879
|
keywords: [
|
|
834
880
|
"commercetools",
|
|
@@ -853,22 +899,22 @@ var pkgJson = {
|
|
|
853
899
|
"@babel/core": "^7.22.11",
|
|
854
900
|
"@babel/runtime-corejs3": "^7.21.0",
|
|
855
901
|
"@babel/runtime": "^7.21.0",
|
|
856
|
-
"@commercetools-frontend/application-config": "22.
|
|
857
|
-
"@commercetools-frontend/constants": "22.
|
|
858
|
-
"@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",
|
|
859
905
|
"@manypkg/find-root": "2.2.1",
|
|
860
906
|
cac: "^6.7.14",
|
|
861
907
|
cosmiconfig: "9.0.0",
|
|
862
|
-
dotenv: "16.
|
|
908
|
+
dotenv: "16.4.2",
|
|
863
909
|
execa: "5.1.1",
|
|
864
910
|
jsonschema: "^1.4.1",
|
|
865
|
-
listr2: "8.0.
|
|
911
|
+
listr2: "8.0.2",
|
|
866
912
|
"node-fetch": "2.7.0",
|
|
867
913
|
"ts-deepmerge": "7.0.0"
|
|
868
914
|
},
|
|
869
915
|
devDependencies: {
|
|
870
916
|
"@tsconfig/node20": "20.1.2",
|
|
871
|
-
"@types/node": "20.11.
|
|
917
|
+
"@types/node": "20.11.25",
|
|
872
918
|
typescript: "5.2.2"
|
|
873
919
|
},
|
|
874
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;
|