@teambit/cloud 0.0.390 → 0.0.391
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/cloud.ui.runtime.tsx +127 -0
- package/cloud.ui.styles.scss +0 -0
- package/dist/cloud.aspect.d.ts +1 -0
- package/dist/cloud.aspect.js +2 -1
- package/dist/cloud.aspect.js.map +1 -1
- package/dist/cloud.graphql.d.ts +3 -0
- package/dist/cloud.graphql.js +83 -0
- package/dist/cloud.graphql.js.map +1 -0
- package/dist/cloud.main.runtime.d.ts +82 -4
- package/dist/cloud.main.runtime.js +449 -9
- package/dist/cloud.main.runtime.js.map +1 -1
- package/dist/cloud.ui.runtime.d.ts +28 -0
- package/dist/cloud.ui.runtime.js +167 -0
- package/dist/cloud.ui.runtime.js.map +1 -0
- package/dist/cloud.ui.styles.scss +0 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js.map +1 -1
- package/dist/login.cmd.d.ts +33 -0
- package/dist/login.cmd.js +69 -0
- package/dist/login.cmd.js.map +1 -0
- package/dist/logout.cmd.d.ts +17 -0
- package/dist/logout.cmd.js +42 -0
- package/dist/logout.cmd.js.map +1 -0
- package/dist/whoami.cmd.d.ts +17 -0
- package/dist/whoami.cmd.js +46 -0
- package/dist/whoami.cmd.js.map +1 -0
- package/package.json +27 -3
- /package/dist/{preview-1703733956734.js → preview-1704079387779.js} +0 -0
|
@@ -4,13 +4,69 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.CloudMain = void 0;
|
|
7
|
+
function _harmony() {
|
|
8
|
+
const data = require("@teambit/harmony");
|
|
9
|
+
_harmony = function () {
|
|
10
|
+
return data;
|
|
11
|
+
};
|
|
12
|
+
return data;
|
|
13
|
+
}
|
|
7
14
|
function _cli() {
|
|
8
|
-
const data = require("@teambit/cli");
|
|
15
|
+
const data = _interopRequireWildcard(require("@teambit/cli"));
|
|
9
16
|
_cli = function () {
|
|
10
17
|
return data;
|
|
11
18
|
};
|
|
12
19
|
return data;
|
|
13
20
|
}
|
|
21
|
+
function _uuid() {
|
|
22
|
+
const data = require("uuid");
|
|
23
|
+
_uuid = function () {
|
|
24
|
+
return data;
|
|
25
|
+
};
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
function _chalk() {
|
|
29
|
+
const data = _interopRequireDefault(require("chalk"));
|
|
30
|
+
_chalk = function () {
|
|
31
|
+
return data;
|
|
32
|
+
};
|
|
33
|
+
return data;
|
|
34
|
+
}
|
|
35
|
+
function _os() {
|
|
36
|
+
const data = _interopRequireDefault(require("os"));
|
|
37
|
+
_os = function () {
|
|
38
|
+
return data;
|
|
39
|
+
};
|
|
40
|
+
return data;
|
|
41
|
+
}
|
|
42
|
+
function _open() {
|
|
43
|
+
const data = _interopRequireDefault(require("open"));
|
|
44
|
+
_open = function () {
|
|
45
|
+
return data;
|
|
46
|
+
};
|
|
47
|
+
return data;
|
|
48
|
+
}
|
|
49
|
+
function _scopes() {
|
|
50
|
+
const data = require("@teambit/scopes.scope-descriptor");
|
|
51
|
+
_scopes = function () {
|
|
52
|
+
return data;
|
|
53
|
+
};
|
|
54
|
+
return data;
|
|
55
|
+
}
|
|
56
|
+
function _scopes2() {
|
|
57
|
+
const data = require("@teambit/scopes.scope-id");
|
|
58
|
+
_scopes2 = function () {
|
|
59
|
+
return data;
|
|
60
|
+
};
|
|
61
|
+
return data;
|
|
62
|
+
}
|
|
63
|
+
function _logger() {
|
|
64
|
+
const data = require("@teambit/logger");
|
|
65
|
+
_logger = function () {
|
|
66
|
+
return data;
|
|
67
|
+
};
|
|
68
|
+
return data;
|
|
69
|
+
}
|
|
14
70
|
function _constants() {
|
|
15
71
|
const data = require("@teambit/legacy/dist/constants");
|
|
16
72
|
_constants = function () {
|
|
@@ -18,19 +74,208 @@ function _constants() {
|
|
|
18
74
|
};
|
|
19
75
|
return data;
|
|
20
76
|
}
|
|
77
|
+
function _scope() {
|
|
78
|
+
const data = _interopRequireDefault(require("@teambit/scope"));
|
|
79
|
+
_scope = function () {
|
|
80
|
+
return data;
|
|
81
|
+
};
|
|
82
|
+
return data;
|
|
83
|
+
}
|
|
84
|
+
function _globalFlags() {
|
|
85
|
+
const data = _interopRequireDefault(require("@teambit/legacy/dist/cli/global-flags"));
|
|
86
|
+
_globalFlags = function () {
|
|
87
|
+
return data;
|
|
88
|
+
};
|
|
89
|
+
return data;
|
|
90
|
+
}
|
|
91
|
+
function _graphql() {
|
|
92
|
+
const data = _interopRequireDefault(require("@teambit/graphql"));
|
|
93
|
+
_graphql = function () {
|
|
94
|
+
return data;
|
|
95
|
+
};
|
|
96
|
+
return data;
|
|
97
|
+
}
|
|
98
|
+
function _workspace() {
|
|
99
|
+
const data = _interopRequireDefault(require("@teambit/workspace"));
|
|
100
|
+
_workspace = function () {
|
|
101
|
+
return data;
|
|
102
|
+
};
|
|
103
|
+
return data;
|
|
104
|
+
}
|
|
105
|
+
function _express() {
|
|
106
|
+
const data = require("@teambit/express");
|
|
107
|
+
_express = function () {
|
|
108
|
+
return data;
|
|
109
|
+
};
|
|
110
|
+
return data;
|
|
111
|
+
}
|
|
112
|
+
function _globalConfig() {
|
|
113
|
+
const data = _interopRequireDefault(require("@teambit/global-config"));
|
|
114
|
+
_globalConfig = function () {
|
|
115
|
+
return data;
|
|
116
|
+
};
|
|
117
|
+
return data;
|
|
118
|
+
}
|
|
119
|
+
function _ui() {
|
|
120
|
+
const data = _interopRequireDefault(require("@teambit/ui"));
|
|
121
|
+
_ui = function () {
|
|
122
|
+
return data;
|
|
123
|
+
};
|
|
124
|
+
return data;
|
|
125
|
+
}
|
|
21
126
|
function _cloud() {
|
|
22
|
-
const data = require("./cloud.
|
|
127
|
+
const data = require("./cloud.graphql");
|
|
23
128
|
_cloud = function () {
|
|
24
129
|
return data;
|
|
25
130
|
};
|
|
26
131
|
return data;
|
|
27
132
|
}
|
|
133
|
+
function _cloud2() {
|
|
134
|
+
const data = require("./cloud.aspect");
|
|
135
|
+
_cloud2 = function () {
|
|
136
|
+
return data;
|
|
137
|
+
};
|
|
138
|
+
return data;
|
|
139
|
+
}
|
|
140
|
+
function _login() {
|
|
141
|
+
const data = require("./login.cmd");
|
|
142
|
+
_login = function () {
|
|
143
|
+
return data;
|
|
144
|
+
};
|
|
145
|
+
return data;
|
|
146
|
+
}
|
|
147
|
+
function _logout() {
|
|
148
|
+
const data = require("./logout.cmd");
|
|
149
|
+
_logout = function () {
|
|
150
|
+
return data;
|
|
151
|
+
};
|
|
152
|
+
return data;
|
|
153
|
+
}
|
|
154
|
+
function _whoami() {
|
|
155
|
+
const data = require("./whoami.cmd");
|
|
156
|
+
_whoami = function () {
|
|
157
|
+
return data;
|
|
158
|
+
};
|
|
159
|
+
return data;
|
|
160
|
+
}
|
|
161
|
+
var _class;
|
|
162
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
163
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
164
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
165
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
166
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
28
167
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
29
168
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
|
30
169
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
31
170
|
class CloudMain {
|
|
32
|
-
constructor(config) {
|
|
171
|
+
constructor(config, logger, express, workspace, scope, globalConfig, onSuccessLoginSlot) {
|
|
33
172
|
this.config = config;
|
|
173
|
+
this.logger = logger;
|
|
174
|
+
this.express = express;
|
|
175
|
+
this.workspace = workspace;
|
|
176
|
+
this.scope = scope;
|
|
177
|
+
this.globalConfig = globalConfig;
|
|
178
|
+
this.onSuccessLoginSlot = onSuccessLoginSlot;
|
|
179
|
+
_defineProperty(this, "authListenerByPort", new Map());
|
|
180
|
+
_defineProperty(this, "REDIRECT_URL", void 0);
|
|
181
|
+
}
|
|
182
|
+
setupAuthListener({
|
|
183
|
+
port: portFromParams,
|
|
184
|
+
clientId = (0, _uuid().v4)()
|
|
185
|
+
} = {}) {
|
|
186
|
+
return new Promise((resolve, reject) => {
|
|
187
|
+
const port = portFromParams || this.getLoginPort();
|
|
188
|
+
const existingAuthListener = this.authListenerByPort.get(port);
|
|
189
|
+
if (existingAuthListener) {
|
|
190
|
+
this.logger.debug(`auth server is already running on port ${port}`);
|
|
191
|
+
resolve(existingAuthListener);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
const expressApp = this.express.createApp();
|
|
195
|
+
this.authListenerByPort.set(port, {
|
|
196
|
+
port,
|
|
197
|
+
clientId
|
|
198
|
+
});
|
|
199
|
+
const authServer = expressApp.listen(port, () => {
|
|
200
|
+
this.logger.debug(`cloud express server started on port ${port}`);
|
|
201
|
+
const existing = this.authListenerByPort.get(port) ?? {};
|
|
202
|
+
this.authListenerByPort.set(port, _objectSpread(_objectSpread({
|
|
203
|
+
port,
|
|
204
|
+
clientId
|
|
205
|
+
}, existing), {}, {
|
|
206
|
+
server: authServer
|
|
207
|
+
}));
|
|
208
|
+
resolve({
|
|
209
|
+
port,
|
|
210
|
+
server: authServer,
|
|
211
|
+
clientId
|
|
212
|
+
});
|
|
213
|
+
}).on('error', err => {
|
|
214
|
+
// @ts-ignore
|
|
215
|
+
const {
|
|
216
|
+
code
|
|
217
|
+
} = err;
|
|
218
|
+
if (code === 'EADDRINUSE') {
|
|
219
|
+
// set up a new auth listener with new port
|
|
220
|
+
this.logger.warn(`port: ${port} already in use for cloud auth listener, trying port ${port + 1}`);
|
|
221
|
+
// eslint-disable-next-line promise/no-promise-in-callback
|
|
222
|
+
this.setupAuthListener({
|
|
223
|
+
port: port + 1
|
|
224
|
+
}).then(resolve).catch(reject);
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
this.logger.error(`cloud express server failed to start on port ${port}`, err);
|
|
228
|
+
reject(err);
|
|
229
|
+
});
|
|
230
|
+
expressApp.get('/', (req, res) => {
|
|
231
|
+
this.logger.debug('cloud.authListener', 'received request', req.query);
|
|
232
|
+
try {
|
|
233
|
+
const {
|
|
234
|
+
clientId: clientIdFromReq,
|
|
235
|
+
redirectUri,
|
|
236
|
+
username: usernameFromReq
|
|
237
|
+
} = req.query;
|
|
238
|
+
const username = typeof usernameFromReq === 'string' ? usernameFromReq : undefined;
|
|
239
|
+
let {
|
|
240
|
+
token
|
|
241
|
+
} = req.query;
|
|
242
|
+
if (Array.isArray(token)) {
|
|
243
|
+
token = token[0];
|
|
244
|
+
}
|
|
245
|
+
if (typeof token !== 'string') {
|
|
246
|
+
res.status(400).send('Invalid token format');
|
|
247
|
+
return res;
|
|
248
|
+
}
|
|
249
|
+
this.globalConfig.setSync(_constants().CFG_USER_TOKEN_KEY, token);
|
|
250
|
+
if (username) this.globalConfig.setSync(_constants().CFG_USER_NAME_KEY, username);
|
|
251
|
+
const onLoggedInFns = this.onSuccessLoginSlot.values();
|
|
252
|
+
onLoggedInFns.forEach(fn => fn({
|
|
253
|
+
username,
|
|
254
|
+
token: token
|
|
255
|
+
}));
|
|
256
|
+
const existing = this.authListenerByPort.get(port) ?? {};
|
|
257
|
+
this.authListenerByPort.set(port, _objectSpread(_objectSpread({
|
|
258
|
+
port,
|
|
259
|
+
server: authServer,
|
|
260
|
+
clientId: clientIdFromReq
|
|
261
|
+
}, existing), {}, {
|
|
262
|
+
username
|
|
263
|
+
}));
|
|
264
|
+
if (this.REDIRECT_URL) return res.redirect(this.REDIRECT_URL);
|
|
265
|
+
if (typeof redirectUri === 'string' && redirectUri) return res.redirect(redirectUri);
|
|
266
|
+
return res.status(200).send('Login successful');
|
|
267
|
+
} catch (err) {
|
|
268
|
+
this.logger.error(`Error on login: ${err}`);
|
|
269
|
+
res.status(CloudMain.ERROR_RESPONSE).send('Login failed');
|
|
270
|
+
reject(err);
|
|
271
|
+
return res;
|
|
272
|
+
}
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
registerOnSuccessLogin(onSuccessLoginFn) {
|
|
277
|
+
this.onSuccessLoginSlot.register(onSuccessLoginFn);
|
|
278
|
+
return this;
|
|
34
279
|
}
|
|
35
280
|
getCloudDomain() {
|
|
36
281
|
return this.config.cloudDomain;
|
|
@@ -59,13 +304,207 @@ class CloudMain {
|
|
|
59
304
|
getHubName() {
|
|
60
305
|
return this.config.cloudHubName;
|
|
61
306
|
}
|
|
62
|
-
|
|
63
|
-
return
|
|
307
|
+
getLoginPort() {
|
|
308
|
+
return this.config.loginPort || CloudMain.DEFAULT_PORT;
|
|
309
|
+
}
|
|
310
|
+
isLoggedIn() {
|
|
311
|
+
return Boolean(this.getAuthToken());
|
|
312
|
+
}
|
|
313
|
+
getAuthToken() {
|
|
314
|
+
this.globalConfig.invalidateCache();
|
|
315
|
+
const processToken = _globalFlags().default.token;
|
|
316
|
+
const token = processToken || this.globalConfig.getSync(_constants().CFG_USER_TOKEN_KEY);
|
|
317
|
+
if (!token) return null;
|
|
318
|
+
return token;
|
|
319
|
+
}
|
|
320
|
+
getAuthHeader() {
|
|
321
|
+
return {
|
|
322
|
+
Authorization: `Bearer ${this.getAuthToken()}`
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
async getCurrentUser() {
|
|
326
|
+
const isLoggedIn = this.isLoggedIn();
|
|
327
|
+
if (!isLoggedIn) {
|
|
328
|
+
return null;
|
|
329
|
+
}
|
|
330
|
+
const route = 'user/user';
|
|
331
|
+
this.logger.debug(`getCurrentUser, url: ${this.getCloudApi()}/${route}`);
|
|
332
|
+
const url = `https://${this.getCloudApi()}/${route}`;
|
|
333
|
+
const opts = {
|
|
334
|
+
method: 'GET',
|
|
335
|
+
headers: _objectSpread({
|
|
336
|
+
'Content-Type': 'application/json'
|
|
337
|
+
}, this.getAuthHeader())
|
|
338
|
+
};
|
|
339
|
+
return fetch(url, opts).then(async res => {
|
|
340
|
+
if (res.status === 401) {
|
|
341
|
+
return null;
|
|
342
|
+
}
|
|
343
|
+
const response = await res.json();
|
|
344
|
+
return _objectSpread({}, response.payload || {});
|
|
345
|
+
}).catch(err => {
|
|
346
|
+
this.logger.error(`failed to get current user, err: ${err}`);
|
|
347
|
+
return null;
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
getUsername() {
|
|
351
|
+
return this.globalConfig.getSync(_constants().CFG_USER_NAME_KEY);
|
|
352
|
+
}
|
|
353
|
+
async getLoginUrl({
|
|
354
|
+
redirectUrl,
|
|
355
|
+
machineName,
|
|
356
|
+
cloudDomain,
|
|
357
|
+
port: portFromParams
|
|
358
|
+
} = {}) {
|
|
359
|
+
const loginUrl = cloudDomain || this.getLoginDomain();
|
|
360
|
+
const port = Number(portFromParams) || this.getLoginPort();
|
|
361
|
+
if (redirectUrl) {
|
|
362
|
+
this.REDIRECT_URL = redirectUrl;
|
|
363
|
+
}
|
|
364
|
+
const authListenerForPort = this.authListenerByPort.get(port);
|
|
365
|
+
if (authListenerForPort) {
|
|
366
|
+
return `${loginUrl}?port=${port}&clientId=${authListenerForPort.clientId}&responseType=token&deviceName=${machineName || _os().default.hostname()}&os=${process.platform}`;
|
|
367
|
+
}
|
|
368
|
+
const authListener = await this.setupAuthListener({
|
|
369
|
+
port
|
|
370
|
+
});
|
|
371
|
+
if (!authListener) return null;
|
|
372
|
+
return encodeURI(`${loginUrl}?port=${port}&clientId=${authListener?.clientId}&responseType=token&deviceName=${machineName || _os().default.hostname()}&os=${process.platform}`);
|
|
373
|
+
}
|
|
374
|
+
logout() {
|
|
375
|
+
this.globalConfig.delSync(_constants().CFG_USER_TOKEN_KEY);
|
|
376
|
+
this.globalConfig.delSync(_constants().CFG_USER_NAME_KEY);
|
|
377
|
+
}
|
|
378
|
+
async whoami() {
|
|
379
|
+
const currentUser = await this.getCurrentUser();
|
|
380
|
+
if (!currentUser?.username) {
|
|
381
|
+
return undefined;
|
|
382
|
+
}
|
|
383
|
+
return currentUser.username;
|
|
384
|
+
}
|
|
385
|
+
async login(port, suppressBrowserLaunch, machineName, cloudDomain, redirectUrl) {
|
|
386
|
+
return new Promise((resolve, reject) => {
|
|
387
|
+
if (this.isLoggedIn()) {
|
|
388
|
+
resolve({
|
|
389
|
+
isAlreadyLoggedIn: true,
|
|
390
|
+
username: this.globalConfig.getSync(_constants().CFG_USER_NAME_KEY),
|
|
391
|
+
token: this.globalConfig.getSync(_constants().CFG_USER_TOKEN_KEY)
|
|
392
|
+
});
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
const promptLogin = async () => {
|
|
396
|
+
this.REDIRECT_URL = redirectUrl;
|
|
397
|
+
this.registerOnSuccessLogin(loggedInParams => resolve({
|
|
398
|
+
username: loggedInParams.username,
|
|
399
|
+
token: loggedInParams.token
|
|
400
|
+
}));
|
|
401
|
+
const loginUrl = await this.getLoginUrl({
|
|
402
|
+
machineName,
|
|
403
|
+
cloudDomain,
|
|
404
|
+
port
|
|
405
|
+
});
|
|
406
|
+
if (!loginUrl) {
|
|
407
|
+
reject(new Error('Failed to get login url'));
|
|
408
|
+
return;
|
|
409
|
+
}
|
|
410
|
+
if (!suppressBrowserLaunch) {
|
|
411
|
+
console.log(_chalk().default.yellow(`Your browser has been opened to visit:\n${loginUrl}`)); // eslint-disable-line no-console
|
|
412
|
+
(0, _open().default)(loginUrl).catch(err => {
|
|
413
|
+
this.logger.error(`failed to open browser on login, err: ${err}`);
|
|
414
|
+
reject(err);
|
|
415
|
+
});
|
|
416
|
+
} else {
|
|
417
|
+
console.log(_chalk().default.yellow(`Go to the following link in your browser::\n${loginUrl}`)); // eslint-disable-line no-console
|
|
418
|
+
}
|
|
419
|
+
};
|
|
420
|
+
try {
|
|
421
|
+
this.setupAuthListener({
|
|
422
|
+
port: Number(port)
|
|
423
|
+
}).then(promptLogin).catch(e => reject(e));
|
|
424
|
+
} catch (err) {
|
|
425
|
+
reject(err);
|
|
426
|
+
}
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
async getCloudScopes(scopes) {
|
|
430
|
+
const remotes = await this.scope._legacyRemotes();
|
|
431
|
+
const filteredScopesToFetch = scopes.filter(scope => {
|
|
432
|
+
return _scopes2().ScopeID.isValid(scope) && remotes.isHub(scope);
|
|
433
|
+
});
|
|
434
|
+
const queryResponse = await this.fetchFromSymphonyViaGQL(CloudMain.GET_SCOPES, {
|
|
435
|
+
ids: filteredScopesToFetch
|
|
436
|
+
});
|
|
437
|
+
const scopesFromQuery = queryResponse?.data?.getScopes;
|
|
438
|
+
if (!scopesFromQuery) return [];
|
|
439
|
+
return scopesFromQuery.map(scope => {
|
|
440
|
+
const scopeDescriptorObj = _objectSpread(_objectSpread({}, scope), {}, {
|
|
441
|
+
id: _scopes2().ScopeID.fromString(scope.id)
|
|
442
|
+
});
|
|
443
|
+
return _scopes().ScopeDescriptor.fromObject(scopeDescriptorObj);
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
async fetchFromSymphonyViaGQL(query, variables) {
|
|
447
|
+
if (!this.isLoggedIn()) return null;
|
|
448
|
+
const graphqlUrl = `https://${this.getCloudApi()}${CloudMain.GRAPHQL_ENDPOINT}`;
|
|
449
|
+
const body = JSON.stringify({
|
|
450
|
+
query,
|
|
451
|
+
variables
|
|
452
|
+
});
|
|
453
|
+
const headers = _objectSpread({
|
|
454
|
+
'Content-Type': 'application/json'
|
|
455
|
+
}, this.getAuthHeader());
|
|
456
|
+
try {
|
|
457
|
+
const response = await fetch(graphqlUrl, {
|
|
458
|
+
method: 'POST',
|
|
459
|
+
headers,
|
|
460
|
+
body
|
|
461
|
+
});
|
|
462
|
+
if (!response.ok) {
|
|
463
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
464
|
+
}
|
|
465
|
+
return await response.json();
|
|
466
|
+
} catch (error) {
|
|
467
|
+
this.logger.debug('fetchFromSymphonyViaGQL. ', 'Error fetching data: ', error);
|
|
468
|
+
return null;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
static async provider([loggerMain, graphql, express, workspace, scope, globalConfig, cli, ui], config, [onSuccessLoginSlot]) {
|
|
472
|
+
const logger = loggerMain.createLogger(_cloud2().CloudAspect.id);
|
|
473
|
+
const cloudMain = new CloudMain(config, logger, express, workspace, scope, globalConfig, onSuccessLoginSlot);
|
|
474
|
+
const loginCmd = new (_login().LoginCmd)(cloudMain);
|
|
475
|
+
const logoutCmd = new (_logout().LogoutCmd)(cloudMain);
|
|
476
|
+
const whoamiCmd = new (_whoami().WhoamiCmd)(cloudMain);
|
|
477
|
+
cli.register(loginCmd, logoutCmd, whoamiCmd);
|
|
478
|
+
graphql.register((0, _cloud().cloudSchema)(cloudMain));
|
|
479
|
+
if (workspace) {
|
|
480
|
+
ui.registerOnStart(async () => {
|
|
481
|
+
await cloudMain.setupAuthListener();
|
|
482
|
+
return undefined;
|
|
483
|
+
});
|
|
484
|
+
}
|
|
485
|
+
return cloudMain;
|
|
64
486
|
}
|
|
65
487
|
}
|
|
66
488
|
exports.CloudMain = CloudMain;
|
|
67
|
-
|
|
68
|
-
_defineProperty(CloudMain, "
|
|
489
|
+
_class = CloudMain;
|
|
490
|
+
_defineProperty(CloudMain, "ERROR_RESPONSE", 500);
|
|
491
|
+
_defineProperty(CloudMain, "DEFAULT_PORT", 8888);
|
|
492
|
+
_defineProperty(CloudMain, "REDIRECT", 302);
|
|
493
|
+
_defineProperty(CloudMain, "GRAPHQL_ENDPOINT", '/graphql');
|
|
494
|
+
_defineProperty(CloudMain, "GET_SCOPES", `
|
|
495
|
+
query GET_SCOPES($ids: [String]!) {
|
|
496
|
+
getScopes(ids: $ids) {
|
|
497
|
+
id
|
|
498
|
+
scopeStyle {
|
|
499
|
+
icon
|
|
500
|
+
backgroundIconColor
|
|
501
|
+
stripColor
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
`);
|
|
506
|
+
_defineProperty(CloudMain, "slots", [_harmony().Slot.withType()]);
|
|
507
|
+
_defineProperty(CloudMain, "dependencies", [_logger().LoggerAspect, _graphql().default, _express().ExpressAspect, _workspace().default, _scope().default, _globalConfig().default, _cli().default, _ui().default]);
|
|
69
508
|
_defineProperty(CloudMain, "runtime", _cli().MainRuntime);
|
|
70
509
|
_defineProperty(CloudMain, "defaultConfig", {
|
|
71
510
|
cloudDomain: (0, _constants().getCloudDomain)(),
|
|
@@ -76,8 +515,9 @@ _defineProperty(CloudMain, "defaultConfig", {
|
|
|
76
515
|
analyticsDomain: _constants().DEFAULT_ANALYTICS_DOMAIN,
|
|
77
516
|
registryUrl: _constants().DEFAULT_REGISTRY_URL,
|
|
78
517
|
cloudExporterUrl: _constants().CENTRAL_BIT_HUB_URL,
|
|
79
|
-
cloudHubName: _constants().CENTRAL_BIT_HUB_NAME
|
|
518
|
+
cloudHubName: _constants().CENTRAL_BIT_HUB_NAME,
|
|
519
|
+
loginPort: _class.DEFAULT_PORT
|
|
80
520
|
});
|
|
81
|
-
|
|
521
|
+
_cloud2().CloudAspect.addRuntime(CloudMain);
|
|
82
522
|
|
|
83
523
|
//# sourceMappingURL=cloud.main.runtime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_cli","data","require","_constants","_cloud","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","CloudMain","constructor","config","getCloudDomain","cloudDomain","getCloudHubDomain","cloudHubDomain","getCloudApi","cloudApi","getCloudGraphQL","cloudGraphQL","getLoginDomain","loginDomain","getAnalyticsDomain","analyticsDomain","getRegistryUrl","registryUrl","getCloudExporterUrl","cloudExporterUrl","getHubName","cloudHubName","provider","_deps","exports","MainRuntime","DEFAULT_HUB_DOMAIN","getSymphonyUrl","SYMPHONY_GRAPHQL","getLoginUrl","DEFAULT_ANALYTICS_DOMAIN","DEFAULT_REGISTRY_URL","CENTRAL_BIT_HUB_URL","CENTRAL_BIT_HUB_NAME","CloudAspect","addRuntime"],"sources":["cloud.main.runtime.ts"],"sourcesContent":["import { MainRuntime } from '@teambit/cli';\nimport {\n getCloudDomain,\n DEFAULT_HUB_DOMAIN,\n getSymphonyUrl,\n SYMPHONY_GRAPHQL,\n getLoginUrl,\n DEFAULT_ANALYTICS_DOMAIN,\n DEFAULT_REGISTRY_URL,\n CENTRAL_BIT_HUB_URL,\n CENTRAL_BIT_HUB_NAME,\n} from '@teambit/legacy/dist/constants';\n\nimport { CloudAspect } from './cloud.aspect';\n\nexport interface CloudWorkspaceConfig {\n cloudDomain: string;\n cloudHubDomain: string;\n cloudApi: string;\n cloudGraphQL: string;\n loginDomain: string;\n analyticsDomain: string;\n registryUrl: string;\n cloudExporterUrl: string;\n cloudHubName: string;\n}\n\nexport class CloudMain {\n constructor(private config: CloudWorkspaceConfig) {}\n\n getCloudDomain(): string {\n return this.config.cloudDomain;\n }\n\n getCloudHubDomain(): string {\n return this.config.cloudHubDomain;\n }\n\n getCloudApi(): string {\n return this.config.cloudApi;\n }\n\n getCloudGraphQL(): string {\n return this.config.cloudGraphQL;\n }\n getLoginDomain(): string {\n return this.config.loginDomain;\n }\n\n getAnalyticsDomain(): string {\n return this.config.analyticsDomain;\n }\n\n getRegistryUrl(): string {\n return this.config.registryUrl;\n }\n\n getCloudExporterUrl(): string {\n return this.config.cloudExporterUrl;\n }\n\n getHubName(): string {\n return this.config.cloudHubName;\n }\n\n static slots = [];\n static dependencies = [];\n static runtime = MainRuntime;\n static defaultConfig: CloudWorkspaceConfig = {\n cloudDomain: getCloudDomain(),\n cloudHubDomain: DEFAULT_HUB_DOMAIN,\n cloudApi: getSymphonyUrl(),\n cloudGraphQL: SYMPHONY_GRAPHQL,\n loginDomain: getLoginUrl(),\n analyticsDomain: DEFAULT_ANALYTICS_DOMAIN,\n registryUrl: DEFAULT_REGISTRY_URL,\n cloudExporterUrl: CENTRAL_BIT_HUB_URL,\n cloudHubName: CENTRAL_BIT_HUB_NAME,\n };\n static async provider(_deps, config: CloudWorkspaceConfig) {\n return new CloudMain(config);\n }\n}\n\nCloudAspect.addRuntime(CloudMain);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_harmony","data","require","_cli","_interopRequireWildcard","_uuid","_chalk","_interopRequireDefault","_os","_open","_scopes","_scopes2","_logger","_constants","_scope","_globalFlags","_graphql","_workspace","_express","_globalConfig","_ui","_cloud","_cloud2","_login","_logout","_whoami","_class","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","key","value","_toPropertyKey","configurable","writable","_toPrimitive","String","Symbol","toPrimitive","TypeError","Number","CloudMain","constructor","config","logger","express","workspace","scope","globalConfig","onSuccessLoginSlot","Map","setupAuthListener","port","portFromParams","clientId","v4","Promise","resolve","reject","getLoginPort","existingAuthListener","authListenerByPort","debug","expressApp","createApp","authServer","listen","existing","server","on","err","code","warn","then","catch","error","req","res","query","clientIdFromReq","redirectUri","username","usernameFromReq","undefined","token","Array","isArray","status","send","setSync","CFG_USER_TOKEN_KEY","CFG_USER_NAME_KEY","onLoggedInFns","values","fn","REDIRECT_URL","redirect","ERROR_RESPONSE","registerOnSuccessLogin","onSuccessLoginFn","register","getCloudDomain","cloudDomain","getCloudHubDomain","cloudHubDomain","getCloudApi","cloudApi","getCloudGraphQL","cloudGraphQL","getLoginDomain","loginDomain","getAnalyticsDomain","analyticsDomain","getRegistryUrl","registryUrl","getCloudExporterUrl","cloudExporterUrl","getHubName","cloudHubName","loginPort","DEFAULT_PORT","isLoggedIn","Boolean","getAuthToken","invalidateCache","processToken","globalFlags","getSync","getAuthHeader","Authorization","getCurrentUser","route","url","opts","method","headers","fetch","response","json","payload","getUsername","getLoginUrl","redirectUrl","machineName","loginUrl","authListenerForPort","os","hostname","process","platform","authListener","encodeURI","logout","delSync","whoami","currentUser","login","suppressBrowserLaunch","isAlreadyLoggedIn","promptLogin","loggedInParams","Error","console","log","chalk","yellow","open","getCloudScopes","scopes","remotes","_legacyRemotes","filteredScopesToFetch","ScopeID","isValid","isHub","queryResponse","fetchFromSymphonyViaGQL","GET_SCOPES","ids","scopesFromQuery","getScopes","map","scopeDescriptorObj","id","fromString","ScopeDescriptor","fromObject","variables","graphqlUrl","GRAPHQL_ENDPOINT","body","JSON","stringify","ok","provider","loggerMain","graphql","cli","ui","createLogger","CloudAspect","cloudMain","loginCmd","LoginCmd","logoutCmd","LogoutCmd","whoamiCmd","WhoamiCmd","cloudSchema","registerOnStart","exports","Slot","withType","LoggerAspect","GraphqlAspect","ExpressAspect","WorkspaceAspect","ScopeAspect","GlobalConfigAspect","CLIAspect","UIAspect","MainRuntime","DEFAULT_HUB_DOMAIN","getSymphonyUrl","SYMPHONY_GRAPHQL","DEFAULT_ANALYTICS_DOMAIN","DEFAULT_REGISTRY_URL","CENTRAL_BIT_HUB_URL","CENTRAL_BIT_HUB_NAME","addRuntime"],"sources":["cloud.main.runtime.ts"],"sourcesContent":["import { Slot, SlotRegistry } from '@teambit/harmony';\nimport CLIAspect, { CLIMain, MainRuntime } from '@teambit/cli';\nimport { v4 } from 'uuid';\nimport chalk from 'chalk';\nimport os from 'os';\nimport open from 'open';\nimport * as http from 'http';\nimport { Express } from 'express';\nimport { GetScopesGQLResponse } from '@teambit/cloud.models.cloud-scope';\nimport { CloudUser, CloudUserAPIResponse } from '@teambit/cloud.models.cloud-user';\nimport { ScopeDescriptor } from '@teambit/scopes.scope-descriptor';\nimport { ScopeID } from '@teambit/scopes.scope-id';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport {\n getCloudDomain,\n DEFAULT_HUB_DOMAIN,\n getSymphonyUrl,\n SYMPHONY_GRAPHQL,\n getLoginUrl,\n DEFAULT_ANALYTICS_DOMAIN,\n DEFAULT_REGISTRY_URL,\n CENTRAL_BIT_HUB_URL,\n CENTRAL_BIT_HUB_NAME,\n CFG_USER_TOKEN_KEY,\n CFG_USER_NAME_KEY,\n} from '@teambit/legacy/dist/constants';\nimport ScopeAspect, { ScopeMain } from '@teambit/scope';\nimport globalFlags from '@teambit/legacy/dist/cli/global-flags';\nimport GraphqlAspect, { GraphqlMain } from '@teambit/graphql';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { ExpressAspect, ExpressMain } from '@teambit/express';\nimport GlobalConfigAspect, { GlobalConfigMain } from '@teambit/global-config';\nimport UIAspect, { UiMain } from '@teambit/ui';\nimport { cloudSchema } from './cloud.graphql';\nimport { CloudAspect } from './cloud.aspect';\nimport { LoginCmd } from './login.cmd';\nimport { LogoutCmd } from './logout.cmd';\nimport { WhoamiCmd } from './whoami.cmd';\n\nexport interface CloudWorkspaceConfig {\n cloudDomain: string;\n cloudHubDomain: string;\n cloudApi: string;\n cloudGraphQL: string;\n loginDomain: string;\n analyticsDomain: string;\n registryUrl: string;\n cloudExporterUrl: string;\n cloudHubName: string;\n loginPort?: number;\n}\n\ntype CloudAuthListener = {\n port: number;\n server?: http.Server;\n username?: string | null;\n clientId?: string;\n expressApp?: Express | null;\n};\n\nexport type OnSuccessLogin = ({ username, token }: { username?: string; token?: string }) => void;\nexport type OnSuccessLoginSlot = SlotRegistry<OnSuccessLogin>;\nexport class CloudMain {\n static ERROR_RESPONSE = 500;\n static DEFAULT_PORT = 8888;\n static REDIRECT = 302;\n static GRAPHQL_ENDPOINT = '/graphql';\n private authListenerByPort: Map<number, CloudAuthListener> = new Map();\n private REDIRECT_URL?: string;\n\n constructor(\n private config: CloudWorkspaceConfig,\n public logger: Logger,\n public express: ExpressMain,\n public workspace: Workspace,\n public scope: ScopeMain,\n public globalConfig: GlobalConfigMain,\n public onSuccessLoginSlot: OnSuccessLoginSlot\n ) {}\n\n setupAuthListener({\n port: portFromParams,\n clientId = v4(),\n }: {\n port?: number;\n clientId?: string;\n } = {}): Promise<CloudAuthListener | null> {\n return new Promise((resolve, reject) => {\n const port = portFromParams || this.getLoginPort();\n const existingAuthListener = this.authListenerByPort.get(port);\n\n if (existingAuthListener) {\n this.logger.debug(`auth server is already running on port ${port}`);\n resolve(existingAuthListener);\n return;\n }\n\n const expressApp = this.express.createApp();\n\n this.authListenerByPort.set(port, {\n port,\n clientId,\n });\n\n const authServer = expressApp\n .listen(port, () => {\n this.logger.debug(`cloud express server started on port ${port}`);\n const existing = this.authListenerByPort.get(port) ?? {};\n this.authListenerByPort.set(port, {\n port,\n clientId,\n ...existing,\n server: authServer,\n });\n resolve({\n port,\n server: authServer,\n clientId,\n });\n })\n .on('error', (err) => {\n // @ts-ignore\n const { code } = err;\n if (code === 'EADDRINUSE') {\n // set up a new auth listener with new port\n this.logger.warn(`port: ${port} already in use for cloud auth listener, trying port ${port + 1}`);\n // eslint-disable-next-line promise/no-promise-in-callback\n this.setupAuthListener({\n port: port + 1,\n })\n .then(resolve)\n .catch(reject);\n return;\n }\n this.logger.error(`cloud express server failed to start on port ${port}`, err);\n reject(err);\n });\n\n expressApp.get('/', (req, res) => {\n this.logger.debug('cloud.authListener', 'received request', req.query);\n try {\n const { clientId: clientIdFromReq, redirectUri, username: usernameFromReq } = req.query;\n const username = typeof usernameFromReq === 'string' ? usernameFromReq : undefined;\n let { token } = req.query;\n if (Array.isArray(token)) {\n token = token[0];\n }\n if (typeof token !== 'string') {\n res.status(400).send('Invalid token format');\n return res;\n }\n this.globalConfig.setSync(CFG_USER_TOKEN_KEY, token);\n if (username) this.globalConfig.setSync(CFG_USER_NAME_KEY, username);\n\n const onLoggedInFns = this.onSuccessLoginSlot.values();\n onLoggedInFns.forEach((fn) => fn({ username, token: token as string }));\n\n const existing = this.authListenerByPort.get(port) ?? {};\n this.authListenerByPort.set(port, {\n port,\n server: authServer,\n clientId: clientIdFromReq as string,\n ...existing,\n username,\n });\n if (this.REDIRECT_URL) return res.redirect(this.REDIRECT_URL);\n if (typeof redirectUri === 'string' && redirectUri) return res.redirect(redirectUri);\n return res.status(200).send('Login successful');\n } catch (err) {\n this.logger.error(`Error on login: ${err}`);\n res.status(CloudMain.ERROR_RESPONSE).send('Login failed');\n reject(err);\n return res;\n }\n });\n });\n }\n\n registerOnSuccessLogin(onSuccessLoginFn: OnSuccessLogin) {\n this.onSuccessLoginSlot.register(onSuccessLoginFn);\n return this;\n }\n\n getCloudDomain(): string {\n return this.config.cloudDomain;\n }\n\n getCloudHubDomain(): string {\n return this.config.cloudHubDomain;\n }\n\n getCloudApi(): string {\n return this.config.cloudApi;\n }\n\n getCloudGraphQL(): string {\n return this.config.cloudGraphQL;\n }\n getLoginDomain(): string {\n return this.config.loginDomain;\n }\n\n getAnalyticsDomain(): string {\n return this.config.analyticsDomain;\n }\n\n getRegistryUrl(): string {\n return this.config.registryUrl;\n }\n\n getCloudExporterUrl(): string {\n return this.config.cloudExporterUrl;\n }\n\n getHubName(): string {\n return this.config.cloudHubName;\n }\n\n getLoginPort(): number {\n return this.config.loginPort || CloudMain.DEFAULT_PORT;\n }\n\n isLoggedIn(): boolean {\n return Boolean(this.getAuthToken());\n }\n\n getAuthToken() {\n this.globalConfig.invalidateCache();\n const processToken = globalFlags.token;\n const token = processToken || this.globalConfig.getSync(CFG_USER_TOKEN_KEY);\n if (!token) return null;\n\n return token;\n }\n\n getAuthHeader() {\n return {\n Authorization: `Bearer ${this.getAuthToken()}`,\n };\n }\n\n async getCurrentUser(): Promise<CloudUser | null> {\n const isLoggedIn = this.isLoggedIn();\n if (!isLoggedIn) {\n return null;\n }\n const route = 'user/user';\n this.logger.debug(`getCurrentUser, url: ${this.getCloudApi()}/${route}`);\n const url = `https://${this.getCloudApi()}/${route}`;\n const opts = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n ...this.getAuthHeader(),\n },\n };\n\n return fetch(url, opts)\n .then(async (res) => {\n if (res.status === 401) {\n return null;\n }\n const response: CloudUserAPIResponse = await res.json();\n return { ...(response.payload || {}) };\n })\n .catch((err) => {\n this.logger.error(`failed to get current user, err: ${err}`);\n return null;\n });\n }\n\n getUsername(): string | undefined {\n return this.globalConfig.getSync(CFG_USER_NAME_KEY);\n }\n\n async getLoginUrl({\n redirectUrl,\n machineName,\n cloudDomain,\n port: portFromParams,\n }: { redirectUrl?: string; machineName?: string; cloudDomain?: string; port?: string } = {}): Promise<string | null> {\n const loginUrl = cloudDomain || this.getLoginDomain();\n const port = Number(portFromParams) || this.getLoginPort();\n if (redirectUrl) {\n this.REDIRECT_URL = redirectUrl;\n }\n const authListenerForPort = this.authListenerByPort.get(port);\n if (authListenerForPort) {\n return `${loginUrl}?port=${port}&clientId=${authListenerForPort.clientId}&responseType=token&deviceName=${\n machineName || os.hostname()\n }&os=${process.platform}`;\n }\n const authListener = await this.setupAuthListener({ port });\n\n if (!authListener) return null;\n\n return encodeURI(\n `${loginUrl}?port=${port}&clientId=${authListener?.clientId}&responseType=token&deviceName=${\n machineName || os.hostname()\n }&os=${process.platform}`\n );\n }\n\n logout() {\n this.globalConfig.delSync(CFG_USER_TOKEN_KEY);\n this.globalConfig.delSync(CFG_USER_NAME_KEY);\n }\n\n async whoami(): Promise<string | undefined> {\n const currentUser = await this.getCurrentUser();\n if (!currentUser?.username) {\n return undefined;\n }\n return currentUser.username;\n }\n\n async login(\n port?: string,\n suppressBrowserLaunch?: boolean,\n machineName?: string,\n cloudDomain?: string,\n redirectUrl?: string\n ): Promise<{\n isAlreadyLoggedIn?: boolean;\n username?: string;\n token?: string;\n } | null> {\n return new Promise((resolve, reject) => {\n if (this.isLoggedIn()) {\n resolve({\n isAlreadyLoggedIn: true,\n username: this.globalConfig.getSync(CFG_USER_NAME_KEY),\n token: this.globalConfig.getSync(CFG_USER_TOKEN_KEY),\n });\n return;\n }\n\n const promptLogin = async () => {\n this.REDIRECT_URL = redirectUrl;\n this.registerOnSuccessLogin((loggedInParams) =>\n resolve({\n username: loggedInParams.username,\n token: loggedInParams.token,\n })\n );\n\n const loginUrl = await this.getLoginUrl({\n machineName,\n cloudDomain,\n port,\n });\n if (!loginUrl) {\n reject(new Error('Failed to get login url'));\n return;\n }\n if (!suppressBrowserLaunch) {\n console.log(chalk.yellow(`Your browser has been opened to visit:\\n${loginUrl}`)); // eslint-disable-line no-console\n open(loginUrl).catch((err) => {\n this.logger.error(`failed to open browser on login, err: ${err}`);\n reject(err);\n });\n } else {\n console.log(chalk.yellow(`Go to the following link in your browser::\\n${loginUrl}`)); // eslint-disable-line no-console\n }\n };\n try {\n this.setupAuthListener({\n port: Number(port),\n })\n .then(promptLogin)\n .catch((e) => reject(e));\n } catch (err) {\n reject(err);\n }\n });\n }\n\n static GET_SCOPES = `\n query GET_SCOPES($ids: [String]!) {\n getScopes(ids: $ids) {\n id\n scopeStyle {\n icon\n backgroundIconColor\n stripColor\n }\n }\n }\n `;\n\n async getCloudScopes(scopes: string[]): Promise<ScopeDescriptor[]> {\n const remotes = await this.scope._legacyRemotes();\n const filteredScopesToFetch = scopes.filter((scope) => {\n return ScopeID.isValid(scope) && remotes.isHub(scope);\n });\n const queryResponse = await this.fetchFromSymphonyViaGQL<GetScopesGQLResponse>(CloudMain.GET_SCOPES, {\n ids: filteredScopesToFetch,\n });\n const scopesFromQuery = queryResponse?.data?.getScopes;\n if (!scopesFromQuery) return [];\n return scopesFromQuery.map((scope) => {\n const scopeDescriptorObj = {\n ...scope,\n id: ScopeID.fromString(scope.id),\n };\n return ScopeDescriptor.fromObject(scopeDescriptorObj);\n });\n }\n\n async fetchFromSymphonyViaGQL<T>(query: string, variables?: Record<string, any>): Promise<T | null> {\n if (!this.isLoggedIn()) return null;\n const graphqlUrl = `https://${this.getCloudApi()}${CloudMain.GRAPHQL_ENDPOINT}`;\n const body = JSON.stringify({\n query,\n variables,\n });\n const headers = {\n 'Content-Type': 'application/json',\n ...this.getAuthHeader(),\n };\n try {\n const response = await fetch(graphqlUrl, {\n method: 'POST',\n headers,\n body,\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n return await response.json();\n } catch (error) {\n this.logger.debug('fetchFromSymphonyViaGQL. ', 'Error fetching data: ', error);\n return null;\n }\n }\n\n static slots = [Slot.withType<OnSuccessLogin>()];\n static dependencies = [\n LoggerAspect,\n GraphqlAspect,\n ExpressAspect,\n WorkspaceAspect,\n ScopeAspect,\n GlobalConfigAspect,\n CLIAspect,\n UIAspect,\n ];\n static runtime = MainRuntime;\n static defaultConfig: CloudWorkspaceConfig = {\n cloudDomain: getCloudDomain(),\n cloudHubDomain: DEFAULT_HUB_DOMAIN,\n cloudApi: getSymphonyUrl(),\n cloudGraphQL: SYMPHONY_GRAPHQL,\n loginDomain: getLoginUrl(),\n analyticsDomain: DEFAULT_ANALYTICS_DOMAIN,\n registryUrl: DEFAULT_REGISTRY_URL,\n cloudExporterUrl: CENTRAL_BIT_HUB_URL,\n cloudHubName: CENTRAL_BIT_HUB_NAME,\n loginPort: CloudMain.DEFAULT_PORT,\n };\n static async provider(\n [loggerMain, graphql, express, workspace, scope, globalConfig, cli, ui]: [\n LoggerMain,\n GraphqlMain,\n ExpressMain,\n Workspace,\n ScopeMain,\n GlobalConfigMain,\n CLIMain,\n UiMain\n ],\n config: CloudWorkspaceConfig,\n [onSuccessLoginSlot]: [OnSuccessLoginSlot]\n ) {\n const logger = loggerMain.createLogger(CloudAspect.id);\n const cloudMain = new CloudMain(config, logger, express, workspace, scope, globalConfig, onSuccessLoginSlot);\n const loginCmd = new LoginCmd(cloudMain);\n const logoutCmd = new LogoutCmd(cloudMain);\n const whoamiCmd = new WhoamiCmd(cloudMain);\n cli.register(loginCmd, logoutCmd, whoamiCmd);\n graphql.register(cloudSchema(cloudMain));\n if (workspace) {\n ui.registerOnStart(async () => {\n await cloudMain.setupAuthListener();\n return undefined;\n });\n }\n return cloudMain;\n }\n}\n\nCloudAspect.addRuntime(CloudMain);\n"],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { UserBarItem, UserBarItemSlot, UserBarSection, UserBarSectionSlot } from '@teambit/cloud.ui.user-bar';
|
|
2
|
+
import { WorkspaceUI } from '@teambit/workspace';
|
|
3
|
+
export declare class CloudUI {
|
|
4
|
+
private userBarSectionSlot;
|
|
5
|
+
private userBarItemSlot;
|
|
6
|
+
constructor(userBarSectionSlot: UserBarSectionSlot, userBarItemSlot: UserBarItemSlot);
|
|
7
|
+
/**
|
|
8
|
+
* register a new user bar item.
|
|
9
|
+
*/
|
|
10
|
+
registerUserBarItem(userBarItem: UserBarItem[]): this;
|
|
11
|
+
/**
|
|
12
|
+
* register a new user bar section
|
|
13
|
+
*/
|
|
14
|
+
registerUserBarSection(sections: UserBarSection[]): this;
|
|
15
|
+
/**
|
|
16
|
+
* list user bar items.
|
|
17
|
+
*/
|
|
18
|
+
listUserBarItems(): UserBarItem[];
|
|
19
|
+
/**
|
|
20
|
+
* list all user bar sections.
|
|
21
|
+
*/
|
|
22
|
+
listUserBarSections(): UserBarSection[];
|
|
23
|
+
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
|
24
|
+
static dependencies: import("@teambit/harmony").Aspect[];
|
|
25
|
+
static slots: (((registerFn: () => string) => import("@teambit/harmony").SlotRegistry<UserBarItem[]>) | ((registerFn: () => string) => import("@teambit/harmony").SlotRegistry<UserBarSection[]>))[];
|
|
26
|
+
static provider([workspace]: [WorkspaceUI], _: any, [userBarItemSlot, userBarSectionSlot]: [UserBarItemSlot, UserBarSectionSlot]): Promise<CloudUI>;
|
|
27
|
+
}
|
|
28
|
+
export default CloudUI;
|