@teambit/cloud 0.0.763 → 0.0.764

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.
@@ -67,9 +67,9 @@ function _logger() {
67
67
  };
68
68
  return data;
69
69
  }
70
- function _constants() {
71
- const data = require("@teambit/legacy/dist/constants");
72
- _constants = function () {
70
+ function _legacy() {
71
+ const data = require("@teambit/legacy.constants");
72
+ _legacy = function () {
73
73
  return data;
74
74
  };
75
75
  return data;
@@ -81,16 +81,9 @@ function _scope() {
81
81
  };
82
82
  return data;
83
83
  }
84
- function _globalFlags() {
85
- const data = _interopRequireDefault(require("@teambit/legacy/dist/cli/global-flags"));
86
- _globalFlags = function () {
87
- return data;
88
- };
89
- return data;
90
- }
91
- function _http() {
92
- const data = require("@teambit/legacy/dist/scope/network/http/http");
93
- _http = function () {
84
+ function _scope2() {
85
+ const data = require("@teambit/scope.network");
86
+ _scope2 = function () {
94
87
  return data;
95
88
  };
96
89
  return data;
@@ -363,8 +356,8 @@ class CloudMain {
363
356
  res.status(400).send('Invalid token format');
364
357
  return res;
365
358
  }
366
- this.globalConfig.setSync(_constants().CFG_USER_TOKEN_KEY, token);
367
- if (username) this.globalConfig.setSync(_constants().CFG_USER_NAME_KEY, username);
359
+ this.globalConfig.setSync(_legacy().CFG_USER_TOKEN_KEY, token);
360
+ if (username) this.globalConfig.setSync(_legacy().CFG_USER_NAME_KEY, username);
368
361
  const existing = this.authListenerByPort.get(port) ?? {};
369
362
  this.authListenerByPort.set(port, _objectSpread(_objectSpread({
370
363
  port,
@@ -453,8 +446,8 @@ class CloudMain {
453
446
  }
454
447
  getAuthToken() {
455
448
  this.globalConfig.invalidateCache();
456
- const processToken = _globalFlags().default.token;
457
- const token = processToken || this.globalConfig.getSync(_constants().CFG_USER_TOKEN_KEY);
449
+ const processToken = _cli().globalFlags.token;
450
+ const token = processToken || this.globalConfig.getSync(_legacy().CFG_USER_TOKEN_KEY);
458
451
  if (!token) return null;
459
452
  return token;
460
453
  }
@@ -464,7 +457,7 @@ class CloudMain {
464
457
  };
465
458
  }
466
459
  getUsername() {
467
- return this.globalConfig.getSync(_constants().CFG_USER_NAME_KEY);
460
+ return this.globalConfig.getSync(_legacy().CFG_USER_NAME_KEY);
468
461
  }
469
462
  ensureHttps(url) {
470
463
  if (!url.startsWith('http')) {
@@ -501,8 +494,8 @@ class CloudMain {
501
494
  return encodeURI(`${loginUrl}?port=${port}&clientId=${authListener?.clientId}&responseType=token&deviceName=${machineName || _os().default.hostname()}&os=${process.platform}`);
502
495
  }
503
496
  logout() {
504
- this.globalConfig.delSync(_constants().CFG_USER_TOKEN_KEY);
505
- this.globalConfig.delSync(_constants().CFG_USER_NAME_KEY);
497
+ this.globalConfig.delSync(_legacy().CFG_USER_TOKEN_KEY);
498
+ this.globalConfig.delSync(_legacy().CFG_USER_NAME_KEY);
506
499
  }
507
500
  setRedirectUrl(redirectUrl) {
508
501
  this.REDIRECT_URL = redirectUrl;
@@ -515,16 +508,16 @@ class CloudMain {
515
508
  return currentUser.username;
516
509
  }
517
510
  globalConfigsToUpdateOnLogin(domain) {
518
- const currentCloudDomain = this.globalConfig.getSync(_constants().CFG_CLOUD_DOMAIN_KEY);
511
+ const currentCloudDomain = this.globalConfig.getSync(_legacy().CFG_CLOUD_DOMAIN_KEY);
519
512
  const res = {};
520
- if (!domain || domain === _constants().DEFAULT_CLOUD_DOMAIN) {
521
- if (currentCloudDomain && currentCloudDomain !== _constants().DEFAULT_CLOUD_DOMAIN) {
522
- res[_constants().CFG_CLOUD_DOMAIN_KEY] = '';
513
+ if (!domain || domain === _legacy().DEFAULT_CLOUD_DOMAIN) {
514
+ if (currentCloudDomain && currentCloudDomain !== _legacy().DEFAULT_CLOUD_DOMAIN) {
515
+ res[_legacy().CFG_CLOUD_DOMAIN_KEY] = '';
523
516
  }
524
517
  return res;
525
518
  }
526
519
  if (currentCloudDomain !== domain) {
527
- res[_constants().CFG_CLOUD_DOMAIN_KEY] = domain;
520
+ res[_legacy().CFG_CLOUD_DOMAIN_KEY] = domain;
528
521
  }
529
522
  return res;
530
523
  }
@@ -538,20 +531,20 @@ class CloudMain {
538
531
  }
539
532
  });
540
533
  // Refresh the config after updating
541
- (0, _constants().clearCachedUrls)();
534
+ (0, _legacy().clearCachedUrls)();
542
535
  this.config = CloudMain.calculateConfig();
543
536
  return configsToUpdate;
544
537
  }
545
538
  async login(port, suppressBrowserLaunch, machineName, cloudDomain, redirectUrl, skipConfigUpdate, defaultCloudDomain) {
546
539
  if (defaultCloudDomain) {
547
- cloudDomain = _constants().DEFAULT_CLOUD_DOMAIN;
540
+ cloudDomain = _legacy().DEFAULT_CLOUD_DOMAIN;
548
541
  }
549
542
  return new Promise((resolve, reject) => {
550
543
  if (this.isLoggedIn()) {
551
544
  resolve({
552
545
  isAlreadyLoggedIn: true,
553
- username: this.globalConfig.getSync(_constants().CFG_USER_NAME_KEY),
554
- token: this.globalConfig.getSync(_constants().CFG_USER_TOKEN_KEY)
546
+ username: this.globalConfig.getSync(_legacy().CFG_USER_NAME_KEY),
547
+ token: this.globalConfig.getSync(_legacy().CFG_USER_TOKEN_KEY)
555
548
  });
556
549
  return;
557
550
  }
@@ -640,7 +633,7 @@ class CloudMain {
640
633
  'Content-Type': 'application/json'
641
634
  }, this.getAuthHeader());
642
635
  try {
643
- const response = await (0, _http().fetchWithAgent)(graphqlUrl, {
636
+ const response = await (0, _scope2().fetchWithAgent)(graphqlUrl, {
644
637
  method: 'POST',
645
638
  headers,
646
639
  body
@@ -656,15 +649,15 @@ class CloudMain {
656
649
  }
657
650
  static calculateConfig() {
658
651
  return {
659
- cloudDomain: (0, _constants().getCloudDomain)(),
660
- cloudHubDomain: _constants().DEFAULT_HUB_DOMAIN,
661
- cloudApi: (0, _constants().getSymphonyUrl)(),
662
- cloudGraphQL: _constants().SYMPHONY_GRAPHQL,
663
- loginDomain: (0, _constants().getLoginUrl)(),
664
- analyticsDomain: _constants().DEFAULT_ANALYTICS_DOMAIN,
665
- registryUrl: (0, _constants().getRegistryUrl)(),
666
- cloudExporterUrl: _constants().CENTRAL_BIT_HUB_URL,
667
- cloudHubName: _constants().CENTRAL_BIT_HUB_NAME,
652
+ cloudDomain: (0, _legacy().getCloudDomain)(),
653
+ cloudHubDomain: _legacy().DEFAULT_HUB_DOMAIN,
654
+ cloudApi: (0, _legacy().getSymphonyUrl)(),
655
+ cloudGraphQL: _legacy().SYMPHONY_GRAPHQL,
656
+ loginDomain: (0, _legacy().getLoginUrl)(),
657
+ analyticsDomain: _legacy().DEFAULT_ANALYTICS_DOMAIN,
658
+ registryUrl: (0, _legacy().getRegistryUrl)(),
659
+ cloudExporterUrl: _legacy().CENTRAL_BIT_HUB_URL,
660
+ cloudHubName: _legacy().CENTRAL_BIT_HUB_NAME,
668
661
  loginPort: CloudMain.DEFAULT_PORT
669
662
  };
670
663
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_harmony","data","require","_cli","_uuid","_chalk","_interopRequireDefault","_os","_open","_scopes","_scopes2","_logger","_constants","_scope","_globalFlags","_http","_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","_legacyRemotes","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 } 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/dist/constants';\nimport { ScopeAspect, ScopeMain } from '@teambit/scope';\nimport globalFlags from '@teambit/legacy/dist/cli/global-flags';\nimport { fetchWithAgent as fetch } from '@teambit/legacy/dist/scope/network/http/http';\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._legacyRemotes();\n const filteredScopesToFetch = scopes.filter((scope) => {\n return ScopeID.isValid(scope) && remotes.isHub(scope);\n });\n const queryResponse = await this.fetchFromSymphonyViaGQL<GetScopesGQLResponse>(CloudMain.GET_SCOPES, {\n ids: filteredScopesToFetch,\n });\n const scopesFromQuery = queryResponse?.data?.getScopes;\n if (!scopesFromQuery) return [];\n return scopesFromQuery.map((scope) => {\n const scopeDescriptorObj = {\n ...scope,\n id: ScopeID.fromString(scope.id),\n };\n return ScopeDescriptor.fromObject(scopeDescriptorObj);\n });\n }\n\n async 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","_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","_legacyRemotes","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._legacyRemotes();\n const filteredScopesToFetch = scopes.filter((scope) => {\n return ScopeID.isValid(scope) && remotes.isHub(scope);\n });\n const queryResponse = await this.fetchFromSymphonyViaGQL<GetScopesGQLResponse>(CloudMain.GET_SCOPES, {\n ids: filteredScopesToFetch,\n });\n const scopesFromQuery = queryResponse?.data?.getScopes;\n if (!scopesFromQuery) return [];\n return scopesFromQuery.map((scope) => {\n const scopeDescriptorObj = {\n ...scope,\n id: ScopeID.fromString(scope.id),\n };\n return ScopeDescriptor.fromObject(scopeDescriptorObj);\n });\n }\n\n async 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":[]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/cloud",
3
- "version": "0.0.763",
3
+ "version": "0.0.764",
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.763"
9
+ "version": "0.0.764"
10
10
  },
11
11
  "dependencies": {
12
12
  "graphql-tag": "2.12.1",
@@ -21,19 +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.487",
25
- "@teambit/cli": "0.0.1064",
24
+ "@teambit/graphql": "1.0.488",
25
+ "@teambit/cli": "0.0.1065",
26
26
  "@teambit/cloud.models.cloud-scope": "0.0.3",
27
27
  "@teambit/cloud.models.cloud-user": "0.0.5",
28
- "@teambit/express": "0.0.1163",
29
- "@teambit/global-config": "0.0.1067",
30
- "@teambit/logger": "0.0.1157",
31
- "@teambit/scope": "1.0.487",
32
- "@teambit/ui": "1.0.487",
33
- "@teambit/workspace": "1.0.487",
28
+ "@teambit/express": "0.0.1164",
29
+ "@teambit/global-config": "0.0.1068",
30
+ "@teambit/legacy.constants": "0.0.1",
31
+ "@teambit/logger": "0.0.1158",
32
+ "@teambit/scope.network": "0.0.1",
33
+ "@teambit/scope": "1.0.488",
34
+ "@teambit/ui": "1.0.488",
35
+ "@teambit/workspace": "1.0.488",
34
36
  "@teambit/cloud.ui.user-bar": "0.0.13",
35
- "@teambit/component": "1.0.487",
36
- "@teambit/lanes": "1.0.487"
37
+ "@teambit/component": "1.0.488",
38
+ "@teambit/lanes": "1.0.488"
37
39
  },
38
40
  "devDependencies": {
39
41
  "@types/express": "4.17.13",