@commercetools-frontend/application-cli 1.8.1 → 2.1.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 +36 -31
- package/cli/dist/commercetools-frontend-application-cli-cli.cjs.d.ts +1 -1
- package/cli/dist/commercetools-frontend-application-cli-cli.cjs.dev.js +317 -165
- package/cli/dist/commercetools-frontend-application-cli-cli.cjs.prod.js +317 -165
- package/cli/dist/commercetools-frontend-application-cli-cli.esm.js +309 -160
- package/dist/commercetools-frontend-application-cli.cjs.d.ts +1 -1
- package/dist/commercetools-frontend-application-cli.cjs.dev.js +13 -0
- package/dist/commercetools-frontend-application-cli.cjs.prod.js +13 -0
- package/dist/commercetools-frontend-application-cli.esm.js +4 -1
- package/dist/declarations/src/constants.d.ts +34 -0
- package/dist/declarations/src/index.d.ts +3 -1
- package/dist/declarations/src/storage-buckets-config.d.ts +11 -0
- package/dist/declarations/src/types.d.ts +38 -19
- package/dist/storage-buckets-config-0b3808a3.cjs.prod.js +111 -0
- package/dist/storage-buckets-config-478b8585.cjs.dev.js +111 -0
- package/dist/storage-buckets-config-7845a091.esm.js +101 -0
- package/package.json +12 -12
- 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
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var cac = require('cac');
|
|
6
6
|
var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
|
|
7
7
|
var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
|
|
8
|
+
var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
|
|
8
9
|
var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
|
|
9
10
|
var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
|
|
10
11
|
var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
|
|
@@ -12,46 +13,59 @@ var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/ob
|
|
|
12
13
|
var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
|
|
13
14
|
var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
|
|
14
15
|
var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
|
|
15
|
-
var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
|
|
16
16
|
var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
|
|
17
17
|
var _Object$entries = require('@babel/runtime-corejs3/core-js-stable/object/entries');
|
|
18
|
-
var
|
|
19
|
-
var
|
|
20
|
-
var
|
|
18
|
+
var _Set = require('@babel/runtime-corejs3/core-js-stable/set');
|
|
19
|
+
var _flatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/flat');
|
|
20
|
+
var fs = require('node:fs');
|
|
21
|
+
var path$1 = require('node:path');
|
|
21
22
|
var listr2 = require('listr2');
|
|
22
23
|
var execa = require('execa');
|
|
23
24
|
var cosmiconfig = require('cosmiconfig');
|
|
24
25
|
var findRoot = require('@manypkg/find-root');
|
|
26
|
+
var path = require('path');
|
|
27
|
+
var _possibleConstructorReturn = require('@babel/runtime-corejs3/helpers/possibleConstructorReturn');
|
|
28
|
+
var _get = require('@babel/runtime-corejs3/helpers/get');
|
|
29
|
+
var _getPrototypeOf = require('@babel/runtime-corejs3/helpers/getPrototypeOf');
|
|
30
|
+
var _inherits = require('@babel/runtime-corejs3/helpers/inherits');
|
|
31
|
+
var _classCallCheck = require('@babel/runtime-corejs3/helpers/classCallCheck');
|
|
32
|
+
var _createClass = require('@babel/runtime-corejs3/helpers/createClass');
|
|
33
|
+
var _Reflect$construct = require('@babel/runtime-corejs3/core-js-stable/reflect/construct');
|
|
34
|
+
var fs$1 = require('fs');
|
|
25
35
|
var dotenv = require('dotenv');
|
|
26
36
|
var _findInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/find');
|
|
27
37
|
var _JSON$stringify = require('@babel/runtime-corejs3/core-js-stable/json/stringify');
|
|
28
38
|
var applicationConfig = require('@commercetools-frontend/application-config');
|
|
29
39
|
var l10n = require('@commercetools-frontend/l10n');
|
|
40
|
+
var storageBucketsConfig = require('../../dist/storage-buckets-config-0b3808a3.cjs.prod.js');
|
|
30
41
|
var _sliceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/slice');
|
|
31
|
-
var fetch = require('node-fetch');
|
|
32
42
|
var jsonschema = require('jsonschema');
|
|
43
|
+
require('ts-deepmerge');
|
|
33
44
|
|
|
34
45
|
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
35
46
|
|
|
36
47
|
var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
|
|
37
48
|
var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
|
|
49
|
+
var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
|
|
38
50
|
var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptor);
|
|
39
51
|
var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachInstanceProperty);
|
|
40
52
|
var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptors);
|
|
41
53
|
var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
|
|
42
54
|
var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
|
|
43
|
-
var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
|
|
44
55
|
var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
|
|
45
56
|
var _Object$entries__default = /*#__PURE__*/_interopDefault(_Object$entries);
|
|
46
|
-
var
|
|
57
|
+
var _Set__default = /*#__PURE__*/_interopDefault(_Set);
|
|
58
|
+
var _flatInstanceProperty__default = /*#__PURE__*/_interopDefault(_flatInstanceProperty);
|
|
47
59
|
var fs__default = /*#__PURE__*/_interopDefault(fs);
|
|
48
|
-
var path__default = /*#__PURE__*/_interopDefault(path);
|
|
60
|
+
var path__default$1 = /*#__PURE__*/_interopDefault(path$1);
|
|
49
61
|
var execa__default = /*#__PURE__*/_interopDefault(execa);
|
|
62
|
+
var path__default = /*#__PURE__*/_interopDefault(path);
|
|
63
|
+
var _Reflect$construct__default = /*#__PURE__*/_interopDefault(_Reflect$construct);
|
|
64
|
+
var fs__default$1 = /*#__PURE__*/_interopDefault(fs$1);
|
|
50
65
|
var dotenv__default = /*#__PURE__*/_interopDefault(dotenv);
|
|
51
66
|
var _findInstanceProperty__default = /*#__PURE__*/_interopDefault(_findInstanceProperty);
|
|
52
67
|
var _JSON$stringify__default = /*#__PURE__*/_interopDefault(_JSON$stringify);
|
|
53
68
|
var _sliceInstanceProperty__default = /*#__PURE__*/_interopDefault(_sliceInstanceProperty);
|
|
54
|
-
var fetch__default = /*#__PURE__*/_interopDefault(fetch);
|
|
55
69
|
|
|
56
70
|
function getApplicationDirectory(cwd) {
|
|
57
71
|
return fs__default["default"].realpathSync(cwd);
|
|
@@ -66,19 +80,167 @@ function isCI() {
|
|
|
66
80
|
return process.env.CI === true || process.env.CI === 'true';
|
|
67
81
|
}
|
|
68
82
|
|
|
69
|
-
function
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
83
|
+
function ownKeys$4(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
84
|
+
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__default["default"](_context3 = ownKeys$4(Object(t), !0)).call(_context3, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context4 = ownKeys$4(Object(t))).call(_context4, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
|
|
85
|
+
function _callSuper(_this, derived, args) {
|
|
86
|
+
function isNativeReflectConstruct() {
|
|
87
|
+
if (typeof Reflect === "undefined" || !_Reflect$construct__default["default"]) return false;
|
|
88
|
+
if (_Reflect$construct__default["default"].sham) return false;
|
|
89
|
+
if (typeof Proxy === "function") return true;
|
|
90
|
+
try {
|
|
91
|
+
return !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {}));
|
|
92
|
+
} catch (e) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
derived = _getPrototypeOf(derived);
|
|
97
|
+
return _possibleConstructorReturn(_this, isNativeReflectConstruct() ? _Reflect$construct__default["default"](derived, args || [], _getPrototypeOf(_this).constructor) : derived.apply(_this, args));
|
|
98
|
+
}
|
|
99
|
+
let StorageProvider = /*#__PURE__*/function () {
|
|
100
|
+
function StorageProvider() {
|
|
101
|
+
_classCallCheck(this, StorageProvider);
|
|
102
|
+
}
|
|
103
|
+
_createClass(StorageProvider, [{
|
|
104
|
+
key: "getBucketNamespace",
|
|
105
|
+
value:
|
|
106
|
+
/**
|
|
107
|
+
* Construct the storage bucket URL for the specific application and cloud environment.
|
|
108
|
+
*
|
|
109
|
+
* 1. Static assets are uploaded to `:bucketRegion/:prNumber?/:applicationName`
|
|
110
|
+
* 2. The application index is uploaded to `:bucketRegion/:prNumber?/:applicationName/:cloudEnvironment`
|
|
111
|
+
*
|
|
112
|
+
* This allows all cloud environments sharing the same static assets while each application's index
|
|
113
|
+
* is uploaded with different headers (e.g. CSP rules).
|
|
114
|
+
*/
|
|
115
|
+
function getBucketNamespace(prNumber) {
|
|
116
|
+
if (!prNumber) return;
|
|
117
|
+
if (prNumber === 'merchant-center-preview') return prNumber;
|
|
118
|
+
return `mc-${prNumber}`;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Construct the storage bucket URL for the specific application and cloud environment.
|
|
123
|
+
*/
|
|
124
|
+
}, {
|
|
125
|
+
key: "getAssetsBucketUrl",
|
|
126
|
+
value: function getAssetsBucketUrl(_ref) {
|
|
127
|
+
var _context;
|
|
128
|
+
let bucketProtocol = _ref.bucketProtocol,
|
|
129
|
+
bucketRegion = _ref.bucketRegion,
|
|
130
|
+
bucketNamespace = _ref.bucketNamespace,
|
|
131
|
+
applicationName = _ref.applicationName;
|
|
132
|
+
const assetsBucketUrl = _filterInstanceProperty__default["default"](_context = [bucketRegion, bucketNamespace, applicationName]).call(_context, Boolean).join('/');
|
|
133
|
+
return `${bucketProtocol}${assetsBucketUrl}`;
|
|
134
|
+
}
|
|
135
|
+
}, {
|
|
136
|
+
key: "getApplicationIndexBucketUrl",
|
|
137
|
+
value: function getApplicationIndexBucketUrl(_ref2) {
|
|
138
|
+
let bucketProtocol = _ref2.bucketProtocol,
|
|
139
|
+
bucketRegion = _ref2.bucketRegion,
|
|
140
|
+
bucketNamespace = _ref2.bucketNamespace,
|
|
141
|
+
prNumber = _ref2.prNumber,
|
|
142
|
+
applicationName = _ref2.applicationName,
|
|
143
|
+
bucketEnvironment = _ref2.bucketEnvironment;
|
|
144
|
+
const applicationAssetsBucketUrl = this.getAssetsBucketUrl({
|
|
145
|
+
bucketProtocol,
|
|
146
|
+
bucketRegion,
|
|
147
|
+
bucketNamespace,
|
|
148
|
+
prNumber,
|
|
149
|
+
applicationName
|
|
150
|
+
});
|
|
151
|
+
const applicationIndexBucketUrl = `${applicationAssetsBucketUrl}/${bucketEnvironment}`;
|
|
152
|
+
return applicationIndexBucketUrl;
|
|
153
|
+
}
|
|
154
|
+
}, {
|
|
155
|
+
key: "getCdnUrl",
|
|
156
|
+
value: function getCdnUrl(_ref3) {
|
|
157
|
+
var _context2;
|
|
158
|
+
let publicBaseUrl = _ref3.publicBaseUrl,
|
|
159
|
+
bucketRegion = _ref3.bucketRegion,
|
|
160
|
+
prNumber = _ref3.prNumber,
|
|
161
|
+
applicationName = _ref3.applicationName;
|
|
162
|
+
return _filterInstanceProperty__default["default"](_context2 = [publicBaseUrl, bucketRegion, this.getBucketNamespace(prNumber), applicationName]).call(_context2, Boolean).join('/');
|
|
163
|
+
}
|
|
164
|
+
}]);
|
|
165
|
+
return StorageProvider;
|
|
166
|
+
}();
|
|
167
|
+
let GoogleStorageProvider = /*#__PURE__*/function (_StorageProvider) {
|
|
168
|
+
_inherits(GoogleStorageProvider, _StorageProvider);
|
|
169
|
+
function GoogleStorageProvider() {
|
|
170
|
+
_classCallCheck(this, GoogleStorageProvider);
|
|
171
|
+
return _callSuper(this, GoogleStorageProvider, arguments);
|
|
172
|
+
}
|
|
173
|
+
_createClass(GoogleStorageProvider, [{
|
|
174
|
+
key: "getTag",
|
|
175
|
+
value: function getTag() {
|
|
176
|
+
return 'gs';
|
|
177
|
+
}
|
|
178
|
+
}, {
|
|
179
|
+
key: "getProtocol",
|
|
180
|
+
value: function getProtocol() {
|
|
181
|
+
return 'gs://';
|
|
182
|
+
}
|
|
183
|
+
}, {
|
|
184
|
+
key: "getPublicBaseUrl",
|
|
185
|
+
value: function getPublicBaseUrl() {
|
|
186
|
+
return 'https://storage.googleapis.com';
|
|
187
|
+
}
|
|
188
|
+
}, {
|
|
189
|
+
key: "getCdnUrl",
|
|
190
|
+
value: function getCdnUrl(config) {
|
|
191
|
+
return _get(_getPrototypeOf(GoogleStorageProvider.prototype), "getCdnUrl", this).call(this, _objectSpread$4({
|
|
192
|
+
publicBaseUrl: this.getPublicBaseUrl()
|
|
193
|
+
}, config));
|
|
194
|
+
}
|
|
195
|
+
}, {
|
|
196
|
+
key: "getAssetsBucketUrl",
|
|
197
|
+
value: function getAssetsBucketUrl(config) {
|
|
198
|
+
return _get(_getPrototypeOf(GoogleStorageProvider.prototype), "getAssetsBucketUrl", this).call(this, _objectSpread$4({
|
|
199
|
+
bucketProtocol: this.getProtocol(),
|
|
200
|
+
bucketNamespace: _get(_getPrototypeOf(GoogleStorageProvider.prototype), "getBucketNamespace", this).call(this, config.prNumber)
|
|
201
|
+
}, config));
|
|
202
|
+
}
|
|
203
|
+
}, {
|
|
204
|
+
key: "getApplicationIndexBucketUrl",
|
|
205
|
+
value: function getApplicationIndexBucketUrl(config) {
|
|
206
|
+
return _get(_getPrototypeOf(GoogleStorageProvider.prototype), "getApplicationIndexBucketUrl", this).call(this, _objectSpread$4({
|
|
207
|
+
bucketProtocol: this.getProtocol(),
|
|
208
|
+
bucketNamespace: _get(_getPrototypeOf(GoogleStorageProvider.prototype), "getBucketNamespace", this).call(this, config.prNumber)
|
|
209
|
+
}, config));
|
|
210
|
+
}
|
|
211
|
+
}]);
|
|
212
|
+
return GoogleStorageProvider;
|
|
213
|
+
}(StorageProvider); // TODO: to be implemented.
|
|
214
|
+
function getStorageProvider(storageProvider) {
|
|
215
|
+
switch (storageProvider) {
|
|
216
|
+
case 'gs':
|
|
217
|
+
return new GoogleStorageProvider();
|
|
218
|
+
default:
|
|
219
|
+
throw new Error(`Storage provider ${storageProvider} not supported`);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
let GoogleStorageUploadScriptsGenerator = /*#__PURE__*/function () {
|
|
224
|
+
function GoogleStorageUploadScriptsGenerator() {
|
|
225
|
+
_classCallCheck(this, GoogleStorageUploadScriptsGenerator);
|
|
226
|
+
}
|
|
227
|
+
_createClass(GoogleStorageUploadScriptsGenerator, [{
|
|
228
|
+
key: "getApplicationIndexUploadScript",
|
|
229
|
+
value: function getApplicationIndexUploadScript(_ref) {
|
|
230
|
+
let packageManagerName = _ref.packageManagerName,
|
|
231
|
+
bucketUrl = _ref.bucketUrl,
|
|
232
|
+
cdnUrl = _ref.cdnUrl,
|
|
233
|
+
bucketEnvironment = _ref.bucketEnvironment,
|
|
234
|
+
buildRevision = _ref.buildRevision,
|
|
235
|
+
buildNumber = _ref.buildNumber,
|
|
236
|
+
applicationIndexOutFile = _ref.applicationIndexOutFile;
|
|
237
|
+
return `
|
|
238
|
+
#!/usr/bin/env bash
|
|
78
239
|
|
|
79
240
|
set -e
|
|
80
241
|
|
|
81
|
-
echo "Uploading compiled ${applicationIndexOutFile} to bucket ${bucketUrl}"
|
|
242
|
+
echo "Uploading compiled ${applicationIndexOutFile} to Google Storage bucket ${bucketUrl}"
|
|
243
|
+
|
|
82
244
|
gcloud storage cp \\
|
|
83
245
|
"$(dirname "$0")/${applicationIndexOutFile}" \\
|
|
84
246
|
"${bucketUrl}/" \\
|
|
@@ -101,14 +263,15 @@ gcloud storage cp \\
|
|
|
101
263
|
--content-type="application/json" \\
|
|
102
264
|
--cache-control="public,max-age=0,no-transform"
|
|
103
265
|
`;
|
|
104
|
-
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
function
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
266
|
+
}
|
|
267
|
+
}, {
|
|
268
|
+
key: "getProductionBundlesUploadScript",
|
|
269
|
+
value: function getProductionBundlesUploadScript(_ref2) {
|
|
270
|
+
let bucketUrl = _ref2.bucketUrl,
|
|
271
|
+
assetsPath = _ref2.assetsPath,
|
|
272
|
+
skipMenu = _ref2.skipMenu;
|
|
273
|
+
return `
|
|
274
|
+
#!/usr/bin/env bash
|
|
112
275
|
|
|
113
276
|
set -e
|
|
114
277
|
|
|
@@ -121,7 +284,7 @@ set -e
|
|
|
121
284
|
# "valid" lifetime of an asset to be cached.
|
|
122
285
|
# 4. The '-n' will skip uploading existing files and prevents them to
|
|
123
286
|
# be overwritten
|
|
124
|
-
echo "Uploading static assets to bucket ${bucketUrl}"
|
|
287
|
+
echo "Uploading static assets to Google Storage bucket ${bucketUrl}"
|
|
125
288
|
|
|
126
289
|
gcloud storage cp \\
|
|
127
290
|
${assetsPath}/public/{*.css,*.js,*.js.map,*.png,*.html,robots.txt} \\
|
|
@@ -160,7 +323,17 @@ else
|
|
|
160
323
|
--cache-control="public,max-age=0,no-transform"
|
|
161
324
|
fi
|
|
162
325
|
`;
|
|
163
|
-
|
|
326
|
+
}
|
|
327
|
+
}]);
|
|
328
|
+
return GoogleStorageUploadScriptsGenerator;
|
|
329
|
+
}(); // TODO: To be implemented.
|
|
330
|
+
function getUploadScriptsGenerator(storageProvider) {
|
|
331
|
+
switch (storageProvider) {
|
|
332
|
+
case 'gs':
|
|
333
|
+
return new GoogleStorageUploadScriptsGenerator();
|
|
334
|
+
default:
|
|
335
|
+
throw new Error(`Storage provider ${storageProvider} not supported`);
|
|
336
|
+
}
|
|
164
337
|
}
|
|
165
338
|
|
|
166
339
|
function ownKeys$3(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -174,7 +347,7 @@ function loadDotenvFiles(_ref) {
|
|
|
174
347
|
}
|
|
175
348
|
|
|
176
349
|
// Check if the given path exists.
|
|
177
|
-
if (!fs__default["default"].existsSync(dotenvPath)) {
|
|
350
|
+
if (!fs__default$1["default"].existsSync(dotenvPath)) {
|
|
178
351
|
throw new Error(`The dotenv folder path does not exist: "${dotenvPath}".`);
|
|
179
352
|
}
|
|
180
353
|
|
|
@@ -201,74 +374,29 @@ function loadDotenvFiles(_ref) {
|
|
|
201
374
|
}
|
|
202
375
|
|
|
203
376
|
function ownKeys$2(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
204
|
-
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
205
|
-
const
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
}
|
|
209
|
-
function assertExpandedBucketEnvironmentConfig(bucketEnvironmentConfigOrBucketEnvironment) {
|
|
210
|
-
return typeof bucketEnvironmentConfigOrBucketEnvironment == 'object' && typeof bucketEnvironmentConfigOrBucketEnvironment.cloudEnvironment == 'string' && typeof bucketEnvironmentConfigOrBucketEnvironment.bucketEnvironment == 'string';
|
|
211
|
-
}
|
|
377
|
+
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context4, _context5; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context4 = ownKeys$2(Object(t), !0)).call(_context4, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context5 = ownKeys$2(Object(t))).call(_context5, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
|
|
378
|
+
const storageBucketConfigExplorer = cosmiconfig.cosmiconfig('storage-buckets', {
|
|
379
|
+
searchStrategy: 'project'
|
|
380
|
+
});
|
|
212
381
|
function writeUploadScriptFile(_ref) {
|
|
213
382
|
let fileName = _ref.fileName,
|
|
214
383
|
fileContent = _ref.fileContent,
|
|
215
384
|
filePath = _ref.filePath;
|
|
216
|
-
fs__default["default"].writeFileSync(path__default["default"].join(filePath, fileName), fileContent, {
|
|
385
|
+
fs__default["default"].writeFileSync(path__default$1["default"].join(filePath, fileName), fileContent, {
|
|
217
386
|
// Make the script executable
|
|
218
387
|
mode: 0o755,
|
|
219
388
|
encoding: 'utf8'
|
|
220
389
|
});
|
|
221
390
|
}
|
|
222
|
-
function
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
* 1. Static assets are uploaded to `:bucketRegion/:prNumber?/:applicationName`
|
|
232
|
-
* 2. The application index is uploaded to `:bucketRegion/:prNumber?/:applicationName/:cloudEnvironment`
|
|
233
|
-
*
|
|
234
|
-
* This allows all cloud environments sharing the same static assets while each application's index
|
|
235
|
-
* is uploaded with different headers (e.g. CSP rules).
|
|
236
|
-
*/
|
|
237
|
-
|
|
238
|
-
function getApplicationAssetsBucketUrl(_ref2) {
|
|
239
|
-
var _context;
|
|
240
|
-
let bucketRegion = _ref2.bucketRegion,
|
|
241
|
-
prNumber = _ref2.prNumber,
|
|
242
|
-
applicationName = _ref2.applicationName;
|
|
243
|
-
const applicationAssetsBucketUrl = _filterInstanceProperty__default["default"](_context = [`gs://${bucketRegion}`, getBucketNamespace(prNumber), applicationName]).call(_context, Boolean);
|
|
244
|
-
return applicationAssetsBucketUrl.join('/');
|
|
245
|
-
}
|
|
246
|
-
function getApplicationIndexBucketUrl(_ref3) {
|
|
247
|
-
let bucketRegion = _ref3.bucketRegion,
|
|
248
|
-
prNumber = _ref3.prNumber,
|
|
249
|
-
applicationName = _ref3.applicationName,
|
|
250
|
-
bucketEnvironment = _ref3.bucketEnvironment;
|
|
251
|
-
const applicationAssetsBucketUrl = getApplicationAssetsBucketUrl({
|
|
252
|
-
bucketRegion,
|
|
253
|
-
prNumber,
|
|
254
|
-
applicationName
|
|
255
|
-
});
|
|
256
|
-
const applicationIndexBucketUrl = `${applicationAssetsBucketUrl}/${bucketEnvironment}`;
|
|
257
|
-
return applicationIndexBucketUrl;
|
|
258
|
-
}
|
|
259
|
-
function getCdnUrl(_ref4) {
|
|
260
|
-
var _context2;
|
|
261
|
-
let bucketRegion = _ref4.bucketRegion,
|
|
262
|
-
prNumber = _ref4.prNumber,
|
|
263
|
-
applicationName = _ref4.applicationName;
|
|
264
|
-
return _filterInstanceProperty__default["default"](_context2 = [`https://storage.googleapis.com/${bucketRegion}`, getBucketNamespace(prNumber), applicationName]).call(_context2, Boolean).join('/');
|
|
265
|
-
}
|
|
266
|
-
async function compileApplicationAssets(_ref5) {
|
|
267
|
-
let cliFlags = _ref5.cliFlags,
|
|
268
|
-
bucketRegion = _ref5.bucketRegion,
|
|
269
|
-
paths = _ref5.paths;
|
|
270
|
-
const applicationAssetsUploadScriptContent = createApplicationAssetsUploadScript({
|
|
271
|
-
bucketUrl: getApplicationAssetsBucketUrl({
|
|
391
|
+
async function compileApplicationAssets(_ref2) {
|
|
392
|
+
let cliFlags = _ref2.cliFlags,
|
|
393
|
+
storageProvider = _ref2.storageProvider,
|
|
394
|
+
uploadScriptsGenerator = _ref2.uploadScriptsGenerator,
|
|
395
|
+
bucketRegion = _ref2.bucketRegion,
|
|
396
|
+
paths = _ref2.paths;
|
|
397
|
+
const applicationAssetsUploadScriptContent = uploadScriptsGenerator.getProductionBundlesUploadScript({
|
|
398
|
+
storageProvider,
|
|
399
|
+
bucketUrl: storageProvider.getAssetsBucketUrl({
|
|
272
400
|
bucketRegion,
|
|
273
401
|
prNumber: cliFlags.prNumber,
|
|
274
402
|
applicationName: cliFlags.applicationName
|
|
@@ -276,21 +404,23 @@ async function compileApplicationAssets(_ref5) {
|
|
|
276
404
|
assetsPath: paths.assetsPath,
|
|
277
405
|
skipMenu: cliFlags.skipMenu
|
|
278
406
|
});
|
|
279
|
-
const parsedApplicationAssetsUploadScriptFile = path__default["default"].parse(cliFlags.applicationAssetsUploadScriptOutFile);
|
|
407
|
+
const parsedApplicationAssetsUploadScriptFile = path__default$1["default"].parse(cliFlags.applicationAssetsUploadScriptOutFile);
|
|
280
408
|
const applicationAssetsUploadScriptFileName = `${parsedApplicationAssetsUploadScriptFile.name}-${bucketRegion}${parsedApplicationAssetsUploadScriptFile.ext}`;
|
|
281
409
|
writeUploadScriptFile({
|
|
282
410
|
fileName: applicationAssetsUploadScriptFileName,
|
|
283
411
|
fileContent: applicationAssetsUploadScriptContent,
|
|
284
|
-
filePath: paths.deploymentsPath
|
|
412
|
+
filePath: path__default$1["default"].join(paths.deploymentsPath, storageProvider.getTag())
|
|
285
413
|
});
|
|
286
414
|
}
|
|
287
|
-
async function compileEnvironmentApplicationIndexes(
|
|
288
|
-
let cliFlags =
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
415
|
+
async function compileEnvironmentApplicationIndexes(_ref3) {
|
|
416
|
+
let cliFlags = _ref3.cliFlags,
|
|
417
|
+
storageProvider = _ref3.storageProvider,
|
|
418
|
+
uploadScriptsGenerator = _ref3.uploadScriptsGenerator,
|
|
419
|
+
paths = _ref3.paths,
|
|
420
|
+
bucketRegion = _ref3.bucketRegion,
|
|
421
|
+
cloudEnvironment = _ref3.cloudEnvironment,
|
|
422
|
+
bucketEnvironment = _ref3.bucketEnvironment;
|
|
423
|
+
const cloudEnvironmentDeploymentPath = path__default$1["default"].join(paths.deploymentsPath, storageProvider.getTag(), cloudEnvironment);
|
|
294
424
|
// Ensure the folder exists
|
|
295
425
|
const createDeploymentsFolderResult = await execa__default["default"]('mkdir', ['-p', cloudEnvironmentDeploymentPath], {
|
|
296
426
|
encoding: 'utf8'
|
|
@@ -300,7 +430,7 @@ async function compileEnvironmentApplicationIndexes(_ref6) {
|
|
|
300
430
|
}
|
|
301
431
|
|
|
302
432
|
// Construct the proper CDN URL for the specific application
|
|
303
|
-
const cdnUrl = getCdnUrl({
|
|
433
|
+
const cdnUrl = storageProvider.getCdnUrl({
|
|
304
434
|
bucketRegion,
|
|
305
435
|
prNumber: cliFlags.prNumber,
|
|
306
436
|
applicationName: cliFlags.applicationName
|
|
@@ -343,9 +473,10 @@ async function compileEnvironmentApplicationIndexes(_ref6) {
|
|
|
343
473
|
if (compileResult.failed) {
|
|
344
474
|
throw new Error(compileResult.stderr);
|
|
345
475
|
}
|
|
346
|
-
const applicationIndexUploadScriptContent =
|
|
476
|
+
const applicationIndexUploadScriptContent = uploadScriptsGenerator.getApplicationIndexUploadScript({
|
|
477
|
+
storageProvider,
|
|
347
478
|
packageManagerName: cliFlags.packageManagerName,
|
|
348
|
-
bucketUrl: getApplicationIndexBucketUrl({
|
|
479
|
+
bucketUrl: storageProvider.getApplicationIndexBucketUrl({
|
|
349
480
|
bucketRegion,
|
|
350
481
|
prNumber: cliFlags.prNumber,
|
|
351
482
|
applicationName: cliFlags.applicationName,
|
|
@@ -357,8 +488,6 @@ async function compileEnvironmentApplicationIndexes(_ref6) {
|
|
|
357
488
|
buildNumber: cliFlags.buildNumber,
|
|
358
489
|
applicationIndexOutFile: cliFlags.applicationIndexOutFile
|
|
359
490
|
});
|
|
360
|
-
// Generate bash scripts to run the `gcloud storage` upload command.
|
|
361
|
-
|
|
362
491
|
writeUploadScriptFile({
|
|
363
492
|
fileName: cliFlags.applicationIndexUploadScriptOutFile,
|
|
364
493
|
fileContent: applicationIndexUploadScriptContent,
|
|
@@ -366,23 +495,22 @@ async function compileEnvironmentApplicationIndexes(_ref6) {
|
|
|
366
495
|
});
|
|
367
496
|
|
|
368
497
|
// Move the compiled `index.html` to the deployments folder of the related cloud environment.
|
|
369
|
-
|
|
370
|
-
const moveResult = await execa__default["default"]('mv', [path__default["default"].join(paths.publicAssetsPath, 'index.html'), path__default["default"].join(cloudEnvironmentDeploymentPath, cliFlags.applicationIndexOutFile)]);
|
|
498
|
+
const moveResult = await execa__default["default"]('mv', [path__default$1["default"].join(paths.publicAssetsPath, 'index.html'), path__default$1["default"].join(cloudEnvironmentDeploymentPath, cliFlags.applicationIndexOutFile)]);
|
|
371
499
|
if (moveResult.failed) {
|
|
372
500
|
throw new Error(moveResult.stderr);
|
|
373
501
|
}
|
|
374
502
|
}
|
|
375
503
|
async function command$3(cliFlags, cwd) {
|
|
376
|
-
var
|
|
504
|
+
var _context;
|
|
377
505
|
let cloudEnvironmentsGroupedByBucketRegions;
|
|
378
506
|
try {
|
|
379
507
|
// This is the list of the supported cloud environments and their related bucket location.
|
|
380
|
-
cloudEnvironmentsGroupedByBucketRegions = await
|
|
508
|
+
cloudEnvironmentsGroupedByBucketRegions = await storageBucketConfigExplorer.search();
|
|
381
509
|
} catch (e) {
|
|
382
|
-
throw new Error('Failed
|
|
510
|
+
throw new Error('Failed to load a storage bucket configuration. Create a cosmiconfig for `storage-buckets` for example `storage-buckets.config.cjs`.');
|
|
383
511
|
}
|
|
384
512
|
if (!cloudEnvironmentsGroupedByBucketRegions) {
|
|
385
|
-
throw new Error('Failed loading a
|
|
513
|
+
throw new Error('Failed loading a storage bucket configuration');
|
|
386
514
|
}
|
|
387
515
|
const applicationDirectory = getApplicationDirectory(cwd);
|
|
388
516
|
let assetsPath;
|
|
@@ -395,48 +523,70 @@ async function command$3(cliFlags, cwd) {
|
|
|
395
523
|
const paths = {
|
|
396
524
|
publicAssetsPath: resolveInApplication('public', cwd),
|
|
397
525
|
deploymentsPath: resolveInApplication('deployments', cwd),
|
|
398
|
-
dotenvPath: cliFlags.dotenvFolder && path__default["default"].join(monorepoRoot.rootDir, cliFlags.dotenvFolder),
|
|
526
|
+
dotenvPath: cliFlags.dotenvFolder && path__default$1["default"].join(monorepoRoot.rootDir, cliFlags.dotenvFolder),
|
|
399
527
|
assetsPath
|
|
400
528
|
};
|
|
401
|
-
const
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
529
|
+
const defaultStorageProviders = ['gs'];
|
|
530
|
+
const taskList = new listr2.Listr(_mapInstanceProperty__default["default"](_context = _Object$entries__default["default"](cloudEnvironmentsGroupedByBucketRegions.config)).call(_context, _ref4 => {
|
|
531
|
+
let _ref5 = _slicedToArray(_ref4, 2),
|
|
532
|
+
bucketRegion = _ref5[0],
|
|
533
|
+
bucketEnvironmentConfigs = _ref5[1];
|
|
405
534
|
return {
|
|
406
535
|
title: `Compiling for bucket region ${bucketRegion}`,
|
|
407
|
-
task: () => {
|
|
408
|
-
var
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
} else if (assertCollapsedBucketEnvironmentConfig(bucketEnvironmentConfigOrBucketEnvironment)) {
|
|
416
|
-
cloudEnvironment = bucketEnvironmentConfigOrBucketEnvironment;
|
|
417
|
-
bucketEnvironment = bucketEnvironmentConfigOrBucketEnvironment;
|
|
418
|
-
}
|
|
536
|
+
task: (_bucketRegionCtx, bucketRegionTask) => {
|
|
537
|
+
var _context2;
|
|
538
|
+
// NOTE: Application assets need to be compiled
|
|
539
|
+
// for all storage providers once per region.
|
|
540
|
+
const allStorageProvidersForBucketRegion = [...new _Set__default["default"](_flatInstanceProperty__default["default"](_context2 = _mapInstanceProperty__default["default"](bucketEnvironmentConfigs).call(bucketEnvironmentConfigs, bucketEnvironmentConfig => bucketEnvironmentConfig.storageProviders || defaultStorageProviders)).call(_context2))];
|
|
541
|
+
const allApplicationAssetTasks = _mapInstanceProperty__default["default"](allStorageProvidersForBucketRegion).call(allStorageProvidersForBucketRegion, storageProviderTag => {
|
|
542
|
+
const storageProvider = getStorageProvider(storageProviderTag);
|
|
543
|
+
const uploadScriptsGenerator = getUploadScriptsGenerator(storageProviderTag);
|
|
419
544
|
return {
|
|
420
|
-
title: `Compiling application
|
|
421
|
-
task: () =>
|
|
545
|
+
title: `Compiling application assets for '${storageProviderTag}'`,
|
|
546
|
+
task: () => compileApplicationAssets({
|
|
422
547
|
cliFlags,
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
548
|
+
storageProvider,
|
|
549
|
+
uploadScriptsGenerator,
|
|
550
|
+
bucketRegion: bucketRegion,
|
|
551
|
+
paths
|
|
427
552
|
})
|
|
428
553
|
};
|
|
429
|
-
})
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
554
|
+
});
|
|
555
|
+
const allApplicationIndexTasks = _mapInstanceProperty__default["default"](bucketEnvironmentConfigs).call(bucketEnvironmentConfigs, bucketEnvironmentConfig => {
|
|
556
|
+
const cloudEnvironment = bucketEnvironmentConfig.cloudEnvironment,
|
|
557
|
+
bucketEnvironment = bucketEnvironmentConfig.bucketEnvironment,
|
|
558
|
+
storageProviders = bucketEnvironmentConfig.storageProviders;
|
|
559
|
+
return {
|
|
560
|
+
title: `Compiling for cloud environment '${cloudEnvironment}'`,
|
|
561
|
+
task: (_storageProviderCtx, storageProviderTask) => {
|
|
562
|
+
var _context3;
|
|
563
|
+
const applicationIndexTasksForStorageProviders = _mapInstanceProperty__default["default"](_context3 = storageProviders || defaultStorageProviders).call(_context3, storageProviderTag => {
|
|
564
|
+
const storageProvider = getStorageProvider(storageProviderTag);
|
|
565
|
+
const uploadScriptsGenerator = getUploadScriptsGenerator(storageProviderTag);
|
|
566
|
+
return {
|
|
567
|
+
title: `Compiling application index for storage provider '${storageProviderTag}'`,
|
|
568
|
+
task: () => {
|
|
569
|
+
return compileEnvironmentApplicationIndexes({
|
|
570
|
+
cliFlags,
|
|
571
|
+
storageProvider,
|
|
572
|
+
uploadScriptsGenerator,
|
|
573
|
+
paths,
|
|
574
|
+
bucketRegion: bucketRegion,
|
|
575
|
+
cloudEnvironment,
|
|
576
|
+
bucketEnvironment
|
|
577
|
+
});
|
|
578
|
+
}
|
|
579
|
+
};
|
|
580
|
+
});
|
|
581
|
+
return storageProviderTask.newListr(applicationIndexTasksForStorageProviders);
|
|
582
|
+
}
|
|
583
|
+
};
|
|
584
|
+
});
|
|
585
|
+
return bucketRegionTask.newListr([...allApplicationIndexTasks, ...allApplicationAssetTasks]);
|
|
437
586
|
}
|
|
438
587
|
};
|
|
439
588
|
}), {
|
|
589
|
+
// @ts-ignore
|
|
440
590
|
renderer: isCI() ? 'verbose' : 'default'
|
|
441
591
|
});
|
|
442
592
|
await taskList.run();
|
|
@@ -527,21 +677,23 @@ const mapApplicationMenuConfigToGraqhQLMenuJson = config => {
|
|
|
527
677
|
const doesCloudEnvironmentExist = _ref => {
|
|
528
678
|
let dotenvPath = _ref.dotenvPath,
|
|
529
679
|
cloudEnvironment = _ref.cloudEnvironment;
|
|
530
|
-
return fs__default["default"].existsSync(path__default["default"].join(dotenvPath ?? '', cloudEnvironment));
|
|
680
|
+
return fs__default$1["default"].existsSync(path__default["default"].join(dotenvPath ?? '', `.env.${cloudEnvironment}`));
|
|
531
681
|
};
|
|
532
682
|
async function command$2(cliFlags, cwd) {
|
|
533
683
|
const applicationDirectory = getApplicationDirectory(cwd);
|
|
534
684
|
const monorepoRoot = findRoot.findRootSync(cwd);
|
|
535
685
|
const dotenvPath = cliFlags.dotenvFolder && path__default["default"].join(monorepoRoot.rootDir, cliFlags.dotenvFolder);
|
|
686
|
+
|
|
687
|
+
// The env itself is not important for the menu. However, the application config
|
|
688
|
+
// uses environment placeholders and therefore we need to provide the variables for it.
|
|
689
|
+
// TODO: Remove after all repositories migrated to NCR.
|
|
690
|
+
const cloudEnvironment = doesCloudEnvironmentExist({
|
|
691
|
+
dotenvPath,
|
|
692
|
+
cloudEnvironment: storageBucketsConfig.clusterContexts['ctp_staging_gcp_europe-west1_v1']
|
|
693
|
+
}) ? storageBucketsConfig.clusterContexts['ctp_staging_gcp_europe-west1_v1'] : 'ctp-gcp-staging';
|
|
536
694
|
const processEnv = _objectSpread$1(_objectSpread$1({}, loadDotenvFiles({
|
|
537
695
|
dotenvPath,
|
|
538
|
-
|
|
539
|
-
// uses environment placeholders and therefore we need to provide the variables for it.
|
|
540
|
-
// TODO: Remove after all repositories migrated to NCR.
|
|
541
|
-
cloudEnvironment: doesCloudEnvironmentExist({
|
|
542
|
-
dotenvPath,
|
|
543
|
-
cloudEnvironment: '.env.ctp_staging_gcp_europe-west1_v1'
|
|
544
|
-
}) ? 'ctp_staging_gcp_europe-west1_v1' : 'ctp-gcp-staging'
|
|
696
|
+
cloudEnvironment
|
|
545
697
|
})), {}, {
|
|
546
698
|
// Again, make sure that the environment is "development", otherwise
|
|
547
699
|
// the menu config won't be available.
|
|
@@ -557,7 +709,7 @@ async function command$2(cliFlags, cwd) {
|
|
|
557
709
|
});
|
|
558
710
|
const applicationMenu = mapApplicationMenuConfigToGraqhQLMenuJson(applicationRuntimeConfig);
|
|
559
711
|
const formattedJson = _JSON$stringify__default["default"](applicationMenu, null, 2);
|
|
560
|
-
fs__default["default"].writeFileSync(path__default["default"].join(applicationDirectory, 'menu.json'), formattedJson, {
|
|
712
|
+
fs__default$1["default"].writeFileSync(path__default["default"].join(applicationDirectory, 'menu.json'), formattedJson, {
|
|
561
713
|
encoding: 'utf8'
|
|
562
714
|
});
|
|
563
715
|
}
|
|
@@ -569,7 +721,7 @@ async function command$1(cliFlags) {
|
|
|
569
721
|
var _context, _context2;
|
|
570
722
|
// The last build's JSON becomes the first rollback
|
|
571
723
|
// while all previous rollbacks remain but are sliced.
|
|
572
|
-
const lastVersionResponse = await
|
|
724
|
+
const lastVersionResponse = await fetch(cliFlags.versionUrl);
|
|
573
725
|
const lastVersionJson = await lastVersionResponse.json();
|
|
574
726
|
const previousBuild = lastVersionJson && {
|
|
575
727
|
buildNumber: lastVersionJson.buildNumber,
|
|
@@ -590,7 +742,7 @@ async function command$1(cliFlags) {
|
|
|
590
742
|
// Logging to stdout which is from where it will be picked
|
|
591
743
|
// up by the caller (a bash script).
|
|
592
744
|
if (cliFlags.outFile) {
|
|
593
|
-
fs__default["default"].writeFileSync(cliFlags.outFile, formattedJson, {
|
|
745
|
+
fs__default$1["default"].writeFileSync(cliFlags.outFile, formattedJson, {
|
|
594
746
|
encoding: 'utf8'
|
|
595
747
|
});
|
|
596
748
|
} else {
|
|
@@ -711,14 +863,14 @@ async function command(cliFlags) {
|
|
|
711
863
|
const menuJsonPath = cliFlags.inputFile;
|
|
712
864
|
const isAppbarMenu = cliFlags.navigation === 'top';
|
|
713
865
|
if (!menuJsonPath) throw new Error(`--input-file cannot be empty. please provide the path of compiled menu.json`);
|
|
714
|
-
if (!fs__default["default"].existsSync(menuJsonPath)) throw new Error(`The menu.json file doesn't exist: ${menuJsonPath}`);
|
|
715
|
-
const menuJson = fs__default["default"].readFileSync(menuJsonPath, 'utf-8');
|
|
866
|
+
if (!fs__default$1["default"].existsSync(menuJsonPath)) throw new Error(`The menu.json file doesn't exist: ${menuJsonPath}`);
|
|
867
|
+
const menuJson = fs__default$1["default"].readFileSync(menuJsonPath, 'utf-8');
|
|
716
868
|
return validateMenu(JSON.parse(menuJson), isAppbarMenu ? appbarMenuSchema : navbarMenuSchema);
|
|
717
869
|
}
|
|
718
870
|
|
|
719
871
|
var pkgJson = {
|
|
720
872
|
name: "@commercetools-frontend/application-cli",
|
|
721
|
-
version: "1.
|
|
873
|
+
version: "2.1.0",
|
|
722
874
|
description: "Internal CLI to manage Merchant Center application deployments across various environments.",
|
|
723
875
|
keywords: [
|
|
724
876
|
"commercetools",
|
|
@@ -741,28 +893,28 @@ var pkgJson = {
|
|
|
741
893
|
},
|
|
742
894
|
dependencies: {
|
|
743
895
|
"@babel/core": "^7.22.11",
|
|
744
|
-
"@babel/runtime": "^7.21.0",
|
|
745
896
|
"@babel/runtime-corejs3": "^7.21.0",
|
|
746
|
-
"@
|
|
747
|
-
"@commercetools-frontend/
|
|
748
|
-
"@commercetools-frontend/
|
|
897
|
+
"@babel/runtime": "^7.21.0",
|
|
898
|
+
"@commercetools-frontend/application-config": "22.16.0",
|
|
899
|
+
"@commercetools-frontend/constants": "22.16.0",
|
|
900
|
+
"@commercetools-frontend/l10n": "22.16.0",
|
|
749
901
|
"@manypkg/find-root": "2.2.1",
|
|
750
902
|
cac: "^6.7.14",
|
|
751
|
-
cosmiconfig: "
|
|
752
|
-
dotenv: "16.3.
|
|
903
|
+
cosmiconfig: "9.0.0",
|
|
904
|
+
dotenv: "16.3.2",
|
|
753
905
|
execa: "5.1.1",
|
|
754
906
|
jsonschema: "^1.4.1",
|
|
755
|
-
listr2: "
|
|
756
|
-
"node-fetch": "2.7.0"
|
|
907
|
+
listr2: "8.0.1",
|
|
908
|
+
"node-fetch": "2.7.0",
|
|
909
|
+
"ts-deepmerge": "7.0.0"
|
|
757
910
|
},
|
|
758
911
|
devDependencies: {
|
|
759
912
|
"@tsconfig/node20": "20.1.2",
|
|
760
|
-
"@types/node": "20.
|
|
761
|
-
"@types/node-fetch": "2.6.2",
|
|
913
|
+
"@types/node": "20.11.5",
|
|
762
914
|
typescript: "5.2.2"
|
|
763
915
|
},
|
|
764
916
|
engines: {
|
|
765
|
-
node: ">=
|
|
917
|
+
node: ">=18",
|
|
766
918
|
npm: ">=6"
|
|
767
919
|
},
|
|
768
920
|
publishConfig: {
|