@teambit/cloud 0.0.440 → 0.0.441
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/__bit_junit.xml +1 -1
- package/artifacts/schema.json +804 -526
- package/dist/cloud.main.runtime.d.ts +5 -1
- package/dist/cloud.main.runtime.js +33 -7
- package/dist/cloud.main.runtime.js.map +1 -1
- package/dist/login.cmd.d.ts +2 -1
- package/dist/login.cmd.js +5 -3
- package/dist/login.cmd.js.map +1 -1
- package/dist/npmrc.cmd.d.ts +28 -0
- package/dist/npmrc.cmd.js +82 -0
- package/dist/npmrc.cmd.js.map +1 -0
- package/package.json +9 -8
- /package/dist/{preview-1707707812660.js → preview-1707794292057.js} +0 -0
|
@@ -60,9 +60,13 @@ export declare class CloudMain {
|
|
|
60
60
|
private authListenerByPort;
|
|
61
61
|
private REDIRECT_URL?;
|
|
62
62
|
constructor(config: CloudWorkspaceConfig, logger: Logger, express: ExpressMain, workspace: Workspace, scope: ScopeMain, globalConfig: GlobalConfigMain, onSuccessLoginSlot: OnSuccessLoginSlot);
|
|
63
|
-
|
|
63
|
+
generateNpmrc({ dryRun }?: {
|
|
64
|
+
dryRun?: boolean;
|
|
65
|
+
}): Promise<string>;
|
|
66
|
+
updateNpmConfig({ authToken, username, dryRun, }: {
|
|
64
67
|
authToken: string;
|
|
65
68
|
username: string;
|
|
69
|
+
dryRun?: boolean;
|
|
66
70
|
}): Promise<string>;
|
|
67
71
|
setupAuthListener({ port: portFromParams, clientId, }?: {
|
|
68
72
|
port?: number;
|
|
@@ -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,20 +193,36 @@ class CloudMain {
|
|
|
186
193
|
_defineProperty(this, "authListenerByPort", new Map());
|
|
187
194
|
_defineProperty(this, "REDIRECT_URL", void 0);
|
|
188
195
|
}
|
|
189
|
-
async
|
|
196
|
+
async generateNpmrc({
|
|
197
|
+
dryRun
|
|
198
|
+
} = {}) {
|
|
199
|
+
const authToken = this.getAuthToken();
|
|
200
|
+
const username = this.getUsername();
|
|
201
|
+
if (!authToken || !username) {
|
|
202
|
+
throw new Error('user is not logged in');
|
|
203
|
+
}
|
|
204
|
+
return this.updateNpmConfig({
|
|
205
|
+
authToken,
|
|
206
|
+
username,
|
|
207
|
+
dryRun
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
async updateNpmConfig({
|
|
190
211
|
authToken,
|
|
191
|
-
username
|
|
212
|
+
username,
|
|
213
|
+
dryRun
|
|
192
214
|
}) {
|
|
193
215
|
const orgs = (await this.getUserOrganizations()) ?? [];
|
|
194
216
|
const orgNames = orgs.map(org => org.name);
|
|
195
|
-
const allOrgs = [...CloudMain.PRESET_ORGS, ...orgNames, username];
|
|
217
|
+
const allOrgs = [...CloudMain.PRESET_ORGS, ...orgNames, username].sort();
|
|
196
218
|
const registryUrl = this.getRegistryUrl();
|
|
197
219
|
const scopeConfig = allOrgs.map(org => `@${org}:registry="${registryUrl}"`).join(' ');
|
|
198
220
|
const authConfig = `//${new URL(registryUrl).host}/:_authToken="${authToken}"`;
|
|
199
221
|
const configUpdates = `${scopeConfig} ${authConfig}`;
|
|
200
|
-
(0, _child_process().execSync)(`npm config set ${configUpdates}`, {
|
|
222
|
+
if (!dryRun) (0, _child_process().execSync)(`npm config set ${configUpdates}`, {
|
|
201
223
|
stdio: 'ignore'
|
|
202
224
|
});
|
|
225
|
+
if (dryRun) return configUpdates.replace(/ /g, '\n');
|
|
203
226
|
return configUpdates;
|
|
204
227
|
}
|
|
205
228
|
setupAuthListener({
|
|
@@ -280,7 +303,7 @@ class CloudMain {
|
|
|
280
303
|
username
|
|
281
304
|
}));
|
|
282
305
|
const onLoggedInFns = this.onSuccessLoginSlot.values();
|
|
283
|
-
this.
|
|
306
|
+
this.updateNpmConfig({
|
|
284
307
|
authToken: token,
|
|
285
308
|
username: username
|
|
286
309
|
}).then(configUpdates => {
|
|
@@ -507,10 +530,13 @@ class CloudMain {
|
|
|
507
530
|
static async provider([loggerMain, graphql, express, workspace, scope, globalConfig, cli, ui], config, [onSuccessLoginSlot]) {
|
|
508
531
|
const logger = loggerMain.createLogger(_cloud2().CloudAspect.id);
|
|
509
532
|
const cloudMain = new CloudMain(config, logger, express, workspace, scope, globalConfig, onSuccessLoginSlot);
|
|
510
|
-
const loginCmd = new (_login().LoginCmd)(cloudMain);
|
|
533
|
+
const loginCmd = new (_login().LoginCmd)(cloudMain, 8889);
|
|
511
534
|
const logoutCmd = new (_logout().LogoutCmd)(cloudMain);
|
|
512
535
|
const whoamiCmd = new (_whoami().WhoamiCmd)(cloudMain);
|
|
513
|
-
|
|
536
|
+
const npmrcGenerateCmd = new (_npmrc().NpmrcGenerateCmd)(cloudMain, 8889);
|
|
537
|
+
const npmrc = new (_npmrc().NpmrcCmd)();
|
|
538
|
+
npmrc.commands = [npmrcGenerateCmd];
|
|
539
|
+
cli.register(loginCmd, logoutCmd, whoamiCmd, npmrc);
|
|
514
540
|
graphql.register((0, _cloud().cloudSchema)(cloudMain));
|
|
515
541
|
if (workspace) {
|
|
516
542
|
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","generateNpmrc","dryRun","authToken","getAuthToken","username","getUsername","Error","updateNpmConfig","orgs","getUserOrganizations","orgNames","map","org","name","allOrgs","PRESET_ORGS","sort","registryUrl","getRegistryUrl","scopeConfig","join","authConfig","URL","host","configUpdates","execSync","stdio","replace","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","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","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","JSON","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?: {\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 generateNpmrc({ dryRun }: { dryRun?: boolean } = {}): Promise<string> {\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 });\n }\n\n async updateNpmConfig({\n authToken,\n username,\n dryRun,\n }: {\n authToken: string;\n username: string;\n dryRun?: boolean;\n }): Promise<string> {\n const orgs = (await this.getUserOrganizations()) ?? [];\n const orgNames = orgs.map((org) => org.name);\n const allOrgs = [...CloudMain.PRESET_ORGS, ...orgNames, username].sort();\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 if (!dryRun) execSync(`npm config set ${configUpdates}`, { stdio: 'ignore' });\n if (dryRun) return configUpdates.replace(/ /g, '\\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) =>\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, 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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"}
|
package/dist/login.cmd.d.ts
CHANGED
|
@@ -10,7 +10,8 @@ export declare class LoginCmd implements Command {
|
|
|
10
10
|
loader: boolean;
|
|
11
11
|
remoteOp: boolean;
|
|
12
12
|
skipWorkspace: boolean;
|
|
13
|
-
|
|
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;
|
package/dist/login.cmd.js
CHANGED
|
@@ -16,7 +16,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
16
16
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
|
17
17
|
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
18
|
class LoginCmd {
|
|
19
|
-
constructor(cloud) {
|
|
19
|
+
constructor(cloud, _port) {
|
|
20
20
|
this.cloud = cloud;
|
|
21
21
|
_defineProperty(this, "name", 'login');
|
|
22
22
|
_defineProperty(this, "description", 'log in to Bit cloud');
|
|
@@ -26,12 +26,14 @@ class LoginCmd {
|
|
|
26
26
|
_defineProperty(this, "loader", true);
|
|
27
27
|
_defineProperty(this, "remoteOp", true);
|
|
28
28
|
_defineProperty(this, "skipWorkspace", true);
|
|
29
|
+
_defineProperty(this, "port", void 0);
|
|
30
|
+
this.port = _port?.toString();
|
|
29
31
|
}
|
|
30
32
|
async report([],
|
|
31
33
|
// eslint-disable-line no-empty-pattern
|
|
32
34
|
{
|
|
33
35
|
cloudDomain,
|
|
34
|
-
port
|
|
36
|
+
port,
|
|
35
37
|
suppressBrowserLaunch,
|
|
36
38
|
noBrowser,
|
|
37
39
|
machineName
|
|
@@ -39,7 +41,7 @@ class LoginCmd {
|
|
|
39
41
|
if (suppressBrowserLaunch) {
|
|
40
42
|
noBrowser = true;
|
|
41
43
|
}
|
|
42
|
-
const result = await this.cloud.login(port, noBrowser, machineName, cloudDomain, undefined);
|
|
44
|
+
const result = await this.cloud.login(port || this.port, noBrowser, machineName, cloudDomain, undefined);
|
|
43
45
|
if (result?.isAlreadyLoggedIn) {
|
|
44
46
|
return _chalk().default.yellow(`already logged in as ${result?.username}`);
|
|
45
47
|
}
|
package/dist/login.cmd.js.map
CHANGED
|
@@ -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","
|
|
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","_port","port","toString","report","cloudDomain","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 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 if (suppressBrowserLaunch) {\n noBrowser = true;\n }\n const result = await this.cloud.login(port || this.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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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Command, CommandOptions, Flags } from '@teambit/cli';
|
|
2
|
+
import { CloudMain } from './cloud.main.runtime';
|
|
3
|
+
export declare class NpmrcGenerateCmd implements Command {
|
|
4
|
+
private cloud;
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
group: string;
|
|
8
|
+
alias: string;
|
|
9
|
+
options: CommandOptions;
|
|
10
|
+
skipWorkspace: boolean;
|
|
11
|
+
private port?;
|
|
12
|
+
constructor(cloud: CloudMain, _port?: number);
|
|
13
|
+
report(_: any, flags: Flags): Promise<string>;
|
|
14
|
+
json(): Promise<{
|
|
15
|
+
config: string;
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
18
|
+
export declare class NpmrcCmd implements Command {
|
|
19
|
+
name: string;
|
|
20
|
+
description: string;
|
|
21
|
+
group: string;
|
|
22
|
+
alias: string;
|
|
23
|
+
options: never[];
|
|
24
|
+
loader: boolean;
|
|
25
|
+
skipWorkspace: boolean;
|
|
26
|
+
commands: Command[];
|
|
27
|
+
report([unrecognizedSubcommand]: [string]): Promise<string>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.NpmrcGenerateCmd = exports.NpmrcCmd = void 0;
|
|
7
|
+
function _chalk() {
|
|
8
|
+
const data = _interopRequireDefault(require("chalk"));
|
|
9
|
+
_chalk = function () {
|
|
10
|
+
return data;
|
|
11
|
+
};
|
|
12
|
+
return data;
|
|
13
|
+
}
|
|
14
|
+
function _yesno() {
|
|
15
|
+
const data = _interopRequireDefault(require("yesno"));
|
|
16
|
+
_yesno = function () {
|
|
17
|
+
return data;
|
|
18
|
+
};
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
21
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
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; }
|
|
23
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
|
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); } /* eslint-disable max-classes-per-file */
|
|
25
|
+
class NpmrcGenerateCmd {
|
|
26
|
+
constructor(cloud, _port) {
|
|
27
|
+
this.cloud = cloud;
|
|
28
|
+
_defineProperty(this, "name", 'generate');
|
|
29
|
+
_defineProperty(this, "description", 'update npmrc file with scope, registry, and token information from bit.cloud');
|
|
30
|
+
_defineProperty(this, "group", 'cloud');
|
|
31
|
+
_defineProperty(this, "alias", '');
|
|
32
|
+
_defineProperty(this, "options", [['', 'dry-run', 'show the .npmrc file content that will be written']]);
|
|
33
|
+
_defineProperty(this, "skipWorkspace", false);
|
|
34
|
+
_defineProperty(this, "port", void 0);
|
|
35
|
+
this.port = _port?.toString();
|
|
36
|
+
}
|
|
37
|
+
async report(_, flags) {
|
|
38
|
+
this.cloud.logger.clearStatusLine();
|
|
39
|
+
const isLoggedIn = await this.cloud.isLoggedIn();
|
|
40
|
+
if (!isLoggedIn) {
|
|
41
|
+
const loginOk = await (0, _yesno().default)({
|
|
42
|
+
question: `You are not logged in.\n\n${_chalk().default.bold('Would you like to login? [yes(y)/no(n)]')}`
|
|
43
|
+
});
|
|
44
|
+
if (!loginOk) {
|
|
45
|
+
throw new Error('the operation has been canceled');
|
|
46
|
+
}
|
|
47
|
+
await this.cloud.login(this.port);
|
|
48
|
+
}
|
|
49
|
+
const config = await this.cloud.generateNpmrc({
|
|
50
|
+
dryRun: flags.dryRun
|
|
51
|
+
});
|
|
52
|
+
if (flags.dryRun) {
|
|
53
|
+
return _chalk().default.green(`.npmrc file content that will be written:\n${config}`);
|
|
54
|
+
}
|
|
55
|
+
return _chalk().default.green(`.npmrc file has been updated successfully`);
|
|
56
|
+
}
|
|
57
|
+
async json() {
|
|
58
|
+
const config = await this.cloud.generateNpmrc();
|
|
59
|
+
return {
|
|
60
|
+
config
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.NpmrcGenerateCmd = NpmrcGenerateCmd;
|
|
65
|
+
class NpmrcCmd {
|
|
66
|
+
constructor() {
|
|
67
|
+
_defineProperty(this, "name", 'npmrc [sub-command]');
|
|
68
|
+
_defineProperty(this, "description", 'manage npmrc file with scope, registry, and token information from bit.cloud');
|
|
69
|
+
_defineProperty(this, "group", 'cloud');
|
|
70
|
+
_defineProperty(this, "alias", '');
|
|
71
|
+
_defineProperty(this, "options", []);
|
|
72
|
+
_defineProperty(this, "loader", true);
|
|
73
|
+
_defineProperty(this, "skipWorkspace", true);
|
|
74
|
+
_defineProperty(this, "commands", []);
|
|
75
|
+
}
|
|
76
|
+
async report([unrecognizedSubcommand]) {
|
|
77
|
+
return _chalk().default.red(`"${unrecognizedSubcommand}" is not a subcommand of "npmrc", please run "bit npmrc --help" to list the subcommands`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.NpmrcCmd = NpmrcCmd;
|
|
81
|
+
|
|
82
|
+
//# sourceMappingURL=npmrc.cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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","NpmrcGenerateCmd","constructor","cloud","_port","port","toString","report","_","flags","logger","clearStatusLine","isLoggedIn","loginOk","yesno","question","chalk","bold","Error","login","config","generateNpmrc","dryRun","green","json","exports","NpmrcCmd","unrecognizedSubcommand","red"],"sources":["npmrc.cmd.ts"],"sourcesContent":["/* eslint-disable max-classes-per-file */\nimport chalk from 'chalk';\nimport yesno from 'yesno';\nimport { Command, CommandOptions, Flags } from '@teambit/cli';\nimport { CloudMain } from './cloud.main.runtime';\n\nexport class NpmrcGenerateCmd implements Command {\n name = 'generate';\n description = 'update npmrc file with scope, registry, and token information from bit.cloud';\n group = 'cloud';\n alias = '';\n options = [['', 'dry-run', 'show the .npmrc file content that will be written']] as CommandOptions;\n skipWorkspace = false;\n\n private port?: string;\n\n constructor(private cloud: CloudMain, _port?: number) {\n this.port = _port?.toString();\n }\n\n async report(_, flags: Flags): Promise<string> {\n this.cloud.logger.clearStatusLine();\n const isLoggedIn = await this.cloud.isLoggedIn();\n if (!isLoggedIn) {\n const loginOk = await yesno({\n question: `You are not logged in.\\n\\n${chalk.bold('Would you like to login? [yes(y)/no(n)]')}`,\n });\n if (!loginOk) {\n throw new Error('the operation has been canceled');\n }\n await this.cloud.login(this.port);\n }\n const config = await this.cloud.generateNpmrc({ dryRun: flags.dryRun });\n if (flags.dryRun) {\n return chalk.green(`.npmrc file content that will be written:\\n${config}`);\n }\n return chalk.green(`.npmrc file has been updated successfully`);\n }\n\n async json() {\n const config = await this.cloud.generateNpmrc();\n return { config };\n }\n}\n\nexport class NpmrcCmd implements Command {\n name = 'npmrc [sub-command]';\n description = 'manage npmrc file with scope, registry, and token information from bit.cloud';\n group = 'cloud';\n alias = '';\n options = [];\n loader = true;\n skipWorkspace = true;\n commands: Command[] = [];\n\n async report([unrecognizedSubcommand]: [string]) {\n return chalk.red(\n `\"${unrecognizedSubcommand}\" is not a subcommand of \"npmrc\", please run \"bit npmrc --help\" to list the subcommands`\n );\n }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/cloud",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.441",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/cloud/cloud",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.cloud",
|
|
8
8
|
"name": "cloud",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.441"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"graphql-tag": "2.12.1",
|
|
@@ -15,23 +15,24 @@
|
|
|
15
15
|
"open": "7.4.2",
|
|
16
16
|
"uuid": "8.3.2",
|
|
17
17
|
"lodash": "4.17.21",
|
|
18
|
+
"yesno": "0.4.0",
|
|
18
19
|
"@teambit/harmony": "0.4.6",
|
|
19
20
|
"@teambit/scopes.scope-descriptor": "0.0.24",
|
|
20
21
|
"@teambit/scopes.scope-id": "0.0.7",
|
|
21
22
|
"@teambit/design.controls.menu": "0.0.1",
|
|
22
|
-
"@teambit/graphql": "1.0.
|
|
23
|
+
"@teambit/graphql": "1.0.165",
|
|
23
24
|
"@teambit/cli": "0.0.851",
|
|
24
25
|
"@teambit/cloud.models.cloud-scope": "0.0.3",
|
|
25
26
|
"@teambit/cloud.models.cloud-user": "0.0.5",
|
|
26
27
|
"@teambit/express": "0.0.950",
|
|
27
28
|
"@teambit/global-config": "0.0.854",
|
|
28
29
|
"@teambit/logger": "0.0.944",
|
|
29
|
-
"@teambit/scope": "1.0.
|
|
30
|
-
"@teambit/ui": "1.0.
|
|
31
|
-
"@teambit/workspace": "1.0.
|
|
30
|
+
"@teambit/scope": "1.0.165",
|
|
31
|
+
"@teambit/ui": "1.0.165",
|
|
32
|
+
"@teambit/workspace": "1.0.165",
|
|
32
33
|
"@teambit/cloud.ui.user-bar": "0.0.6",
|
|
33
|
-
"@teambit/component": "1.0.
|
|
34
|
-
"@teambit/lanes": "1.0.
|
|
34
|
+
"@teambit/component": "1.0.165",
|
|
35
|
+
"@teambit/lanes": "1.0.165"
|
|
35
36
|
},
|
|
36
37
|
"devDependencies": {
|
|
37
38
|
"@types/express": "4.17.13",
|
|
File without changes
|