@commercetools-frontend/application-cli 2.1.2 → 2.3.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 +340 -91
- package/cli/dist/commercetools-frontend-application-cli-cli.cjs.prod.js +340 -91
- package/cli/dist/commercetools-frontend-application-cli-cli.esm.js +339 -90
- package/dist/commercetools-frontend-application-cli.cjs.dev.js +5 -1
- package/dist/commercetools-frontend-application-cli.cjs.prod.js +5 -1
- package/dist/commercetools-frontend-application-cli.esm.js +2 -1
- package/dist/declarations/src/constants.d.ts +13 -0
- package/dist/declarations/src/storage-buckets-config.d.ts +3 -2
- package/dist/declarations/src/types.d.ts +20 -11
- package/dist/{storage-buckets-config-0b3808a3.cjs.prod.js → storage-buckets-config-28a1d76e.cjs.dev.js} +69 -2
- package/dist/{storage-buckets-config-7845a091.esm.js → storage-buckets-config-705b6341.esm.js} +66 -3
- package/dist/{storage-buckets-config-478b8585.cjs.dev.js → storage-buckets-config-e3ea6d6f.cjs.prod.js} +69 -2
- 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-705b6341.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$1 = /*#__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$1, {
|
|
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$1)[_bucketRegion$1] = 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,94 @@ let StorageProvider = /*#__PURE__*/function () {
|
|
|
96
110
|
key: "getAssetsBucketUrl",
|
|
97
111
|
value: function getAssetsBucketUrl(_ref) {
|
|
98
112
|
var _context;
|
|
99
|
-
let
|
|
100
|
-
|
|
113
|
+
let applicationName = _ref.applicationName,
|
|
114
|
+
bucketProtocol = _ref.bucketProtocol,
|
|
101
115
|
bucketNamespace = _ref.bucketNamespace,
|
|
102
|
-
|
|
103
|
-
|
|
116
|
+
tag = _ref.tag;
|
|
117
|
+
if (!_classPrivateFieldLooseBase(this, _bucketRegion$1)[_bucketRegion$1]) {
|
|
118
|
+
throw new Error("'bucketRegion' is not defined. Required to determine 'assetsBucketUrl'.");
|
|
119
|
+
}
|
|
120
|
+
const storageProvider = storageProviders[tag];
|
|
121
|
+
const assetBuketUrl = storageProvider.urls.bucket?.[_classPrivateFieldLooseBase(this, _bucketRegion$1)[_bucketRegion$1]] ?? _classPrivateFieldLooseBase(this, _bucketRegion$1)[_bucketRegion$1];
|
|
122
|
+
const assetsBucketUrl = _filterInstanceProperty(_context = [assetBuketUrl, bucketNamespace, applicationName]).call(_context, Boolean).join('/');
|
|
104
123
|
return `${bucketProtocol}${assetsBucketUrl}`;
|
|
105
124
|
}
|
|
106
125
|
}, {
|
|
107
126
|
key: "getApplicationIndexBucketUrl",
|
|
108
127
|
value: function getApplicationIndexBucketUrl(_ref2) {
|
|
109
|
-
let
|
|
110
|
-
bucketRegion = _ref2.bucketRegion,
|
|
111
|
-
bucketNamespace = _ref2.bucketNamespace,
|
|
128
|
+
let tag = _ref2.tag,
|
|
112
129
|
prNumber = _ref2.prNumber,
|
|
113
130
|
applicationName = _ref2.applicationName,
|
|
114
|
-
|
|
131
|
+
bucketProtocol = _ref2.bucketProtocol,
|
|
132
|
+
bucketNamespace = _ref2.bucketNamespace;
|
|
115
133
|
const applicationAssetsBucketUrl = this.getAssetsBucketUrl({
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
bucketNamespace,
|
|
134
|
+
tag,
|
|
135
|
+
applicationName,
|
|
119
136
|
prNumber,
|
|
120
|
-
|
|
137
|
+
bucketProtocol,
|
|
138
|
+
bucketNamespace
|
|
121
139
|
});
|
|
122
|
-
const applicationIndexBucketUrl = `${applicationAssetsBucketUrl}/${
|
|
140
|
+
const applicationIndexBucketUrl = `${applicationAssetsBucketUrl}/${_classPrivateFieldLooseBase(this, _bucketEnvironment$1)[_bucketEnvironment$1]}`;
|
|
123
141
|
return applicationIndexBucketUrl;
|
|
124
142
|
}
|
|
125
143
|
}, {
|
|
126
144
|
key: "getCdnUrl",
|
|
127
145
|
value: function getCdnUrl(_ref3) {
|
|
128
146
|
var _context2;
|
|
129
|
-
let
|
|
130
|
-
bucketRegion = _ref3.bucketRegion,
|
|
147
|
+
let applicationName = _ref3.applicationName,
|
|
131
148
|
prNumber = _ref3.prNumber,
|
|
132
|
-
|
|
133
|
-
|
|
149
|
+
publicBaseUrl = _ref3.publicBaseUrl,
|
|
150
|
+
excludeBucketRegion = _ref3.excludeBucketRegion;
|
|
151
|
+
return _filterInstanceProperty(_context2 = [publicBaseUrl, excludeBucketRegion ? null : _classPrivateFieldLooseBase(this, _bucketRegion$1)[_bucketRegion$1], this.getBucketNamespace(prNumber), applicationName]).call(_context2, Boolean).join('/');
|
|
152
|
+
}
|
|
153
|
+
}, {
|
|
154
|
+
key: "getPublicBaseUrl",
|
|
155
|
+
value: function getPublicBaseUrl(tag) {
|
|
156
|
+
if (!_classPrivateFieldLooseBase(this, _bucketEnvironment$1)[_bucketEnvironment$1]) {
|
|
157
|
+
throw new Error("'bucketEnvironment' is not defined. Required to determine 'publicBaseUrl'.");
|
|
158
|
+
}
|
|
159
|
+
const storageProvider = storageProviders[tag];
|
|
160
|
+
const publicBaseUrl = storageProvider.urls.public[_classPrivateFieldLooseBase(this, _bucketEnvironment$1)[_bucketEnvironment$1]] ?? storageProvider.urls.public.default;
|
|
161
|
+
return publicBaseUrl;
|
|
134
162
|
}
|
|
135
163
|
}]);
|
|
136
164
|
return StorageProvider;
|
|
137
165
|
}();
|
|
166
|
+
var _bucketRegion2$1 = /*#__PURE__*/_classPrivateFieldLooseKey("bucketRegion");
|
|
167
|
+
var _bucketEnvironment2$1 = /*#__PURE__*/_classPrivateFieldLooseKey("bucketEnvironment");
|
|
138
168
|
let GoogleStorageProvider = /*#__PURE__*/function (_StorageProvider) {
|
|
139
169
|
_inherits(GoogleStorageProvider, _StorageProvider);
|
|
140
|
-
function GoogleStorageProvider() {
|
|
170
|
+
function GoogleStorageProvider(config) {
|
|
171
|
+
var _this;
|
|
141
172
|
_classCallCheck(this, GoogleStorageProvider);
|
|
142
|
-
|
|
173
|
+
_this = _callSuper(this, GoogleStorageProvider, [config]);
|
|
174
|
+
_Object$defineProperty(_assertThisInitialized(_this), _bucketRegion2$1, {
|
|
175
|
+
writable: true,
|
|
176
|
+
value: void 0
|
|
177
|
+
});
|
|
178
|
+
_Object$defineProperty(_assertThisInitialized(_this), _bucketEnvironment2$1, {
|
|
179
|
+
writable: true,
|
|
180
|
+
value: void 0
|
|
181
|
+
});
|
|
182
|
+
_classPrivateFieldLooseBase(_assertThisInitialized(_this), _bucketRegion2$1)[_bucketRegion2$1] = config.bucketRegion;
|
|
183
|
+
_classPrivateFieldLooseBase(_assertThisInitialized(_this), _bucketEnvironment2$1)[_bucketEnvironment2$1] = config.bucketEnvironment;
|
|
184
|
+
return _this;
|
|
143
185
|
}
|
|
144
186
|
_createClass(GoogleStorageProvider, [{
|
|
145
187
|
key: "getTag",
|
|
146
188
|
value: function getTag() {
|
|
147
189
|
return 'gs';
|
|
148
190
|
}
|
|
191
|
+
}, {
|
|
192
|
+
key: "getBucketRegion",
|
|
193
|
+
value: function getBucketRegion() {
|
|
194
|
+
return _classPrivateFieldLooseBase(this, _bucketRegion2$1)[_bucketRegion2$1];
|
|
195
|
+
}
|
|
196
|
+
}, {
|
|
197
|
+
key: "getBucketEnvironment",
|
|
198
|
+
value: function getBucketEnvironment() {
|
|
199
|
+
return _classPrivateFieldLooseBase(this, _bucketEnvironment2$1)[_bucketEnvironment2$1];
|
|
200
|
+
}
|
|
149
201
|
}, {
|
|
150
202
|
key: "getProtocol",
|
|
151
203
|
value: function getProtocol() {
|
|
@@ -154,7 +206,7 @@ let GoogleStorageProvider = /*#__PURE__*/function (_StorageProvider) {
|
|
|
154
206
|
}, {
|
|
155
207
|
key: "getPublicBaseUrl",
|
|
156
208
|
value: function getPublicBaseUrl() {
|
|
157
|
-
return
|
|
209
|
+
return _get(_getPrototypeOf(GoogleStorageProvider.prototype), "getPublicBaseUrl", this).call(this, this.getTag());
|
|
158
210
|
}
|
|
159
211
|
}, {
|
|
160
212
|
key: "getCdnUrl",
|
|
@@ -167,6 +219,7 @@ let GoogleStorageProvider = /*#__PURE__*/function (_StorageProvider) {
|
|
|
167
219
|
key: "getAssetsBucketUrl",
|
|
168
220
|
value: function getAssetsBucketUrl(config) {
|
|
169
221
|
return _get(_getPrototypeOf(GoogleStorageProvider.prototype), "getAssetsBucketUrl", this).call(this, _objectSpread$4({
|
|
222
|
+
tag: this.getTag(),
|
|
170
223
|
bucketProtocol: this.getProtocol(),
|
|
171
224
|
bucketNamespace: _get(_getPrototypeOf(GoogleStorageProvider.prototype), "getBucketNamespace", this).call(this, config.prNumber)
|
|
172
225
|
}, config));
|
|
@@ -175,25 +228,114 @@ let GoogleStorageProvider = /*#__PURE__*/function (_StorageProvider) {
|
|
|
175
228
|
key: "getApplicationIndexBucketUrl",
|
|
176
229
|
value: function getApplicationIndexBucketUrl(config) {
|
|
177
230
|
return _get(_getPrototypeOf(GoogleStorageProvider.prototype), "getApplicationIndexBucketUrl", this).call(this, _objectSpread$4({
|
|
231
|
+
tag: this.getTag(),
|
|
178
232
|
bucketProtocol: this.getProtocol(),
|
|
179
233
|
bucketNamespace: _get(_getPrototypeOf(GoogleStorageProvider.prototype), "getBucketNamespace", this).call(this, config.prNumber)
|
|
180
234
|
}, config));
|
|
181
235
|
}
|
|
182
236
|
}]);
|
|
183
237
|
return GoogleStorageProvider;
|
|
184
|
-
}(StorageProvider);
|
|
185
|
-
|
|
238
|
+
}(StorageProvider);
|
|
239
|
+
var _bucketRegion3 = /*#__PURE__*/_classPrivateFieldLooseKey("bucketRegion");
|
|
240
|
+
var _bucketEnvironment3 = /*#__PURE__*/_classPrivateFieldLooseKey("bucketEnvironment");
|
|
241
|
+
let AwsStorageProvider = /*#__PURE__*/function (_StorageProvider2) {
|
|
242
|
+
_inherits(AwsStorageProvider, _StorageProvider2);
|
|
243
|
+
function AwsStorageProvider(config) {
|
|
244
|
+
var _this2;
|
|
245
|
+
_classCallCheck(this, AwsStorageProvider);
|
|
246
|
+
_this2 = _callSuper(this, AwsStorageProvider, [config]);
|
|
247
|
+
_Object$defineProperty(_assertThisInitialized(_this2), _bucketRegion3, {
|
|
248
|
+
writable: true,
|
|
249
|
+
value: void 0
|
|
250
|
+
});
|
|
251
|
+
_Object$defineProperty(_assertThisInitialized(_this2), _bucketEnvironment3, {
|
|
252
|
+
writable: true,
|
|
253
|
+
value: void 0
|
|
254
|
+
});
|
|
255
|
+
_classPrivateFieldLooseBase(_assertThisInitialized(_this2), _bucketRegion3)[_bucketRegion3] = config.bucketRegion;
|
|
256
|
+
_classPrivateFieldLooseBase(_assertThisInitialized(_this2), _bucketEnvironment3)[_bucketEnvironment3] = config.bucketEnvironment;
|
|
257
|
+
return _this2;
|
|
258
|
+
}
|
|
259
|
+
_createClass(AwsStorageProvider, [{
|
|
260
|
+
key: "getTag",
|
|
261
|
+
value: function getTag() {
|
|
262
|
+
return 's3';
|
|
263
|
+
}
|
|
264
|
+
}, {
|
|
265
|
+
key: "getBucketRegion",
|
|
266
|
+
value: function getBucketRegion() {
|
|
267
|
+
return _classPrivateFieldLooseBase(this, _bucketRegion3)[_bucketRegion3];
|
|
268
|
+
}
|
|
269
|
+
}, {
|
|
270
|
+
key: "getBucketEnvironment",
|
|
271
|
+
value: function getBucketEnvironment() {
|
|
272
|
+
return _classPrivateFieldLooseBase(this, _bucketEnvironment3)[_bucketEnvironment3];
|
|
273
|
+
}
|
|
274
|
+
}, {
|
|
275
|
+
key: "getProtocol",
|
|
276
|
+
value: function getProtocol() {
|
|
277
|
+
return 's3://';
|
|
278
|
+
}
|
|
279
|
+
}, {
|
|
280
|
+
key: "getPublicBaseUrl",
|
|
281
|
+
value: function getPublicBaseUrl() {
|
|
282
|
+
return _get(_getPrototypeOf(AwsStorageProvider.prototype), "getPublicBaseUrl", this).call(this, this.getTag());
|
|
283
|
+
}
|
|
284
|
+
}, {
|
|
285
|
+
key: "getCdnUrl",
|
|
286
|
+
value: function getCdnUrl(config) {
|
|
287
|
+
return _get(_getPrototypeOf(AwsStorageProvider.prototype), "getCdnUrl", this).call(this, _objectSpread$4({
|
|
288
|
+
publicBaseUrl: this.getPublicBaseUrl(),
|
|
289
|
+
excludeBucketRegion: true
|
|
290
|
+
}, config));
|
|
291
|
+
}
|
|
292
|
+
}, {
|
|
293
|
+
key: "getAssetsBucketUrl",
|
|
294
|
+
value: function getAssetsBucketUrl(config) {
|
|
295
|
+
return _get(_getPrototypeOf(AwsStorageProvider.prototype), "getAssetsBucketUrl", this).call(this, _objectSpread$4({
|
|
296
|
+
tag: this.getTag(),
|
|
297
|
+
bucketProtocol: this.getProtocol(),
|
|
298
|
+
bucketNamespace: _get(_getPrototypeOf(AwsStorageProvider.prototype), "getBucketNamespace", this).call(this, config.prNumber)
|
|
299
|
+
}, config));
|
|
300
|
+
}
|
|
301
|
+
}, {
|
|
302
|
+
key: "getApplicationIndexBucketUrl",
|
|
303
|
+
value: function getApplicationIndexBucketUrl(config) {
|
|
304
|
+
return _get(_getPrototypeOf(AwsStorageProvider.prototype), "getApplicationIndexBucketUrl", this).call(this, _objectSpread$4({
|
|
305
|
+
tag: this.getTag(),
|
|
306
|
+
bucketProtocol: this.getProtocol(),
|
|
307
|
+
bucketNamespace: _get(_getPrototypeOf(AwsStorageProvider.prototype), "getBucketNamespace", this).call(this, config.prNumber)
|
|
308
|
+
}, config));
|
|
309
|
+
}
|
|
310
|
+
}]);
|
|
311
|
+
return AwsStorageProvider;
|
|
312
|
+
}(StorageProvider);
|
|
313
|
+
function getStorageProvider(storageProvider, config) {
|
|
186
314
|
switch (storageProvider) {
|
|
187
315
|
case 'gs':
|
|
188
|
-
return new GoogleStorageProvider();
|
|
316
|
+
return new GoogleStorageProvider(config);
|
|
317
|
+
case 's3':
|
|
318
|
+
return new AwsStorageProvider(config);
|
|
189
319
|
default:
|
|
190
320
|
throw new Error(`Storage provider ${storageProvider} not supported`);
|
|
191
321
|
}
|
|
192
322
|
}
|
|
193
323
|
|
|
324
|
+
var _bucketEnvironment = /*#__PURE__*/_classPrivateFieldLooseKey("bucketEnvironment");
|
|
325
|
+
var _bucketRegion = /*#__PURE__*/_classPrivateFieldLooseKey("bucketRegion");
|
|
194
326
|
let GoogleStorageUploadScriptsGenerator = /*#__PURE__*/function () {
|
|
195
|
-
function GoogleStorageUploadScriptsGenerator() {
|
|
327
|
+
function GoogleStorageUploadScriptsGenerator(config) {
|
|
196
328
|
_classCallCheck(this, GoogleStorageUploadScriptsGenerator);
|
|
329
|
+
_Object$defineProperty(this, _bucketEnvironment, {
|
|
330
|
+
writable: true,
|
|
331
|
+
value: void 0
|
|
332
|
+
});
|
|
333
|
+
_Object$defineProperty(this, _bucketRegion, {
|
|
334
|
+
writable: true,
|
|
335
|
+
value: void 0
|
|
336
|
+
});
|
|
337
|
+
_classPrivateFieldLooseBase(this, _bucketRegion)[_bucketRegion] = config.bucketRegion;
|
|
338
|
+
_classPrivateFieldLooseBase(this, _bucketEnvironment)[_bucketEnvironment] = config.bucketEnvironment;
|
|
197
339
|
}
|
|
198
340
|
_createClass(GoogleStorageUploadScriptsGenerator, [{
|
|
199
341
|
key: "getApplicationIndexUploadScript",
|
|
@@ -201,10 +343,12 @@ let GoogleStorageUploadScriptsGenerator = /*#__PURE__*/function () {
|
|
|
201
343
|
let packageManagerName = _ref.packageManagerName,
|
|
202
344
|
bucketUrl = _ref.bucketUrl,
|
|
203
345
|
cdnUrl = _ref.cdnUrl,
|
|
204
|
-
bucketEnvironment = _ref.bucketEnvironment,
|
|
205
346
|
buildRevision = _ref.buildRevision,
|
|
206
347
|
buildNumber = _ref.buildNumber,
|
|
207
348
|
applicationIndexOutFile = _ref.applicationIndexOutFile;
|
|
349
|
+
if (!_classPrivateFieldLooseBase(this, _bucketEnvironment)[_bucketEnvironment]) {
|
|
350
|
+
throw new Error("Missing 'bucketEnvironment' when generating application index.");
|
|
351
|
+
}
|
|
208
352
|
return `
|
|
209
353
|
#!/usr/bin/env bash
|
|
210
354
|
|
|
@@ -222,7 +366,7 @@ gcloud storage cp \\
|
|
|
222
366
|
echo "Creating version.json and uploading it to bucket ${bucketUrl}"
|
|
223
367
|
|
|
224
368
|
NODE_ENV=production ${packageManagerName} application-cli create-version \\
|
|
225
|
-
--version-url=${cdnUrl}/${
|
|
369
|
+
--version-url=${cdnUrl}/${_classPrivateFieldLooseBase(this, _bucketEnvironment)[_bucketEnvironment]}/version.json \\
|
|
226
370
|
--build-revision=${buildRevision} \\
|
|
227
371
|
--build-number=${buildNumber} \\
|
|
228
372
|
--out-file=$(dirname "$0")/version.json
|
|
@@ -308,11 +452,130 @@ fi
|
|
|
308
452
|
}
|
|
309
453
|
}]);
|
|
310
454
|
return GoogleStorageUploadScriptsGenerator;
|
|
311
|
-
}();
|
|
312
|
-
|
|
455
|
+
}();
|
|
456
|
+
var _bucketEnvironment2 = /*#__PURE__*/_classPrivateFieldLooseKey("bucketEnvironment");
|
|
457
|
+
var _bucketRegion2 = /*#__PURE__*/_classPrivateFieldLooseKey("bucketRegion");
|
|
458
|
+
let AwsStorageUploadScriptsGenerator = /*#__PURE__*/function () {
|
|
459
|
+
function AwsStorageUploadScriptsGenerator(config) {
|
|
460
|
+
_classCallCheck(this, AwsStorageUploadScriptsGenerator);
|
|
461
|
+
_Object$defineProperty(this, _bucketEnvironment2, {
|
|
462
|
+
writable: true,
|
|
463
|
+
value: void 0
|
|
464
|
+
});
|
|
465
|
+
_Object$defineProperty(this, _bucketRegion2, {
|
|
466
|
+
writable: true,
|
|
467
|
+
value: void 0
|
|
468
|
+
});
|
|
469
|
+
_classPrivateFieldLooseBase(this, _bucketRegion2)[_bucketRegion2] = config.bucketRegion;
|
|
470
|
+
_classPrivateFieldLooseBase(this, _bucketEnvironment2)[_bucketEnvironment2] = config.bucketEnvironment;
|
|
471
|
+
}
|
|
472
|
+
_createClass(AwsStorageUploadScriptsGenerator, [{
|
|
473
|
+
key: "getApplicationIndexUploadScript",
|
|
474
|
+
value: function getApplicationIndexUploadScript(_ref3) {
|
|
475
|
+
let packageManagerName = _ref3.packageManagerName,
|
|
476
|
+
bucketUrl = _ref3.bucketUrl,
|
|
477
|
+
cdnUrl = _ref3.cdnUrl,
|
|
478
|
+
buildRevision = _ref3.buildRevision,
|
|
479
|
+
buildNumber = _ref3.buildNumber,
|
|
480
|
+
applicationIndexOutFile = _ref3.applicationIndexOutFile;
|
|
481
|
+
return `
|
|
482
|
+
#!/usr/bin/env bash
|
|
483
|
+
|
|
484
|
+
echo "Uploading static assets to Amazon S3 bucket ${bucketUrl}"
|
|
485
|
+
|
|
486
|
+
set -e
|
|
487
|
+
|
|
488
|
+
aws s3 cp \\
|
|
489
|
+
"$(dirname "$0")/${applicationIndexOutFile}" \\
|
|
490
|
+
"${bucketUrl}/" \\
|
|
491
|
+
--content-type="text/html" \\
|
|
492
|
+
--cache-control="public,max-age=0,no-transform" \\
|
|
493
|
+
--profile ${_classPrivateFieldLooseBase(this, _bucketRegion2)[_bucketRegion2]}
|
|
494
|
+
|
|
495
|
+
echo "Creating version.json and uploading it to bucket ${bucketUrl}"
|
|
496
|
+
|
|
497
|
+
NODE_ENV=production ${packageManagerName} application-cli create-version \\
|
|
498
|
+
--version-url=${cdnUrl}/${_classPrivateFieldLooseBase(this, _bucketRegion2)[_bucketRegion2]}/version.json \\
|
|
499
|
+
--build-revision=${buildRevision} \\
|
|
500
|
+
--build-number=${buildNumber} \\
|
|
501
|
+
--out-file=$(dirname "$0")/version.json
|
|
502
|
+
|
|
503
|
+
aws s3 cp \\
|
|
504
|
+
"$(dirname "$0")/version.json" \\
|
|
505
|
+
"${bucketUrl}/" \\
|
|
506
|
+
--content-type="application/json" \\
|
|
507
|
+
--cache-control="public,max-age=0,no-transform" \\
|
|
508
|
+
--profile ${_classPrivateFieldLooseBase(this, _bucketRegion2)[_bucketRegion2]}
|
|
509
|
+
`;
|
|
510
|
+
}
|
|
511
|
+
}, {
|
|
512
|
+
key: "getProductionBundlesUploadScript",
|
|
513
|
+
value: function getProductionBundlesUploadScript(_ref4) {
|
|
514
|
+
let bucketUrl = _ref4.bucketUrl,
|
|
515
|
+
assetsPath = _ref4.assetsPath,
|
|
516
|
+
skipMenu = _ref4.skipMenu;
|
|
517
|
+
return `
|
|
518
|
+
#!/usr/bin/env bash
|
|
519
|
+
|
|
520
|
+
echo "Uploading static assets to Amazon S3 bucket ${bucketUrl}"
|
|
521
|
+
|
|
522
|
+
set -e
|
|
523
|
+
|
|
524
|
+
# NOTE:
|
|
525
|
+
# The sync command on the AWS CLI is different to the -n option on the gcloud CLI.
|
|
526
|
+
# Sync will only upload files that are not already in the bucket, but it will skip existing ones
|
|
527
|
+
# that have been changed locally.
|
|
528
|
+
# The -n option on the gcloud CLI will skip uploading existing files and prevents them to be overwritten.
|
|
529
|
+
# https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html
|
|
530
|
+
# https://cloud.google.com/sdk/gcloud/reference/storage/cp
|
|
531
|
+
#
|
|
532
|
+
# Compression (gzip) is enabled on CloudFront by default. Hence compression does happing while uploading.
|
|
533
|
+
# https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html#compressed-content-cloudfront-configuring
|
|
534
|
+
aws s3 sync ${assetsPath}/public \\
|
|
535
|
+
"${bucketUrl}" \\
|
|
536
|
+
--exclude "*" \\
|
|
537
|
+
--include "*.css" \\
|
|
538
|
+
--include "*.js" \\
|
|
539
|
+
--include "*.js.map" \\
|
|
540
|
+
--include "*.html" \\
|
|
541
|
+
--cache-control="public,max-age=31536000,no-transform" \\
|
|
542
|
+
--profile ${_classPrivateFieldLooseBase(this, _bucketRegion2)[_bucketRegion2]}
|
|
543
|
+
|
|
544
|
+
# We need to upload the PNG and HTML files separately because we want them
|
|
545
|
+
# to be able to overwrite the existing files (if any). For instance, the
|
|
546
|
+
# file or the favicons.
|
|
547
|
+
aws s3 cp ${assetsPath}/public \\
|
|
548
|
+
"${bucketUrl}" \\
|
|
549
|
+
--recursive \\
|
|
550
|
+
--exclude "*" \\
|
|
551
|
+
--include "*.png" \\
|
|
552
|
+
--include "robots.txt" \\
|
|
553
|
+
--cache-control="public,max-age=31536000,no-transform" \\
|
|
554
|
+
--profile ${_classPrivateFieldLooseBase(this, _bucketRegion2)[_bucketRegion2]}
|
|
555
|
+
|
|
556
|
+
if ${skipMenu}; then
|
|
557
|
+
echo "Skipping menu.json upload"
|
|
558
|
+
else
|
|
559
|
+
echo "Uploading menu.json to bucket ${bucketUrl}"
|
|
560
|
+
|
|
561
|
+
aws s3 cp \\
|
|
562
|
+
${assetsPath}/menu.json \\
|
|
563
|
+
${bucketUrl} \\
|
|
564
|
+
--content-type="application/json" \\
|
|
565
|
+
--cache-control="public,max-age=0,no-transform" \\
|
|
566
|
+
--profile ${_classPrivateFieldLooseBase(this, _bucketRegion2)[_bucketRegion2]}
|
|
567
|
+
fi
|
|
568
|
+
`;
|
|
569
|
+
}
|
|
570
|
+
}]);
|
|
571
|
+
return AwsStorageUploadScriptsGenerator;
|
|
572
|
+
}();
|
|
573
|
+
function getUploadScriptsGenerator(storageProvider, config) {
|
|
313
574
|
switch (storageProvider) {
|
|
314
575
|
case 'gs':
|
|
315
|
-
return new GoogleStorageUploadScriptsGenerator();
|
|
576
|
+
return new GoogleStorageUploadScriptsGenerator(config);
|
|
577
|
+
case 's3':
|
|
578
|
+
return new AwsStorageUploadScriptsGenerator(config);
|
|
316
579
|
default:
|
|
317
580
|
throw new Error(`Storage provider ${storageProvider} not supported`);
|
|
318
581
|
}
|
|
@@ -356,10 +619,7 @@ function loadDotenvFiles(_ref) {
|
|
|
356
619
|
}
|
|
357
620
|
|
|
358
621
|
function ownKeys$2(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
359
|
-
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
360
|
-
const storageBucketConfigExplorer = cosmiconfig('storage-buckets', {
|
|
361
|
-
searchStrategy: 'project'
|
|
362
|
-
});
|
|
622
|
+
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context3, _context4; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context3 = ownKeys$2(Object(t), !0)).call(_context3, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context4 = ownKeys$2(Object(t))).call(_context4, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
363
623
|
function writeUploadScriptFile(_ref) {
|
|
364
624
|
let fileName = _ref.fileName,
|
|
365
625
|
fileContent = _ref.fileContent,
|
|
@@ -374,12 +634,10 @@ async function compileApplicationAssets(_ref2) {
|
|
|
374
634
|
let cliFlags = _ref2.cliFlags,
|
|
375
635
|
storageProvider = _ref2.storageProvider,
|
|
376
636
|
uploadScriptsGenerator = _ref2.uploadScriptsGenerator,
|
|
377
|
-
bucketRegion = _ref2.bucketRegion,
|
|
378
637
|
paths = _ref2.paths;
|
|
379
638
|
const applicationAssetsUploadScriptContent = uploadScriptsGenerator.getProductionBundlesUploadScript({
|
|
380
639
|
storageProvider,
|
|
381
640
|
bucketUrl: storageProvider.getAssetsBucketUrl({
|
|
382
|
-
bucketRegion,
|
|
383
641
|
prNumber: cliFlags.prNumber,
|
|
384
642
|
applicationName: cliFlags.applicationName
|
|
385
643
|
}),
|
|
@@ -387,7 +645,7 @@ async function compileApplicationAssets(_ref2) {
|
|
|
387
645
|
skipMenu: cliFlags.skipMenu
|
|
388
646
|
});
|
|
389
647
|
const parsedApplicationAssetsUploadScriptFile = path$1.parse(cliFlags.applicationAssetsUploadScriptOutFile);
|
|
390
|
-
const applicationAssetsUploadScriptFileName = `${parsedApplicationAssetsUploadScriptFile.name}-${
|
|
648
|
+
const applicationAssetsUploadScriptFileName = `${parsedApplicationAssetsUploadScriptFile.name}-${storageProvider.getBucketRegion()}${parsedApplicationAssetsUploadScriptFile.ext}`;
|
|
391
649
|
writeUploadScriptFile({
|
|
392
650
|
fileName: applicationAssetsUploadScriptFileName,
|
|
393
651
|
fileContent: applicationAssetsUploadScriptContent,
|
|
@@ -399,9 +657,7 @@ async function compileEnvironmentApplicationIndexes(_ref3) {
|
|
|
399
657
|
storageProvider = _ref3.storageProvider,
|
|
400
658
|
uploadScriptsGenerator = _ref3.uploadScriptsGenerator,
|
|
401
659
|
paths = _ref3.paths,
|
|
402
|
-
|
|
403
|
-
cloudEnvironment = _ref3.cloudEnvironment,
|
|
404
|
-
bucketEnvironment = _ref3.bucketEnvironment;
|
|
660
|
+
cloudEnvironment = _ref3.cloudEnvironment;
|
|
405
661
|
const cloudEnvironmentDeploymentPath = path$1.join(paths.deploymentsPath, storageProvider.getTag(), cloudEnvironment);
|
|
406
662
|
// Ensure the folder exists
|
|
407
663
|
const createDeploymentsFolderResult = await execa('mkdir', ['-p', cloudEnvironmentDeploymentPath], {
|
|
@@ -413,7 +669,6 @@ async function compileEnvironmentApplicationIndexes(_ref3) {
|
|
|
413
669
|
|
|
414
670
|
// Construct the proper CDN URL for the specific application
|
|
415
671
|
const cdnUrl = storageProvider.getCdnUrl({
|
|
416
|
-
bucketRegion,
|
|
417
672
|
prNumber: cliFlags.prNumber,
|
|
418
673
|
applicationName: cliFlags.applicationName
|
|
419
674
|
});
|
|
@@ -459,13 +714,10 @@ async function compileEnvironmentApplicationIndexes(_ref3) {
|
|
|
459
714
|
storageProvider,
|
|
460
715
|
packageManagerName: cliFlags.packageManagerName,
|
|
461
716
|
bucketUrl: storageProvider.getApplicationIndexBucketUrl({
|
|
462
|
-
bucketRegion,
|
|
463
717
|
prNumber: cliFlags.prNumber,
|
|
464
|
-
applicationName: cliFlags.applicationName
|
|
465
|
-
bucketEnvironment
|
|
718
|
+
applicationName: cliFlags.applicationName
|
|
466
719
|
}),
|
|
467
720
|
cdnUrl,
|
|
468
|
-
bucketEnvironment,
|
|
469
721
|
buildRevision: cliFlags.buildRevision,
|
|
470
722
|
buildNumber: cliFlags.buildNumber,
|
|
471
723
|
applicationIndexOutFile: cliFlags.applicationIndexOutFile
|
|
@@ -484,16 +736,7 @@ async function compileEnvironmentApplicationIndexes(_ref3) {
|
|
|
484
736
|
}
|
|
485
737
|
async function command$3(cliFlags, cwd) {
|
|
486
738
|
var _context;
|
|
487
|
-
|
|
488
|
-
try {
|
|
489
|
-
// This is the list of the supported cloud environments and their related bucket location.
|
|
490
|
-
cloudEnvironmentsGroupedByBucketRegions = await storageBucketConfigExplorer.search();
|
|
491
|
-
} catch (e) {
|
|
492
|
-
throw new Error('Failed to load a storage bucket configuration. Create a cosmiconfig for `storage-buckets` for example `storage-buckets.config.cjs`.');
|
|
493
|
-
}
|
|
494
|
-
if (!cloudEnvironmentsGroupedByBucketRegions) {
|
|
495
|
-
throw new Error('Failed loading a storage bucket configuration');
|
|
496
|
-
}
|
|
739
|
+
const storageBucketConfig = await loadStorageBucketsConfig();
|
|
497
740
|
const applicationDirectory = getApplicationDirectory(cwd);
|
|
498
741
|
let assetsPath;
|
|
499
742
|
if (cliFlags.ciAssetsRootPath && isCI()) {
|
|
@@ -508,28 +751,32 @@ async function command$3(cliFlags, cwd) {
|
|
|
508
751
|
dotenvPath: cliFlags.dotenvFolder && path$1.join(monorepoRoot.rootDir, cliFlags.dotenvFolder),
|
|
509
752
|
assetsPath
|
|
510
753
|
};
|
|
511
|
-
const defaultStorageProviders = [
|
|
512
|
-
const taskList = new Listr(_mapInstanceProperty(_context = _Object$entries(
|
|
754
|
+
const defaultStorageProviders = [storageProviders.gs.tag];
|
|
755
|
+
const taskList = new Listr(_mapInstanceProperty(_context = _Object$entries(storageBucketConfig)).call(_context, _ref4 => {
|
|
513
756
|
let _ref5 = _slicedToArray(_ref4, 2),
|
|
514
757
|
bucketRegion = _ref5[0],
|
|
515
758
|
bucketEnvironmentConfigs = _ref5[1];
|
|
516
759
|
return {
|
|
517
760
|
title: `Compiling for bucket region ${bucketRegion}`,
|
|
518
761
|
task: (_bucketRegionCtx, bucketRegionTask) => {
|
|
519
|
-
var _context2;
|
|
520
762
|
// NOTE: Application assets need to be compiled
|
|
521
763
|
// for all storage providers once per region.
|
|
522
|
-
const allStorageProvidersForBucketRegion = [...new _Set(
|
|
764
|
+
const allStorageProvidersForBucketRegion = [...new _Set(_flatMapInstanceProperty(bucketEnvironmentConfigs).call(bucketEnvironmentConfigs, bucketEnvironmentConfig => bucketEnvironmentConfig.storageProviders || defaultStorageProviders))];
|
|
523
765
|
const allApplicationAssetTasks = _mapInstanceProperty(allStorageProvidersForBucketRegion).call(allStorageProvidersForBucketRegion, storageProviderTag => {
|
|
524
|
-
const
|
|
525
|
-
|
|
766
|
+
const uploadScriptsGeneratorConfig = {
|
|
767
|
+
bucketRegion: bucketRegion
|
|
768
|
+
};
|
|
769
|
+
const storageProviderConfig = {
|
|
770
|
+
bucketRegion: bucketRegion
|
|
771
|
+
};
|
|
772
|
+
const storageProvider = getStorageProvider(storageProviderTag, storageProviderConfig);
|
|
773
|
+
const uploadScriptsGenerator = getUploadScriptsGenerator(storageProviderTag, uploadScriptsGeneratorConfig);
|
|
526
774
|
return {
|
|
527
775
|
title: `Compiling application assets for '${storageProviderTag}'`,
|
|
528
776
|
task: () => compileApplicationAssets({
|
|
529
777
|
cliFlags,
|
|
530
778
|
storageProvider,
|
|
531
779
|
uploadScriptsGenerator,
|
|
532
|
-
bucketRegion: bucketRegion,
|
|
533
780
|
paths
|
|
534
781
|
})
|
|
535
782
|
};
|
|
@@ -538,13 +785,17 @@ async function command$3(cliFlags, cwd) {
|
|
|
538
785
|
const cloudEnvironment = bucketEnvironmentConfig.cloudEnvironment,
|
|
539
786
|
bucketEnvironment = bucketEnvironmentConfig.bucketEnvironment,
|
|
540
787
|
storageProviders = bucketEnvironmentConfig.storageProviders;
|
|
788
|
+
const storageProviderConfig = {
|
|
789
|
+
bucketRegion: bucketRegion,
|
|
790
|
+
bucketEnvironment
|
|
791
|
+
};
|
|
541
792
|
return {
|
|
542
793
|
title: `Compiling for cloud environment '${cloudEnvironment}'`,
|
|
543
794
|
task: (_storageProviderCtx, storageProviderTask) => {
|
|
544
|
-
var
|
|
545
|
-
const applicationIndexTasksForStorageProviders = _mapInstanceProperty(
|
|
546
|
-
const storageProvider = getStorageProvider(storageProviderTag);
|
|
547
|
-
const uploadScriptsGenerator = getUploadScriptsGenerator(storageProviderTag);
|
|
795
|
+
var _context2;
|
|
796
|
+
const applicationIndexTasksForStorageProviders = _mapInstanceProperty(_context2 = storageProviders || defaultStorageProviders).call(_context2, storageProviderTag => {
|
|
797
|
+
const storageProvider = getStorageProvider(storageProviderTag, storageProviderConfig);
|
|
798
|
+
const uploadScriptsGenerator = getUploadScriptsGenerator(storageProviderTag, storageProviderConfig);
|
|
548
799
|
return {
|
|
549
800
|
title: `Compiling application index for storage provider '${storageProviderTag}'`,
|
|
550
801
|
task: () => {
|
|
@@ -553,9 +804,7 @@ async function command$3(cliFlags, cwd) {
|
|
|
553
804
|
storageProvider,
|
|
554
805
|
uploadScriptsGenerator,
|
|
555
806
|
paths,
|
|
556
|
-
|
|
557
|
-
cloudEnvironment,
|
|
558
|
-
bucketEnvironment
|
|
807
|
+
cloudEnvironment
|
|
559
808
|
});
|
|
560
809
|
}
|
|
561
810
|
};
|
|
@@ -839,7 +1088,7 @@ async function command(cliFlags) {
|
|
|
839
1088
|
|
|
840
1089
|
var pkgJson = {
|
|
841
1090
|
name: "@commercetools-frontend/application-cli",
|
|
842
|
-
version: "2.
|
|
1091
|
+
version: "2.3.0",
|
|
843
1092
|
description: "Internal CLI to manage Merchant Center application deployments across various environments.",
|
|
844
1093
|
keywords: [
|
|
845
1094
|
"commercetools",
|
|
@@ -862,15 +1111,15 @@ var pkgJson = {
|
|
|
862
1111
|
},
|
|
863
1112
|
dependencies: {
|
|
864
1113
|
"@babel/core": "^7.22.11",
|
|
865
|
-
"@babel/runtime-corejs3": "^7.21.0",
|
|
866
1114
|
"@babel/runtime": "^7.21.0",
|
|
867
|
-
"@
|
|
868
|
-
"@commercetools-frontend/
|
|
869
|
-
"@commercetools-frontend/
|
|
1115
|
+
"@babel/runtime-corejs3": "^7.21.0",
|
|
1116
|
+
"@commercetools-frontend/application-config": "22.22.0",
|
|
1117
|
+
"@commercetools-frontend/constants": "22.22.0",
|
|
1118
|
+
"@commercetools-frontend/l10n": "22.22.0",
|
|
870
1119
|
"@manypkg/find-root": "2.2.1",
|
|
871
1120
|
cac: "^6.7.14",
|
|
872
1121
|
cosmiconfig: "9.0.0",
|
|
873
|
-
dotenv: "16.4.
|
|
1122
|
+
dotenv: "16.4.2",
|
|
874
1123
|
execa: "5.1.1",
|
|
875
1124
|
jsonschema: "^1.4.1",
|
|
876
1125
|
listr2: "8.0.2",
|
|
@@ -879,7 +1128,7 @@ var pkgJson = {
|
|
|
879
1128
|
},
|
|
880
1129
|
devDependencies: {
|
|
881
1130
|
"@tsconfig/node20": "20.1.2",
|
|
882
|
-
"@types/node": "20.11.
|
|
1131
|
+
"@types/node": "20.11.30",
|
|
883
1132
|
typescript: "5.2.2"
|
|
884
1133
|
},
|
|
885
1134
|
engines: {
|