@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.
@@ -68,7 +68,7 @@ function cloudSchema(cloud) {
68
68
  },
69
69
  Mutation: {
70
70
  logout: async () => {
71
- cloud.logout();
71
+ await cloud.logout();
72
72
  return true;
73
73
  },
74
74
  setRedirectUrl: async (_, {
@@ -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;UAClBnB,KAAK,CAACmB,MAAM,CAAC,CAAC;UACd,OAAO,IAAI;QACb,CAAC;QACDC,cAAc,EAAE,MAAAA,CAAOL,CAAC,EAAE;UAAEM;QAAqC,CAAC,KAAK;UACrErB,KAAK,CAACoB,cAAc,CAACC,WAAW,CAAC;UACjC,OAAO,IAAI;QACb;MACF;IACF;EACF,CAAC;AACH","ignoreList":[]}
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":";;;;;;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;UAClB,MAAMnB,KAAK,CAACmB,MAAM,CAAC,CAAC;UACpB,OAAO,IAAI;QACb,CAAC;QACDC,cAAc,EAAE,MAAAA,CAAOL,CAAC,EAAE;UAAEM;QAAqC,CAAC,KAAK;UACrErB,KAAK,CAACoB,cAAc,CAACC,WAAW,CAAC;UACjC,OAAO,IAAI;QACb;MACF;IACF;EACF,CAAC;AACH","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
- globalConfig: GlobalConfigMain;
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, globalConfig: GlobalConfigMain, onSuccessLoginSlot: OnSuccessLoginSlot);
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, globalConfig, cli, ui]: [
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
- GlobalConfigMain,
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, globalConfig, onSuccessLoginSlot) {
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.globalConfig = globalConfig;
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
- expressApp.get('/', (req, res) => {
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.globalConfig.setSync(_legacy().CFG_USER_TOKEN_KEY, token);
360
- if (username) this.globalConfig.setSync(_legacy().CFG_USER_NAME_KEY, username);
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.globalConfig.getSync(_legacy().CFG_USER_TOKEN_KEY);
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.globalConfig.getSync(_legacy().CFG_USER_NAME_KEY);
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.globalConfig.delSync(_legacy().CFG_USER_TOKEN_KEY);
498
- this.globalConfig.delSync(_legacy().CFG_USER_NAME_KEY);
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.globalConfig.getSync(_legacy().CFG_CLOUD_DOMAIN_KEY);
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
- Object.entries(configsToUpdate).forEach(([key, value]) => {
527
+ for await (const [key, value] of Object.entries(configsToUpdate)) {
527
528
  if (value) {
528
- this.globalConfig.setSync(key, value);
529
+ await this.configStore.setConfig(key, value);
529
530
  } else {
530
- this.globalConfig.delSync(key);
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.globalConfig.getSync(_legacy().CFG_USER_NAME_KEY),
547
- token: this.globalConfig.getSync(_legacy().CFG_USER_TOKEN_KEY)
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, globalConfig, cli, ui], config, [onSuccessLoginSlot]) {
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, globalConfig, onSuccessLoginSlot);
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, _globalConfig().GlobalConfigAspect, _cli().CLIAspect, _ui().UIAspect]);
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}`);
@@ -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.820",
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.820"
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.543",
25
- "@teambit/cli": "0.0.1120",
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/express": "0.0.1219",
29
- "@teambit/global-config": "0.0.1123",
30
- "@teambit/legacy.constants": "0.0.10",
31
- "@teambit/logger": "0.0.1213",
32
- "@teambit/scope.network": "0.0.31",
33
- "@teambit/scope": "1.0.543",
34
- "@teambit/ui": "1.0.543",
35
- "@teambit/workspace": "1.0.543",
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.543",
38
- "@teambit/lanes": "1.0.544"
37
+ "@teambit/component": "1.0.545",
38
+ "@teambit/lanes": "1.0.546"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/express": "4.17.21",