@commercetools-frontend/application-cli 1.8.0 → 2.0.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/README.md +3 -3
- package/cli/dist/commercetools-frontend-application-cli-cli.cjs.d.ts +1 -1
- package/cli/dist/commercetools-frontend-application-cli-cli.cjs.dev.js +298 -142
- package/cli/dist/commercetools-frontend-application-cli-cli.cjs.prod.js +298 -142
- package/cli/dist/commercetools-frontend-application-cli-cli.esm.js +293 -138
- package/dist/commercetools-frontend-application-cli.cjs.d.ts +1 -1
- package/dist/declarations/src/index.d.ts +1 -1
- package/dist/declarations/src/types.d.ts +23 -5
- package/package.json +9 -10
- package/cli/dist/commercetools-frontend-application-cli-cli.cjs.d.ts.map +0 -1
- package/dist/commercetools-frontend-application-cli.cjs.d.ts.map +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { cac } from 'cac';
|
|
2
2
|
import _Object$keys from '@babel/runtime-corejs3/core-js-stable/object/keys';
|
|
3
3
|
import _Object$getOwnPropertySymbols from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols';
|
|
4
|
+
import _filterInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/filter';
|
|
4
5
|
import _Object$getOwnPropertyDescriptor from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor';
|
|
5
6
|
import _forEachInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/for-each';
|
|
6
7
|
import _Object$getOwnPropertyDescriptors from '@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors';
|
|
@@ -8,23 +9,29 @@ import _Object$defineProperties from '@babel/runtime-corejs3/core-js-stable/obje
|
|
|
8
9
|
import _Object$defineProperty from '@babel/runtime-corejs3/core-js-stable/object/define-property';
|
|
9
10
|
import _slicedToArray from '@babel/runtime-corejs3/helpers/esm/slicedToArray';
|
|
10
11
|
import _defineProperty from '@babel/runtime-corejs3/helpers/esm/defineProperty';
|
|
11
|
-
import _filterInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/filter';
|
|
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
|
-
import
|
|
14
|
+
import _Set from '@babel/runtime-corejs3/core-js-stable/set';
|
|
15
|
+
import _flatInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/flat';
|
|
15
16
|
import fs from 'fs';
|
|
16
17
|
import path from 'path';
|
|
17
18
|
import { Listr } from 'listr2';
|
|
18
19
|
import execa from 'execa';
|
|
19
20
|
import { cosmiconfig } from 'cosmiconfig';
|
|
20
21
|
import { findRootSync } from '@manypkg/find-root';
|
|
22
|
+
import _possibleConstructorReturn from '@babel/runtime-corejs3/helpers/esm/possibleConstructorReturn';
|
|
23
|
+
import _get from '@babel/runtime-corejs3/helpers/esm/get';
|
|
24
|
+
import _getPrototypeOf from '@babel/runtime-corejs3/helpers/esm/getPrototypeOf';
|
|
25
|
+
import _inherits from '@babel/runtime-corejs3/helpers/esm/inherits';
|
|
26
|
+
import _classCallCheck from '@babel/runtime-corejs3/helpers/esm/classCallCheck';
|
|
27
|
+
import _createClass from '@babel/runtime-corejs3/helpers/esm/createClass';
|
|
28
|
+
import _Reflect$construct from '@babel/runtime-corejs3/core-js-stable/reflect/construct';
|
|
21
29
|
import dotenv from 'dotenv';
|
|
22
30
|
import _findInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/find';
|
|
23
31
|
import _JSON$stringify from '@babel/runtime-corejs3/core-js-stable/json/stringify';
|
|
24
32
|
import { processConfig } from '@commercetools-frontend/application-config';
|
|
25
33
|
import { getSupportedLocales } from '@commercetools-frontend/l10n';
|
|
26
34
|
import _sliceInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/slice';
|
|
27
|
-
import fetch from 'node-fetch';
|
|
28
35
|
import { Validator } from 'jsonschema';
|
|
29
36
|
|
|
30
37
|
function getApplicationDirectory(cwd) {
|
|
@@ -40,19 +47,167 @@ function isCI() {
|
|
|
40
47
|
return process.env.CI === true || process.env.CI === 'true';
|
|
41
48
|
}
|
|
42
49
|
|
|
43
|
-
function
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
function ownKeys$4(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; }
|
|
51
|
+
function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var _context3, _context4; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context3 = ownKeys$4(Object(t), !0)).call(_context3, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context4 = ownKeys$4(Object(t))).call(_context4, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
52
|
+
function _callSuper(_this, derived, args) {
|
|
53
|
+
function isNativeReflectConstruct() {
|
|
54
|
+
if (typeof Reflect === "undefined" || !_Reflect$construct) return false;
|
|
55
|
+
if (_Reflect$construct.sham) return false;
|
|
56
|
+
if (typeof Proxy === "function") return true;
|
|
57
|
+
try {
|
|
58
|
+
return !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {}));
|
|
59
|
+
} catch (e) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
derived = _getPrototypeOf(derived);
|
|
64
|
+
return _possibleConstructorReturn(_this, isNativeReflectConstruct() ? _Reflect$construct(derived, args || [], _getPrototypeOf(_this).constructor) : derived.apply(_this, args));
|
|
65
|
+
}
|
|
66
|
+
let StorageProvider = /*#__PURE__*/function () {
|
|
67
|
+
function StorageProvider() {
|
|
68
|
+
_classCallCheck(this, StorageProvider);
|
|
69
|
+
}
|
|
70
|
+
_createClass(StorageProvider, [{
|
|
71
|
+
key: "getBucketNamespace",
|
|
72
|
+
value:
|
|
73
|
+
/**
|
|
74
|
+
* Construct the storage bucket URL for the specific application and cloud environment.
|
|
75
|
+
*
|
|
76
|
+
* 1. Static assets are uploaded to `:bucketRegion/:prNumber?/:applicationName`
|
|
77
|
+
* 2. The application index is uploaded to `:bucketRegion/:prNumber?/:applicationName/:cloudEnvironment`
|
|
78
|
+
*
|
|
79
|
+
* This allows all cloud environments sharing the same static assets while each application's index
|
|
80
|
+
* is uploaded with different headers (e.g. CSP rules).
|
|
81
|
+
*/
|
|
82
|
+
function getBucketNamespace(prNumber) {
|
|
83
|
+
if (!prNumber) return;
|
|
84
|
+
if (prNumber === 'merchant-center-preview') return prNumber;
|
|
85
|
+
return `mc-${prNumber}`;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Construct the storage bucket URL for the specific application and cloud environment.
|
|
90
|
+
*/
|
|
91
|
+
}, {
|
|
92
|
+
key: "getAssetsBucketUrl",
|
|
93
|
+
value: function getAssetsBucketUrl(_ref) {
|
|
94
|
+
var _context;
|
|
95
|
+
let bucketProtocol = _ref.bucketProtocol,
|
|
96
|
+
bucketRegion = _ref.bucketRegion,
|
|
97
|
+
bucketNamespace = _ref.bucketNamespace,
|
|
98
|
+
applicationName = _ref.applicationName;
|
|
99
|
+
const assetsBucketUrl = _filterInstanceProperty(_context = [bucketRegion, bucketNamespace, applicationName]).call(_context, Boolean).join('/');
|
|
100
|
+
return `${bucketProtocol}${assetsBucketUrl}`;
|
|
101
|
+
}
|
|
102
|
+
}, {
|
|
103
|
+
key: "getApplicationIndexBucketUrl",
|
|
104
|
+
value: function getApplicationIndexBucketUrl(_ref2) {
|
|
105
|
+
let bucketProtocol = _ref2.bucketProtocol,
|
|
106
|
+
bucketRegion = _ref2.bucketRegion,
|
|
107
|
+
bucketNamespace = _ref2.bucketNamespace,
|
|
108
|
+
prNumber = _ref2.prNumber,
|
|
109
|
+
applicationName = _ref2.applicationName,
|
|
110
|
+
bucketEnvironment = _ref2.bucketEnvironment;
|
|
111
|
+
const applicationAssetsBucketUrl = this.getAssetsBucketUrl({
|
|
112
|
+
bucketProtocol,
|
|
113
|
+
bucketRegion,
|
|
114
|
+
bucketNamespace,
|
|
115
|
+
prNumber,
|
|
116
|
+
applicationName
|
|
117
|
+
});
|
|
118
|
+
const applicationIndexBucketUrl = `${applicationAssetsBucketUrl}/${bucketEnvironment}`;
|
|
119
|
+
return applicationIndexBucketUrl;
|
|
120
|
+
}
|
|
121
|
+
}, {
|
|
122
|
+
key: "getCdnUrl",
|
|
123
|
+
value: function getCdnUrl(_ref3) {
|
|
124
|
+
var _context2;
|
|
125
|
+
let publicBaseUrl = _ref3.publicBaseUrl,
|
|
126
|
+
bucketRegion = _ref3.bucketRegion,
|
|
127
|
+
prNumber = _ref3.prNumber,
|
|
128
|
+
applicationName = _ref3.applicationName;
|
|
129
|
+
return _filterInstanceProperty(_context2 = [publicBaseUrl, bucketRegion, this.getBucketNamespace(prNumber), applicationName]).call(_context2, Boolean).join('/');
|
|
130
|
+
}
|
|
131
|
+
}]);
|
|
132
|
+
return StorageProvider;
|
|
133
|
+
}();
|
|
134
|
+
let GoogleStorageProvider = /*#__PURE__*/function (_StorageProvider) {
|
|
135
|
+
_inherits(GoogleStorageProvider, _StorageProvider);
|
|
136
|
+
function GoogleStorageProvider() {
|
|
137
|
+
_classCallCheck(this, GoogleStorageProvider);
|
|
138
|
+
return _callSuper(this, GoogleStorageProvider, arguments);
|
|
139
|
+
}
|
|
140
|
+
_createClass(GoogleStorageProvider, [{
|
|
141
|
+
key: "getTag",
|
|
142
|
+
value: function getTag() {
|
|
143
|
+
return 'gs';
|
|
144
|
+
}
|
|
145
|
+
}, {
|
|
146
|
+
key: "getProtocol",
|
|
147
|
+
value: function getProtocol() {
|
|
148
|
+
return 'gs://';
|
|
149
|
+
}
|
|
150
|
+
}, {
|
|
151
|
+
key: "getPublicBaseUrl",
|
|
152
|
+
value: function getPublicBaseUrl() {
|
|
153
|
+
return 'https://storage.googleapis.com';
|
|
154
|
+
}
|
|
155
|
+
}, {
|
|
156
|
+
key: "getCdnUrl",
|
|
157
|
+
value: function getCdnUrl(config) {
|
|
158
|
+
return _get(_getPrototypeOf(GoogleStorageProvider.prototype), "getCdnUrl", this).call(this, _objectSpread$4({
|
|
159
|
+
publicBaseUrl: this.getPublicBaseUrl()
|
|
160
|
+
}, config));
|
|
161
|
+
}
|
|
162
|
+
}, {
|
|
163
|
+
key: "getAssetsBucketUrl",
|
|
164
|
+
value: function getAssetsBucketUrl(config) {
|
|
165
|
+
return _get(_getPrototypeOf(GoogleStorageProvider.prototype), "getAssetsBucketUrl", this).call(this, _objectSpread$4({
|
|
166
|
+
bucketProtocol: this.getProtocol(),
|
|
167
|
+
bucketNamespace: _get(_getPrototypeOf(GoogleStorageProvider.prototype), "getBucketNamespace", this).call(this, config.prNumber)
|
|
168
|
+
}, config));
|
|
169
|
+
}
|
|
170
|
+
}, {
|
|
171
|
+
key: "getApplicationIndexBucketUrl",
|
|
172
|
+
value: function getApplicationIndexBucketUrl(config) {
|
|
173
|
+
return _get(_getPrototypeOf(GoogleStorageProvider.prototype), "getApplicationIndexBucketUrl", this).call(this, _objectSpread$4({
|
|
174
|
+
bucketProtocol: this.getProtocol(),
|
|
175
|
+
bucketNamespace: _get(_getPrototypeOf(GoogleStorageProvider.prototype), "getBucketNamespace", this).call(this, config.prNumber)
|
|
176
|
+
}, config));
|
|
177
|
+
}
|
|
178
|
+
}]);
|
|
179
|
+
return GoogleStorageProvider;
|
|
180
|
+
}(StorageProvider); // TODO: to be implemented.
|
|
181
|
+
function getStorageProvider(storageProvider) {
|
|
182
|
+
switch (storageProvider) {
|
|
183
|
+
case 'gs':
|
|
184
|
+
return new GoogleStorageProvider();
|
|
185
|
+
default:
|
|
186
|
+
throw new Error(`Storage provider ${storageProvider} not supported`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
let GoogleStorageUploadScriptsGenerator = /*#__PURE__*/function () {
|
|
191
|
+
function GoogleStorageUploadScriptsGenerator() {
|
|
192
|
+
_classCallCheck(this, GoogleStorageUploadScriptsGenerator);
|
|
193
|
+
}
|
|
194
|
+
_createClass(GoogleStorageUploadScriptsGenerator, [{
|
|
195
|
+
key: "getApplicationIndexUploadScript",
|
|
196
|
+
value: function getApplicationIndexUploadScript(_ref) {
|
|
197
|
+
let packageManagerName = _ref.packageManagerName,
|
|
198
|
+
bucketUrl = _ref.bucketUrl,
|
|
199
|
+
cdnUrl = _ref.cdnUrl,
|
|
200
|
+
bucketEnvironment = _ref.bucketEnvironment,
|
|
201
|
+
buildRevision = _ref.buildRevision,
|
|
202
|
+
buildNumber = _ref.buildNumber,
|
|
203
|
+
applicationIndexOutFile = _ref.applicationIndexOutFile;
|
|
204
|
+
return `
|
|
205
|
+
#!/usr/bin/env bash
|
|
52
206
|
|
|
53
207
|
set -e
|
|
54
208
|
|
|
55
|
-
echo "Uploading compiled ${applicationIndexOutFile} to bucket ${bucketUrl}"
|
|
209
|
+
echo "Uploading compiled ${applicationIndexOutFile} to Google Storage bucket ${bucketUrl}"
|
|
210
|
+
|
|
56
211
|
gcloud storage cp \\
|
|
57
212
|
"$(dirname "$0")/${applicationIndexOutFile}" \\
|
|
58
213
|
"${bucketUrl}/" \\
|
|
@@ -75,14 +230,15 @@ gcloud storage cp \\
|
|
|
75
230
|
--content-type="application/json" \\
|
|
76
231
|
--cache-control="public,max-age=0,no-transform"
|
|
77
232
|
`;
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
function
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
233
|
+
}
|
|
234
|
+
}, {
|
|
235
|
+
key: "getProductionBundlesUploadScript",
|
|
236
|
+
value: function getProductionBundlesUploadScript(_ref2) {
|
|
237
|
+
let bucketUrl = _ref2.bucketUrl,
|
|
238
|
+
assetsPath = _ref2.assetsPath,
|
|
239
|
+
skipMenu = _ref2.skipMenu;
|
|
240
|
+
return `
|
|
241
|
+
#!/usr/bin/env bash
|
|
86
242
|
|
|
87
243
|
set -e
|
|
88
244
|
|
|
@@ -95,7 +251,7 @@ set -e
|
|
|
95
251
|
# "valid" lifetime of an asset to be cached.
|
|
96
252
|
# 4. The '-n' will skip uploading existing files and prevents them to
|
|
97
253
|
# be overwritten
|
|
98
|
-
echo "Uploading static assets to bucket ${bucketUrl}"
|
|
254
|
+
echo "Uploading static assets to Google Storage bucket ${bucketUrl}"
|
|
99
255
|
|
|
100
256
|
gcloud storage cp \\
|
|
101
257
|
${assetsPath}/public/{*.css,*.js,*.js.map,*.png,*.html,robots.txt} \\
|
|
@@ -134,7 +290,17 @@ else
|
|
|
134
290
|
--cache-control="public,max-age=0,no-transform"
|
|
135
291
|
fi
|
|
136
292
|
`;
|
|
137
|
-
|
|
293
|
+
}
|
|
294
|
+
}]);
|
|
295
|
+
return GoogleStorageUploadScriptsGenerator;
|
|
296
|
+
}(); // TODO: To be implemented.
|
|
297
|
+
function getUploadScriptsGenerator(storageProvider) {
|
|
298
|
+
switch (storageProvider) {
|
|
299
|
+
case 'gs':
|
|
300
|
+
return new GoogleStorageUploadScriptsGenerator();
|
|
301
|
+
default:
|
|
302
|
+
throw new Error(`Storage provider ${storageProvider} not supported`);
|
|
303
|
+
}
|
|
138
304
|
}
|
|
139
305
|
|
|
140
306
|
function ownKeys$3(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; }
|
|
@@ -175,14 +341,10 @@ function loadDotenvFiles(_ref) {
|
|
|
175
341
|
}
|
|
176
342
|
|
|
177
343
|
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; }
|
|
178
|
-
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
179
|
-
const buckedConfigExplorer = cosmiconfig('
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
}
|
|
183
|
-
function assertExpandedBucketEnvironmentConfig(bucketEnvironmentConfigOrBucketEnvironment) {
|
|
184
|
-
return typeof bucketEnvironmentConfigOrBucketEnvironment == 'object' && typeof bucketEnvironmentConfigOrBucketEnvironment.cloudEnvironment == 'string' && typeof bucketEnvironmentConfigOrBucketEnvironment.bucketEnvironment == 'string';
|
|
185
|
-
}
|
|
344
|
+
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(_context4 = ownKeys$2(Object(t), !0)).call(_context4, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context5 = ownKeys$2(Object(t))).call(_context5, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
345
|
+
const buckedConfigExplorer = cosmiconfig('storage-buckets', {
|
|
346
|
+
searchStrategy: 'project'
|
|
347
|
+
});
|
|
186
348
|
function writeUploadScriptFile(_ref) {
|
|
187
349
|
let fileName = _ref.fileName,
|
|
188
350
|
fileContent = _ref.fileContent,
|
|
@@ -193,56 +355,15 @@ function writeUploadScriptFile(_ref) {
|
|
|
193
355
|
encoding: 'utf8'
|
|
194
356
|
});
|
|
195
357
|
}
|
|
196
|
-
function
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
* 1. Static assets are uploaded to `:bucketRegion/:prNumber?/:applicationName`
|
|
206
|
-
* 2. The application index is uploaded to `:bucketRegion/:prNumber?/:applicationName/:cloudEnvironment`
|
|
207
|
-
*
|
|
208
|
-
* This allows all cloud environments sharing the same static assets while each application's index
|
|
209
|
-
* is uploaded with different headers (e.g. CSP rules).
|
|
210
|
-
*/
|
|
211
|
-
|
|
212
|
-
function getApplicationAssetsBucketUrl(_ref2) {
|
|
213
|
-
var _context;
|
|
214
|
-
let bucketRegion = _ref2.bucketRegion,
|
|
215
|
-
prNumber = _ref2.prNumber,
|
|
216
|
-
applicationName = _ref2.applicationName;
|
|
217
|
-
const applicationAssetsBucketUrl = _filterInstanceProperty(_context = [`gs://${bucketRegion}`, getBucketNamespace(prNumber), applicationName]).call(_context, Boolean);
|
|
218
|
-
return applicationAssetsBucketUrl.join('/');
|
|
219
|
-
}
|
|
220
|
-
function getApplicationIndexBucketUrl(_ref3) {
|
|
221
|
-
let bucketRegion = _ref3.bucketRegion,
|
|
222
|
-
prNumber = _ref3.prNumber,
|
|
223
|
-
applicationName = _ref3.applicationName,
|
|
224
|
-
bucketEnvironment = _ref3.bucketEnvironment;
|
|
225
|
-
const applicationAssetsBucketUrl = getApplicationAssetsBucketUrl({
|
|
226
|
-
bucketRegion,
|
|
227
|
-
prNumber,
|
|
228
|
-
applicationName
|
|
229
|
-
});
|
|
230
|
-
const applicationIndexBucketUrl = `${applicationAssetsBucketUrl}/${bucketEnvironment}`;
|
|
231
|
-
return applicationIndexBucketUrl;
|
|
232
|
-
}
|
|
233
|
-
function getCdnUrl(_ref4) {
|
|
234
|
-
var _context2;
|
|
235
|
-
let bucketRegion = _ref4.bucketRegion,
|
|
236
|
-
prNumber = _ref4.prNumber,
|
|
237
|
-
applicationName = _ref4.applicationName;
|
|
238
|
-
return _filterInstanceProperty(_context2 = [`https://storage.googleapis.com/${bucketRegion}`, getBucketNamespace(prNumber), applicationName]).call(_context2, Boolean).join('/');
|
|
239
|
-
}
|
|
240
|
-
async function compileApplicationAssets(_ref5) {
|
|
241
|
-
let cliFlags = _ref5.cliFlags,
|
|
242
|
-
bucketRegion = _ref5.bucketRegion,
|
|
243
|
-
paths = _ref5.paths;
|
|
244
|
-
const applicationAssetsUploadScriptContent = createApplicationAssetsUploadScript({
|
|
245
|
-
bucketUrl: getApplicationAssetsBucketUrl({
|
|
358
|
+
async function compileApplicationAssets(_ref2) {
|
|
359
|
+
let cliFlags = _ref2.cliFlags,
|
|
360
|
+
storageProvider = _ref2.storageProvider,
|
|
361
|
+
uploadScriptsGenerator = _ref2.uploadScriptsGenerator,
|
|
362
|
+
bucketRegion = _ref2.bucketRegion,
|
|
363
|
+
paths = _ref2.paths;
|
|
364
|
+
const applicationAssetsUploadScriptContent = uploadScriptsGenerator.getProductionBundlesUploadScript({
|
|
365
|
+
storageProvider,
|
|
366
|
+
bucketUrl: storageProvider.getAssetsBucketUrl({
|
|
246
367
|
bucketRegion,
|
|
247
368
|
prNumber: cliFlags.prNumber,
|
|
248
369
|
applicationName: cliFlags.applicationName
|
|
@@ -255,16 +376,18 @@ async function compileApplicationAssets(_ref5) {
|
|
|
255
376
|
writeUploadScriptFile({
|
|
256
377
|
fileName: applicationAssetsUploadScriptFileName,
|
|
257
378
|
fileContent: applicationAssetsUploadScriptContent,
|
|
258
|
-
filePath: paths.deploymentsPath
|
|
379
|
+
filePath: path.join(paths.deploymentsPath, storageProvider.getTag())
|
|
259
380
|
});
|
|
260
381
|
}
|
|
261
|
-
async function compileEnvironmentApplicationIndexes(
|
|
262
|
-
let cliFlags =
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
382
|
+
async function compileEnvironmentApplicationIndexes(_ref3) {
|
|
383
|
+
let cliFlags = _ref3.cliFlags,
|
|
384
|
+
storageProvider = _ref3.storageProvider,
|
|
385
|
+
uploadScriptsGenerator = _ref3.uploadScriptsGenerator,
|
|
386
|
+
paths = _ref3.paths,
|
|
387
|
+
bucketRegion = _ref3.bucketRegion,
|
|
388
|
+
cloudEnvironment = _ref3.cloudEnvironment,
|
|
389
|
+
bucketEnvironment = _ref3.bucketEnvironment;
|
|
390
|
+
const cloudEnvironmentDeploymentPath = path.join(paths.deploymentsPath, storageProvider.getTag(), cloudEnvironment);
|
|
268
391
|
// Ensure the folder exists
|
|
269
392
|
const createDeploymentsFolderResult = await execa('mkdir', ['-p', cloudEnvironmentDeploymentPath], {
|
|
270
393
|
encoding: 'utf8'
|
|
@@ -274,7 +397,7 @@ async function compileEnvironmentApplicationIndexes(_ref6) {
|
|
|
274
397
|
}
|
|
275
398
|
|
|
276
399
|
// Construct the proper CDN URL for the specific application
|
|
277
|
-
const cdnUrl = getCdnUrl({
|
|
400
|
+
const cdnUrl = storageProvider.getCdnUrl({
|
|
278
401
|
bucketRegion,
|
|
279
402
|
prNumber: cliFlags.prNumber,
|
|
280
403
|
applicationName: cliFlags.applicationName
|
|
@@ -317,9 +440,10 @@ async function compileEnvironmentApplicationIndexes(_ref6) {
|
|
|
317
440
|
if (compileResult.failed) {
|
|
318
441
|
throw new Error(compileResult.stderr);
|
|
319
442
|
}
|
|
320
|
-
const applicationIndexUploadScriptContent =
|
|
443
|
+
const applicationIndexUploadScriptContent = uploadScriptsGenerator.getApplicationIndexUploadScript({
|
|
444
|
+
storageProvider,
|
|
321
445
|
packageManagerName: cliFlags.packageManagerName,
|
|
322
|
-
bucketUrl: getApplicationIndexBucketUrl({
|
|
446
|
+
bucketUrl: storageProvider.getApplicationIndexBucketUrl({
|
|
323
447
|
bucketRegion,
|
|
324
448
|
prNumber: cliFlags.prNumber,
|
|
325
449
|
applicationName: cliFlags.applicationName,
|
|
@@ -331,8 +455,6 @@ async function compileEnvironmentApplicationIndexes(_ref6) {
|
|
|
331
455
|
buildNumber: cliFlags.buildNumber,
|
|
332
456
|
applicationIndexOutFile: cliFlags.applicationIndexOutFile
|
|
333
457
|
});
|
|
334
|
-
// Generate bash scripts to run the `gcloud storage` upload command.
|
|
335
|
-
|
|
336
458
|
writeUploadScriptFile({
|
|
337
459
|
fileName: cliFlags.applicationIndexUploadScriptOutFile,
|
|
338
460
|
fileContent: applicationIndexUploadScriptContent,
|
|
@@ -340,23 +462,22 @@ async function compileEnvironmentApplicationIndexes(_ref6) {
|
|
|
340
462
|
});
|
|
341
463
|
|
|
342
464
|
// Move the compiled `index.html` to the deployments folder of the related cloud environment.
|
|
343
|
-
|
|
344
465
|
const moveResult = await execa('mv', [path.join(paths.publicAssetsPath, 'index.html'), path.join(cloudEnvironmentDeploymentPath, cliFlags.applicationIndexOutFile)]);
|
|
345
466
|
if (moveResult.failed) {
|
|
346
467
|
throw new Error(moveResult.stderr);
|
|
347
468
|
}
|
|
348
469
|
}
|
|
349
470
|
async function command$3(cliFlags, cwd) {
|
|
350
|
-
var
|
|
471
|
+
var _context;
|
|
351
472
|
let cloudEnvironmentsGroupedByBucketRegions;
|
|
352
473
|
try {
|
|
353
474
|
// This is the list of the supported cloud environments and their related bucket location.
|
|
354
475
|
cloudEnvironmentsGroupedByBucketRegions = await buckedConfigExplorer.search();
|
|
355
476
|
} catch (e) {
|
|
356
|
-
throw new Error('Failed loading a
|
|
477
|
+
throw new Error('Failed loading a storage bucket configuration. Create a cosmiconfig for `storage-buckets` for example `storage-buckets.config.cjs`.');
|
|
357
478
|
}
|
|
358
479
|
if (!cloudEnvironmentsGroupedByBucketRegions) {
|
|
359
|
-
throw new Error('Failed loading a
|
|
480
|
+
throw new Error('Failed loading a storage bucket configuration');
|
|
360
481
|
}
|
|
361
482
|
const applicationDirectory = getApplicationDirectory(cwd);
|
|
362
483
|
let assetsPath;
|
|
@@ -372,45 +493,67 @@ async function command$3(cliFlags, cwd) {
|
|
|
372
493
|
dotenvPath: cliFlags.dotenvFolder && path.join(monorepoRoot.rootDir, cliFlags.dotenvFolder),
|
|
373
494
|
assetsPath
|
|
374
495
|
};
|
|
375
|
-
const
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
496
|
+
const defaultStorageProviders = ['gs'];
|
|
497
|
+
const taskList = new Listr(_mapInstanceProperty(_context = _Object$entries(cloudEnvironmentsGroupedByBucketRegions.config)).call(_context, _ref4 => {
|
|
498
|
+
let _ref5 = _slicedToArray(_ref4, 2),
|
|
499
|
+
bucketRegion = _ref5[0],
|
|
500
|
+
bucketEnvironmentConfigs = _ref5[1];
|
|
379
501
|
return {
|
|
380
502
|
title: `Compiling for bucket region ${bucketRegion}`,
|
|
381
|
-
task: () => {
|
|
382
|
-
var
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
} else if (assertCollapsedBucketEnvironmentConfig(bucketEnvironmentConfigOrBucketEnvironment)) {
|
|
390
|
-
cloudEnvironment = bucketEnvironmentConfigOrBucketEnvironment;
|
|
391
|
-
bucketEnvironment = bucketEnvironmentConfigOrBucketEnvironment;
|
|
392
|
-
}
|
|
503
|
+
task: (_bucketRegionCtx, bucketRegionTask) => {
|
|
504
|
+
var _context2;
|
|
505
|
+
// NOTE: Application assets need to be compiled
|
|
506
|
+
// for all storage providers once per region.
|
|
507
|
+
const allStorageProvidersForBucketRegion = [...new _Set(_flatInstanceProperty(_context2 = _mapInstanceProperty(bucketEnvironmentConfigs).call(bucketEnvironmentConfigs, bucketEnvironmentConfig => bucketEnvironmentConfig.storageProviders || defaultStorageProviders)).call(_context2))];
|
|
508
|
+
const allApplicationAssetTasks = _mapInstanceProperty(allStorageProvidersForBucketRegion).call(allStorageProvidersForBucketRegion, storageProviderTag => {
|
|
509
|
+
const storageProvider = getStorageProvider(storageProviderTag);
|
|
510
|
+
const uploadScriptsGenerator = getUploadScriptsGenerator(storageProviderTag);
|
|
393
511
|
return {
|
|
394
|
-
title: `Compiling application
|
|
395
|
-
task: () =>
|
|
512
|
+
title: `Compiling application assets for '${storageProviderTag}'`,
|
|
513
|
+
task: () => compileApplicationAssets({
|
|
396
514
|
cliFlags,
|
|
397
|
-
|
|
515
|
+
storageProvider,
|
|
516
|
+
uploadScriptsGenerator,
|
|
398
517
|
bucketRegion,
|
|
399
|
-
|
|
400
|
-
bucketEnvironment
|
|
518
|
+
paths
|
|
401
519
|
})
|
|
402
520
|
};
|
|
403
|
-
})
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
521
|
+
});
|
|
522
|
+
const allApplicationIndexTasks = _mapInstanceProperty(bucketEnvironmentConfigs).call(bucketEnvironmentConfigs, bucketEnvironmentConfig => {
|
|
523
|
+
const cloudEnvironment = bucketEnvironmentConfig.cloudEnvironment,
|
|
524
|
+
bucketEnvironment = bucketEnvironmentConfig.bucketEnvironment,
|
|
525
|
+
storageProviders = bucketEnvironmentConfig.storageProviders;
|
|
526
|
+
return {
|
|
527
|
+
title: `Compiling for cloud environment '${cloudEnvironment}'`,
|
|
528
|
+
task: (_storageProviderCtx, storageProviderTask) => {
|
|
529
|
+
var _context3;
|
|
530
|
+
const applicationIndexTasksForStorageProviders = _mapInstanceProperty(_context3 = storageProviders || defaultStorageProviders).call(_context3, storageProviderTag => {
|
|
531
|
+
const storageProvider = getStorageProvider(storageProviderTag);
|
|
532
|
+
const uploadScriptsGenerator = getUploadScriptsGenerator(storageProviderTag);
|
|
533
|
+
return {
|
|
534
|
+
title: `Compiling application index for storage provider '${storageProviderTag}'`,
|
|
535
|
+
task: () => {
|
|
536
|
+
return compileEnvironmentApplicationIndexes({
|
|
537
|
+
cliFlags,
|
|
538
|
+
storageProvider,
|
|
539
|
+
uploadScriptsGenerator,
|
|
540
|
+
paths,
|
|
541
|
+
bucketRegion,
|
|
542
|
+
cloudEnvironment,
|
|
543
|
+
bucketEnvironment
|
|
544
|
+
});
|
|
545
|
+
}
|
|
546
|
+
};
|
|
547
|
+
});
|
|
548
|
+
return storageProviderTask.newListr(applicationIndexTasksForStorageProviders);
|
|
549
|
+
}
|
|
550
|
+
};
|
|
551
|
+
});
|
|
552
|
+
return bucketRegionTask.newListr([...allApplicationIndexTasks, ...allApplicationAssetTasks]);
|
|
411
553
|
}
|
|
412
554
|
};
|
|
413
555
|
}), {
|
|
556
|
+
// @ts-ignore
|
|
414
557
|
renderer: isCI() ? 'verbose' : 'default'
|
|
415
558
|
});
|
|
416
559
|
await taskList.run();
|
|
@@ -494,6 +637,15 @@ const mapApplicationMenuConfigToGraqhQLMenuJson = config => {
|
|
|
494
637
|
shouldRenderDivider: menuLinks.shouldRenderDivider ?? false
|
|
495
638
|
};
|
|
496
639
|
};
|
|
640
|
+
|
|
641
|
+
// During the migration to the Naming Convention Record for Cloud Environments
|
|
642
|
+
// we need to gracefully use the non-compliant and compliant environment names
|
|
643
|
+
// for staging to avoid a breaking release of the CLI.
|
|
644
|
+
const doesCloudEnvironmentExist = _ref => {
|
|
645
|
+
let dotenvPath = _ref.dotenvPath,
|
|
646
|
+
cloudEnvironment = _ref.cloudEnvironment;
|
|
647
|
+
return fs.existsSync(path.join(dotenvPath ?? '', cloudEnvironment));
|
|
648
|
+
};
|
|
497
649
|
async function command$2(cliFlags, cwd) {
|
|
498
650
|
const applicationDirectory = getApplicationDirectory(cwd);
|
|
499
651
|
const monorepoRoot = findRootSync(cwd);
|
|
@@ -502,7 +654,11 @@ async function command$2(cliFlags, cwd) {
|
|
|
502
654
|
dotenvPath,
|
|
503
655
|
// The env itself is not important for the menu. However, the application config
|
|
504
656
|
// uses environment placeholders and therefore we need to provide the variables for it.
|
|
505
|
-
|
|
657
|
+
// TODO: Remove after all repositories migrated to NCR.
|
|
658
|
+
cloudEnvironment: doesCloudEnvironmentExist({
|
|
659
|
+
dotenvPath,
|
|
660
|
+
cloudEnvironment: '.env.ctp_staging_gcp_europe-west1_v1'
|
|
661
|
+
}) ? 'ctp_staging_gcp_europe-west1_v1' : 'ctp-gcp-staging'
|
|
506
662
|
})), {}, {
|
|
507
663
|
// Again, make sure that the environment is "development", otherwise
|
|
508
664
|
// the menu config won't be available.
|
|
@@ -679,7 +835,7 @@ async function command(cliFlags) {
|
|
|
679
835
|
|
|
680
836
|
var pkgJson = {
|
|
681
837
|
name: "@commercetools-frontend/application-cli",
|
|
682
|
-
version: "
|
|
838
|
+
version: "2.0.0",
|
|
683
839
|
description: "Internal CLI to manage Merchant Center application deployments across various environments.",
|
|
684
840
|
keywords: [
|
|
685
841
|
"commercetools",
|
|
@@ -704,26 +860,25 @@ var pkgJson = {
|
|
|
704
860
|
"@babel/core": "^7.22.11",
|
|
705
861
|
"@babel/runtime": "^7.21.0",
|
|
706
862
|
"@babel/runtime-corejs3": "^7.21.0",
|
|
707
|
-
"@commercetools-frontend/application-config": "22.
|
|
708
|
-
"@commercetools-frontend/constants": "22.
|
|
709
|
-
"@commercetools-frontend/l10n": "22.
|
|
863
|
+
"@commercetools-frontend/application-config": "22.16.0",
|
|
864
|
+
"@commercetools-frontend/constants": "22.16.0",
|
|
865
|
+
"@commercetools-frontend/l10n": "22.16.0",
|
|
710
866
|
"@manypkg/find-root": "2.2.1",
|
|
711
867
|
cac: "^6.7.14",
|
|
712
|
-
cosmiconfig: "
|
|
713
|
-
dotenv: "16.3.
|
|
868
|
+
cosmiconfig: "9.0.0",
|
|
869
|
+
dotenv: "16.3.2",
|
|
714
870
|
execa: "5.1.1",
|
|
715
871
|
jsonschema: "^1.4.1",
|
|
716
|
-
listr2: "
|
|
872
|
+
listr2: "8.0.1",
|
|
717
873
|
"node-fetch": "2.7.0"
|
|
718
874
|
},
|
|
719
875
|
devDependencies: {
|
|
720
876
|
"@tsconfig/node20": "20.1.2",
|
|
721
|
-
"@types/node": "20.
|
|
722
|
-
"@types/node-fetch": "2.6.2",
|
|
877
|
+
"@types/node": "20.11.5",
|
|
723
878
|
typescript: "5.2.2"
|
|
724
879
|
},
|
|
725
880
|
engines: {
|
|
726
|
-
node: ">=
|
|
881
|
+
node: ">=18",
|
|
727
882
|
npm: ">=6"
|
|
728
883
|
},
|
|
729
884
|
publishConfig: {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from "./declarations/src/index";
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVyY2V0b29scy1mcm9udGVuZC1hcHBsaWNhdGlvbi1jbGkuY2pzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuL2RlY2xhcmF0aW9ucy9zcmMvaW5kZXguZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export type {
|
|
1
|
+
export type { TStorageBucketsConfig } from "./types.js";
|