@teambit/api-server 1.0.865 → 1.0.867

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.
@@ -128,8 +128,8 @@ export declare class APIForIDE {
128
128
  [relativePath: string]: string;
129
129
  }>;
130
130
  catObject(hash: string): Promise<string>;
131
- logFile(filePath: string): Promise<import("@teambit/component-log/component-log.main.runtime").FileLog[]>;
132
- blame(filePath: string): Promise<import("@teambit/component-log/component-log.main.runtime").BlameLineInfo[]>;
131
+ logFile(filePath: string): Promise<import("@teambit/component-log/dist/component-log.main.runtime").FileLog[]>;
132
+ blame(filePath: string): Promise<import("@teambit/component-log/dist/component-log.main.runtime").BlameLineInfo[]>;
133
133
  changedFilesFromParent(id: string): Promise<FileHashDiffFromParent[]>;
134
134
  getConfigForDiff(id: string): Promise<{
135
135
  version?: string;
@@ -34,6 +34,22 @@ export declare class ApiServerMain {
34
34
  compile: boolean;
35
35
  }): Promise<unknown>;
36
36
  writeUsedPort(port: number): void;
37
+ /**
38
+ * Monitor the parent process (typically VSCode) and shut down if it dies.
39
+ *
40
+ * On Unix-like systems (macOS, Linux), when a parent process dies, orphaned children are
41
+ * re-parented to PID 1 (init/launchd). By watching for `process.ppid` changing from
42
+ * the original value to 1, we can detect that the parent exited and proactively
43
+ * shut down the bit server to avoid leaving stale background processes running.
44
+ *
45
+ * Note: This orphan detection does not work on Windows, as Windows does not re-parent
46
+ * processes to PID 1. On Windows, this method only logs the parent process info at startup.
47
+ */
48
+ private startParentProcessMonitor;
49
+ /**
50
+ * Get the command/path of a process by its PID.
51
+ */
52
+ private getProcessInfo;
37
53
  getRandomPort(): Promise<number>;
38
54
  getExistingUsedPort(): Promise<number | undefined>;
39
55
  private getServerPortFilePath;
@@ -4,13 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = exports.ApiServerMain = void 0;
7
- function _httpProxy() {
8
- const data = require("http-proxy");
9
- _httpProxy = function () {
10
- return data;
11
- };
12
- return data;
13
- }
14
7
  function _cli() {
15
8
  const data = require("@teambit/cli");
16
9
  _cli = function () {
@@ -214,6 +207,13 @@ function _path() {
214
207
  };
215
208
  return data;
216
209
  }
210
+ function _child_process() {
211
+ const data = require("child_process");
212
+ _child_process = function () {
213
+ return data;
214
+ };
215
+ return data;
216
+ }
217
217
  function _cliRaw() {
218
218
  const data = require("./cli-raw.route");
219
219
  _cliRaw = function () {
@@ -378,6 +378,16 @@ class ApiServerMain {
378
378
  }
379
379
  }));
