@commercetools-frontend/mc-scripts 24.9.0 → 24.10.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-mc-scripts-cli.cjs.dev.js +10 -8
- package/cli/dist/commercetools-frontend-mc-scripts-cli.cjs.prod.js +10 -8
- package/cli/dist/commercetools-frontend-mc-scripts-cli.esm.js +10 -8
- package/dist/{build-4c4732a6.cjs.prod.js → build-9c26fe58.cjs.prod.js} +3 -3
- package/dist/{build-d44c1454.cjs.dev.js → build-bd986bac.cjs.dev.js} +3 -3
- package/dist/{build-c98b5309.esm.js → build-c91d680c.esm.js} +3 -3
- package/dist/commercetools-frontend-mc-scripts.cjs.dev.js +1 -1
- package/dist/commercetools-frontend-mc-scripts.cjs.prod.js +1 -1
- package/dist/commercetools-frontend-mc-scripts.esm.js +1 -1
- package/dist/{config-sync-cc8e443c.cjs.prod.js → config-sync-200c5df5.cjs.prod.js} +4 -4
- package/dist/{config-sync-94a1bab9.cjs.dev.js → config-sync-6977827c.cjs.dev.js} +4 -4
- package/dist/{config-sync-f89e965a.esm.js → config-sync-d57260cc.esm.js} +4 -4
- package/dist/{create-postcss-config-3c6e4082.esm.js → create-postcss-config-152ced99.esm.js} +1 -1
- package/dist/{create-postcss-config-7bd97267.cjs.dev.js → create-postcss-config-fd3dee79.cjs.dev.js} +1 -1
- package/dist/{create-postcss-config-6004d1b3.cjs.prod.js → create-postcss-config-fe3387fa.cjs.prod.js} +1 -1
- package/dist/{create-webpack-config-for-development-1d9166b6.cjs.dev.js → create-webpack-config-for-development-049a78d6.cjs.dev.js} +1 -1
- package/dist/{create-webpack-config-for-development-1ff29f29.esm.js → create-webpack-config-for-development-48e5e9d0.esm.js} +1 -1
- package/dist/{create-webpack-config-for-development-bad89362.cjs.prod.js → create-webpack-config-for-development-527a632e.cjs.prod.js} +1 -1
- package/dist/{create-webpack-config-for-production-d3715c1f.cjs.prod.js → create-webpack-config-for-production-5ef997a2.cjs.prod.js} +1 -1
- package/dist/{create-webpack-config-for-production-e7e9d73f.cjs.dev.js → create-webpack-config-for-production-9452f0ea.cjs.dev.js} +1 -1
- package/dist/{create-webpack-config-for-production-44398864.esm.js → create-webpack-config-for-production-991b35ad.esm.js} +1 -1
- package/dist/{credentials-storage-382cbd6c.cjs.prod.js → credentials-storage-0b89aa0e.cjs.prod.js} +0 -13
- package/dist/{credentials-storage-a0da40e8.esm.js → credentials-storage-4464313c.esm.js} +1 -12
- package/dist/{credentials-storage-0959d001.cjs.dev.js → credentials-storage-cbb5c559.cjs.dev.js} +0 -13
- package/dist/declarations/src/types.d.ts +6 -0
- package/dist/{deployment-previews-set-9e95bfa1.esm.js → deployment-previews-set-178cacbc.esm.js} +4 -4
- package/dist/{deployment-previews-set-485f4cf4.cjs.prod.js → deployment-previews-set-93927f50.cjs.prod.js} +4 -4
- package/dist/{deployment-previews-set-9e920f80.cjs.dev.js → deployment-previews-set-b9ebe08f.cjs.dev.js} +4 -4
- package/dist/{graphql-requests-2aa18200.cjs.prod.js → graphql-requests-5527b635.cjs.dev.js} +15 -6
- package/dist/{graphql-requests-bdc3f4b6.esm.js → graphql-requests-6043a20b.esm.js} +13 -5
- package/dist/{graphql-requests-d4d32da7.cjs.dev.js → graphql-requests-c5ecf40e.cjs.prod.js} +15 -6
- package/dist/login-2c875e0b.esm.js +214 -0
- package/dist/login-73e9f04f.cjs.prod.js +248 -0
- package/dist/login-d7cb2619.cjs.dev.js +248 -0
- package/dist/{package-0b5fe01d.cjs.prod.js → package-0d7eef40.cjs.dev.js} +8 -8
- package/dist/{package-ecec051f.esm.js → package-6a5c0475.esm.js} +8 -8
- package/dist/{package-fd9ca992.cjs.dev.js → package-c32ced1c.cjs.prod.js} +8 -8
- package/dist/{start-5c2c41a2.cjs.prod.js → start-296a8335.cjs.prod.js} +3 -3
- package/dist/{start-7d5da6e8.cjs.dev.js → start-66ec8479.cjs.dev.js} +3 -3
- package/dist/{start-4ad2de73.esm.js → start-f7aed0ed.esm.js} +3 -3
- package/package.json +8 -8
- package/postcss/dist/commercetools-frontend-mc-scripts-postcss.cjs.dev.js +2 -2
- package/postcss/dist/commercetools-frontend-mc-scripts-postcss.cjs.prod.js +2 -2
- package/postcss/dist/commercetools-frontend-mc-scripts-postcss.esm.js +2 -2
- package/webpack/dist/commercetools-frontend-mc-scripts-webpack.cjs.dev.js +4 -4
- package/webpack/dist/commercetools-frontend-mc-scripts-webpack.cjs.prod.js +4 -4
- package/webpack/dist/commercetools-frontend-mc-scripts-webpack.esm.js +4 -4
- package/dist/login-24a16f2b.esm.js +0 -229
- package/dist/login-2d480e6f.cjs.prod.js +0 -270
- package/dist/login-6625af4a.cjs.dev.js +0 -270
|
@@ -1,270 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var _Promise = require('@babel/runtime-corejs3/core-js-stable/promise');
|
|
4
|
-
var _URL = require('@babel/runtime-corejs3/core-js-stable/url');
|
|
5
|
-
var crypto = require('node:crypto');
|
|
6
|
-
var process = require('node:process');
|
|
7
|
-
var chalk = require('chalk');
|
|
8
|
-
var prompts = require('prompts');
|
|
9
|
-
var applicationConfig = require('@commercetools-frontend/application-config');
|
|
10
|
-
var _package = require('./package-fd9ca992.cjs.dev.js');
|
|
11
|
-
var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
|
|
12
|
-
var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
|
|
13
|
-
var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
|
|
14
|
-
var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
|
|
15
|
-
var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
|
|
16
|
-
var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
|
|
17
|
-
var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
|
|
18
|
-
var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
|
|
19
|
-
var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
|
|
20
|
-
var _JSON$stringify = require('@babel/runtime-corejs3/core-js-stable/json/stringify');
|
|
21
|
-
var fetch = require('node-fetch');
|
|
22
|
-
var credentialsStorage$1 = require('./credentials-storage-0959d001.cjs.dev.js');
|
|
23
|
-
var http = require('node:http');
|
|
24
|
-
var jwtDecode = require('jwt-decode');
|
|
25
|
-
require('@commercetools/http-user-agent');
|
|
26
|
-
require('@babel/runtime-corejs3/helpers/classCallCheck');
|
|
27
|
-
require('@babel/runtime-corejs3/helpers/createClass');
|
|
28
|
-
require('@babel/runtime-corejs3/core-js-stable/date/now');
|
|
29
|
-
require('node:fs');
|
|
30
|
-
require('node:os');
|
|
31
|
-
require('node:path');
|
|
32
|
-
require('./does-file-exist-eb86baca.cjs.dev.js');
|
|
33
|
-
|
|
34
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
|
|
35
|
-
|
|
36
|
-
function _interopNamespace(e) {
|
|
37
|
-
if (e && e.__esModule) return e;
|
|
38
|
-
var n = Object.create(null);
|
|
39
|
-
if (e) {
|
|
40
|
-
Object.keys(e).forEach(function (k) {
|
|
41
|
-
if (k !== 'default') {
|
|
42
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
43
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
44
|
-
enumerable: true,
|
|
45
|
-
get: function () { return e[k]; }
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
n["default"] = e;
|
|
51
|
-
return Object.freeze(n);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
var _Promise__default = /*#__PURE__*/_interopDefault(_Promise);
|
|
55
|
-
var _URL__default = /*#__PURE__*/_interopDefault(_URL);
|
|
56
|
-
var crypto__default = /*#__PURE__*/_interopDefault(crypto);
|
|
57
|
-
var process__default = /*#__PURE__*/_interopDefault(process);
|
|
58
|
-
var chalk__default = /*#__PURE__*/_interopDefault(chalk);
|
|
59
|
-
var prompts__default = /*#__PURE__*/_interopDefault(prompts);
|
|
60
|
-
var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
|
|
61
|
-
var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
|
|
62
|
-
var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
|
|
63
|
-
var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptor);
|
|
64
|
-
var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachInstanceProperty);
|
|
65
|
-
var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptors);
|
|
66
|
-
var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
|
|
67
|
-
var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
|
|
68
|
-
var _JSON$stringify__default = /*#__PURE__*/_interopDefault(_JSON$stringify);
|
|
69
|
-
var fetch__default = /*#__PURE__*/_interopDefault(fetch);
|
|
70
|
-
var http__default = /*#__PURE__*/_interopDefault(http);
|
|
71
|
-
var jwtDecode__default = /*#__PURE__*/_interopDefault(jwtDecode);
|
|
72
|
-
|
|
73
|
-
function ownKeys(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; }
|
|
74
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
|
|
75
|
-
const getAuthToken = async (mcApiUrl, payload, headers) => {
|
|
76
|
-
const response = await fetch__default["default"](`${mcApiUrl}/tokens/cli`, {
|
|
77
|
-
method: 'POST',
|
|
78
|
-
headers: _objectSpread({
|
|
79
|
-
Accept: 'application/json',
|
|
80
|
-
'Content-Type': 'application/json',
|
|
81
|
-
'x-user-agent': credentialsStorage$1.userAgent
|
|
82
|
-
}, headers),
|
|
83
|
-
body: _JSON$stringify__default["default"](payload)
|
|
84
|
-
});
|
|
85
|
-
if (!response.ok) {
|
|
86
|
-
const text = await response.text();
|
|
87
|
-
let parsed;
|
|
88
|
-
try {
|
|
89
|
-
parsed = JSON.parse(text);
|
|
90
|
-
} catch (error) {}
|
|
91
|
-
const errorMessage = parsed ? parsed.message : text;
|
|
92
|
-
throw new Error(errorMessage);
|
|
93
|
-
}
|
|
94
|
-
const authToken = await response.json();
|
|
95
|
-
return authToken;
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
function createAuthCallbackServer(options) {
|
|
99
|
-
const server = http__default["default"].createServer(async (request, response) => {
|
|
100
|
-
try {
|
|
101
|
-
if (request.url?.includes(`/${options.clientIdentifier}/oidc/callback`)) {
|
|
102
|
-
const incomingUrl = new _URL__default["default"](request.url, 'http://localhost');
|
|
103
|
-
const sessionToken = incomingUrl.searchParams.get('sessionToken');
|
|
104
|
-
const requestedState = incomingUrl.searchParams.get('state');
|
|
105
|
-
if (!sessionToken) {
|
|
106
|
-
throw new Error('Invalid authentication flow (missing sessionToken)');
|
|
107
|
-
}
|
|
108
|
-
const decodedSessionToken = jwtDecode__default["default"](sessionToken);
|
|
109
|
-
if (decodedSessionToken?.nonce !== options.nonce) {
|
|
110
|
-
throw new Error('Invalid authentication flow (nonce mismatch)');
|
|
111
|
-
}
|
|
112
|
-
if (requestedState !== options.state) {
|
|
113
|
-
throw new Error('Invalid authentication flow (state mismatch)');
|
|
114
|
-
}
|
|
115
|
-
options.onSuccess({
|
|
116
|
-
token: sessionToken,
|
|
117
|
-
expiresAt: decodedSessionToken.exp
|
|
118
|
-
});
|
|
119
|
-
response.setHeader('content-type', 'text/html');
|
|
120
|
-
response.end('Success!');
|
|
121
|
-
server.close(() => {
|
|
122
|
-
process.exit();
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
} catch (error) {
|
|
126
|
-
response.setHeader('content-type', 'text/html');
|
|
127
|
-
if (error instanceof Error) {
|
|
128
|
-
console.error(error.message);
|
|
129
|
-
response.end(error.message);
|
|
130
|
-
} else {
|
|
131
|
-
console.error(error);
|
|
132
|
-
response.end(`Invalid authentication flow.`);
|
|
133
|
-
}
|
|
134
|
-
server.close(() => {
|
|
135
|
-
process.exit();
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
return server;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
const credentialsStorage = new credentialsStorage$1.CredentialsStorage();
|
|
143
|
-
const port = 3001;
|
|
144
|
-
const clientIdentifier = `mc-scripts-${_package.pkgJson.version}`;
|
|
145
|
-
const isServerError = error => {
|
|
146
|
-
return error instanceof Error && 'code' in error;
|
|
147
|
-
};
|
|
148
|
-
const startServer = server => new _Promise__default["default"]((resolve, reject) => {
|
|
149
|
-
server.listen(port, 'localhost').on('listening', resolve).on('error', error => {
|
|
150
|
-
if (isServerError(error) && error.code === 'EADDRINUSE') {
|
|
151
|
-
return reject(new Error(`The address "localhost:${port}" is already in use. Are you running a Merchant Center application in other process? Please stop that and try again.`, {
|
|
152
|
-
cause: error
|
|
153
|
-
}));
|
|
154
|
-
}
|
|
155
|
-
return reject(new Error('Problem starting server', {
|
|
156
|
-
cause: error
|
|
157
|
-
}));
|
|
158
|
-
}).on('close', () => {
|
|
159
|
-
process__default["default"].exit();
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
const resolveMcApiUrl = async () => {
|
|
163
|
-
// We first check whether the user has set the MC_API_URL environment variable
|
|
164
|
-
if (process__default["default"].env.MC_API_URL) {
|
|
165
|
-
return process__default["default"].env.MC_API_URL;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
// In the future we might want to support this value as a command line parameter
|
|
169
|
-
|
|
170
|
-
// If not, we parse the Custom Application configuration and check if it's defined over there
|
|
171
|
-
const applicationConfig$1 = await applicationConfig.processConfig();
|
|
172
|
-
const mcApiUrl = applicationConfig$1.env.mcApiUrl;
|
|
173
|
-
return mcApiUrl;
|
|
174
|
-
};
|
|
175
|
-
const resolveProjectKey = async () => {
|
|
176
|
-
// We first check whether the user has set the CTP_PROJECT_KEY environment variable
|
|
177
|
-
if (process__default["default"].env.CTP_PROJECT_KEY) {
|
|
178
|
-
return process__default["default"].env.CTP_PROJECT_KEY;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
// In the future we might want to support this value as a command line parameter
|
|
182
|
-
|
|
183
|
-
try {
|
|
184
|
-
const applicationConfig$1 = await applicationConfig.processConfig();
|
|
185
|
-
// @ts-expect-error - We know that the initialProjectKey is defined in the development environment
|
|
186
|
-
return applicationConfig$1.env.development.initialProjectKey;
|
|
187
|
-
} catch (error) {
|
|
188
|
-
// It's ok if there's not application config file or if it does not contain the initialProjectKey
|
|
189
|
-
return null;
|
|
190
|
-
}
|
|
191
|
-
};
|
|
192
|
-
const generateRandomHash = function () {
|
|
193
|
-
let length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16;
|
|
194
|
-
return crypto__default["default"].randomBytes(length).toString('hex');
|
|
195
|
-
};
|
|
196
|
-
async function run() {
|
|
197
|
-
const shouldUseExperimentalIdentityAuthFlow = process__default["default"].env.ENABLE_EXPERIMENTAL_IDENTITY_AUTH_FLOW === 'true';
|
|
198
|
-
const mcApiUrl = await resolveMcApiUrl();
|
|
199
|
-
if (!mcApiUrl) {
|
|
200
|
-
throw new Error('No Merchant Center API environment URL found. Aborting.');
|
|
201
|
-
}
|
|
202
|
-
console.log(`Using Merchant Center environment "${chalk__default["default"].green(mcApiUrl)}".`);
|
|
203
|
-
console.log();
|
|
204
|
-
if (credentialsStorage.isSessionValid(mcApiUrl)) {
|
|
205
|
-
console.log(`You already have a valid session.`);
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
208
|
-
if (shouldUseExperimentalIdentityAuthFlow) {
|
|
209
|
-
const open = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('open')); });
|
|
210
|
-
const projectKey = await resolveProjectKey();
|
|
211
|
-
const state = generateRandomHash();
|
|
212
|
-
const nonce = generateRandomHash();
|
|
213
|
-
const scopes = ['openid'];
|
|
214
|
-
if (projectKey) {
|
|
215
|
-
scopes.push(`project_key:${projectKey}`);
|
|
216
|
-
scopes.push('view:view_project_settings');
|
|
217
|
-
scopes.push('view:view_products');
|
|
218
|
-
}
|
|
219
|
-
const authUrl = new _URL__default["default"]('/login/authorize', mcApiUrl);
|
|
220
|
-
authUrl.searchParams.set('response_type', 'id_token');
|
|
221
|
-
authUrl.searchParams.set('response_mode', 'query');
|
|
222
|
-
authUrl.searchParams.set('client_id', `__local:${clientIdentifier}`);
|
|
223
|
-
authUrl.searchParams.set('scope', scopes.join(' '));
|
|
224
|
-
authUrl.searchParams.set('state', state);
|
|
225
|
-
authUrl.searchParams.set('nonce', nonce);
|
|
226
|
-
const server = createAuthCallbackServer({
|
|
227
|
-
clientIdentifier,
|
|
228
|
-
state,
|
|
229
|
-
nonce,
|
|
230
|
-
onSuccess: tokenContext => {
|
|
231
|
-
credentialsStorage.setToken(mcApiUrl, tokenContext);
|
|
232
|
-
console.log();
|
|
233
|
-
console.log(chalk__default["default"].green(`Login successful.`));
|
|
234
|
-
console.log();
|
|
235
|
-
}
|
|
236
|
-
});
|
|
237
|
-
await startServer(server);
|
|
238
|
-
console.log(`Initiating the OIDC authentication flow, opening the login page in your browser...`);
|
|
239
|
-
console.log(` ${authUrl}`);
|
|
240
|
-
console.log();
|
|
241
|
-
await open.default(authUrl.toString());
|
|
242
|
-
console.log('Waiting for the OIDC authentication to complete...');
|
|
243
|
-
} else {
|
|
244
|
-
console.log(`Enter the login credentials:`);
|
|
245
|
-
const _await$prompts = await prompts__default["default"]({
|
|
246
|
-
type: 'text',
|
|
247
|
-
name: 'email',
|
|
248
|
-
message: 'Email'
|
|
249
|
-
}),
|
|
250
|
-
email = _await$prompts.email;
|
|
251
|
-
const _await$prompts2 = await prompts__default["default"]({
|
|
252
|
-
type: 'invisible',
|
|
253
|
-
name: 'password',
|
|
254
|
-
message: 'Password (hidden)'
|
|
255
|
-
}),
|
|
256
|
-
password = _await$prompts2.password;
|
|
257
|
-
if (!email || !password) {
|
|
258
|
-
throw new Error(`Missing email or password values. Aborting.`);
|
|
259
|
-
}
|
|
260
|
-
const credentials = await getAuthToken(mcApiUrl, {
|
|
261
|
-
email,
|
|
262
|
-
password
|
|
263
|
-
});
|
|
264
|
-
credentialsStorage.setToken(mcApiUrl, credentials);
|
|
265
|
-
console.log(chalk__default["default"].green(`Login successful.`));
|
|
266
|
-
console.log();
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
exports["default"] = run;
|