@teambit/cloud 0.0.820 → 0.0.822
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/dist/cloud.graphql.js +1 -1
- package/dist/cloud.graphql.js.map +1 -1
- package/dist/cloud.main.runtime.d.ts +6 -6
- package/dist/cloud.main.runtime.js +31 -30
- package/dist/cloud.main.runtime.js.map +1 -1
- package/dist/login.cmd.js +2 -2
- package/dist/login.cmd.js.map +1 -1
- package/package.json +14 -14
- /package/dist/{preview-1739416868289.js → preview-1739589589774.js} +0 -0
package/dist/cloud.graphql.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_graphqlTag","data","require","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","cloudSchema","cloud","typeDefs","gql","resolvers","CloudScope","id","scope","toString","Query","isLoggedIn","loginUrl","getLoginUrl","getCurrentUser","user","getCloudScopes","_","ids","scopes","Mutation","logout","setRedirectUrl","redirectUrl"],"sources":["cloud.graphql.ts"],"sourcesContent":["import { gql } from 'graphql-tag';\nimport { Schema } from '@teambit/graphql';\nimport { ScopeDescriptor } from '@teambit/scopes.scope-descriptor';\nimport { CloudMain } from './cloud.main.runtime';\n\nexport function cloudSchema(cloud: CloudMain): Schema {\n return {\n typeDefs: gql`\n type CloudScope {\n id: String!\n icon: String\n backgroundIconColor: String\n stripColor: String\n displayName: String\n }\n type CloudUser {\n displayName: String\n username: String\n profileImage: String\n }\n type Query {\n getCurrentUser: CloudUser\n loginUrl: String!\n getCloudScopes(ids: [String!]): [CloudScope!]\n isLoggedIn: Boolean\n }\n type Mutation {\n logout: Boolean\n setRedirectUrl(redirectUrl: String!): Boolean\n }\n `,\n resolvers: {\n CloudScope: {\n id: (scope?: ScopeDescriptor) => {\n return scope?.id.toString();\n },\n },\n Query: {\n isLoggedIn: () => {\n return cloud.isLoggedIn();\n },\n loginUrl: () => {\n return cloud.getLoginUrl();\n },\n getCurrentUser: async () => {\n const user = await cloud.getCurrentUser();\n return {\n ...user,\n };\n },\n getCloudScopes: async (_, { ids }) => {\n const scopes = await cloud.getCloudScopes(ids);\n return scopes;\n },\n },\n Mutation: {\n logout: async () => {\n cloud.logout();\n return true;\n },\n setRedirectUrl: async (_, { redirectUrl }: { redirectUrl: string }) => {\n cloud.setRedirectUrl(redirectUrl);\n return true;\n },\n },\n },\n };\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAkC,SAAAE,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,IAAAe,eAAA,CAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAAA,SAAAgB,gBAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAmB,cAAA,CAAAnB,CAAA,MAAAD,CAAA,GAAAG,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,IAAAoB,KAAA,EAAAnB,CAAA,EAAAO,UAAA,MAAAa,YAAA,MAAAC,QAAA,UAAAvB,CAAA,CAAAC,CAAA,IAAAC,CAAA,EAAAF,CAAA;AAAA,SAAAoB,eAAAlB,CAAA,QAAAsB,CAAA,GAAAC,YAAA,CAAAvB,CAAA,uCAAAsB,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAvB,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAF,CAAA,GAAAE,CAAA,CAAAwB,MAAA,CAAAC,WAAA,kBAAA3B,CAAA,QAAAwB,CAAA,GAAAxB,CAAA,CAAA4B,IAAA,CAAA1B,CAAA,EAAAD,CAAA,uCAAAuB,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAA5B,CAAA,GAAA6B,MAAA,GAAAC,MAAA,EAAA7B,CAAA;AAK3B,SAAS8B,WAAWA,CAACC,KAAgB,EAAU;EACpD,OAAO;IACLC,QAAQ,EAAE,IAAAC,iBAAG;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACDC,SAAS,EAAE;MACTC,UAAU,EAAE;QACVC,EAAE,EAAGC,KAAuB,IAAK;UAC/B,OAAOA,KAAK,EAAED,EAAE,CAACE,QAAQ,CAAC,CAAC;QAC7B;MACF,CAAC;MACDC,KAAK,EAAE;QACLC,UAAU,EAAEA,CAAA,KAAM;UAChB,OAAOT,KAAK,CAACS,UAAU,CAAC,CAAC;QAC3B,CAAC;QACDC,QAAQ,EAAEA,CAAA,KAAM;UACd,OAAOV,KAAK,CAACW,WAAW,CAAC,CAAC;QAC5B,CAAC;QACDC,cAAc,EAAE,MAAAA,CAAA,KAAY;UAC1B,MAAMC,IAAI,GAAG,MAAMb,KAAK,CAACY,cAAc,CAAC,CAAC;UACzC,OAAAjC,aAAA,KACKkC,IAAI;QAEX,CAAC;QACDC,cAAc,EAAE,MAAAA,CAAOC,CAAC,EAAE;UAAEC;QAAI,CAAC,KAAK;UACpC,MAAMC,MAAM,GAAG,MAAMjB,KAAK,CAACc,cAAc,CAACE,GAAG,CAAC;UAC9C,OAAOC,MAAM;QACf;MACF,CAAC;MACDC,QAAQ,EAAE;QACRC,MAAM,EAAE,MAAAA,CAAA,KAAY;
|
|
1
|
+
{"version":3,"names":["_graphqlTag","data","require","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","cloudSchema","cloud","typeDefs","gql","resolvers","CloudScope","id","scope","toString","Query","isLoggedIn","loginUrl","getLoginUrl","getCurrentUser","user","getCloudScopes","_","ids","scopes","Mutation","logout","setRedirectUrl","redirectUrl"],"sources":["cloud.graphql.ts"],"sourcesContent":["import { gql } from 'graphql-tag';\nimport { Schema } from '@teambit/graphql';\nimport { ScopeDescriptor } from '@teambit/scopes.scope-descriptor';\nimport { CloudMain } from './cloud.main.runtime';\n\nexport function cloudSchema(cloud: CloudMain): Schema {\n return {\n typeDefs: gql`\n type CloudScope {\n id: String!\n icon: String\n backgroundIconColor: String\n stripColor: String\n displayName: String\n }\n type CloudUser {\n displayName: String\n username: String\n profileImage: String\n }\n type Query {\n getCurrentUser: CloudUser\n loginUrl: String!\n getCloudScopes(ids: [String!]): [CloudScope!]\n isLoggedIn: Boolean\n }\n type Mutation {\n logout: Boolean\n setRedirectUrl(redirectUrl: String!): Boolean\n }\n `,\n resolvers: {\n CloudScope: {\n id: (scope?: ScopeDescriptor) => {\n return scope?.id.toString();\n },\n },\n Query: {\n isLoggedIn: () => {\n return cloud.isLoggedIn();\n },\n loginUrl: () => {\n return cloud.getLoginUrl();\n },\n getCurrentUser: async () => {\n const user = await cloud.getCurrentUser();\n return {\n ...user,\n };\n },\n getCloudScopes: async (_, { ids }) => {\n const scopes = await cloud.getCloudScopes(ids);\n return scopes;\n },\n },\n Mutation: {\n logout: async () => {\n await cloud.logout();\n return true;\n },\n setRedirectUrl: async (_, { redirectUrl }: { redirectUrl: string }) => {\n cloud.setRedirectUrl(redirectUrl);\n return true;\n },\n },\n },\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,8 +9,8 @@ import { ScopeMain } from '@teambit/scope';
|
|
|
9
9
|
import { GraphqlMain } from '@teambit/graphql';
|
|
10
10
|
import { Workspace } from '@teambit/workspace';
|
|
11
11
|
import { ExpressMain } from '@teambit/express';
|
|
12
|
-
import { GlobalConfigMain } from '@teambit/global-config';
|
|
13
12
|
import { UiMain } from '@teambit/ui';
|
|
13
|
+
import { ConfigStoreMain } from '@teambit/config-store';
|
|
14
14
|
export interface CloudWorkspaceConfig {
|
|
15
15
|
cloudDomain: string;
|
|
16
16
|
cloudHubDomain: string;
|
|
@@ -55,7 +55,7 @@ export declare class CloudMain {
|
|
|
55
55
|
express: ExpressMain;
|
|
56
56
|
workspace: Workspace;
|
|
57
57
|
scope: ScopeMain;
|
|
58
|
-
|
|
58
|
+
configStore: ConfigStoreMain;
|
|
59
59
|
onSuccessLoginSlot: OnSuccessLoginSlot;
|
|
60
60
|
static ERROR_RESPONSE: number;
|
|
61
61
|
static DEFAULT_PORT: number;
|
|
@@ -63,7 +63,7 @@ export declare class CloudMain {
|
|
|
63
63
|
static GRAPHQL_ENDPOINT: string;
|
|
64
64
|
private authListenerByPort;
|
|
65
65
|
private REDIRECT_URL?;
|
|
66
|
-
constructor(config: CloudWorkspaceConfig, logger: Logger, express: ExpressMain, workspace: Workspace, scope: ScopeMain,
|
|
66
|
+
constructor(config: CloudWorkspaceConfig, logger: Logger, express: ExpressMain, workspace: Workspace, scope: ScopeMain, configStore: ConfigStoreMain, onSuccessLoginSlot: OnSuccessLoginSlot);
|
|
67
67
|
getNpmConfig(): Record<string, string>;
|
|
68
68
|
generateNpmrc({ dryRun, force }?: {
|
|
69
69
|
dryRun?: boolean;
|
|
@@ -125,7 +125,7 @@ export declare class CloudMain {
|
|
|
125
125
|
cloudDomain?: string;
|
|
126
126
|
port?: string;
|
|
127
127
|
}): Promise<string | null>;
|
|
128
|
-
logout(): void
|
|
128
|
+
logout(): Promise<void>;
|
|
129
129
|
setRedirectUrl(redirectUrl: string): void;
|
|
130
130
|
whoami(): Promise<string | undefined>;
|
|
131
131
|
private globalConfigsToUpdateOnLogin;
|
|
@@ -150,13 +150,13 @@ export declare class CloudMain {
|
|
|
150
150
|
static dependencies: import("@teambit/harmony").Aspect[];
|
|
151
151
|
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
|
152
152
|
static defaultConfig: CloudWorkspaceConfig;
|
|
153
|
-
static provider([loggerMain, graphql, express, workspace, scope,
|
|
153
|
+
static provider([loggerMain, graphql, express, workspace, scope, configStore, cli, ui]: [
|
|
154
154
|
LoggerMain,
|
|
155
155
|
GraphqlMain,
|
|
156
156
|
ExpressMain,
|
|
157
157
|
Workspace,
|
|
158
158
|
ScopeMain,
|
|
159
|
-
|
|
159
|
+
ConfigStoreMain,
|
|
160
160
|
CLIMain,
|
|
161
161
|
UiMain
|
|
162
162
|
], config: CloudWorkspaceConfig, [onSuccessLoginSlot]: [OnSuccessLoginSlot]): Promise<CloudMain>;
|
|
@@ -109,13 +109,6 @@ function _express() {
|
|
|
109
109
|
};
|
|
110
110
|
return data;
|
|
111
111
|
}
|
|
112
|
-
function _globalConfig() {
|
|
113
|
-
const data = require("@teambit/global-config");
|
|
114
|
-
_globalConfig = function () {
|
|
115
|
-
return data;
|
|
116
|
-
};
|
|
117
|
-
return data;
|
|
118
|
-
}
|
|
119
112
|
function _child_process() {
|
|
120
113
|
const data = require("child_process");
|
|
121
114
|
_child_process = function () {
|
|
@@ -172,6 +165,13 @@ function _npmrc() {
|
|
|
172
165
|
};
|
|
173
166
|
return data;
|
|
174
167
|
}
|
|
168
|
+
function _configStore() {
|
|
169
|
+
const data = require("@teambit/config-store");
|
|
170
|
+
_configStore = function () {
|
|
171
|
+
return data;
|
|
172
|
+
};
|
|
173
|
+
return data;
|
|
174
|
+
}
|
|
175
175
|
var _CloudMain;
|
|
176
176
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
177
177
|
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; }
|
|
@@ -181,13 +181,13 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
181
181
|
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); }
|
|
182
182
|
const HTTPS = 'https://';
|
|
183
183
|
class CloudMain {
|
|
184
|
-
constructor(config, logger, express, workspace, scope,
|
|
184
|
+
constructor(config, logger, express, workspace, scope, configStore, onSuccessLoginSlot) {
|
|
185
185
|
this.config = config;
|
|
186
186
|
this.logger = logger;
|
|
187
187
|
this.express = express;
|
|
188
188
|
this.workspace = workspace;
|
|
189
189
|
this.scope = scope;
|
|
190
|
-
this.
|
|
190
|
+
this.configStore = configStore;
|
|
191
191
|
this.onSuccessLoginSlot = onSuccessLoginSlot;
|
|
192
192
|
_defineProperty(this, "authListenerByPort", new Map());
|
|
193
193
|
_defineProperty(this, "REDIRECT_URL", void 0);
|
|
@@ -337,7 +337,9 @@ class CloudMain {
|
|
|
337
337
|
this.logger.error(`cloud express server failed to start on port ${port}`, err);
|
|
338
338
|
reject(err);
|
|
339
339
|
});
|
|
340
|
-
|
|
340
|
+
|
|
341
|
+
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
342
|
+
expressApp.get('/', async (req, res) => {
|
|
341
343
|
this.logger.debug('cloud.authListener', 'received request', req.query);
|
|
342
344
|
try {
|
|
343
345
|
const {
|
|
@@ -356,8 +358,8 @@ class CloudMain {
|
|
|
356
358
|
res.status(400).send('Invalid token format');
|
|
357
359
|
return res;
|
|
358
360
|
}
|
|
359
|
-
this.
|
|
360
|
-
if (username) this.
|
|
361
|
+
await this.configStore.setConfig(_legacy().CFG_USER_TOKEN_KEY, token);
|
|
362
|
+
if (username) await this.configStore.setConfig(_legacy().CFG_USER_NAME_KEY, username);
|
|
361
363
|
const existing = this.authListenerByPort.get(port) ?? {};
|
|
362
364
|
this.authListenerByPort.set(port, _objectSpread(_objectSpread({
|
|
363
365
|
port,
|
|
@@ -367,7 +369,7 @@ class CloudMain {
|
|
|
367
369
|
username
|
|
368
370
|
}));
|
|
369
371
|
const onLoggedInFns = this.onSuccessLoginSlot.values();
|
|
370
|
-
const updatedConfigs = this.updateGlobalConfigOnLogin(cloudDomain);
|
|
372
|
+
const updatedConfigs = await this.updateGlobalConfigOnLogin(cloudDomain);
|
|
371
373
|
if (!skipConfigUpdate) {
|
|
372
374
|
this.updateNpmConfig({
|
|
373
375
|
authToken: token,
|
|
@@ -445,9 +447,8 @@ class CloudMain {
|
|
|
445
447
|
return Boolean(this.getAuthToken());
|
|
446
448
|
}
|
|
447
449
|
getAuthToken() {
|
|
448
|
-
this.globalConfig.invalidateCache();
|
|
449
450
|
const processToken = _cli().globalFlags.token;
|
|
450
|
-
const token = processToken || this.
|
|
451
|
+
const token = processToken || this.configStore.getConfig(_legacy().CFG_USER_TOKEN_KEY);
|
|
451
452
|
if (!token) return null;
|
|
452
453
|
return token;
|
|
453
454
|
}
|
|
@@ -457,7 +458,7 @@ class CloudMain {
|
|
|
457
458
|
};
|
|
458
459
|
}
|
|
459
460
|
getUsername() {
|
|
460
|
-
return this.
|
|
461
|
+
return this.configStore.getConfig(_legacy().CFG_USER_NAME_KEY);
|
|
461
462
|
}
|
|
462
463
|
ensureHttps(url) {
|
|
463
464
|
if (!url.startsWith('http')) {
|
|
@@ -493,9 +494,9 @@ class CloudMain {
|
|
|
493
494
|
if (!authListener) return null;
|
|
494
495
|
return encodeURI(`${loginUrl}?port=${port}&clientId=${authListener?.clientId}&responseType=token&deviceName=${machineName || _os().default.hostname()}&os=${process.platform}`);
|
|
495
496
|
}
|
|
496
|
-
logout() {
|
|
497
|
-
this.
|
|
498
|
-
this.
|
|
497
|
+
async logout() {
|
|
498
|
+
await this.configStore.delConfig(_legacy().CFG_USER_TOKEN_KEY);
|
|
499
|
+
await this.configStore.delConfig(_legacy().CFG_USER_NAME_KEY);
|
|
499
500
|
}
|
|
500
501
|
setRedirectUrl(redirectUrl) {
|
|
501
502
|
this.REDIRECT_URL = redirectUrl;
|
|
@@ -508,7 +509,7 @@ class CloudMain {
|
|
|
508
509
|
return currentUser.username;
|
|
509
510
|
}
|
|
510
511
|
globalConfigsToUpdateOnLogin(domain) {
|
|
511
|
-
const currentCloudDomain = this.
|
|
512
|
+
const currentCloudDomain = this.configStore.getConfig(_legacy().CFG_CLOUD_DOMAIN_KEY);
|
|
512
513
|
const res = {};
|
|
513
514
|
if (!domain || domain === _legacy().DEFAULT_CLOUD_DOMAIN) {
|
|
514
515
|
if (currentCloudDomain && currentCloudDomain !== _legacy().DEFAULT_CLOUD_DOMAIN) {
|
|
@@ -521,15 +522,15 @@ class CloudMain {
|
|
|
521
522
|
}
|
|
522
523
|
return res;
|
|
523
524
|
}
|
|
524
|
-
updateGlobalConfigOnLogin(domain) {
|
|
525
|
+
async updateGlobalConfigOnLogin(domain) {
|
|
525
526
|
const configsToUpdate = this.globalConfigsToUpdateOnLogin(domain);
|
|
526
|
-
|
|
527
|
+
for await (const [key, value] of Object.entries(configsToUpdate)) {
|
|
527
528
|
if (value) {
|
|
528
|
-
this.
|
|
529
|
+
await this.configStore.setConfig(key, value);
|
|
529
530
|
} else {
|
|
530
|
-
this.
|
|
531
|
+
await this.configStore.delConfig(key);
|
|
531
532
|
}
|
|
532
|
-
}
|
|
533
|
+
}
|
|
533
534
|
// Refresh the config after updating
|
|
534
535
|
(0, _legacy().clearCachedUrls)();
|
|
535
536
|
this.config = CloudMain.calculateConfig();
|
|
@@ -543,8 +544,8 @@ class CloudMain {
|
|
|
543
544
|
if (this.isLoggedIn()) {
|
|
544
545
|
resolve({
|
|
545
546
|
isAlreadyLoggedIn: true,
|
|
546
|
-
username: this.
|
|
547
|
-
token: this.
|
|
547
|
+
username: this.configStore.getConfig(_legacy().CFG_USER_NAME_KEY),
|
|
548
|
+
token: this.configStore.getConfig(_legacy().CFG_USER_TOKEN_KEY)
|
|
548
549
|
});
|
|
549
550
|
return;
|
|
550
551
|
}
|
|
@@ -661,9 +662,9 @@ class CloudMain {
|
|
|
661
662
|
loginPort: CloudMain.DEFAULT_PORT
|
|
662
663
|
};
|
|
663
664
|
}
|
|
664
|
-
static async provider([loggerMain, graphql, express, workspace, scope,
|
|
665
|
+
static async provider([loggerMain, graphql, express, workspace, scope, configStore, cli, ui], config, [onSuccessLoginSlot]) {
|
|
665
666
|
const logger = loggerMain.createLogger(_cloud2().CloudAspect.id);
|
|
666
|
-
const cloudMain = new CloudMain(config, logger, express, workspace, scope,
|
|
667
|
+
const cloudMain = new CloudMain(config, logger, express, workspace, scope, configStore, onSuccessLoginSlot);
|
|
667
668
|
const loginCmd = new (_login().LoginCmd)(cloudMain, 8889);
|
|
668
669
|
const logoutCmd = new (_logout().LogoutCmd)(cloudMain);
|
|
669
670
|
const whoamiCmd = new (_whoami().WhoamiCmd)(cloudMain);
|
|
@@ -719,7 +720,7 @@ _defineProperty(CloudMain, "GET_USER_ORGANIZATIONS", `
|
|
|
719
720
|
`);
|
|
720
721
|
_defineProperty(CloudMain, "PRESET_ORGS", ['bitdev', 'teambit', 'bitdesign', 'frontend', 'backend']);
|
|
721
722
|
_defineProperty(CloudMain, "slots", [_harmony().Slot.withType()]);
|
|
722
|
-
_defineProperty(CloudMain, "dependencies", [_logger().LoggerAspect, _graphql().GraphqlAspect, _express().ExpressAspect, _workspace().WorkspaceAspect, _scope().ScopeAspect,
|
|
723
|
+
_defineProperty(CloudMain, "dependencies", [_logger().LoggerAspect, _graphql().GraphqlAspect, _express().ExpressAspect, _workspace().WorkspaceAspect, _scope().ScopeAspect, _configStore().ConfigStoreAspect, _cli().CLIAspect, _ui().UIAspect]);
|
|
723
724
|
_defineProperty(CloudMain, "runtime", _cli().MainRuntime);
|
|
724
725
|
_defineProperty(CloudMain, "defaultConfig", _CloudMain.calculateConfig());
|
|
725
726
|
_cloud2().CloudAspect.addRuntime(CloudMain);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_harmony","data","require","_cli","_uuid","_chalk","_interopRequireDefault","_os","_open","_scopes","_scopes2","_logger","_legacy","_scope","_scope2","_graphql","_workspace","_express","_globalConfig","_child_process","_ui","_cloud","_cloud2","_login","_logout","_whoami","_npmrc","_CloudMain","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","HTTPS","CloudMain","constructor","config","logger","express","workspace","scope","globalConfig","onSuccessLoginSlot","Map","getNpmConfig","output","execSync","encoding","JSON","parse","error","Error","generateNpmrc","dryRun","force","authToken","getAuthToken","currentUser","getCurrentUser","username","warn","getUsername","updateNpmConfig","detectConfigConflicts","newConfigs","registryDomain","existingConfigs","conflicts","split","line","key","newValue","trimmedKey","trim","existingValue","isRegistryConflict","includes","original","modifications","orgs","getUserOrganizations","orgNames","map","org","name","allOrgs","Array","from","Set","PRESET_ORGS","sort","registryUrlStr","getRegistryUrl","registryUrl","URL","scopeConfig","join","authConfig","host","configUpdates","getCloudDomain","configToUpdate","replace","stdio","setupAuthListener","port","portFromParams","clientId","v4","skipConfigUpdate","cloudDomain","Promise","resolve","reject","getLoginPort","existingAuthListener","authListenerByPort","get","debug","expressApp","createApp","set","authServer","listen","existing","server","on","err","code","then","catch","req","res","query","clientIdFromReq","redirectUri","usernameFromReq","undefined","token","isArray","status","send","setSync","CFG_USER_TOKEN_KEY","CFG_USER_NAME_KEY","onLoggedInFns","values","updatedConfigs","updateGlobalConfigOnLogin","fn","npmrcUpdateResult","toString","REDIRECT_URL","redirect","ERROR_RESPONSE","registerOnSuccessLogin","onSuccessLoginFn","register","getCloudHubDomain","cloudHubDomain","getCloudApi","cloudApi","getCloudGraphQL","cloudGraphQL","getLoginDomain","loginDomain","getAnalyticsDomain","analyticsDomain","getCloudExporterUrl","cloudExporterUrl","getHubName","cloudHubName","loginPort","DEFAULT_PORT","isLoggedIn","Boolean","invalidateCache","processToken","globalFlags","getSync","getAuthHeader","Authorization","ensureHttps","url","startsWith","calculateLoginDomain","finalCloudDomain","endsWith","getLoginUrl","redirectUrl","machineName","loginUrl","authListenerForPort","os","hostname","process","platform","authListener","encodeURI","logout","delSync","setRedirectUrl","whoami","globalConfigsToUpdateOnLogin","domain","currentCloudDomain","CFG_CLOUD_DOMAIN_KEY","DEFAULT_CLOUD_DOMAIN","configsToUpdate","entries","clearCachedUrls","calculateConfig","login","suppressBrowserLaunch","defaultCloudDomain","isAlreadyLoggedIn","promptLogin","loggedInParams","globalConfigUpdates","console","log","chalk","yellow","open","getCloudScopes","scopes","remotes","getRemoteScopes","filteredScopesToFetch","ScopeID","isValid","isHub","queryResponse","fetchFromSymphonyViaGQL","GET_SCOPES","ids","scopesFromQuery","getScopes","scopeDescriptorObj","id","fromString","ScopeDescriptor","fromObject","GET_CURRENT_USER","response","displayName","me","profileImage","image","GET_USER_ORGANIZATIONS","variables","graphqlUrl","GRAPHQL_ENDPOINT","body","stringify","headers","fetch","method","ok","json","DEFAULT_HUB_DOMAIN","getSymphonyUrl","SYMPHONY_GRAPHQL","DEFAULT_ANALYTICS_DOMAIN","CENTRAL_BIT_HUB_URL","CENTRAL_BIT_HUB_NAME","provider","loggerMain","graphql","cli","ui","createLogger","CloudAspect","cloudMain","loginCmd","LoginCmd","logoutCmd","LogoutCmd","whoamiCmd","WhoamiCmd","npmrcGenerateCmd","NpmrcGenerateCmd","npmrc","NpmrcCmd","commands","cloudSchema","registerOnStart","exports","Slot","withType","LoggerAspect","GraphqlAspect","ExpressAspect","WorkspaceAspect","ScopeAspect","GlobalConfigAspect","CLIAspect","UIAspect","MainRuntime","addRuntime"],"sources":["cloud.main.runtime.ts"],"sourcesContent":["import { Slot, SlotRegistry } from '@teambit/harmony';\nimport { CLIAspect, CLIMain, MainRuntime, globalFlags } 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 getRegistryUrl,\n clearCachedUrls,\n CENTRAL_BIT_HUB_URL,\n CENTRAL_BIT_HUB_NAME,\n CFG_USER_TOKEN_KEY,\n CFG_USER_NAME_KEY,\n DEFAULT_CLOUD_DOMAIN,\n CFG_CLOUD_DOMAIN_KEY,\n} from '@teambit/legacy.constants';\nimport { ScopeAspect, ScopeMain } from '@teambit/scope';\nimport { fetchWithAgent as fetch } from '@teambit/scope.network';\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 { execSync } from 'child_process';\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';\nimport { NpmrcCmd, NpmrcGenerateCmd } from './npmrc.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\ntype CloudOrganization = {\n id: string;\n name: string;\n};\n\ntype CloudOrganizationAPIResponse = {\n data: {\n getUserOrganizations: CloudOrganization[];\n };\n};\n\nconst HTTPS: string = 'https://';\n\nexport type OnSuccessLogin = ({\n username,\n token,\n npmrcUpdateResult,\n updatedConfigs,\n}: {\n username?: string;\n token?: string;\n npmrcUpdateResult?: NpmConfigUpdateResult;\n updatedConfigs?: Record<string, string | undefined>;\n}) => void;\nexport type OnSuccessLoginSlot = SlotRegistry<OnSuccessLogin>;\nexport type NpmConfigUpdateResult = {\n conflicts?: { original: string; modifications: string }[];\n configUpdates?: string;\n error?: Error;\n};\n\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 getNpmConfig(): Record<string, string> {\n try {\n const output = execSync(`npm config list --json`, { encoding: 'utf8' });\n return JSON.parse(output);\n } catch (error) {\n throw new Error(`failed to get npm config. error: ${error}`);\n }\n }\n\n async generateNpmrc({ dryRun, force }: { dryRun?: boolean; force?: boolean } = {}): Promise<{\n conflicts?: { original: string; modifications: string }[];\n configUpdates?: string;\n }> {\n const authToken = this.getAuthToken();\n if (!authToken) {\n throw new Error('user is not logged in');\n }\n const currentUser = await this.getCurrentUser();\n let username = currentUser?.username;\n if (!username) {\n this.logger.warn('failed to fetch username from cloud for the current user. falling back to the global config.');\n username = this.getUsername();\n }\n if (!username) {\n throw new Error('username is not found in the global config or the cloud. please login first.');\n }\n return this.updateNpmConfig({ authToken, username, dryRun, force });\n }\n\n detectConfigConflicts({\n newConfigs,\n registryDomain,\n }: {\n newConfigs: string;\n registryDomain: string;\n }): { original: string; modifications: string }[] {\n const existingConfigs = this.getNpmConfig();\n const conflicts: { original: string; modifications: string }[] = [];\n\n newConfigs.split('\\n').forEach((line) => {\n const [key, newValue] = line.split('=');\n if (key && newValue) {\n const trimmedKey = key.trim();\n const existingValue = existingConfigs[trimmedKey];\n const isRegistryConflict = existingValue && !existingValue.includes(registryDomain);\n\n if (existingValue && isRegistryConflict) {\n conflicts.push({\n original: `${trimmedKey}=${existingValue}`,\n modifications: `${trimmedKey}=${newValue.trim()}`,\n });\n }\n }\n });\n\n return conflicts;\n }\n\n async updateNpmConfig({\n authToken,\n username,\n dryRun,\n force,\n }: {\n authToken: string;\n username: string;\n dryRun?: boolean;\n force?: boolean;\n }): Promise<{ conflicts?: { original: string; modifications: string }[]; configUpdates?: string }> {\n const orgs = (await this.getUserOrganizations()) ?? [];\n const orgNames = orgs.map((org) => org.name);\n const allOrgs = Array.from(new Set([...CloudMain.PRESET_ORGS, ...orgNames, username])).sort();\n const registryUrlStr = this.getRegistryUrl();\n const registryUrl = new URL(registryUrlStr);\n const scopeConfig = allOrgs.map((org) => `@${org}:registry=\"${registryUrlStr}\"`).join('\\n');\n const authConfig = `//${registryUrl.host}/:_authToken=\"${authToken}\"`;\n const configUpdates = `${scopeConfig}\\n${authConfig}`;\n\n if (!force) {\n const conflicts = this.detectConfigConflicts({\n newConfigs: configUpdates,\n registryDomain: this.getCloudDomain(),\n });\n\n if (conflicts.length > 0) {\n return { conflicts, configUpdates };\n }\n }\n\n if (dryRun) {\n return { configUpdates };\n }\n\n const configToUpdate = configUpdates.replace(/\\n/g, ' ');\n\n execSync(`npm config set ${configToUpdate}`, { stdio: 'ignore' });\n\n return { configUpdates };\n }\n\n setupAuthListener({\n port: portFromParams,\n clientId = v4(),\n skipConfigUpdate,\n cloudDomain,\n }: {\n port?: number;\n clientId?: string;\n skipConfigUpdate?: boolean;\n cloudDomain?: 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 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\n const onLoggedInFns = this.onSuccessLoginSlot.values();\n const updatedConfigs = this.updateGlobalConfigOnLogin(cloudDomain);\n\n if (!skipConfigUpdate) {\n this.updateNpmConfig({ authToken: token as string, username: username as string })\n .then((configUpdates) => {\n onLoggedInFns.forEach((fn) =>\n fn({ username, token: token as string, npmrcUpdateResult: configUpdates, updatedConfigs })\n );\n })\n .catch((error) => {\n onLoggedInFns.forEach((fn) =>\n fn({\n username,\n token: token as string,\n updatedConfigs,\n npmrcUpdateResult: {\n error: new Error(`failed to update npmrc. error ${error?.toString}`),\n },\n })\n );\n });\n } else {\n onLoggedInFns.forEach((fn) => fn({ username, token: token as string }));\n }\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 getUsername(): string | undefined {\n return this.globalConfig.getSync(CFG_USER_NAME_KEY);\n }\n\n private ensureHttps(url: string): string {\n if (!url.startsWith('http')) {\n return `${HTTPS}${url}`;\n }\n return url;\n }\n\n private calculateLoginDomain(cloudDomain: string) {\n let finalCloudDomain = this.ensureHttps(cloudDomain);\n if (!finalCloudDomain.endsWith('/bit-login')) {\n finalCloudDomain = `${finalCloudDomain}/bit-login`;\n }\n return finalCloudDomain;\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.calculateLoginDomain(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 setRedirectUrl(redirectUrl: string) {\n this.REDIRECT_URL = redirectUrl;\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 private globalConfigsToUpdateOnLogin(domain?: string): Record<string, string | undefined> {\n const currentCloudDomain = this.globalConfig.getSync(CFG_CLOUD_DOMAIN_KEY);\n const res = {};\n if (!domain || domain === DEFAULT_CLOUD_DOMAIN) {\n if (currentCloudDomain && currentCloudDomain !== DEFAULT_CLOUD_DOMAIN) {\n res[CFG_CLOUD_DOMAIN_KEY] = '';\n }\n return res;\n }\n if (currentCloudDomain !== domain) {\n res[CFG_CLOUD_DOMAIN_KEY] = domain;\n }\n return res;\n }\n\n private updateGlobalConfigOnLogin(domain?: string) {\n const configsToUpdate = this.globalConfigsToUpdateOnLogin(domain);\n\n Object.entries(configsToUpdate).forEach(([key, value]) => {\n if (value) {\n this.globalConfig.setSync(key, value);\n } else {\n this.globalConfig.delSync(key);\n }\n });\n // Refresh the config after updating\n clearCachedUrls();\n this.config = CloudMain.calculateConfig();\n return configsToUpdate;\n }\n\n async login(\n port?: string,\n suppressBrowserLaunch?: boolean,\n machineName?: string,\n cloudDomain?: string,\n redirectUrl?: string,\n skipConfigUpdate?: boolean,\n defaultCloudDomain?: boolean\n ): Promise<{\n isAlreadyLoggedIn?: boolean;\n username?: string;\n token?: string;\n npmrcUpdateResult?: NpmConfigUpdateResult;\n globalConfigUpdates?: Record<string, string | undefined>;\n } | null> {\n if (defaultCloudDomain) {\n cloudDomain = DEFAULT_CLOUD_DOMAIN;\n }\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 npmrcUpdateResult: loggedInParams.npmrcUpdateResult,\n globalConfigUpdates: loggedInParams.updatedConfigs,\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 skipConfigUpdate,\n cloudDomain,\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 static GET_CURRENT_USER = `\n query GET_ME {\n me {\n id\n username\n image\n displayName\n }\n }\n `;\n static GET_USER_ORGANIZATIONS = `\n query GET_USER_ORGANIZATIONS {\n getUserOrganizations {\n id\n name\n }\n }\n `;\n\n static PRESET_ORGS = ['bitdev', 'teambit', 'bitdesign', 'frontend', 'backend'];\n\n async getCloudScopes(scopes: string[]): Promise<ScopeDescriptor[]> {\n const remotes = await this.scope.getRemoteScopes();\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 getCurrentUser(): Promise<CloudUser | null> {\n return this.fetchFromSymphonyViaGQL<CloudUserAPIResponse>(CloudMain.GET_CURRENT_USER).then((response) => {\n if (!response) return null;\n return {\n isLoggedIn: true,\n displayName: response.data.me.displayName,\n username: response.data.me.username,\n profileImage: response.data.me.image,\n };\n });\n }\n\n async getUserOrganizations(): Promise<CloudOrganization[] | null> {\n return this.fetchFromSymphonyViaGQL<CloudOrganizationAPIResponse>(CloudMain.GET_USER_ORGANIZATIONS).then(\n (response) => {\n if (!response) return null;\n return response.data.getUserOrganizations;\n }\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 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 static calculateConfig(): CloudWorkspaceConfig {\n return {\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: getRegistryUrl(),\n cloudExporterUrl: CENTRAL_BIT_HUB_URL,\n cloudHubName: CENTRAL_BIT_HUB_NAME,\n loginPort: CloudMain.DEFAULT_PORT,\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 = CloudMain.calculateConfig();\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, 8889);\n const logoutCmd = new LogoutCmd(cloudMain);\n const whoamiCmd = new WhoamiCmd(cloudMain);\n const npmrcGenerateCmd = new NpmrcGenerateCmd(cloudMain, 8889);\n const npmrc = new NpmrcCmd();\n npmrc.commands = [npmrcGenerateCmd];\n cli.register(loginCmd, logoutCmd, whoamiCmd, npmrc);\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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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_harmony","data","require","_cli","_uuid","_chalk","_interopRequireDefault","_os","_open","_scopes","_scopes2","_logger","_legacy","_scope","_scope2","_graphql","_workspace","_express","_child_process","_ui","_cloud","_cloud2","_login","_logout","_whoami","_npmrc","_configStore","_CloudMain","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","HTTPS","CloudMain","constructor","config","logger","express","workspace","scope","configStore","onSuccessLoginSlot","Map","getNpmConfig","output","execSync","encoding","JSON","parse","error","Error","generateNpmrc","dryRun","force","authToken","getAuthToken","currentUser","getCurrentUser","username","warn","getUsername","updateNpmConfig","detectConfigConflicts","newConfigs","registryDomain","existingConfigs","conflicts","split","line","key","newValue","trimmedKey","trim","existingValue","isRegistryConflict","includes","original","modifications","orgs","getUserOrganizations","orgNames","map","org","name","allOrgs","Array","from","Set","PRESET_ORGS","sort","registryUrlStr","getRegistryUrl","registryUrl","URL","scopeConfig","join","authConfig","host","configUpdates","getCloudDomain","configToUpdate","replace","stdio","setupAuthListener","port","portFromParams","clientId","v4","skipConfigUpdate","cloudDomain","Promise","resolve","reject","getLoginPort","existingAuthListener","authListenerByPort","get","debug","expressApp","createApp","set","authServer","listen","existing","server","on","err","code","then","catch","req","res","query","clientIdFromReq","redirectUri","usernameFromReq","undefined","token","isArray","status","send","setConfig","CFG_USER_TOKEN_KEY","CFG_USER_NAME_KEY","onLoggedInFns","values","updatedConfigs","updateGlobalConfigOnLogin","fn","npmrcUpdateResult","toString","REDIRECT_URL","redirect","ERROR_RESPONSE","registerOnSuccessLogin","onSuccessLoginFn","register","getCloudHubDomain","cloudHubDomain","getCloudApi","cloudApi","getCloudGraphQL","cloudGraphQL","getLoginDomain","loginDomain","getAnalyticsDomain","analyticsDomain","getCloudExporterUrl","cloudExporterUrl","getHubName","cloudHubName","loginPort","DEFAULT_PORT","isLoggedIn","Boolean","processToken","globalFlags","getConfig","getAuthHeader","Authorization","ensureHttps","url","startsWith","calculateLoginDomain","finalCloudDomain","endsWith","getLoginUrl","redirectUrl","machineName","loginUrl","authListenerForPort","os","hostname","process","platform","authListener","encodeURI","logout","delConfig","setRedirectUrl","whoami","globalConfigsToUpdateOnLogin","domain","currentCloudDomain","CFG_CLOUD_DOMAIN_KEY","DEFAULT_CLOUD_DOMAIN","configsToUpdate","entries","clearCachedUrls","calculateConfig","login","suppressBrowserLaunch","defaultCloudDomain","isAlreadyLoggedIn","promptLogin","loggedInParams","globalConfigUpdates","console","log","chalk","yellow","open","getCloudScopes","scopes","remotes","getRemoteScopes","filteredScopesToFetch","ScopeID","isValid","isHub","queryResponse","fetchFromSymphonyViaGQL","GET_SCOPES","ids","scopesFromQuery","getScopes","scopeDescriptorObj","id","fromString","ScopeDescriptor","fromObject","GET_CURRENT_USER","response","displayName","me","profileImage","image","GET_USER_ORGANIZATIONS","variables","graphqlUrl","GRAPHQL_ENDPOINT","body","stringify","headers","fetch","method","ok","json","DEFAULT_HUB_DOMAIN","getSymphonyUrl","SYMPHONY_GRAPHQL","DEFAULT_ANALYTICS_DOMAIN","CENTRAL_BIT_HUB_URL","CENTRAL_BIT_HUB_NAME","provider","loggerMain","graphql","cli","ui","createLogger","CloudAspect","cloudMain","loginCmd","LoginCmd","logoutCmd","LogoutCmd","whoamiCmd","WhoamiCmd","npmrcGenerateCmd","NpmrcGenerateCmd","npmrc","NpmrcCmd","commands","cloudSchema","registerOnStart","exports","Slot","withType","LoggerAspect","GraphqlAspect","ExpressAspect","WorkspaceAspect","ScopeAspect","ConfigStoreAspect","CLIAspect","UIAspect","MainRuntime","addRuntime"],"sources":["cloud.main.runtime.ts"],"sourcesContent":["import { Slot, SlotRegistry } from '@teambit/harmony';\nimport { CLIAspect, CLIMain, MainRuntime, globalFlags } 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 getRegistryUrl,\n clearCachedUrls,\n CENTRAL_BIT_HUB_URL,\n CENTRAL_BIT_HUB_NAME,\n CFG_USER_TOKEN_KEY,\n CFG_USER_NAME_KEY,\n DEFAULT_CLOUD_DOMAIN,\n CFG_CLOUD_DOMAIN_KEY,\n} from '@teambit/legacy.constants';\nimport { ScopeAspect, ScopeMain } from '@teambit/scope';\nimport { fetchWithAgent as fetch } from '@teambit/scope.network';\nimport { GraphqlAspect, GraphqlMain } from '@teambit/graphql';\nimport { WorkspaceAspect, Workspace } from '@teambit/workspace';\nimport { ExpressAspect, ExpressMain } from '@teambit/express';\nimport { execSync } from 'child_process';\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';\nimport { NpmrcCmd, NpmrcGenerateCmd } from './npmrc.cmd';\nimport { ConfigStoreAspect, ConfigStoreMain } from '@teambit/config-store';\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\ntype CloudOrganization = {\n id: string;\n name: string;\n};\n\ntype CloudOrganizationAPIResponse = {\n data: {\n getUserOrganizations: CloudOrganization[];\n };\n};\n\nconst HTTPS: string = 'https://';\n\nexport type OnSuccessLogin = ({\n username,\n token,\n npmrcUpdateResult,\n updatedConfigs,\n}: {\n username?: string;\n token?: string;\n npmrcUpdateResult?: NpmConfigUpdateResult;\n updatedConfigs?: Record<string, string | undefined>;\n}) => void;\nexport type OnSuccessLoginSlot = SlotRegistry<OnSuccessLogin>;\nexport type NpmConfigUpdateResult = {\n conflicts?: { original: string; modifications: string }[];\n configUpdates?: string;\n error?: Error;\n};\n\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 configStore: ConfigStoreMain,\n public onSuccessLoginSlot: OnSuccessLoginSlot\n ) {}\n\n getNpmConfig(): Record<string, string> {\n try {\n const output = execSync(`npm config list --json`, { encoding: 'utf8' });\n return JSON.parse(output);\n } catch (error) {\n throw new Error(`failed to get npm config. error: ${error}`);\n }\n }\n\n async generateNpmrc({ dryRun, force }: { dryRun?: boolean; force?: boolean } = {}): Promise<{\n conflicts?: { original: string; modifications: string }[];\n configUpdates?: string;\n }> {\n const authToken = this.getAuthToken();\n if (!authToken) {\n throw new Error('user is not logged in');\n }\n const currentUser = await this.getCurrentUser();\n let username = currentUser?.username;\n if (!username) {\n this.logger.warn('failed to fetch username from cloud for the current user. falling back to the global config.');\n username = this.getUsername();\n }\n if (!username) {\n throw new Error('username is not found in the global config or the cloud. please login first.');\n }\n return this.updateNpmConfig({ authToken, username, dryRun, force });\n }\n\n detectConfigConflicts({\n newConfigs,\n registryDomain,\n }: {\n newConfigs: string;\n registryDomain: string;\n }): { original: string; modifications: string }[] {\n const existingConfigs = this.getNpmConfig();\n const conflicts: { original: string; modifications: string }[] = [];\n\n newConfigs.split('\\n').forEach((line) => {\n const [key, newValue] = line.split('=');\n if (key && newValue) {\n const trimmedKey = key.trim();\n const existingValue = existingConfigs[trimmedKey];\n const isRegistryConflict = existingValue && !existingValue.includes(registryDomain);\n\n if (existingValue && isRegistryConflict) {\n conflicts.push({\n original: `${trimmedKey}=${existingValue}`,\n modifications: `${trimmedKey}=${newValue.trim()}`,\n });\n }\n }\n });\n\n return conflicts;\n }\n\n async updateNpmConfig({\n authToken,\n username,\n dryRun,\n force,\n }: {\n authToken: string;\n username: string;\n dryRun?: boolean;\n force?: boolean;\n }): Promise<{ conflicts?: { original: string; modifications: string }[]; configUpdates?: string }> {\n const orgs = (await this.getUserOrganizations()) ?? [];\n const orgNames = orgs.map((org) => org.name);\n const allOrgs = Array.from(new Set([...CloudMain.PRESET_ORGS, ...orgNames, username])).sort();\n const registryUrlStr = this.getRegistryUrl();\n const registryUrl = new URL(registryUrlStr);\n const scopeConfig = allOrgs.map((org) => `@${org}:registry=\"${registryUrlStr}\"`).join('\\n');\n const authConfig = `//${registryUrl.host}/:_authToken=\"${authToken}\"`;\n const configUpdates = `${scopeConfig}\\n${authConfig}`;\n\n if (!force) {\n const conflicts = this.detectConfigConflicts({\n newConfigs: configUpdates,\n registryDomain: this.getCloudDomain(),\n });\n\n if (conflicts.length > 0) {\n return { conflicts, configUpdates };\n }\n }\n\n if (dryRun) {\n return { configUpdates };\n }\n\n const configToUpdate = configUpdates.replace(/\\n/g, ' ');\n\n execSync(`npm config set ${configToUpdate}`, { stdio: 'ignore' });\n\n return { configUpdates };\n }\n\n setupAuthListener({\n port: portFromParams,\n clientId = v4(),\n skipConfigUpdate,\n cloudDomain,\n }: {\n port?: number;\n clientId?: string;\n skipConfigUpdate?: boolean;\n cloudDomain?: 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 // eslint-disable-next-line @typescript-eslint/no-misused-promises\n expressApp.get('/', async (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 await this.configStore.setConfig(CFG_USER_TOKEN_KEY, token);\n if (username) await this.configStore.setConfig(CFG_USER_NAME_KEY, username);\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\n const onLoggedInFns = this.onSuccessLoginSlot.values();\n const updatedConfigs = await this.updateGlobalConfigOnLogin(cloudDomain);\n\n if (!skipConfigUpdate) {\n this.updateNpmConfig({ authToken: token as string, username: username as string })\n .then((configUpdates) => {\n onLoggedInFns.forEach((fn) =>\n fn({ username, token: token as string, npmrcUpdateResult: configUpdates, updatedConfigs })\n );\n })\n .catch((error) => {\n onLoggedInFns.forEach((fn) =>\n fn({\n username,\n token: token as string,\n updatedConfigs,\n npmrcUpdateResult: {\n error: new Error(`failed to update npmrc. error ${error?.toString}`),\n },\n })\n );\n });\n } else {\n onLoggedInFns.forEach((fn) => fn({ username, token: token as string }));\n }\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 const processToken = globalFlags.token;\n const token = processToken || this.configStore.getConfig(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 getUsername(): string | undefined {\n return this.configStore.getConfig(CFG_USER_NAME_KEY);\n }\n\n private ensureHttps(url: string): string {\n if (!url.startsWith('http')) {\n return `${HTTPS}${url}`;\n }\n return url;\n }\n\n private calculateLoginDomain(cloudDomain: string) {\n let finalCloudDomain = this.ensureHttps(cloudDomain);\n if (!finalCloudDomain.endsWith('/bit-login')) {\n finalCloudDomain = `${finalCloudDomain}/bit-login`;\n }\n return finalCloudDomain;\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.calculateLoginDomain(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 async logout() {\n await this.configStore.delConfig(CFG_USER_TOKEN_KEY);\n await this.configStore.delConfig(CFG_USER_NAME_KEY);\n }\n\n setRedirectUrl(redirectUrl: string) {\n this.REDIRECT_URL = redirectUrl;\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 private globalConfigsToUpdateOnLogin(domain?: string): Record<string, string | undefined> {\n const currentCloudDomain = this.configStore.getConfig(CFG_CLOUD_DOMAIN_KEY);\n const res = {};\n if (!domain || domain === DEFAULT_CLOUD_DOMAIN) {\n if (currentCloudDomain && currentCloudDomain !== DEFAULT_CLOUD_DOMAIN) {\n res[CFG_CLOUD_DOMAIN_KEY] = '';\n }\n return res;\n }\n if (currentCloudDomain !== domain) {\n res[CFG_CLOUD_DOMAIN_KEY] = domain;\n }\n return res;\n }\n\n private async updateGlobalConfigOnLogin(domain?: string) {\n const configsToUpdate = this.globalConfigsToUpdateOnLogin(domain);\n\n for await (const [key, value] of Object.entries(configsToUpdate)) {\n if (value) {\n await this.configStore.setConfig(key, value);\n } else {\n await this.configStore.delConfig(key);\n }\n }\n // Refresh the config after updating\n clearCachedUrls();\n this.config = CloudMain.calculateConfig();\n return configsToUpdate;\n }\n\n async login(\n port?: string,\n suppressBrowserLaunch?: boolean,\n machineName?: string,\n cloudDomain?: string,\n redirectUrl?: string,\n skipConfigUpdate?: boolean,\n defaultCloudDomain?: boolean\n ): Promise<{\n isAlreadyLoggedIn?: boolean;\n username?: string;\n token?: string;\n npmrcUpdateResult?: NpmConfigUpdateResult;\n globalConfigUpdates?: Record<string, string | undefined>;\n } | null> {\n if (defaultCloudDomain) {\n cloudDomain = DEFAULT_CLOUD_DOMAIN;\n }\n return new Promise((resolve, reject) => {\n if (this.isLoggedIn()) {\n resolve({\n isAlreadyLoggedIn: true,\n username: this.configStore.getConfig(CFG_USER_NAME_KEY),\n token: this.configStore.getConfig(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 npmrcUpdateResult: loggedInParams.npmrcUpdateResult,\n globalConfigUpdates: loggedInParams.updatedConfigs,\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 skipConfigUpdate,\n cloudDomain,\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 static GET_CURRENT_USER = `\n query GET_ME {\n me {\n id\n username\n image\n displayName\n }\n }\n `;\n static GET_USER_ORGANIZATIONS = `\n query GET_USER_ORGANIZATIONS {\n getUserOrganizations {\n id\n name\n }\n }\n `;\n\n static PRESET_ORGS = ['bitdev', 'teambit', 'bitdesign', 'frontend', 'backend'];\n\n async getCloudScopes(scopes: string[]): Promise<ScopeDescriptor[]> {\n const remotes = await this.scope.getRemoteScopes();\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 getCurrentUser(): Promise<CloudUser | null> {\n return this.fetchFromSymphonyViaGQL<CloudUserAPIResponse>(CloudMain.GET_CURRENT_USER).then((response) => {\n if (!response) return null;\n return {\n isLoggedIn: true,\n displayName: response.data.me.displayName,\n username: response.data.me.username,\n profileImage: response.data.me.image,\n };\n });\n }\n\n async getUserOrganizations(): Promise<CloudOrganization[] | null> {\n return this.fetchFromSymphonyViaGQL<CloudOrganizationAPIResponse>(CloudMain.GET_USER_ORGANIZATIONS).then(\n (response) => {\n if (!response) return null;\n return response.data.getUserOrganizations;\n }\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 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 static calculateConfig(): CloudWorkspaceConfig {\n return {\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: getRegistryUrl(),\n cloudExporterUrl: CENTRAL_BIT_HUB_URL,\n cloudHubName: CENTRAL_BIT_HUB_NAME,\n loginPort: CloudMain.DEFAULT_PORT,\n };\n }\n\n static slots = [Slot.withType<OnSuccessLogin>()];\n static dependencies = [\n LoggerAspect,\n GraphqlAspect,\n ExpressAspect,\n WorkspaceAspect,\n ScopeAspect,\n ConfigStoreAspect,\n CLIAspect,\n UIAspect,\n ];\n static runtime = MainRuntime;\n static defaultConfig: CloudWorkspaceConfig = CloudMain.calculateConfig();\n\n static async provider(\n [loggerMain, graphql, express, workspace, scope, configStore, cli, ui]: [\n LoggerMain,\n GraphqlMain,\n ExpressMain,\n Workspace,\n ScopeMain,\n ConfigStoreMain,\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, configStore, onSuccessLoginSlot);\n const loginCmd = new LoginCmd(cloudMain, 8889);\n const logoutCmd = new LogoutCmd(cloudMain);\n const whoamiCmd = new WhoamiCmd(cloudMain);\n const npmrcGenerateCmd = new NpmrcGenerateCmd(cloudMain, 8889);\n const npmrc = new NpmrcCmd();\n npmrc.commands = [npmrcGenerateCmd];\n cli.register(loginCmd, logoutCmd, whoamiCmd, npmrc);\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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","ignoreList":[]}
|
package/dist/login.cmd.js
CHANGED
|
@@ -76,7 +76,7 @@ class LoginCmd {
|
|
|
76
76
|
throw new (_bitError().BitError)('use either --default-cloud-domain or --cloud-domain, not both');
|
|
77
77
|
}
|
|
78
78
|
if (refreshToken) {
|
|
79
|
-
this.cloud.logout();
|
|
79
|
+
await this.cloud.logout();
|
|
80
80
|
}
|
|
81
81
|
const isLoggedIn = this.cloud.isLoggedIn();
|
|
82
82
|
if (isLoggedIn) {
|
|
@@ -88,7 +88,7 @@ class LoginCmd {
|
|
|
88
88
|
if (!ok) {
|
|
89
89
|
return _chalk().default.green(`Logged in as ${this.cloud.getUsername()}`);
|
|
90
90
|
}
|
|
91
|
-
this.cloud.logout();
|
|
91
|
+
await this.cloud.logout();
|
|
92
92
|
}
|
|
93
93
|
const result = await this.cloud.login(port || this.port, noBrowser, machineName, cloudDomain, undefined, skipConfigUpdate, defaultCloudDomain);
|
|
94
94
|
let message = _chalk().default.green(`Logged in as ${result?.username}`);
|
package/dist/login.cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_chalk","data","_interopRequireDefault","require","_yesno","_lodash","_bitError","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","LoginCmd","constructor","cloud","_port","globalConfigUpdates","isEmpty","updates","entries","map","key","entryStr","join","chalk","greenBright","port","toString","report","cloudDomain","defaultCloudDomain","suppressBrowserLaunch","noBrowser","machineName","skipConfigUpdate","refreshToken","BitError","logout","isLoggedIn","logger","clearStatusLine","reLoginPrompt","yellow","ok","yesno","question","green","getUsername","result","login","undefined","message","username","conflicts","npmrcUpdateResult","length","handleNpmrcConflicts","getNpmrcUpdateMessage","error","getGlobalConfigUpdatesMessage","json","token","successfullyUpdatedNpmrc","configUpdates","conflictDetails","conflict","index","red","original","modifications","generateNpmrc","force","bold","exports"],"sources":["login.cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport yesno from 'yesno';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { isEmpty } from 'lodash';\nimport { BitError } from '@teambit/bit-error';\nimport { CloudMain } from './cloud.main.runtime';\n\nexport class LoginCmd implements Command {\n name = 'login';\n description = 'log in to Bit cloud';\n group = 'general';\n alias = '';\n options = [\n ['', 'skip-config-update', 'skip writing to the .npmrc file'],\n ['', 'refresh-token', 'force refresh token even when logged in'],\n ['d', 'cloud-domain <domain>', 'login cloud domain (default bit.cloud)'],\n ['', 'default-cloud-domain', 'login to default cloud domain (bit.cloud)'],\n ['p', 'port <port>', 'port number to open for localhost server (default 8085)'],\n ['', 'no-browser', 'do not open a browser for authentication'],\n [\n '',\n 'machine-name <name>',\n 'specify machine-name to pair with the token (useful for CI to avoid accidentally revoking the token)',\n ],\n ['', 'suppress-browser-launch', 'DEPRECATE. use --no-browser instead'],\n ] as CommandOptions;\n loader = true;\n remoteOp = true;\n skipWorkspace = true;\n loadAspects = false;\n\n private port?: string;\n\n constructor(\n private cloud: CloudMain,\n _port?: number\n ) {\n this.port = _port?.toString();\n }\n\n async report(\n [], // eslint-disable-line no-empty-pattern\n {\n cloudDomain,\n defaultCloudDomain,\n port,\n suppressBrowserLaunch,\n noBrowser,\n machineName,\n skipConfigUpdate,\n refreshToken,\n }: {\n cloudDomain?: string;\n defaultCloudDomain: boolean;\n port: string;\n suppressBrowserLaunch?: boolean;\n noBrowser?: boolean;\n machineName?: string;\n skipConfigUpdate?: boolean;\n refreshToken?: boolean;\n }\n ): Promise<string> {\n noBrowser = noBrowser || suppressBrowserLaunch;\n\n if (defaultCloudDomain && cloudDomain) {\n throw new BitError('use either --default-cloud-domain or --cloud-domain, not both');\n }\n\n if (refreshToken) {\n this.cloud.logout();\n }\n\n const isLoggedIn = this.cloud.isLoggedIn();\n\n if (isLoggedIn) {\n this.cloud.logger.clearStatusLine();\n const reLoginPrompt = chalk.yellow(\n 'You are already logged in. Do you want to re-login to refresh your access token? [yes(y)/no(n)]'\n );\n const ok = await yesno({ question: reLoginPrompt });\n if (!ok) {\n return chalk.green(`Logged in as ${this.cloud.getUsername()}`);\n }\n this.cloud.logout();\n }\n\n const result = await this.cloud.login(\n port || this.port,\n noBrowser,\n machineName,\n cloudDomain,\n undefined,\n skipConfigUpdate,\n defaultCloudDomain\n );\n\n let message = chalk.green(`Logged in as ${result?.username}`);\n\n if (skipConfigUpdate) {\n return message;\n }\n\n const conflicts = result?.npmrcUpdateResult?.conflicts;\n if (conflicts && conflicts.length > 0) {\n message += await this.handleNpmrcConflicts(conflicts);\n } else {\n message += this.getNpmrcUpdateMessage(result?.npmrcUpdateResult?.error);\n }\n\n message = this.getGlobalConfigUpdatesMessage(result?.globalConfigUpdates) + message;\n\n return message;\n }\n\n async json(\n [], // eslint-disable-line no-empty-pattern,\n {\n cloudDomain,\n port,\n suppressBrowserLaunch,\n noBrowser,\n machineName,\n skipConfigUpdate,\n defaultCloudDomain,\n }: {\n cloudDomain?: string;\n port: string;\n suppressBrowserLaunch?: boolean;\n noBrowser?: boolean;\n machineName?: string;\n skipConfigUpdate?: boolean;\n defaultCloudDomain?: boolean;\n }\n ): Promise<{\n username?: string;\n token?: string;\n successfullyUpdatedNpmrc?: boolean;\n globalConfigUpdates?: Record<string, string | undefined>;\n }> {\n if (suppressBrowserLaunch) {\n noBrowser = true;\n }\n const result = await this.cloud.login(\n port,\n noBrowser,\n machineName,\n cloudDomain,\n undefined,\n skipConfigUpdate,\n defaultCloudDomain\n );\n return {\n username: result?.username,\n token: result?.token,\n successfullyUpdatedNpmrc: !!result?.npmrcUpdateResult?.configUpdates,\n globalConfigUpdates: result?.globalConfigUpdates,\n };\n }\n\n async handleNpmrcConflicts(conflicts): Promise<string> {\n this.cloud.logger.clearStatusLine();\n const conflictDetails = conflicts\n .map(\n (conflict, index) =>\n `${chalk.yellow(`Conflict #${index + 1}:`)}\nOriginal: ${chalk.red(conflict.original)}\nModification: ${chalk.green(conflict.modifications)}`\n )\n .join('\\n\\n');\n\n const question = `\\n${chalk.yellow(\n 'Conflict detected in .npmrc file with the following configurations:'\n )}\\n${conflictDetails}\\n${chalk.yellow(\n 'Do you want to override these configurations and continue? [yes(y)/no(n)]'\n )}`;\n\n const ok = await yesno({ question });\n if (!ok) {\n return chalk.red(' but updating .npmrc was aborted due to conflicts.');\n }\n\n try {\n await this.cloud.generateNpmrc({ force: true });\n return chalk.green(' and .npmrc updated successfully after resolving conflicts.');\n } catch {\n return `${chalk.red(' but failed to update .npmrc after resolving conflicts.')} Visit ${chalk.bold(\n 'https://bit.dev/reference/packages/npmrc'\n )} for instructions on how to update it manually.`;\n }\n }\n\n getNpmrcUpdateMessage(error): string {\n if (!error) {\n return chalk.green(' and .npmrc updated.');\n }\n return chalk.red(\n ` but failed to update .npmrc. Visit ${chalk.bold(\n 'https://bit.dev/reference/packages/npmrc'\n )} for instructions on how to update it manually.`\n );\n }\n\n getGlobalConfigUpdatesMessage = (globalConfigUpdates: Record<string, string | undefined> | undefined): string => {\n if (!globalConfigUpdates || isEmpty(globalConfigUpdates)) return '';\n const updates = Object.entries(globalConfigUpdates)\n .map(([key, value]) => {\n const entryStr = value === '' ? `${key} (removed)` : `${key}: ${value} (updated)`;\n return entryStr;\n })\n .join('\\n');\n return chalk.greenBright(`\\nGlobal config changes:\\n${updates}\\n\\n`);\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_chalk","data","_interopRequireDefault","require","_yesno","_lodash","_bitError","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","LoginCmd","constructor","cloud","_port","globalConfigUpdates","isEmpty","updates","entries","map","key","entryStr","join","chalk","greenBright","port","toString","report","cloudDomain","defaultCloudDomain","suppressBrowserLaunch","noBrowser","machineName","skipConfigUpdate","refreshToken","BitError","logout","isLoggedIn","logger","clearStatusLine","reLoginPrompt","yellow","ok","yesno","question","green","getUsername","result","login","undefined","message","username","conflicts","npmrcUpdateResult","length","handleNpmrcConflicts","getNpmrcUpdateMessage","error","getGlobalConfigUpdatesMessage","json","token","successfullyUpdatedNpmrc","configUpdates","conflictDetails","conflict","index","red","original","modifications","generateNpmrc","force","bold","exports"],"sources":["login.cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport yesno from 'yesno';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { isEmpty } from 'lodash';\nimport { BitError } from '@teambit/bit-error';\nimport { CloudMain } from './cloud.main.runtime';\n\nexport class LoginCmd implements Command {\n name = 'login';\n description = 'log in to Bit cloud';\n group = 'general';\n alias = '';\n options = [\n ['', 'skip-config-update', 'skip writing to the .npmrc file'],\n ['', 'refresh-token', 'force refresh token even when logged in'],\n ['d', 'cloud-domain <domain>', 'login cloud domain (default bit.cloud)'],\n ['', 'default-cloud-domain', 'login to default cloud domain (bit.cloud)'],\n ['p', 'port <port>', 'port number to open for localhost server (default 8085)'],\n ['', 'no-browser', 'do not open a browser for authentication'],\n [\n '',\n 'machine-name <name>',\n 'specify machine-name to pair with the token (useful for CI to avoid accidentally revoking the token)',\n ],\n ['', 'suppress-browser-launch', 'DEPRECATE. use --no-browser instead'],\n ] as CommandOptions;\n loader = true;\n remoteOp = true;\n skipWorkspace = true;\n loadAspects = false;\n\n private port?: string;\n\n constructor(\n private cloud: CloudMain,\n _port?: number\n ) {\n this.port = _port?.toString();\n }\n\n async report(\n [], // eslint-disable-line no-empty-pattern\n {\n cloudDomain,\n defaultCloudDomain,\n port,\n suppressBrowserLaunch,\n noBrowser,\n machineName,\n skipConfigUpdate,\n refreshToken,\n }: {\n cloudDomain?: string;\n defaultCloudDomain: boolean;\n port: string;\n suppressBrowserLaunch?: boolean;\n noBrowser?: boolean;\n machineName?: string;\n skipConfigUpdate?: boolean;\n refreshToken?: boolean;\n }\n ): Promise<string> {\n noBrowser = noBrowser || suppressBrowserLaunch;\n\n if (defaultCloudDomain && cloudDomain) {\n throw new BitError('use either --default-cloud-domain or --cloud-domain, not both');\n }\n\n if (refreshToken) {\n await this.cloud.logout();\n }\n\n const isLoggedIn = this.cloud.isLoggedIn();\n\n if (isLoggedIn) {\n this.cloud.logger.clearStatusLine();\n const reLoginPrompt = chalk.yellow(\n 'You are already logged in. Do you want to re-login to refresh your access token? [yes(y)/no(n)]'\n );\n const ok = await yesno({ question: reLoginPrompt });\n if (!ok) {\n return chalk.green(`Logged in as ${this.cloud.getUsername()}`);\n }\n await this.cloud.logout();\n }\n\n const result = await this.cloud.login(\n port || this.port,\n noBrowser,\n machineName,\n cloudDomain,\n undefined,\n skipConfigUpdate,\n defaultCloudDomain\n );\n\n let message = chalk.green(`Logged in as ${result?.username}`);\n\n if (skipConfigUpdate) {\n return message;\n }\n\n const conflicts = result?.npmrcUpdateResult?.conflicts;\n if (conflicts && conflicts.length > 0) {\n message += await this.handleNpmrcConflicts(conflicts);\n } else {\n message += this.getNpmrcUpdateMessage(result?.npmrcUpdateResult?.error);\n }\n\n message = this.getGlobalConfigUpdatesMessage(result?.globalConfigUpdates) + message;\n\n return message;\n }\n\n async json(\n [], // eslint-disable-line no-empty-pattern,\n {\n cloudDomain,\n port,\n suppressBrowserLaunch,\n noBrowser,\n machineName,\n skipConfigUpdate,\n defaultCloudDomain,\n }: {\n cloudDomain?: string;\n port: string;\n suppressBrowserLaunch?: boolean;\n noBrowser?: boolean;\n machineName?: string;\n skipConfigUpdate?: boolean;\n defaultCloudDomain?: boolean;\n }\n ): Promise<{\n username?: string;\n token?: string;\n successfullyUpdatedNpmrc?: boolean;\n globalConfigUpdates?: Record<string, string | undefined>;\n }> {\n if (suppressBrowserLaunch) {\n noBrowser = true;\n }\n const result = await this.cloud.login(\n port,\n noBrowser,\n machineName,\n cloudDomain,\n undefined,\n skipConfigUpdate,\n defaultCloudDomain\n );\n return {\n username: result?.username,\n token: result?.token,\n successfullyUpdatedNpmrc: !!result?.npmrcUpdateResult?.configUpdates,\n globalConfigUpdates: result?.globalConfigUpdates,\n };\n }\n\n async handleNpmrcConflicts(conflicts): Promise<string> {\n this.cloud.logger.clearStatusLine();\n const conflictDetails = conflicts\n .map(\n (conflict, index) =>\n `${chalk.yellow(`Conflict #${index + 1}:`)}\nOriginal: ${chalk.red(conflict.original)}\nModification: ${chalk.green(conflict.modifications)}`\n )\n .join('\\n\\n');\n\n const question = `\\n${chalk.yellow(\n 'Conflict detected in .npmrc file with the following configurations:'\n )}\\n${conflictDetails}\\n${chalk.yellow(\n 'Do you want to override these configurations and continue? [yes(y)/no(n)]'\n )}`;\n\n const ok = await yesno({ question });\n if (!ok) {\n return chalk.red(' but updating .npmrc was aborted due to conflicts.');\n }\n\n try {\n await this.cloud.generateNpmrc({ force: true });\n return chalk.green(' and .npmrc updated successfully after resolving conflicts.');\n } catch {\n return `${chalk.red(' but failed to update .npmrc after resolving conflicts.')} Visit ${chalk.bold(\n 'https://bit.dev/reference/packages/npmrc'\n )} for instructions on how to update it manually.`;\n }\n }\n\n getNpmrcUpdateMessage(error): string {\n if (!error) {\n return chalk.green(' and .npmrc updated.');\n }\n return chalk.red(\n ` but failed to update .npmrc. Visit ${chalk.bold(\n 'https://bit.dev/reference/packages/npmrc'\n )} for instructions on how to update it manually.`\n );\n }\n\n getGlobalConfigUpdatesMessage = (globalConfigUpdates: Record<string, string | undefined> | undefined): string => {\n if (!globalConfigUpdates || isEmpty(globalConfigUpdates)) return '';\n const updates = Object.entries(globalConfigUpdates)\n .map(([key, value]) => {\n const entryStr = value === '' ? `${key} (removed)` : `${key}: ${value} (updated)`;\n return entryStr;\n })\n .join('\\n');\n return chalk.greenBright(`\\nGlobal config changes:\\n${updates}\\n\\n`);\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/cloud",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.822",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/cloud/cloud",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.cloud",
|
|
8
8
|
"name": "cloud",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.822"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"graphql-tag": "2.12.1",
|
|
@@ -21,21 +21,21 @@
|
|
|
21
21
|
"@teambit/scopes.scope-id": "0.0.7",
|
|
22
22
|
"@teambit/design.controls.menu": "0.0.1",
|
|
23
23
|
"@teambit/bit-error": "0.0.404",
|
|
24
|
-
"@teambit/graphql": "1.0.
|
|
25
|
-
"@teambit/cli": "0.0.
|
|
24
|
+
"@teambit/graphql": "1.0.545",
|
|
25
|
+
"@teambit/cli": "0.0.1122",
|
|
26
26
|
"@teambit/cloud.models.cloud-scope": "0.0.7",
|
|
27
27
|
"@teambit/cloud.models.cloud-user": "0.0.9",
|
|
28
|
-
"@teambit/
|
|
29
|
-
"@teambit/
|
|
30
|
-
"@teambit/legacy.constants": "0.0.
|
|
31
|
-
"@teambit/logger": "0.0.
|
|
32
|
-
"@teambit/scope.network": "0.0.
|
|
33
|
-
"@teambit/scope": "1.0.
|
|
34
|
-
"@teambit/ui": "1.0.
|
|
35
|
-
"@teambit/workspace": "1.0.
|
|
28
|
+
"@teambit/config-store": "0.0.2",
|
|
29
|
+
"@teambit/express": "0.0.1221",
|
|
30
|
+
"@teambit/legacy.constants": "0.0.11",
|
|
31
|
+
"@teambit/logger": "0.0.1215",
|
|
32
|
+
"@teambit/scope.network": "0.0.33",
|
|
33
|
+
"@teambit/scope": "1.0.545",
|
|
34
|
+
"@teambit/ui": "1.0.545",
|
|
35
|
+
"@teambit/workspace": "1.0.545",
|
|
36
36
|
"@teambit/cloud.ui.user-bar": "0.0.18",
|
|
37
|
-
"@teambit/component": "1.0.
|
|
38
|
-
"@teambit/lanes": "1.0.
|
|
37
|
+
"@teambit/component": "1.0.545",
|
|
38
|
+
"@teambit/lanes": "1.0.546"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@types/express": "4.17.21",
|
|
File without changes
|