380
380
  app.use('/websocket-server/subscriptions', (0, _httpProxyMiddleware().createProxyMiddleware)({
381
+ on: {
382
+ proxyReqWs: proxyReq => {
383
+ Object.entries(proxyHeaders).forEach(([key, value]) => {
384
+ proxyReq.setHeader(key, value);
385
+ });
386
+ },
387
+ error: err => {
388
+ this.logger.error('websocket cloud proxy error', err);
389
+ }
390
+ },
381
391
  pathFilter: '/',
382
392
  target: symphonyUrl,
383
393
  ws: true,
@@ -386,22 +396,6 @@ class ApiServerMain {
386
396
  changeOrigin: true
387
397
  }));
388
398
  const server = await app.listen(port);
389
- const proxServer = (0, _httpProxy().createProxyServer)();
390
- server.on('upgrade', (req, socket, head) => {
391
- req.url = req.url.replace(/^.+?[/]/, '/');
392
- try {
393
- proxServer.ws(req, socket, head, {
394
- target: `${symphonyUrl}/websocket-server`,
395
- secure: false,
396
- // Disable SSL verification for proxy to remote server
397
- changeOrigin: true
398
- }, error => {
399
- this.logger.error(`failed to proxy ws: ${error.message}`, error);
400
- });
401
- } catch (error) {
402
- this.logger.error(`failed to proxy ws: ${error.message}`, error);
403
- }
404
- });
405
399
  return new Promise((resolve, reject) => {
406
400
  server.on('error', err => {
407
401
  reject(err);
@@ -410,6 +404,7 @@ class ApiServerMain {
410
404
  // important! if you change the message here, change it also in server-forever.ts and also in the vscode extension.
411
405
  this.logger.consoleSuccess(`Bit Server is listening on port ${port}`);
412
406
  this.writeUsedPort(port);
407
+ this.startParentProcessMonitor();
413
408
  resolve(port);
414
409
  });
415
410
  });
@@ -418,6 +413,69 @@ class ApiServerMain {
418
413
  const filePath = this.getServerPortFilePath();
419
414
  _fsExtra().default.writeFileSync(filePath, port.toString());
420
415
  }
416
+
417
+ /**
418
+ * Monitor the parent process (typically VSCode) and shut down if it dies.
419
+ *
420
+ * On Unix-like systems (macOS, Linux), when a parent process dies, orphaned children are
421
+ * re-parented to PID 1 (init/launchd). By watching for `process.ppid` changing from
422
+ * the original value to 1, we can detect that the parent exited and proactively
423
+ * shut down the bit server to avoid leaving stale background processes running.
424
+ *
425
+ * Note: This orphan detection does not work on Windows, as Windows does not re-parent
426
+ * processes to PID 1. On Windows, this method only logs the parent process info at startup.
427
+ */
428
+ startParentProcessMonitor() {
429
+ const originalPpid = process.ppid;
430
+
431
+ // Log parent process info at startup
432
+ const parentInfo = this.getProcessInfo(originalPpid);
433
+ this.logger.debug(`bit server started. PID: ${process.pid}, Parent PID: ${originalPpid}, Parent command: ${parentInfo}`);
434
+
435
+ // Skip orphan detection on Windows - PPID doesn't change to 1 when parent dies
436
+ if (process.platform === 'win32') {
437
+ return;
438
+ }
439
+ const checkInterval = 5000; // Check every 5 seconds
440
+ const intervalId = setInterval(() => {
441
+ const currentPpid = process.ppid;
442
+ // If PPID changed to 1, our parent (e.g., VSCode) died and we were re-parented to init
443
+ if (currentPpid === 1 && originalPpid !== 1) {
444
+ this.logger.debug(`Parent process died (was PID ${originalPpid}: ${parentInfo}). Current PPID is now 1 (init/launchd). Shutting down bit server.`);
445
+ clearInterval(intervalId);
446
+ process.exit(0);
447
+ }
448
+ }, checkInterval);
449
+
450
+ // Don't let this interval keep the process alive if everything else is done
451
+ intervalId.unref();
452
+ }
453
+
454
+ /**
455
+ * Get the command/path of a process by its PID.
456
+ */
457
+ getProcessInfo(pid) {
458
+ try {
459
+ if (process.platform === 'win32') {
460
+ // Windows: use PowerShell Get-CimInstance (WMIC is deprecated/removed on modern Windows)
461
+ const psCommand = `Get-CimInstance Win32_Process -Filter 'ProcessId = ${pid}' | Select-Object -ExpandProperty CommandLine`;
462
+ const output = (0, _child_process().execSync)(`powershell.exe -NoProfile -Command "${psCommand}"`, {
463
+ encoding: 'utf8',
464
+ timeout: 2000
465
+ });
466
+ return output.trim() || 'unknown';
467
+ } else {
468
+ // macOS/Linux: use ps
469
+ const output = (0, _child_process().execSync)(`ps -o command= -p ${pid}`, {
470
+ encoding: 'utf8',
471
+ timeout: 2000
472
+ });
473
+ return output.trim() || 'unknown';
474
+ }
475
+ } catch {
476
+ return 'unknown (process may have exited)';
477
+ }
478
+ }
421
479
  async getRandomPort() {
422
480
  const startingPort = 4000; // we prefer to have the ports between 4000 and 4999.
423
481
  // get random number in the range of [startingPort, 4999].
@@ -1 +1 @@
1
- {"version":3,"names":["_httpProxy","data","require","_cli","_toolboxNetwork","_fsExtra","_interopRequireDefault","_express","_logger","_lanes","_remove","_snapping","_generator","_componentCompare","_componentLog","_watcher","_config","_export","_checkout","_install","_importer","_component","_workspace","_harmonyModules","_cors","_httpProxyMiddleware","_apiServer","_cli2","_server","_ide","_apiForIde","_sseEvents","_path","_cliRaw","_application","_deprecation","_envs","_scope","_legacy","_graph","_scope2","_schema","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ApiServerMain","constructor","workspace","logger","express","watcher","installer","importer","runApiServer","options","Error","process","cwd","registerOnComponentChange","component","files","removedFiles","sendEventsToClients","id","toStringWithoutVersion","registerOnBitmapChange","lastModifiedTimestamp","bitMap","getLastModifiedBitmapThroughBit","secondsPassedSinceLastModified","Date","now","debug","importCurrentObjects","registerOnWorkspaceConfigChange","scope","registerOnPostExport","registerPostInstall","watch","preCompile","compile","port","getRandomPort","app","createApp","use","cors","origin","callback","credentials","proxyHeaders","Authorization","DEFAULT_AUTH_TYPE","Http","getToken","symphonyUrl","getSymphonyUrl","createProxyMiddleware","target","changeOrigin","headers","on","error","err","req","res","writeHead","end","proxyReq","fixRequestBody","proxyRes","pathFilter","ws","secure","server","listen","proxServer","createProxyServer","socket","head","url","replace","message","Promise","resolve","reject","consoleSuccess","writeUsedPort","filePath","getServerPortFilePath","fs","writeFileSync","toString","startingPort","randomNumber","Math","floor","random","Port","getPort","getExistingUsedPort","fileContent","readFile","parseInt","code","undefined","join","path","provider","cli","loggerMain","snapping","lanes","exporter","checkout","componentLog","componentCompare","generator","remove","config","application","deprecation","envs","graph","schema","createLogger","ApiServerAspect","apiServer","register","ServerCmd","apiForIDE","APIForIDE","cliRoute","CLIRoute","cliRawRoute","CLIRawRoute","ideRoute","IDERoute","sseEventsRoute","SSEEventsRoute","exports","CLIAspect","WorkspaceAspect","LoggerAspect","ExpressAspect","WatcherAspect","SnappingAspect","LanesAspect","InstallAspect","ExportAspect","CheckoutAspect","ComponentLogAspect","ImporterAspect","ComponentCompareAspect","GeneratorAspect","RemoveAspect","ConfigAspect","ApplicationAspect","DeprecationAspect","EnvsAspect","GraphAspect","ScopeAspect","ComponentAspect","SchemaAspect","MainRuntime","addRuntime","_default"],"sources":["api-server.main.runtime.ts"],"sourcesContent":["import type { CLIMain } from '@teambit/cli';\nimport { createProxyServer } from 'http-proxy';\nimport { CLIAspect, MainRuntime } from '@teambit/cli';\nimport { Port } from '@teambit/toolbox.network.get-port';\nimport fs from 'fs-extra';\nimport type { ExpressMain } from '@teambit/express';\nimport { ExpressAspect } from '@teambit/express';\nimport type { Logger, LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { LanesMain } from '@teambit/lanes';\nimport { LanesAspect } from '@teambit/lanes';\nimport type { RemoveMain } from '@teambit/remove';\nimport { RemoveAspect } from '@teambit/remove';\nimport type { SnappingMain } from '@teambit/snapping';\nimport { SnappingAspect } from '@teambit/snapping';\nimport type { GeneratorMain } from '@teambit/generator';\nimport { GeneratorAspect } from '@teambit/generator';\nimport type { ComponentCompareMain } from '@teambit/component-compare';\nimport { ComponentCompareAspect } from '@teambit/component-compare';\nimport type { ComponentLogMain } from '@teambit/component-log';\nimport { ComponentLogAspect } from '@teambit/component-log';\nimport type { WatcherMain } from '@teambit/watcher';\nimport { WatcherAspect } from '@teambit/watcher';\nimport type { ConfigMain } from '@teambit/config';\nimport { ConfigAspect } from '@teambit/config';\nimport type { ExportMain } from '@teambit/export';\nimport { ExportAspect } from '@teambit/export';\nimport type { CheckoutMain } from '@teambit/checkout';\nimport { CheckoutAspect } from '@teambit/checkout';\nimport type { InstallMain } from '@teambit/install';\nimport { InstallAspect } from '@teambit/install';\nimport type { ImporterMain } from '@teambit/importer';\nimport { ImporterAspect } from '@teambit/importer';\nimport type { Component, ComponentMain } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport { sendEventsToClients } from '@teambit/harmony.modules.send-server-sent-events';\nimport cors from 'cors';\nimport { createProxyMiddleware, fixRequestBody } from 'http-proxy-middleware';\nimport { ApiServerAspect } from './api-server.aspect';\nimport { CLIRoute } from './cli.route';\nimport { ServerCmd } from './server.cmd';\nimport { IDERoute } from './ide.route';\nimport { APIForIDE } from './api-for-ide';\nimport { SSEEventsRoute } from './sse-events.route';\nimport { join } from 'path';\nimport { CLIRawRoute } from './cli-raw.route';\nimport type { ApplicationMain } from '@teambit/application';\nimport { ApplicationAspect } from '@teambit/application';\nimport type { DeprecationMain } from '@teambit/deprecation';\nimport { DeprecationAspect } from '@teambit/deprecation';\nimport type { EnvsMain } from '@teambit/envs';\nimport { EnvsAspect } from '@teambit/envs';\nimport { DEFAULT_AUTH_TYPE, Http } from '@teambit/scope.network';\nimport { getSymphonyUrl } from '@teambit/legacy.constants';\nimport type { GraphMain } from '@teambit/graph';\nimport { GraphAspect } from '@teambit/graph';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ScopeAspect } from '@teambit/scope';\nimport type { SchemaMain } from '@teambit/schema';\nimport { SchemaAspect } from '@teambit/schema';\n\nexport class ApiServerMain {\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private express: ExpressMain,\n private watcher: WatcherMain,\n private installer: InstallMain,\n private importer: ImporterMain\n ) {}\n\n async runApiServer(options: { port: number; compile: boolean }) {\n if (!this.workspace) {\n throw new Error(`unable to run bit-server, the current directory ${process.cwd()} is not a workspace`);\n }\n\n this.workspace.registerOnComponentChange(\n async (\n component: Component,\n files: string[], // os absolute paths\n removedFiles?: string[] // os absolute paths\n ) => {\n sendEventsToClients('onComponentChange', {\n id: component.id.toStringWithoutVersion(),\n files,\n removedFiles,\n });\n }\n );\n\n this.workspace.registerOnBitmapChange(async () => {\n const lastModifiedTimestamp = await this.workspace.bitMap.getLastModifiedBitmapThroughBit();\n const secondsPassedSinceLastModified = lastModifiedTimestamp && (Date.now() - lastModifiedTimestamp) / 1000;\n if (secondsPassedSinceLastModified && secondsPassedSinceLastModified > 1) {\n // changes by bit were done more than a second ago, so probably this .bitmap change was done by \"git pull\"\n this.logger.debug(\n `running import because we assume the .bitmap file has changed due to \"git pull\", last time it was modified by bit was ${secondsPassedSinceLastModified} seconds ago`\n );\n await this.importer.importCurrentObjects();\n }\n sendEventsToClients('onBitmapChange', {});\n });\n\n this.workspace.registerOnWorkspaceConfigChange(async () => {\n sendEventsToClients('onWorkspaceConfigChange', {});\n });\n\n this.workspace.scope.registerOnPostExport(async () => {\n sendEventsToClients('onPostExport', {});\n });\n\n this.installer.registerPostInstall(async () => {\n sendEventsToClients('onPostInstall', {});\n });\n\n await this.watcher.watch({\n preCompile: false,\n compile: options.compile,\n });\n\n const port = options.port || (await this.getRandomPort());\n\n const app = this.express.createApp();\n\n app.use(\n cors({\n origin(origin, callback) {\n callback(null, true);\n },\n credentials: true,\n })\n );\n const proxyHeaders = {\n Authorization: `${DEFAULT_AUTH_TYPE} ${Http.getToken()}`,\n origin: '',\n 'user-agent': 'bit-vscode-proxy',\n };\n const symphonyUrl = getSymphonyUrl();\n app.use(\n '/api/cloud-graphql',\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n createProxyMiddleware({\n target: `${symphonyUrl}/graphql`,\n changeOrigin: true,\n headers: proxyHeaders,\n on: {\n error: (err, req, res) => {\n this.logger.error('graphql cloud proxy error', err);\n // @ts-ignore\n res.writeHead(500, {\n 'Content-Type': 'text/plain',\n });\n res.end('Something went wrong with the proxy server of bit cloud graphql');\n },\n proxyReq: fixRequestBody,\n },\n })\n );\n\n app.use(\n '/api/cloud-rest',\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n createProxyMiddleware({\n target: `${symphonyUrl}`,\n changeOrigin: true,\n headers: proxyHeaders,\n on: {\n proxyRes: (proxyRes) => {\n proxyRes.headers['Access-Control-Allow-Credentials'] = 'true';\n },\n error: (err, req, res) => {\n this.logger.error('rest cloud proxy error', err);\n // @ts-ignore\n res.writeHead(500, {\n 'Content-Type': 'text/plain',\n });\n res.end('Something went wrong with the proxy server of bit cloud rest');\n },\n proxyReq: fixRequestBody,\n },\n })\n );\n\n app.use(\n '/websocket-server/subscriptions',\n createProxyMiddleware({\n pathFilter: '/',\n target: symphonyUrl,\n ws: true,\n secure: false, // Disable SSL verification for proxy to remote server\n changeOrigin: true,\n })\n );\n\n const server = await app.listen(port);\n\n const proxServer = createProxyServer();\n server.on('upgrade', (req, socket, head) => {\n req.url = req.url!.replace(/^.+?[/]/, '/');\n try {\n proxServer.ws(\n req,\n socket,\n head,\n {\n target: `${symphonyUrl}/websocket-server`,\n secure: false, // Disable SSL verification for proxy to remote server\n changeOrigin: true,\n },\n (error) => {\n this.logger.error(`failed to proxy ws: ${error.message}`, error);\n }\n );\n } catch (error: any) {\n this.logger.error(`failed to proxy ws: ${error.message}`, error);\n }\n });\n\n return new Promise((resolve, reject) => {\n server.on('error', (err) => {\n reject(err);\n });\n server.on('listening', () => {\n // important! if you change the message here, change it also in server-forever.ts and also in the vscode extension.\n this.logger.consoleSuccess(`Bit Server is listening on port ${port}`);\n this.writeUsedPort(port);\n resolve(port);\n });\n });\n }\n\n writeUsedPort(port: number) {\n const filePath = this.getServerPortFilePath();\n fs.writeFileSync(filePath, port.toString());\n }\n\n async getRandomPort() {\n const startingPort = 4000; // we prefer to have the ports between 4000 and 4999.\n // get random number in the range of [startingPort, 4999].\n const randomNumber = Math.floor(Math.random() * (4999 - startingPort + 1) + startingPort);\n const port = await Port.getPort(randomNumber, 65500);\n return port;\n }\n\n async getExistingUsedPort(): Promise<number | undefined> {\n const filePath = this.getServerPortFilePath();\n try {\n const fileContent = await fs.readFile(filePath, 'utf8');\n return parseInt(fileContent, 10);\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n return undefined;\n }\n throw err;\n }\n }\n\n private getServerPortFilePath() {\n return join(this.workspace.scope.path, 'server-port.txt');\n }\n\n static dependencies = [\n CLIAspect,\n WorkspaceAspect,\n LoggerAspect,\n ExpressAspect,\n WatcherAspect,\n SnappingAspect,\n LanesAspect,\n InstallAspect,\n ExportAspect,\n CheckoutAspect,\n ComponentLogAspect,\n ImporterAspect,\n ComponentCompareAspect,\n GeneratorAspect,\n RemoveAspect,\n ConfigAspect,\n ApplicationAspect,\n DeprecationAspect,\n EnvsAspect,\n GraphAspect,\n ScopeAspect,\n ComponentAspect,\n SchemaAspect,\n ];\n static runtime = MainRuntime;\n static async provider([\n cli,\n workspace,\n loggerMain,\n express,\n watcher,\n snapping,\n lanes,\n installer,\n exporter,\n checkout,\n componentLog,\n importer,\n componentCompare,\n generator,\n remove,\n config,\n application,\n deprecation,\n envs,\n graph,\n scope,\n component,\n schema,\n ]: [\n CLIMain,\n Workspace,\n LoggerMain,\n ExpressMain,\n WatcherMain,\n SnappingMain,\n LanesMain,\n InstallMain,\n ExportMain,\n CheckoutMain,\n ComponentLogMain,\n ImporterMain,\n ComponentCompareMain,\n GeneratorMain,\n RemoveMain,\n ConfigMain,\n ApplicationMain,\n DeprecationMain,\n EnvsMain,\n GraphMain,\n ScopeMain,\n ComponentMain,\n SchemaMain,\n ]) {\n const logger = loggerMain.createLogger(ApiServerAspect.id);\n const apiServer = new ApiServerMain(workspace, logger, express, watcher, installer, importer);\n cli.register(new ServerCmd(apiServer));\n\n const apiForIDE = new APIForIDE(\n workspace,\n snapping,\n lanes,\n installer,\n exporter,\n checkout,\n componentLog,\n componentCompare,\n generator,\n remove,\n config,\n application,\n deprecation,\n envs,\n graph,\n scope,\n component,\n schema,\n logger\n );\n const cliRoute = new CLIRoute(logger, cli, apiForIDE);\n const cliRawRoute = new CLIRawRoute(logger, cli, apiForIDE);\n const ideRoute = new IDERoute(logger, apiForIDE);\n const sseEventsRoute = new SSEEventsRoute(logger, cli);\n // register only when the workspace is available. don't register this on a remote-scope, for security reasons.\n if (workspace) {\n express.register([cliRoute, cliRawRoute, ideRoute, sseEventsRoute]);\n }\n\n return apiServer;\n }\n}\n\nApiServerAspect.addRuntime(ApiServerMain);\n\nexport default ApiServerMain;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_cli","data","require","_toolboxNetwork","_fsExtra","_interopRequireDefault","_express","_logger","_lanes","_remove","_snapping","_generator","_componentCompare","_componentLog","_watcher","_config","_export","_checkout","_install","_importer","_component","_workspace","_harmonyModules","_cors","_httpProxyMiddleware","_apiServer","_cli2","_server","_ide","_apiForIde","_sseEvents","_path","_child_process","_cliRaw","_application","_deprecation","_envs","_scope","_legacy","_graph","_scope2","_schema","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","ApiServerMain","constructor","workspace","logger","express","watcher","installer","importer","runApiServer","options","Error","process","cwd","registerOnComponentChange","component","files","removedFiles","sendEventsToClients","id","toStringWithoutVersion","registerOnBitmapChange","lastModifiedTimestamp","bitMap","getLastModifiedBitmapThroughBit","secondsPassedSinceLastModified","Date","now","debug","importCurrentObjects","registerOnWorkspaceConfigChange","scope","registerOnPostExport","registerPostInstall","watch","preCompile","compile","port","getRandomPort","app","createApp","use","cors","origin","callback","credentials","proxyHeaders","Authorization","DEFAULT_AUTH_TYPE","Http","getToken","symphonyUrl","getSymphonyUrl","createProxyMiddleware","target","changeOrigin","headers","on","error","err","req","res","writeHead","end","proxyReq","fixRequestBody","proxyRes","proxyReqWs","entries","forEach","key","setHeader","pathFilter","ws","secure","server","listen","Promise","resolve","reject","consoleSuccess","writeUsedPort","startParentProcessMonitor","filePath","getServerPortFilePath","fs","writeFileSync","toString","originalPpid","ppid","parentInfo","getProcessInfo","pid","platform","checkInterval","intervalId","setInterval","currentPpid","clearInterval","exit","unref","psCommand","output","execSync","encoding","timeout","trim","startingPort","randomNumber","Math","floor","random","Port","getPort","getExistingUsedPort","fileContent","readFile","parseInt","code","undefined","join","path","provider","cli","loggerMain","snapping","lanes","exporter","checkout","componentLog","componentCompare","generator","remove","config","application","deprecation","envs","graph","schema","createLogger","ApiServerAspect","apiServer","register","ServerCmd","apiForIDE","APIForIDE","cliRoute","CLIRoute","cliRawRoute","CLIRawRoute","ideRoute","IDERoute","sseEventsRoute","SSEEventsRoute","exports","CLIAspect","WorkspaceAspect","LoggerAspect","ExpressAspect","WatcherAspect","SnappingAspect","LanesAspect","InstallAspect","ExportAspect","CheckoutAspect","ComponentLogAspect","ImporterAspect","ComponentCompareAspect","GeneratorAspect","RemoveAspect","ConfigAspect","ApplicationAspect","DeprecationAspect","EnvsAspect","GraphAspect","ScopeAspect","ComponentAspect","SchemaAspect","MainRuntime","addRuntime","_default"],"sources":["api-server.main.runtime.ts"],"sourcesContent":["import type { CLIMain } from '@teambit/cli';\nimport { CLIAspect, MainRuntime } from '@teambit/cli';\nimport { Port } from '@teambit/toolbox.network.get-port';\nimport fs from 'fs-extra';\nimport type { ExpressMain } from '@teambit/express';\nimport { ExpressAspect } from '@teambit/express';\nimport type { Logger, LoggerMain } from '@teambit/logger';\nimport { LoggerAspect } from '@teambit/logger';\nimport type { LanesMain } from '@teambit/lanes';\nimport { LanesAspect } from '@teambit/lanes';\nimport type { RemoveMain } from '@teambit/remove';\nimport { RemoveAspect } from '@teambit/remove';\nimport type { SnappingMain } from '@teambit/snapping';\nimport { SnappingAspect } from '@teambit/snapping';\nimport type { GeneratorMain } from '@teambit/generator';\nimport { GeneratorAspect } from '@teambit/generator';\nimport type { ComponentCompareMain } from '@teambit/component-compare';\nimport { ComponentCompareAspect } from '@teambit/component-compare';\nimport type { ComponentLogMain } from '@teambit/component-log';\nimport { ComponentLogAspect } from '@teambit/component-log';\nimport type { WatcherMain } from '@teambit/watcher';\nimport { WatcherAspect } from '@teambit/watcher';\nimport type { ConfigMain } from '@teambit/config';\nimport { ConfigAspect } from '@teambit/config';\nimport type { ExportMain } from '@teambit/export';\nimport { ExportAspect } from '@teambit/export';\nimport type { CheckoutMain } from '@teambit/checkout';\nimport { CheckoutAspect } from '@teambit/checkout';\nimport type { InstallMain } from '@teambit/install';\nimport { InstallAspect } from '@teambit/install';\nimport type { ImporterMain } from '@teambit/importer';\nimport { ImporterAspect } from '@teambit/importer';\nimport type { Component, ComponentMain } from '@teambit/component';\nimport { ComponentAspect } from '@teambit/component';\nimport type { Workspace } from '@teambit/workspace';\nimport { WorkspaceAspect } from '@teambit/workspace';\nimport { sendEventsToClients } from '@teambit/harmony.modules.send-server-sent-events';\nimport cors from 'cors';\nimport { createProxyMiddleware, fixRequestBody } from 'http-proxy-middleware';\nimport { ApiServerAspect } from './api-server.aspect';\nimport { CLIRoute } from './cli.route';\nimport { ServerCmd } from './server.cmd';\nimport { IDERoute } from './ide.route';\nimport { APIForIDE } from './api-for-ide';\nimport { SSEEventsRoute } from './sse-events.route';\nimport { join } from 'path';\nimport { execSync } from 'child_process';\nimport { CLIRawRoute } from './cli-raw.route';\nimport type { ApplicationMain } from '@teambit/application';\nimport { ApplicationAspect } from '@teambit/application';\nimport type { DeprecationMain } from '@teambit/deprecation';\nimport { DeprecationAspect } from '@teambit/deprecation';\nimport type { EnvsMain } from '@teambit/envs';\nimport { EnvsAspect } from '@teambit/envs';\nimport { DEFAULT_AUTH_TYPE, Http } from '@teambit/scope.network';\nimport { getSymphonyUrl } from '@teambit/legacy.constants';\nimport type { GraphMain } from '@teambit/graph';\nimport { GraphAspect } from '@teambit/graph';\nimport type { ScopeMain } from '@teambit/scope';\nimport { ScopeAspect } from '@teambit/scope';\nimport type { SchemaMain } from '@teambit/schema';\nimport { SchemaAspect } from '@teambit/schema';\n\nexport class ApiServerMain {\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private express: ExpressMain,\n private watcher: WatcherMain,\n private installer: InstallMain,\n private importer: ImporterMain\n ) {}\n\n async runApiServer(options: { port: number; compile: boolean }) {\n if (!this.workspace) {\n throw new Error(`unable to run bit-server, the current directory ${process.cwd()} is not a workspace`);\n }\n\n this.workspace.registerOnComponentChange(\n async (\n component: Component,\n files: string[], // os absolute paths\n removedFiles?: string[] // os absolute paths\n ) => {\n sendEventsToClients('onComponentChange', {\n id: component.id.toStringWithoutVersion(),\n files,\n removedFiles,\n });\n }\n );\n\n this.workspace.registerOnBitmapChange(async () => {\n const lastModifiedTimestamp = await this.workspace.bitMap.getLastModifiedBitmapThroughBit();\n const secondsPassedSinceLastModified = lastModifiedTimestamp && (Date.now() - lastModifiedTimestamp) / 1000;\n if (secondsPassedSinceLastModified && secondsPassedSinceLastModified > 1) {\n // changes by bit were done more than a second ago, so probably this .bitmap change was done by \"git pull\"\n this.logger.debug(\n `running import because we assume the .bitmap file has changed due to \"git pull\", last time it was modified by bit was ${secondsPassedSinceLastModified} seconds ago`\n );\n await this.importer.importCurrentObjects();\n }\n sendEventsToClients('onBitmapChange', {});\n });\n\n this.workspace.registerOnWorkspaceConfigChange(async () => {\n sendEventsToClients('onWorkspaceConfigChange', {});\n });\n\n this.workspace.scope.registerOnPostExport(async () => {\n sendEventsToClients('onPostExport', {});\n });\n\n this.installer.registerPostInstall(async () => {\n sendEventsToClients('onPostInstall', {});\n });\n\n await this.watcher.watch({\n preCompile: false,\n compile: options.compile,\n });\n\n const port = options.port || (await this.getRandomPort());\n\n const app = this.express.createApp();\n\n app.use(\n cors({\n origin(origin, callback) {\n callback(null, true);\n },\n credentials: true,\n })\n );\n const proxyHeaders = {\n Authorization: `${DEFAULT_AUTH_TYPE} ${Http.getToken()}`,\n origin: '',\n 'user-agent': 'bit-vscode-proxy',\n };\n const symphonyUrl = getSymphonyUrl();\n app.use(\n '/api/cloud-graphql',\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n createProxyMiddleware({\n target: `${symphonyUrl}/graphql`,\n changeOrigin: true,\n headers: proxyHeaders,\n on: {\n error: (err, req, res) => {\n this.logger.error('graphql cloud proxy error', err);\n // @ts-ignore\n res.writeHead(500, {\n 'Content-Type': 'text/plain',\n });\n res.end('Something went wrong with the proxy server of bit cloud graphql');\n },\n proxyReq: fixRequestBody,\n },\n })\n );\n\n app.use(\n '/api/cloud-rest',\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n createProxyMiddleware({\n target: `${symphonyUrl}`,\n changeOrigin: true,\n headers: proxyHeaders,\n on: {\n proxyRes: (proxyRes) => {\n proxyRes.headers['Access-Control-Allow-Credentials'] = 'true';\n },\n error: (err, req, res) => {\n this.logger.error('rest cloud proxy error', err);\n // @ts-ignore\n res.writeHead(500, {\n 'Content-Type': 'text/plain',\n });\n res.end('Something went wrong with the proxy server of bit cloud rest');\n },\n proxyReq: fixRequestBody,\n },\n })\n );\n\n app.use(\n '/websocket-server/subscriptions',\n createProxyMiddleware({\n on: {\n proxyReqWs: (proxyReq) => {\n Object.entries(proxyHeaders).forEach(([key, value]) => {\n proxyReq.setHeader(key, value);\n });\n },\n error: (err) => {\n this.logger.error('websocket cloud proxy error', err);\n },\n },\n pathFilter: '/',\n target: symphonyUrl,\n ws: true,\n secure: false, // Disable SSL verification for proxy to remote server\n changeOrigin: true,\n })\n );\n\n const server = await app.listen(port);\n\n return new Promise((resolve, reject) => {\n server.on('error', (err) => {\n reject(err);\n });\n server.on('listening', () => {\n // important! if you change the message here, change it also in server-forever.ts and also in the vscode extension.\n this.logger.consoleSuccess(`Bit Server is listening on port ${port}`);\n this.writeUsedPort(port);\n this.startParentProcessMonitor();\n resolve(port);\n });\n });\n }\n\n writeUsedPort(port: number) {\n const filePath = this.getServerPortFilePath();\n fs.writeFileSync(filePath, port.toString());\n }\n\n /**\n * Monitor the parent process (typically VSCode) and shut down if it dies.\n *\n * On Unix-like systems (macOS, Linux), when a parent process dies, orphaned children are\n * re-parented to PID 1 (init/launchd). By watching for `process.ppid` changing from\n * the original value to 1, we can detect that the parent exited and proactively\n * shut down the bit server to avoid leaving stale background processes running.\n *\n * Note: This orphan detection does not work on Windows, as Windows does not re-parent\n * processes to PID 1. On Windows, this method only logs the parent process info at startup.\n */\n private startParentProcessMonitor() {\n const originalPpid = process.ppid;\n\n // Log parent process info at startup\n const parentInfo = this.getProcessInfo(originalPpid);\n this.logger.debug(\n `bit server started. PID: ${process.pid}, Parent PID: ${originalPpid}, Parent command: ${parentInfo}`\n );\n\n // Skip orphan detection on Windows - PPID doesn't change to 1 when parent dies\n if (process.platform === 'win32') {\n return;\n }\n\n const checkInterval = 5000; // Check every 5 seconds\n const intervalId = setInterval(() => {\n const currentPpid = process.ppid;\n // If PPID changed to 1, our parent (e.g., VSCode) died and we were re-parented to init\n if (currentPpid === 1 && originalPpid !== 1) {\n this.logger.debug(\n `Parent process died (was PID ${originalPpid}: ${parentInfo}). Current PPID is now 1 (init/launchd). Shutting down bit server.`\n );\n clearInterval(intervalId);\n process.exit(0);\n }\n }, checkInterval);\n\n // Don't let this interval keep the process alive if everything else is done\n intervalId.unref();\n }\n\n /**\n * Get the command/path of a process by its PID.\n */\n private getProcessInfo(pid: number): string {\n try {\n if (process.platform === 'win32') {\n // Windows: use PowerShell Get-CimInstance (WMIC is deprecated/removed on modern Windows)\n const psCommand = `Get-CimInstance Win32_Process -Filter 'ProcessId = ${pid}' | Select-Object -ExpandProperty CommandLine`;\n const output = execSync(`powershell.exe -NoProfile -Command \"${psCommand}\"`, {\n encoding: 'utf8',\n timeout: 2000,\n });\n return output.trim() || 'unknown';\n } else {\n // macOS/Linux: use ps\n const output = execSync(`ps -o command= -p ${pid}`, { encoding: 'utf8', timeout: 2000 });\n return output.trim() || 'unknown';\n }\n } catch {\n return 'unknown (process may have exited)';\n }\n }\n\n async getRandomPort() {\n const startingPort = 4000; // we prefer to have the ports between 4000 and 4999.\n // get random number in the range of [startingPort, 4999].\n const randomNumber = Math.floor(Math.random() * (4999 - startingPort + 1) + startingPort);\n const port = await Port.getPort(randomNumber, 65500);\n return port;\n }\n\n async getExistingUsedPort(): Promise<number | undefined> {\n const filePath = this.getServerPortFilePath();\n try {\n const fileContent = await fs.readFile(filePath, 'utf8');\n return parseInt(fileContent, 10);\n } catch (err: any) {\n if (err.code === 'ENOENT') {\n return undefined;\n }\n throw err;\n }\n }\n\n private getServerPortFilePath() {\n return join(this.workspace.scope.path, 'server-port.txt');\n }\n\n static dependencies = [\n CLIAspect,\n WorkspaceAspect,\n LoggerAspect,\n ExpressAspect,\n WatcherAspect,\n SnappingAspect,\n LanesAspect,\n InstallAspect,\n ExportAspect,\n CheckoutAspect,\n ComponentLogAspect,\n ImporterAspect,\n ComponentCompareAspect,\n GeneratorAspect,\n RemoveAspect,\n ConfigAspect,\n ApplicationAspect,\n DeprecationAspect,\n EnvsAspect,\n GraphAspect,\n ScopeAspect,\n ComponentAspect,\n SchemaAspect,\n ];\n static runtime = MainRuntime;\n static async provider([\n cli,\n workspace,\n loggerMain,\n express,\n watcher,\n snapping,\n lanes,\n installer,\n exporter,\n checkout,\n componentLog,\n importer,\n componentCompare,\n generator,\n remove,\n config,\n application,\n deprecation,\n envs,\n graph,\n scope,\n component,\n schema,\n ]: [\n CLIMain,\n Workspace,\n LoggerMain,\n ExpressMain,\n WatcherMain,\n SnappingMain,\n LanesMain,\n InstallMain,\n ExportMain,\n CheckoutMain,\n ComponentLogMain,\n ImporterMain,\n ComponentCompareMain,\n GeneratorMain,\n RemoveMain,\n ConfigMain,\n ApplicationMain,\n DeprecationMain,\n EnvsMain,\n GraphMain,\n ScopeMain,\n ComponentMain,\n SchemaMain,\n ]) {\n const logger = loggerMain.createLogger(ApiServerAspect.id);\n const apiServer = new ApiServerMain(workspace, logger, express, watcher, installer, importer);\n cli.register(new ServerCmd(apiServer));\n\n const apiForIDE = new APIForIDE(\n workspace,\n snapping,\n lanes,\n installer,\n exporter,\n checkout,\n componentLog,\n componentCompare,\n generator,\n remove,\n config,\n application,\n deprecation,\n envs,\n graph,\n scope,\n component,\n schema,\n logger\n );\n const cliRoute = new CLIRoute(logger, cli, apiForIDE);\n const cliRawRoute = new CLIRawRoute(logger, cli, apiForIDE);\n const ideRoute = new IDERoute(logger, apiForIDE);\n const sseEventsRoute = new SSEEventsRoute(logger, cli);\n // register only when the workspace is available. don't register this on a remote-scope, for security reasons.\n if (workspace) {\n express.register([cliRoute, cliRawRoute, ideRoute, sseEventsRoute]);\n }\n\n return apiServer;\n }\n}\n\nApiServerAspect.addRuntime(ApiServerMain);\n\nexport default ApiServerMain;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/api-server",
3
- "version": "1.0.865",
3
+ "version": "1.0.867",
4
4
  "homepage": "https://bit.cloud/teambit/harmony/api-server",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.harmony",
8
8
  "name": "api-server",
9
- "version": "1.0.865"
9
+ "version": "1.0.867"
10
10
  },
11
11
  "dependencies": {
12
12
  "filenamify": "4.2.0",
@@ -16,27 +16,14 @@
16
16
  "p-map": "4.0.0",
17
17
  "cors": "2.8.5",
18
18
  "http-proxy-middleware": "^3.0.3",
19
- "http-proxy": "1.18.1",
20
19
  "chalk": "4.1.2",
21
20
  "pretty-time": "1.1.0",
22
- "@teambit/component.modules.component-url": "0.0.185",
23
- "@teambit/component.modules.merge-helper": "0.0.35",
24
- "@teambit/lane-id": "0.0.312",
25
- "@teambit/legacy.consumer": "0.0.94",
26
- "@teambit/legacy.scope": "0.0.94",
27
- "@teambit/legacy.utils": "0.0.32",
28
- "@teambit/harmony": "0.4.7",
29
- "@teambit/harmony.modules.send-server-sent-events": "0.0.15",
30
- "@teambit/legacy.constants": "0.0.22",
31
- "@teambit/scope.network": "0.0.94",
32
- "@teambit/toolbox.network.get-port": "1.0.18",
33
- "@teambit/harmony.modules.feature-toggle": "0.0.32",
34
- "@teambit/legacy.loader": "0.0.16",
35
- "@teambit/legacy.logger": "0.0.33",
36
21
  "@teambit/application": "1.0.855",
37
22
  "@teambit/checkout": "1.0.855",
38
23
  "@teambit/component-compare": "1.0.855",
39
24
  "@teambit/component-log": "1.0.855",
25
+ "@teambit/component.modules.component-url": "0.0.185",
26
+ "@teambit/component.modules.merge-helper": "0.0.35",
40
27
  "@teambit/component": "1.0.855",
41
28
  "@teambit/config": "0.0.1470",
42
29
  "@teambit/deprecation": "1.0.855",
@@ -45,7 +32,11 @@
45
32
  "@teambit/generator": "1.0.856",
46
33
  "@teambit/graph": "1.0.855",
47
34
  "@teambit/install": "1.0.855",
35
+ "@teambit/lane-id": "0.0.312",
48
36
  "@teambit/lanes": "1.0.861",
37
+ "@teambit/legacy.consumer": "0.0.94",
38
+ "@teambit/legacy.scope": "0.0.94",
39
+ "@teambit/legacy.utils": "0.0.32",
49
40
  "@teambit/logger": "0.0.1388",
50
41
  "@teambit/objects": "0.0.362",
51
42
  "@teambit/remove": "1.0.855",
@@ -53,17 +44,24 @@
53
44
  "@teambit/scope": "1.0.855",
54
45
  "@teambit/snapping": "1.0.855",
55
46
  "@teambit/workspace": "1.0.855",
47
+ "@teambit/harmony": "0.4.7",
56
48
  "@teambit/cli": "0.0.1295",
57
49
  "@teambit/express": "0.0.1394",
50
+ "@teambit/harmony.modules.send-server-sent-events": "0.0.15",
58
51
  "@teambit/importer": "1.0.855",
59
- "@teambit/watcher": "1.0.855"
52
+ "@teambit/legacy.constants": "0.0.22",
53
+ "@teambit/scope.network": "0.0.94",
54
+ "@teambit/toolbox.network.get-port": "1.0.18",
55
+ "@teambit/watcher": "1.0.855",
56
+ "@teambit/harmony.modules.feature-toggle": "0.0.32",
57
+ "@teambit/legacy.loader": "0.0.16",
58
+ "@teambit/legacy.logger": "0.0.33"
60
59
  },
61
60
  "devDependencies": {
62
61
  "@types/fs-extra": "9.0.7",
63
62
  "@types/lodash": "4.14.165",
64
63
  "@types/node-fetch": "2.5.12",
65
64
  "@types/cors": "2.8.10",
66
- "@types/http-proxy": "^1.17.16",
67
65
  "@types/pretty-time": "^1.1.5",
68
66
  "@types/mocha": "9.1.0",
69
67
  "@teambit/harmony.envs.core-aspect-env": "0.1.3"