@teambit/cloud 0.0.440 → 0.0.442

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.
@@ -38,13 +38,17 @@ type CloudOrganization = {
38
38
  export type OnSuccessLogin = ({ username, token, npmrcUpdateResult, }: {
39
39
  username?: string;
40
40
  token?: string;
41
- npmrcUpdateResult?: {
42
- success?: boolean;
43
- error?: Error;
44
- configUpdates?: string;
45
- };
41
+ npmrcUpdateResult?: NpmConfigUpdateResult;
46
42
  }) => void;
47
43
  export type OnSuccessLoginSlot = SlotRegistry<OnSuccessLogin>;
44
+ export type NpmConfigUpdateResult = {
45
+ conflicts?: {
46
+ original: string;
47
+ modifications: string;
48
+ }[];
49
+ configUpdates?: string;
50
+ error?: Error;
51
+ };
48
52
  export declare class CloudMain {
49
53
  private config;
50
54
  logger: Logger;
@@ -60,10 +64,36 @@ export declare class CloudMain {
60
64
  private authListenerByPort;
61
65
  private REDIRECT_URL?;
62
66
  constructor(config: CloudWorkspaceConfig, logger: Logger, express: ExpressMain, workspace: Workspace, scope: ScopeMain, globalConfig: GlobalConfigMain, onSuccessLoginSlot: OnSuccessLoginSlot);
63
- updateNpmrcOnLogin({ authToken, username }: {
67
+ getNpmConfig(): Record<string, string>;
68
+ generateNpmrc({ dryRun, force }?: {
69
+ dryRun?: boolean;
70
+ force?: boolean;
71
+ }): Promise<{
72
+ conflicts?: {
73
+ original: string;
74
+ modifications: string;
75
+ }[];
76
+ configUpdates?: string;
77
+ }>;
78
+ detectConfigConflicts({ newConfigs, registryDomain, }: {
79
+ newConfigs: string;
80
+ registryDomain: string;
81
+ }): {
82
+ original: string;
83
+ modifications: string;
84
+ }[];
85
+ updateNpmConfig({ authToken, username, dryRun, force, }: {
64
86
  authToken: string;
65
87
  username: string;
66
- }): Promise<string>;
88
+ dryRun?: boolean;
89
+ force?: boolean;
90
+ }): Promise<{
91
+ conflicts?: {
92
+ original: string;
93
+ modifications: string;
94
+ }[];
95
+ configUpdates?: string;
96
+ }>;
67
97
  setupAuthListener({ port: portFromParams, clientId, }?: {
68
98
  port?: number;
69
99
  clientId?: string;
@@ -97,11 +127,7 @@ export declare class CloudMain {
97
127
  isAlreadyLoggedIn?: boolean;
98
128
  username?: string;
99
129
  token?: string;
100
- npmrcUpdateResult?: {
101
- success?: boolean;
102
- error?: Error;
103
- configUpdates?: string;
104
- };
130
+ npmrcUpdateResult?: NpmConfigUpdateResult;
105
131
  } | null>;
106
132
  static GET_SCOPES: string;
107
133
  static GET_CURRENT_USER: string;
@@ -165,6 +165,13 @@ function _whoami() {
165
165
  };
166
166
  return data;
167
167
  }
168
+ function _npmrc() {
169
+ const data = require("./npmrc.cmd");
170
+ _npmrc = function () {
171
+ return data;
172
+ };
173
+ return data;
174
+ }
168
175
  var _CloudMain;
169
176
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
170
177
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
@@ -186,21 +193,92 @@ class CloudMain {
186
193
  _defineProperty(this, "authListenerByPort", new Map());
187
194
  _defineProperty(this, "REDIRECT_URL", void 0);
188
195
  }
189
- async updateNpmrcOnLogin({
196
+ getNpmConfig() {
197
+ try {
198
+ const output = (0, _child_process().execSync)(`npm config list --json`, {
199
+ encoding: 'utf8'
200
+ });
201
+ return JSON.parse(output);
202
+ } catch (error) {
203
+ throw new Error(`failed to get npm config. error: ${error}`);
204
+ }
205
+ }
206
+ async generateNpmrc({
207
+ dryRun,
208
+ force
209
+ } = {}) {
210
+ const authToken = this.getAuthToken();
211
+ const username = this.getUsername();
212
+ if (!authToken || !username) {
213
+ throw new Error('user is not logged in');
214
+ }
215
+ return this.updateNpmConfig({
216
+ authToken,
217
+ username,
218
+ dryRun,
219
+ force
220
+ });
221
+ }
222
+ detectConfigConflicts({
223
+ newConfigs,
224
+ registryDomain
225
+ }) {
226
+ const existingConfigs = this.getNpmConfig();
227
+ const conflicts = [];
228
+ newConfigs.split('\n').forEach(line => {
229
+ const [key, newValue] = line.split('=');
230
+ if (key && newValue) {
231
+ const trimmedKey = key.trim();
232
+ const existingValue = existingConfigs[trimmedKey];
233
+ const isRegistryConflict = existingValue && !existingValue.includes(registryDomain);
234
+ if (existingValue && isRegistryConflict) {
235
+ conflicts.push({
236
+ original: `${trimmedKey}=${existingValue}`,
237
+ modifications: `${trimmedKey}=${newValue.trim()}`
238
+ });
239
+ }
240
+ }
241
+ });
242
+ return conflicts;
243
+ }
244
+ async updateNpmConfig({
190
245
  authToken,
191
- username
246
+ username,
247
+ dryRun,
248
+ force
192
249
  }) {
193
250
  const orgs = (await this.getUserOrganizations()) ?? [];
194
251
  const orgNames = orgs.map(org => org.name);
195
- const allOrgs = [...CloudMain.PRESET_ORGS, ...orgNames, username];
196
- const registryUrl = this.getRegistryUrl();
197
- const scopeConfig = allOrgs.map(org => `@${org}:registry="${registryUrl}"`).join(' ');
198
- const authConfig = `//${new URL(registryUrl).host}/:_authToken="${authToken}"`;
199
- const configUpdates = `${scopeConfig} ${authConfig}`;
200
- (0, _child_process().execSync)(`npm config set ${configUpdates}`, {
252
+ const allOrgs = Array.from(new Set([...CloudMain.PRESET_ORGS, ...orgNames, username])).sort();
253
+ const registryUrlStr = this.getRegistryUrl();
254
+ const registryUrl = new URL(registryUrlStr);
255
+ const scopeConfig = allOrgs.map(org => `@${org}:registry="${registryUrlStr}"`).join('\n');
256
+ const authConfig = `//${registryUrl.host}/:_authToken="${authToken}"`;
257
+ const configUpdates = `${scopeConfig}\n${authConfig}`;
258
+ if (!force) {
259
+ const conflicts = this.detectConfigConflicts({
260
+ newConfigs: configUpdates,
261
+ registryDomain: this.getCloudDomain()
262
+ });
263
+ if (conflicts.length > 0) {
264
+ return {
265
+ conflicts,
266
+ configUpdates
267
+ };
268
+ }
269
+ }
270
+ if (dryRun) {
271
+ return {
272
+ configUpdates
273
+ };
274
+ }
275
+ const configToUpdate = configUpdates.replace(/\n/g, ' ');
276
+ (0, _child_process().execSync)(`npm config set ${configToUpdate}`, {
201
277
  stdio: 'ignore'
202
278
  });
203
- return configUpdates;
279
+ return {
280
+ configUpdates
281
+ };
204
282
  }
205
283
  setupAuthListener({
206
284
  port: portFromParams,
@@ -280,24 +358,20 @@ class CloudMain {
280
358
  username
281
359
  }));
282
360
  const onLoggedInFns = this.onSuccessLoginSlot.values();
283
- this.updateNpmrcOnLogin({
361
+ this.updateNpmConfig({
284
362
  authToken: token,
285
363
  username: username
286
364
  }).then(configUpdates => {
287
365
  onLoggedInFns.forEach(fn => fn({
288
366
  username,
289
367
  token: token,
290
- npmrcUpdateResult: {
291
- success: true,
292
- configUpdates
293
- }
368
+ npmrcUpdateResult: configUpdates
294
369
  }));
295
370
  }).catch(error => {
296
371
  onLoggedInFns.forEach(fn => fn({
297
372
  username,
298
373
  token: token,
299
374
  npmrcUpdateResult: {
300
- success: false,
301
375
  error: new Error(`failed to update npmrc. error ${error?.toString}`)
302
376
  }
303
377
  }));
@@ -507,10 +581,13 @@ class CloudMain {
507
581
  static async provider([loggerMain, graphql, express, workspace, scope, globalConfig, cli, ui], config, [onSuccessLoginSlot]) {
508
582
  const logger = loggerMain.createLogger(_cloud2().CloudAspect.id);
509
583
  const cloudMain = new CloudMain(config, logger, express, workspace, scope, globalConfig, onSuccessLoginSlot);
510
- const loginCmd = new (_login().LoginCmd)(cloudMain);
584
+ const loginCmd = new (_login().LoginCmd)(cloudMain, 8889);
511
585
  const logoutCmd = new (_logout().LogoutCmd)(cloudMain);
512
586
  const whoamiCmd = new (_whoami().WhoamiCmd)(cloudMain);
513
- cli.register(loginCmd, logoutCmd, whoamiCmd);
587
+ const npmrcGenerateCmd = new (_npmrc().NpmrcGenerateCmd)(cloudMain, 8889);
588
+ const npmrc = new (_npmrc().NpmrcCmd)();
589
+ npmrc.commands = [npmrcGenerateCmd];
590
+ cli.register(loginCmd, logoutCmd, whoamiCmd, npmrc);
514
591
  graphql.register((0, _cloud().cloudSchema)(cloudMain));
515
592
  if (workspace) {
516
593
  ui.registerOnStart(async () => {
@@ -1 +1 @@
1
- {"version":3,"names":["_harmony","data","require","_cli","_interopRequireWildcard","_uuid","_chalk","_interopRequireDefault","_os","_open","_scopes","_scopes2","_logger","_constants","_scope","_globalFlags","_graphql","_workspace","_express","_globalConfig","_child_process","_ui","_cloud","_cloud2","_login","_logout","_whoami","_CloudMain","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","key","value","_toPropertyKey","configurable","writable","_toPrimitive","String","Symbol","toPrimitive","TypeError","Number","CloudMain","constructor","config","logger","express","workspace","scope","globalConfig","onSuccessLoginSlot","Map","updateNpmrcOnLogin","authToken","username","orgs","getUserOrganizations","orgNames","map","org","name","allOrgs","PRESET_ORGS","registryUrl","getRegistryUrl","scopeConfig","join","authConfig","URL","host","configUpdates","execSync","stdio","setupAuthListener","port","portFromParams","clientId","v4","Promise","resolve","reject","getLoginPort","existingAuthListener","authListenerByPort","debug","expressApp","createApp","authServer","listen","existing","server","on","err","code","warn","then","catch","error","req","res","query","clientIdFromReq","redirectUri","usernameFromReq","undefined","token","Array","isArray","status","send","setSync","CFG_USER_TOKEN_KEY","CFG_USER_NAME_KEY","onLoggedInFns","values","fn","npmrcUpdateResult","success","Error","toString","REDIRECT_URL","redirect","ERROR_RESPONSE","registerOnSuccessLogin","onSuccessLoginFn","register","getCloudDomain","cloudDomain","getCloudHubDomain","cloudHubDomain","getCloudApi","cloudApi","getCloudGraphQL","cloudGraphQL","getLoginDomain","loginDomain","getAnalyticsDomain","analyticsDomain","getCloudExporterUrl","cloudExporterUrl","getHubName","cloudHubName","loginPort","DEFAULT_PORT","isLoggedIn","Boolean","getAuthToken","invalidateCache","processToken","globalFlags","getSync","getAuthHeader","Authorization","getUsername","getLoginUrl","redirectUrl","machineName","loginUrl","authListenerForPort","os","hostname","process","platform","authListener","encodeURI","logout","delSync","whoami","currentUser","getCurrentUser","login","suppressBrowserLaunch","isAlreadyLoggedIn","promptLogin","loggedInParams","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","JSON","stringify","headers","fetch","method","ok","json","provider","loggerMain","graphql","cli","ui","createLogger","CloudAspect","cloudMain","loginCmd","LoginCmd","logoutCmd","LogoutCmd","whoamiCmd","WhoamiCmd","cloudSchema","registerOnStart","exports","Slot","withType","LoggerAspect","GraphqlAspect","ExpressAspect","WorkspaceAspect","ScopeAspect","GlobalConfigAspect","CLIAspect","UIAspect","MainRuntime","DEFAULT_HUB_DOMAIN","getSymphonyUrl","SYMPHONY_GRAPHQL","DEFAULT_ANALYTICS_DOMAIN","DEFAULT_REGISTRY_URL","CENTRAL_BIT_HUB_URL","CENTRAL_BIT_HUB_NAME","addRuntime"],"sources":["cloud.main.runtime.ts"],"sourcesContent":["import { Slot, SlotRegistry } from '@teambit/harmony';\nimport CLIAspect, { CLIMain, MainRuntime } from '@teambit/cli';\nimport { v4 } from 'uuid';\nimport chalk from 'chalk';\nimport os from 'os';\nimport open from 'open';\nimport * as http from 'http';\nimport { Express } from 'express';\nimport { GetScopesGQLResponse } from '@teambit/cloud.models.cloud-scope';\nimport { CloudUser, CloudUserAPIResponse } from '@teambit/cloud.models.cloud-user';\nimport { ScopeDescriptor } from '@teambit/scopes.scope-descriptor';\nimport { ScopeID } from '@teambit/scopes.scope-id';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport {\n getCloudDomain,\n DEFAULT_HUB_DOMAIN,\n getSymphonyUrl,\n SYMPHONY_GRAPHQL,\n getLoginUrl,\n DEFAULT_ANALYTICS_DOMAIN,\n DEFAULT_REGISTRY_URL,\n CENTRAL_BIT_HUB_URL,\n CENTRAL_BIT_HUB_NAME,\n CFG_USER_TOKEN_KEY,\n CFG_USER_NAME_KEY,\n} from '@teambit/legacy/dist/constants';\nimport ScopeAspect, { ScopeMain } from '@teambit/scope';\nimport globalFlags from '@teambit/legacy/dist/cli/global-flags';\nimport GraphqlAspect, { GraphqlMain } from '@teambit/graphql';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { ExpressAspect, ExpressMain } from '@teambit/express';\nimport GlobalConfigAspect, { GlobalConfigMain } from '@teambit/global-config';\nimport { 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';\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\nexport type OnSuccessLogin = ({\n username,\n token,\n npmrcUpdateResult,\n}: {\n username?: string;\n token?: string;\n npmrcUpdateResult?: {\n success?: boolean;\n error?: Error;\n configUpdates?: string;\n };\n}) => void;\nexport type OnSuccessLoginSlot = SlotRegistry<OnSuccessLogin>;\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 async updateNpmrcOnLogin({ authToken, username }: { authToken: string; username: string }): Promise<string> {\n const orgs = (await this.getUserOrganizations()) ?? [];\n const orgNames = orgs.map((org) => org.name);\n const allOrgs = [...CloudMain.PRESET_ORGS, ...orgNames, username];\n const registryUrl = this.getRegistryUrl();\n const scopeConfig = allOrgs.map((org) => `@${org}:registry=\"${registryUrl}\"`).join(' ');\n const authConfig = `//${new URL(registryUrl).host}/:_authToken=\"${authToken}\"`;\n const configUpdates = `${scopeConfig} ${authConfig}`;\n execSync(`npm config set ${configUpdates}`, { stdio: 'ignore' });\n return configUpdates;\n }\n\n setupAuthListener({\n port: portFromParams,\n clientId = v4(),\n }: {\n port?: number;\n clientId?: string;\n } = {}): Promise<CloudAuthListener | null> {\n return new Promise((resolve, reject) => {\n const port = portFromParams || this.getLoginPort();\n const existingAuthListener = this.authListenerByPort.get(port);\n\n if (existingAuthListener) {\n this.logger.debug(`auth server is already running on port ${port}`);\n resolve(existingAuthListener);\n return;\n }\n\n const expressApp = this.express.createApp();\n\n this.authListenerByPort.set(port, {\n port,\n clientId,\n });\n\n const authServer = expressApp\n .listen(port, () => {\n this.logger.debug(`cloud express server started on port ${port}`);\n const existing = this.authListenerByPort.get(port) ?? {};\n this.authListenerByPort.set(port, {\n port,\n clientId,\n ...existing,\n server: authServer,\n });\n resolve({\n port,\n server: authServer,\n clientId,\n });\n })\n .on('error', (err) => {\n // @ts-ignore\n const { code } = err;\n if (code === 'EADDRINUSE') {\n // set up a new auth listener with new port\n this.logger.warn(`port: ${port} already in use for cloud auth listener, trying port ${port + 1}`);\n // eslint-disable-next-line promise/no-promise-in-callback\n this.setupAuthListener({\n port: port + 1,\n })\n .then(resolve)\n .catch(reject);\n return;\n }\n this.logger.error(`cloud express server failed to start on port ${port}`, err);\n reject(err);\n });\n\n expressApp.get('/', (req, res) => {\n this.logger.debug('cloud.authListener', 'received request', req.query);\n try {\n const { clientId: clientIdFromReq, redirectUri, username: usernameFromReq } = req.query;\n const username = typeof usernameFromReq === 'string' ? usernameFromReq : undefined;\n let { token } = req.query;\n if (Array.isArray(token)) {\n token = token[0];\n }\n if (typeof token !== 'string') {\n res.status(400).send('Invalid token format');\n return res;\n }\n this.globalConfig.setSync(CFG_USER_TOKEN_KEY, token);\n if (username) this.globalConfig.setSync(CFG_USER_NAME_KEY, username);\n\n const 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\n this.updateNpmrcOnLogin({ authToken: token as string, username: username as string })\n .then((configUpdates) => {\n onLoggedInFns.forEach((fn) =>\n fn({ username, token: token as string, npmrcUpdateResult: { success: true, configUpdates } })\n );\n })\n .catch((error) => {\n onLoggedInFns.forEach((fn) =>\n fn({\n username,\n token: token as string,\n npmrcUpdateResult: {\n success: false,\n error: new Error(`failed to update npmrc. error ${error?.toString}`),\n },\n })\n );\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 async getLoginUrl({\n redirectUrl,\n machineName,\n cloudDomain,\n port: portFromParams,\n }: { redirectUrl?: string; machineName?: string; cloudDomain?: string; port?: string } = {}): Promise<string | null> {\n const loginUrl = cloudDomain || this.getLoginDomain();\n const port = Number(portFromParams) || this.getLoginPort();\n if (redirectUrl) {\n this.REDIRECT_URL = redirectUrl;\n }\n const authListenerForPort = this.authListenerByPort.get(port);\n if (authListenerForPort) {\n return `${loginUrl}?port=${port}&clientId=${authListenerForPort.clientId}&responseType=token&deviceName=${\n machineName || os.hostname()\n }&os=${process.platform}`;\n }\n const authListener = await this.setupAuthListener({ port });\n\n if (!authListener) return null;\n\n return encodeURI(\n `${loginUrl}?port=${port}&clientId=${authListener?.clientId}&responseType=token&deviceName=${\n machineName || os.hostname()\n }&os=${process.platform}`\n );\n }\n\n logout() {\n this.globalConfig.delSync(CFG_USER_TOKEN_KEY);\n this.globalConfig.delSync(CFG_USER_NAME_KEY);\n }\n\n async whoami(): Promise<string | undefined> {\n const currentUser = await this.getCurrentUser();\n if (!currentUser?.username) {\n return undefined;\n }\n return currentUser.username;\n }\n\n async login(\n port?: string,\n suppressBrowserLaunch?: boolean,\n machineName?: string,\n cloudDomain?: string,\n redirectUrl?: string\n ): Promise<{\n isAlreadyLoggedIn?: boolean;\n username?: string;\n token?: string;\n npmrcUpdateResult?: {\n success?: boolean;\n error?: Error;\n configUpdates?: string;\n };\n } | null> {\n return new Promise((resolve, reject) => {\n if (this.isLoggedIn()) {\n resolve({\n isAlreadyLoggedIn: true,\n username: this.globalConfig.getSync(CFG_USER_NAME_KEY),\n token: this.globalConfig.getSync(CFG_USER_TOKEN_KEY),\n });\n return;\n }\n\n const promptLogin = async () => {\n this.REDIRECT_URL = redirectUrl;\n this.registerOnSuccessLogin((loggedInParams) => {\n resolve({\n username: loggedInParams.username,\n token: loggedInParams.token,\n npmrcUpdateResult: loggedInParams.npmrcUpdateResult,\n });\n });\n\n const loginUrl = await this.getLoginUrl({\n machineName,\n cloudDomain,\n port,\n });\n if (!loginUrl) {\n reject(new Error('Failed to get login url'));\n return;\n }\n if (!suppressBrowserLaunch) {\n console.log(chalk.yellow(`Your browser has been opened to visit:\\n${loginUrl}`)); // eslint-disable-line no-console\n open(loginUrl).catch((err) => {\n this.logger.error(`failed to open browser on login, err: ${err}`);\n reject(err);\n });\n } else {\n console.log(chalk.yellow(`Go to the following link in your browser::\\n${loginUrl}`)); // eslint-disable-line no-console\n }\n };\n try {\n this.setupAuthListener({\n port: Number(port),\n })\n .then(promptLogin)\n .catch((e) => reject(e));\n } catch (err) {\n reject(err);\n }\n });\n }\n\n static GET_SCOPES = `\n query GET_SCOPES($ids: [String]!) {\n getScopes(ids: $ids) {\n id\n scopeStyle {\n icon\n backgroundIconColor\n stripColor\n }\n }\n }\n `;\n 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\n static slots = [Slot.withType<OnSuccessLogin>()];\n static dependencies = [\n LoggerAspect,\n GraphqlAspect,\n ExpressAspect,\n WorkspaceAspect,\n ScopeAspect,\n GlobalConfigAspect,\n CLIAspect,\n UIAspect,\n ];\n static runtime = MainRuntime;\n static defaultConfig: CloudWorkspaceConfig = {\n cloudDomain: getCloudDomain(),\n cloudHubDomain: DEFAULT_HUB_DOMAIN,\n cloudApi: getSymphonyUrl(),\n cloudGraphQL: SYMPHONY_GRAPHQL,\n loginDomain: getLoginUrl(),\n analyticsDomain: DEFAULT_ANALYTICS_DOMAIN,\n registryUrl: DEFAULT_REGISTRY_URL,\n cloudExporterUrl: CENTRAL_BIT_HUB_URL,\n cloudHubName: CENTRAL_BIT_HUB_NAME,\n loginPort: CloudMain.DEFAULT_PORT,\n };\n static async provider(\n [loggerMain, graphql, express, workspace, scope, globalConfig, cli, ui]: [\n LoggerMain,\n GraphqlMain,\n ExpressMain,\n Workspace,\n ScopeMain,\n GlobalConfigMain,\n CLIMain,\n UiMain\n ],\n config: CloudWorkspaceConfig,\n [onSuccessLoginSlot]: [OnSuccessLoginSlot]\n ) {\n const logger = loggerMain.createLogger(CloudAspect.id);\n const cloudMain = new CloudMain(config, logger, express, workspace, scope, globalConfig, onSuccessLoginSlot);\n const loginCmd = new LoginCmd(cloudMain);\n const logoutCmd = new LogoutCmd(cloudMain);\n const whoamiCmd = new WhoamiCmd(cloudMain);\n cli.register(loginCmd, logoutCmd, whoamiCmd);\n graphql.register(cloudSchema(cloudMain));\n if (workspace) {\n ui.registerOnStart(async () => {\n await cloudMain.setupAuthListener();\n return undefined;\n });\n }\n return cloudMain;\n }\n}\n\nCloudAspect.addRuntime(CloudMain);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_harmony","data","require","_cli","_interopRequireWildcard","_uuid","_chalk","_interopRequireDefault","_os","_open","_scopes","_scopes2","_logger","_constants","_scope","_globalFlags","_graphql","_workspace","_express","_globalConfig","_child_process","_ui","_cloud","_cloud2","_login","_logout","_whoami","_npmrc","_CloudMain","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","key","value","_toPropertyKey","configurable","writable","_toPrimitive","String","Symbol","toPrimitive","TypeError","Number","CloudMain","constructor","config","logger","express","workspace","scope","globalConfig","onSuccessLoginSlot","Map","getNpmConfig","output","execSync","encoding","JSON","parse","error","Error","generateNpmrc","dryRun","force","authToken","getAuthToken","username","getUsername","updateNpmConfig","detectConfigConflicts","newConfigs","registryDomain","existingConfigs","conflicts","split","line","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","Promise","resolve","reject","getLoginPort","existingAuthListener","authListenerByPort","debug","expressApp","createApp","authServer","listen","existing","server","on","err","code","warn","then","catch","req","res","query","clientIdFromReq","redirectUri","usernameFromReq","undefined","token","isArray","status","send","setSync","CFG_USER_TOKEN_KEY","CFG_USER_NAME_KEY","onLoggedInFns","values","fn","npmrcUpdateResult","toString","REDIRECT_URL","redirect","ERROR_RESPONSE","registerOnSuccessLogin","onSuccessLoginFn","register","cloudDomain","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","getLoginUrl","redirectUrl","machineName","loginUrl","authListenerForPort","os","hostname","process","platform","authListener","encodeURI","logout","delSync","whoami","currentUser","getCurrentUser","login","suppressBrowserLaunch","isAlreadyLoggedIn","promptLogin","loggedInParams","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","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","DEFAULT_HUB_DOMAIN","getSymphonyUrl","SYMPHONY_GRAPHQL","DEFAULT_ANALYTICS_DOMAIN","DEFAULT_REGISTRY_URL","CENTRAL_BIT_HUB_URL","CENTRAL_BIT_HUB_NAME","addRuntime"],"sources":["cloud.main.runtime.ts"],"sourcesContent":["import { Slot, SlotRegistry } from '@teambit/harmony';\nimport CLIAspect, { CLIMain, MainRuntime } from '@teambit/cli';\nimport { v4 } from 'uuid';\nimport chalk from 'chalk';\nimport os from 'os';\nimport open from 'open';\nimport * as http from 'http';\nimport { Express } from 'express';\nimport { GetScopesGQLResponse } from '@teambit/cloud.models.cloud-scope';\nimport { CloudUser, CloudUserAPIResponse } from '@teambit/cloud.models.cloud-user';\nimport { ScopeDescriptor } from '@teambit/scopes.scope-descriptor';\nimport { ScopeID } from '@teambit/scopes.scope-id';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport {\n getCloudDomain,\n DEFAULT_HUB_DOMAIN,\n getSymphonyUrl,\n SYMPHONY_GRAPHQL,\n getLoginUrl,\n DEFAULT_ANALYTICS_DOMAIN,\n DEFAULT_REGISTRY_URL,\n CENTRAL_BIT_HUB_URL,\n CENTRAL_BIT_HUB_NAME,\n CFG_USER_TOKEN_KEY,\n CFG_USER_NAME_KEY,\n} from '@teambit/legacy/dist/constants';\nimport ScopeAspect, { ScopeMain } from '@teambit/scope';\nimport globalFlags from '@teambit/legacy/dist/cli/global-flags';\nimport GraphqlAspect, { GraphqlMain } from '@teambit/graphql';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { ExpressAspect, ExpressMain } from '@teambit/express';\nimport GlobalConfigAspect, { GlobalConfigMain } from '@teambit/global-config';\nimport { 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\nexport type OnSuccessLogin = ({\n username,\n token,\n npmrcUpdateResult,\n}: {\n username?: string;\n token?: string;\n npmrcUpdateResult?: NpmConfigUpdateResult;\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 const username = this.getUsername();\n if (!authToken || !username) {\n throw new Error('user is not logged in');\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 }: {\n port?: number;\n clientId?: string;\n } = {}): Promise<CloudAuthListener | null> {\n return new Promise((resolve, reject) => {\n const port = portFromParams || this.getLoginPort();\n const existingAuthListener = this.authListenerByPort.get(port);\n\n if (existingAuthListener) {\n this.logger.debug(`auth server is already running on port ${port}`);\n resolve(existingAuthListener);\n return;\n }\n\n const expressApp = this.express.createApp();\n\n this.authListenerByPort.set(port, {\n port,\n clientId,\n });\n\n const authServer = expressApp\n .listen(port, () => {\n this.logger.debug(`cloud express server started on port ${port}`);\n const existing = this.authListenerByPort.get(port) ?? {};\n this.authListenerByPort.set(port, {\n port,\n clientId,\n ...existing,\n server: authServer,\n });\n resolve({\n port,\n server: authServer,\n clientId,\n });\n })\n .on('error', (err) => {\n // @ts-ignore\n const { code } = err;\n if (code === 'EADDRINUSE') {\n // set up a new auth listener with new port\n this.logger.warn(`port: ${port} already in use for cloud auth listener, trying port ${port + 1}`);\n // eslint-disable-next-line promise/no-promise-in-callback\n this.setupAuthListener({\n port: port + 1,\n })\n .then(resolve)\n .catch(reject);\n return;\n }\n this.logger.error(`cloud express server failed to start on port ${port}`, err);\n reject(err);\n });\n\n expressApp.get('/', (req, res) => {\n this.logger.debug('cloud.authListener', 'received request', req.query);\n try {\n const { clientId: clientIdFromReq, redirectUri, username: usernameFromReq } = req.query;\n const username = typeof usernameFromReq === 'string' ? usernameFromReq : undefined;\n let { token } = req.query;\n if (Array.isArray(token)) {\n token = token[0];\n }\n if (typeof token !== 'string') {\n res.status(400).send('Invalid token format');\n return res;\n }\n this.globalConfig.setSync(CFG_USER_TOKEN_KEY, token);\n if (username) this.globalConfig.setSync(CFG_USER_NAME_KEY, username);\n\n const 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\n this.updateNpmConfig({ authToken: token as string, username: username as string })\n .then((configUpdates) => {\n onLoggedInFns.forEach((fn) => fn({ username, token: token as string, npmrcUpdateResult: configUpdates }));\n })\n .catch((error) => {\n onLoggedInFns.forEach((fn) =>\n fn({\n username,\n token: token as string,\n npmrcUpdateResult: {\n error: new Error(`failed to update npmrc. error ${error?.toString}`),\n },\n })\n );\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 async getLoginUrl({\n redirectUrl,\n machineName,\n cloudDomain,\n port: portFromParams,\n }: { redirectUrl?: string; machineName?: string; cloudDomain?: string; port?: string } = {}): Promise<string | null> {\n const loginUrl = cloudDomain || this.getLoginDomain();\n const port = Number(portFromParams) || this.getLoginPort();\n if (redirectUrl) {\n this.REDIRECT_URL = redirectUrl;\n }\n const authListenerForPort = this.authListenerByPort.get(port);\n if (authListenerForPort) {\n return `${loginUrl}?port=${port}&clientId=${authListenerForPort.clientId}&responseType=token&deviceName=${\n machineName || os.hostname()\n }&os=${process.platform}`;\n }\n const authListener = await this.setupAuthListener({ port });\n\n if (!authListener) return null;\n\n return encodeURI(\n `${loginUrl}?port=${port}&clientId=${authListener?.clientId}&responseType=token&deviceName=${\n machineName || os.hostname()\n }&os=${process.platform}`\n );\n }\n\n logout() {\n this.globalConfig.delSync(CFG_USER_TOKEN_KEY);\n this.globalConfig.delSync(CFG_USER_NAME_KEY);\n }\n\n async whoami(): Promise<string | undefined> {\n const currentUser = await this.getCurrentUser();\n if (!currentUser?.username) {\n return undefined;\n }\n return currentUser.username;\n }\n\n async login(\n port?: string,\n suppressBrowserLaunch?: boolean,\n machineName?: string,\n cloudDomain?: string,\n redirectUrl?: string\n ): Promise<{\n isAlreadyLoggedIn?: boolean;\n username?: string;\n token?: string;\n npmrcUpdateResult?: NpmConfigUpdateResult;\n } | null> {\n return new Promise((resolve, reject) => {\n if (this.isLoggedIn()) {\n resolve({\n isAlreadyLoggedIn: true,\n username: this.globalConfig.getSync(CFG_USER_NAME_KEY),\n token: this.globalConfig.getSync(CFG_USER_TOKEN_KEY),\n });\n return;\n }\n\n const promptLogin = async () => {\n this.REDIRECT_URL = redirectUrl;\n this.registerOnSuccessLogin((loggedInParams) => {\n resolve({\n username: loggedInParams.username,\n token: loggedInParams.token,\n npmrcUpdateResult: loggedInParams.npmrcUpdateResult,\n });\n });\n\n const loginUrl = await this.getLoginUrl({\n machineName,\n cloudDomain,\n port,\n });\n if (!loginUrl) {\n reject(new Error('Failed to get login url'));\n return;\n }\n if (!suppressBrowserLaunch) {\n console.log(chalk.yellow(`Your browser has been opened to visit:\\n${loginUrl}`)); // eslint-disable-line no-console\n open(loginUrl).catch((err) => {\n this.logger.error(`failed to open browser on login, err: ${err}`);\n reject(err);\n });\n } else {\n console.log(chalk.yellow(`Go to the following link in your browser::\\n${loginUrl}`)); // eslint-disable-line no-console\n }\n };\n try {\n this.setupAuthListener({\n port: Number(port),\n })\n .then(promptLogin)\n .catch((e) => reject(e));\n } catch (err) {\n reject(err);\n }\n });\n }\n\n static GET_SCOPES = `\n query GET_SCOPES($ids: [String]!) {\n getScopes(ids: $ids) {\n id\n scopeStyle {\n icon\n backgroundIconColor\n stripColor\n }\n }\n }\n `;\n 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\n static slots = [Slot.withType<OnSuccessLogin>()];\n static dependencies = [\n LoggerAspect,\n GraphqlAspect,\n ExpressAspect,\n WorkspaceAspect,\n ScopeAspect,\n GlobalConfigAspect,\n CLIAspect,\n UIAspect,\n ];\n static runtime = MainRuntime;\n static defaultConfig: CloudWorkspaceConfig = {\n cloudDomain: getCloudDomain(),\n cloudHubDomain: DEFAULT_HUB_DOMAIN,\n cloudApi: getSymphonyUrl(),\n cloudGraphQL: SYMPHONY_GRAPHQL,\n loginDomain: getLoginUrl(),\n analyticsDomain: DEFAULT_ANALYTICS_DOMAIN,\n registryUrl: DEFAULT_REGISTRY_URL,\n cloudExporterUrl: CENTRAL_BIT_HUB_URL,\n cloudHubName: CENTRAL_BIT_HUB_NAME,\n loginPort: CloudMain.DEFAULT_PORT,\n };\n static async provider(\n [loggerMain, graphql, express, workspace, scope, globalConfig, cli, ui]: [\n LoggerMain,\n GraphqlMain,\n ExpressMain,\n Workspace,\n ScopeMain,\n GlobalConfigMain,\n CLIMain,\n UiMain\n ],\n config: CloudWorkspaceConfig,\n [onSuccessLoginSlot]: [OnSuccessLoginSlot]\n ) {\n const logger = loggerMain.createLogger(CloudAspect.id);\n const cloudMain = new CloudMain(config, logger, express, workspace, scope, globalConfig, onSuccessLoginSlot);\n const loginCmd = new LoginCmd(cloudMain, 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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"}
@@ -10,7 +10,8 @@ export declare class LoginCmd implements Command {
10
10
  loader: boolean;
11
11
  remoteOp: boolean;
12
12
  skipWorkspace: boolean;
13
- constructor(cloud: CloudMain);
13
+ private port?;
14
+ constructor(cloud: CloudMain, _port?: number);
14
15
  report([]: Iterable<any>, // eslint-disable-line no-empty-pattern
15
16
  { cloudDomain, port, suppressBrowserLaunch, noBrowser, machineName, }: {
16
17
  cloudDomain?: string;
@@ -31,4 +32,6 @@ export declare class LoginCmd implements Command {
31
32
  token?: string;
32
33
  successfullyUpdatedNpmrc?: boolean;
33
34
  }>;
35
+ handleNpmrcConflicts(conflicts: any): Promise<string>;
36
+ getNpmrcUpdateMessage(error: any): string;
34
37
  }
package/dist/login.cmd.js CHANGED
@@ -11,12 +11,19 @@ function _chalk() {
11
11
  };
12
12
  return data;
13
13
  }
14
+ function _yesno() {
15
+ const data = _interopRequireDefault(require("yesno"));
16
+ _yesno = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
14
21
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
22
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
16
23
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
17
24
  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); }
18
25
  class LoginCmd {
19
- constructor(cloud) {
26
+ constructor(cloud, _port) {
20
27
  this.cloud = cloud;
21
28
  _defineProperty(this, "name", 'login');
22
29
  _defineProperty(this, "description", 'log in to Bit cloud');
@@ -26,25 +33,31 @@ class LoginCmd {
26
33
  _defineProperty(this, "loader", true);
27
34
  _defineProperty(this, "remoteOp", true);
28
35
  _defineProperty(this, "skipWorkspace", true);
36
+ _defineProperty(this, "port", void 0);
37
+ this.port = _port?.toString();
29
38
  }
30
39
  async report([],
31
40
  // eslint-disable-line no-empty-pattern
32
41
  {
33
42
  cloudDomain,
34
- port = '8889',
43
+ port,
35
44
  suppressBrowserLaunch,
36
45
  noBrowser,
37
46
  machineName
38
47
  }) {
39
- if (suppressBrowserLaunch) {
40
- noBrowser = true;
41
- }
42
- const result = await this.cloud.login(port, noBrowser, machineName, cloudDomain, undefined);
48
+ noBrowser = noBrowser || suppressBrowserLaunch;
49
+ const result = await this.cloud.login(port || this.port, noBrowser, machineName, cloudDomain, undefined);
50
+ let message = _chalk().default.green(`Logged in as ${result?.username}`);
43
51
  if (result?.isAlreadyLoggedIn) {
44
- return _chalk().default.yellow(`already logged in as ${result?.username}`);
52
+ return message;
53
+ }
54
+ const conflicts = result?.npmrcUpdateResult?.conflicts;
55
+ if (conflicts && conflicts.length > 0) {
56
+ message += await this.handleNpmrcConflicts(conflicts);
57
+ } else {
58
+ message += this.getNpmrcUpdateMessage(result?.npmrcUpdateResult?.error);
45
59
  }
46
- const npmrcUpdateResultMsg = result?.npmrcUpdateResult?.success ? ' and .npmrc updated' : _chalk().default.red(` but failed to update .npmrc. Visit https://bit.dev/reference/packages/npmrc for instructions on how to update it manually`);
47
- return _chalk().default.green(`success! logged in as ${result?.username}${npmrcUpdateResultMsg}`);
60
+ return message;
48
61
  }
49
62
  async json([],
50
63
  // eslint-disable-line no-empty-pattern,
@@ -62,9 +75,36 @@ class LoginCmd {
62
75
  return {
63
76
  username: result?.username,
64
77
  token: result?.token,
65
- successfullyUpdatedNpmrc: result?.npmrcUpdateResult?.success
78
+ successfullyUpdatedNpmrc: !!result?.npmrcUpdateResult?.configUpdates
66
79
  };
67
80
  }
81
+ async handleNpmrcConflicts(conflicts) {
82
+ this.cloud.logger.clearStatusLine();
83
+ const conflictDetails = conflicts.map((conflict, index) => `${_chalk().default.yellow(`Conflict #${index + 1}:`)}
84
+ Original: ${_chalk().default.red(conflict.original)}
85
+ Modification: ${_chalk().default.green(conflict.modifications)}`).join('\n\n');
86
+ const question = `\n${_chalk().default.yellow('Conflict detected in .npmrc file with the following configurations:')}\n${conflictDetails}\n${_chalk().default.yellow('Do you want to override these configurations and continue? [yes(y)/no(n)]')}`;
87
+ const ok = await (0, _yesno().default)({
88
+ question
89
+ });
90
+ if (!ok) {
91
+ return _chalk().default.red(' but updating .npmrc was aborted due to conflicts.');
92
+ }
93
+ try {
94
+ await this.cloud.generateNpmrc({
95
+ force: true
96
+ });
97
+ return _chalk().default.green(' and .npmrc updated successfully after resolving conflicts.');
98
+ } catch (e) {
99
+ return `${_chalk().default.red(' but failed to update .npmrc after resolving conflicts.')} Visit ${_chalk().default.bold('https://bit.dev/reference/packages/npmrc')} for instructions on how to update it manually.`;
100
+ }
101
+ }
102
+ getNpmrcUpdateMessage(error) {
103
+ if (!error) {
104
+ return _chalk().default.green(' and .npmrc updated.');
105
+ }
106
+ return _chalk().default.red(` but failed to update .npmrc. Visit ${_chalk().default.bold('https://bit.dev/reference/packages/npmrc')} for instructions on how to update it manually.`);
107
+ }
68
108
  }
69
109
  exports.LoginCmd = LoginCmd;
70
110
 
@@ -1 +1 @@
1
- {"version":3,"names":["_chalk","data","_interopRequireDefault","require","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","LoginCmd","constructor","cloud","report","cloudDomain","port","suppressBrowserLaunch","noBrowser","machineName","result","login","undefined","isAlreadyLoggedIn","chalk","yellow","username","npmrcUpdateResultMsg","npmrcUpdateResult","success","red","green","json","token","successfullyUpdatedNpmrc","exports"],"sources":["login.cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { Command, CommandOptions } from '@teambit/cli';\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 ['d', 'cloud-domain <domain>', 'login cloud domain (default 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\n constructor(private cloud: CloudMain) {}\n\n async report(\n [], // eslint-disable-line no-empty-pattern\n {\n cloudDomain,\n port = '8889',\n suppressBrowserLaunch,\n noBrowser,\n machineName,\n }: {\n cloudDomain?: string;\n port: string;\n suppressBrowserLaunch?: boolean;\n noBrowser?: boolean;\n machineName?: string;\n }\n ): Promise<string> {\n if (suppressBrowserLaunch) {\n noBrowser = true;\n }\n const result = await this.cloud.login(port, noBrowser, machineName, cloudDomain, undefined);\n if (result?.isAlreadyLoggedIn) {\n return chalk.yellow(`already logged in as ${result?.username}`);\n }\n const npmrcUpdateResultMsg = result?.npmrcUpdateResult?.success\n ? ' and .npmrc updated'\n : chalk.red(\n ` but failed to update .npmrc. Visit https://bit.dev/reference/packages/npmrc for instructions on how to update it manually`\n );\n return chalk.green(`success! logged in as ${result?.username}${npmrcUpdateResultMsg}`);\n }\n\n async json(\n [], // eslint-disable-line no-empty-pattern,\n {\n cloudDomain,\n port,\n suppressBrowserLaunch,\n noBrowser,\n machineName,\n }: {\n cloudDomain?: string;\n port: string;\n suppressBrowserLaunch?: boolean;\n noBrowser?: boolean;\n machineName?: string;\n }\n ): Promise<{ username?: string; token?: string; successfullyUpdatedNpmrc?: boolean }> {\n if (suppressBrowserLaunch) {\n noBrowser = true;\n }\n const result = await this.cloud.login(port, noBrowser, machineName, cloudDomain);\n return {\n username: result?.username,\n token: result?.token,\n successfullyUpdatedNpmrc: result?.npmrcUpdateResult?.success,\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_chalk","data","_interopRequireDefault","require","_yesno","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","LoginCmd","constructor","cloud","_port","port","toString","report","cloudDomain","suppressBrowserLaunch","noBrowser","machineName","result","login","undefined","message","chalk","green","username","isAlreadyLoggedIn","conflicts","npmrcUpdateResult","length","handleNpmrcConflicts","getNpmrcUpdateMessage","error","json","token","successfullyUpdatedNpmrc","configUpdates","logger","clearStatusLine","conflictDetails","map","conflict","index","yellow","red","original","modifications","join","question","ok","yesno","generateNpmrc","force","bold","exports"],"sources":["login.cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport yesno from 'yesno';\nimport { Command, CommandOptions } from '@teambit/cli';\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 ['d', 'cloud-domain <domain>', 'login cloud domain (default 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\n private port?: string;\n\n constructor(private cloud: CloudMain, _port?: number) {\n this.port = _port?.toString();\n }\n\n async report(\n [], // eslint-disable-line no-empty-pattern\n {\n cloudDomain,\n port,\n suppressBrowserLaunch,\n noBrowser,\n machineName,\n }: {\n cloudDomain?: string;\n port: string;\n suppressBrowserLaunch?: boolean;\n noBrowser?: boolean;\n machineName?: string;\n }\n ): Promise<string> {\n noBrowser = noBrowser || suppressBrowserLaunch;\n\n const result = await this.cloud.login(port || this.port, noBrowser, machineName, cloudDomain, undefined);\n let message = chalk.green(`Logged in as ${result?.username}`);\n\n if (result?.isAlreadyLoggedIn) {\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 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 }: {\n cloudDomain?: string;\n port: string;\n suppressBrowserLaunch?: boolean;\n noBrowser?: boolean;\n machineName?: string;\n }\n ): Promise<{ username?: string; token?: string; successfullyUpdatedNpmrc?: boolean }> {\n if (suppressBrowserLaunch) {\n noBrowser = true;\n }\n const result = await this.cloud.login(port, noBrowser, machineName, cloudDomain);\n return {\n username: result?.username,\n token: result?.token,\n successfullyUpdatedNpmrc: !!result?.npmrcUpdateResult?.configUpdates,\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 (e) {\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"],"mappings":"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"}