@teambit/bit 1.12.219 → 1.13.1

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.
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.harmony_bit@1.12.219/dist/bit.compositions.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.harmony_bit@1.12.219/dist/bit.docs.js';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.harmony_bit@1.13.1/dist/bit.compositions.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.harmony_bit@1.13.1/dist/bit.docs.js';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
package/dist/run-bit.js CHANGED
@@ -63,11 +63,7 @@ function _serverForever() {
63
63
  }
64
64
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
65
65
  /* eslint-disable import/first */
66
- process.on('uncaughtException', err => {
67
- // eslint-disable-next-line no-console
68
- console.error('uncaughtException', err);
69
- process.exit(1);
70
- });
66
+
71
67
  consoleFileReadUsages();
72
68
  // monkey patch fs module to avoid EMFILE error (especially when running watch operation)
73
69
  _gracefulFs().default.gracefulify(_fs().default);
@@ -91,6 +87,12 @@ async function runBit(additionalAspects) {
91
87
  }
92
88
  }
93
89
  async function initApp(additionalAspects) {
90
+ // don't place this "process.on" block on the top. otherwise, "server-forever" will show "uncaughtException" on any error.
91
+ process.on('uncaughtException', err => {
92
+ // eslint-disable-next-line no-console
93
+ console.error('uncaughtException', err);
94
+ process.exit(1);
95
+ });
94
96
  try {
95
97
  await (0, _bootstrap().bootstrap)();
96
98
  await (0, _loadBit().runCLI)(additionalAspects);
@@ -1 +1 @@
1
- {"version":3,"names":["_fs","data","_interopRequireDefault","require","_gracefulFs","_bootstrap","_cli","_loadBit","_autocomplete","_serverCommander","_serverForever","e","__esModule","default","process","on","err","console","error","exit","consoleFileReadUsages","gracefulFs","gracefulify","fs","runBit","additionalAspects","argv","includes","autocomplete","spawnPTY","shouldUseBitServer","ServerCommander","execute","catch","initApp","bootstrap","runCLI","originalError","handleErrorAndExit","env","BIT_DEBUG_READ_FILE","numR","print","filename","log","originalReadFile","readFile","originalReadFileSync","readFileSync","args"],"sources":["run-bit.ts"],"sourcesContent":["/* eslint-disable import/first */\nprocess.on('uncaughtException', (err) => {\n // eslint-disable-next-line no-console\n console.error('uncaughtException', err);\n process.exit(1);\n});\n\nimport fs from 'fs';\nconsoleFileReadUsages();\n\nimport gracefulFs from 'graceful-fs';\n// monkey patch fs module to avoid EMFILE error (especially when running watch operation)\ngracefulFs.gracefulify(fs);\n\nimport './hook-require';\nimport { bootstrap } from './bootstrap';\nimport { handleErrorAndExit } from '@teambit/cli';\nimport type { Aspect } from '@teambit/harmony';\nimport { runCLI } from './load-bit';\nimport { autocomplete } from './autocomplete';\nimport { ServerCommander, shouldUseBitServer } from './server-commander';\nimport { spawnPTY } from './server-forever';\n\n/**\n * run bit cli tool\n * @param additionalAspects optionally, add non-core aspects to the runtime.\n */\nexport async function runBit(additionalAspects?: Aspect[]) {\n if (process.argv.includes('--get-yargs-completions')) {\n autocomplete();\n process.exit(0);\n }\n if (process.argv.includes('server-forever')) {\n spawnPTY();\n } else if (shouldUseBitServer()) {\n new ServerCommander().execute().catch(async () => {\n await initApp(additionalAspects);\n });\n } else {\n await initApp(additionalAspects);\n }\n}\n\nasync function initApp(additionalAspects?: Aspect[]) {\n try {\n await bootstrap();\n await runCLI(additionalAspects);\n } catch (err: any) {\n const originalError = err.originalError || err;\n await handleErrorAndExit(originalError, process.argv[2]);\n }\n}\n\nfunction consoleFileReadUsages() {\n if (!process.env.BIT_DEBUG_READ_FILE) {\n return;\n }\n let numR = 0;\n const print = (filename: string) => {\n // eslint-disable-next-line no-console\n console.log(`#${numR}`, filename);\n };\n const originalReadFile = fs.readFile;\n const originalReadFileSync = fs.readFileSync;\n // @ts-ignore\n fs.readFile = (...args) => {\n numR++;\n print(args[0]);\n // @ts-ignore\n return originalReadFile(...args);\n };\n\n fs.readFileSync = (...args) => {\n numR++;\n print(args[0]);\n // @ts-ignore\n return originalReadFileSync(...args);\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_fs","data","_interopRequireDefault","require","_gracefulFs","_bootstrap","_cli","_loadBit","_autocomplete","_serverCommander","_serverForever","e","__esModule","default","consoleFileReadUsages","gracefulFs","gracefulify","fs","runBit","additionalAspects","process","argv","includes","autocomplete","exit","spawnPTY","shouldUseBitServer","ServerCommander","execute","catch","initApp","on","err","console","error","bootstrap","runCLI","originalError","handleErrorAndExit","env","BIT_DEBUG_READ_FILE","numR","print","filename","log","originalReadFile","readFile","originalReadFileSync","readFileSync","args"],"sources":["run-bit.ts"],"sourcesContent":["/* eslint-disable import/first */\n\nimport fs from 'fs';\nconsoleFileReadUsages();\n\nimport gracefulFs from 'graceful-fs';\n// monkey patch fs module to avoid EMFILE error (especially when running watch operation)\ngracefulFs.gracefulify(fs);\n\nimport './hook-require';\nimport { bootstrap } from './bootstrap';\nimport { handleErrorAndExit } from '@teambit/cli';\nimport type { Aspect } from '@teambit/harmony';\nimport { runCLI } from './load-bit';\nimport { autocomplete } from './autocomplete';\nimport { ServerCommander, shouldUseBitServer } from './server-commander';\nimport { spawnPTY } from './server-forever';\n\n/**\n * run bit cli tool\n * @param additionalAspects optionally, add non-core aspects to the runtime.\n */\nexport async function runBit(additionalAspects?: Aspect[]) {\n if (process.argv.includes('--get-yargs-completions')) {\n autocomplete();\n process.exit(0);\n }\n if (process.argv.includes('server-forever')) {\n spawnPTY();\n } else if (shouldUseBitServer()) {\n new ServerCommander().execute().catch(async () => {\n await initApp(additionalAspects);\n });\n } else {\n await initApp(additionalAspects);\n }\n}\n\nasync function initApp(additionalAspects?: Aspect[]) {\n // don't place this \"process.on\" block on the top. otherwise, \"server-forever\" will show \"uncaughtException\" on any error.\n process.on('uncaughtException', (err) => {\n // eslint-disable-next-line no-console\n console.error('uncaughtException', err);\n process.exit(1);\n });\n try {\n await bootstrap();\n await runCLI(additionalAspects);\n } catch (err: any) {\n const originalError = err.originalError || err;\n await handleErrorAndExit(originalError, process.argv[2]);\n }\n}\n\nfunction consoleFileReadUsages() {\n if (!process.env.BIT_DEBUG_READ_FILE) {\n return;\n }\n let numR = 0;\n const print = (filename: string) => {\n // eslint-disable-next-line no-console\n console.log(`#${numR}`, filename);\n };\n const originalReadFile = fs.readFile;\n const originalReadFileSync = fs.readFileSync;\n // @ts-ignore\n fs.readFile = (...args) => {\n numR++;\n print(args[0]);\n // @ts-ignore\n return originalReadFile(...args);\n };\n\n fs.readFileSync = (...args) => {\n numR++;\n print(args[0]);\n // @ts-ignore\n return originalReadFileSync(...args);\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -72,7 +72,13 @@ function spawnPTY() {
72
72
 
73
73
  // @ts-ignore
74
74
  ptyProcess.on('data', data => {
75
- if (!clients.length) outputNotForClients += data.toString();
75
+ if (!clients.length) {
76
+ outputNotForClients += data.toString();
77
+ if (outputNotForClients.includes('Bit Server is listening')) {
78
+ // important! if you change the message here, change it also in the vscode extension.
79
+ console.log('successfully started the bit server');
80
+ }
81
+ }
76
82
  // Forward data from the ptyProcess to connected clients
77
83
  // console.log('ptyProcess data:', data.toString());
78
84
  clients.forEach(socket => {
@@ -146,15 +152,23 @@ This means another instance may already be running in this workspace.
146
152
 
147
153
  // @ts-ignore
148
154
  ptyProcess.on('exit', (code, signal) => {
149
- server.close();
150
155
  if (didGetClient) {
156
+ server.close();
151
157
  console.log(`PTY exited with code ${code} and signal ${signal}`);
152
158
  setTimeout(() => {
153
159
  console.log('Restarting the PTY process...');
154
160
  spawnPTY(); // Restart the PTY process
155
161
  }, 100);
156
162
  } else {
157
- console.error(`Failed to start the PTY Process. Error: ${outputNotForClients}`);
163
+ server.close();
164
+ // Can't use `throw` here because this callback is from a native N-API module (node-pty),
165
+ // and exceptions thrown in native callbacks are not properly propagated to Node.js.
166
+ // Use process.stderr.write and wait for it to drain before exiting,
167
+ // so the parent process (VS Code extension) can capture the error message.
168
+ const errorMsg = `Failed to start the bit server. Error:\n${outputNotForClients}\n`;
169
+ process.stderr.write(errorMsg, () => {
170
+ process.exit(1);
171
+ });
158
172
  }
159
173
  });
160
174
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_net","data","_interopRequireDefault","require","_os","_crypto","_child_process","_nodePty","e","__esModule","default","spawnPTY","flags","process","argv","slice","filter","arg","startsWith","opts","name","cols","rows","cwd","env","ptyProcess","os","platform","spawn","clients","didGetClient","outputNotForClients","on","length","toString","forEach","socket","write","server","net","createServer","console","log","push","kill","index","indexOf","splice","err","code","error","PORT","getSocketPort","pid","getPidByPort","usedByPid","killCmd","exit","listen","signal","close","setTimeout","BIT_CLI_SERVER_SOCKET_PORT","parseInt","getPortFromPath","path","hash","crypto","createHash","update","digest","hashInt","substring","minPort","maxPort","portRange","port","consoleErrors","cmd","stdout","execSync","lines","trim","split","columns","line","localAddress","endsWith","message"],"sources":["server-forever.ts"],"sourcesContent":["/**\n * see the docs of server-commander.ts for more info\n * this \"server-forever\" command is used to run the bit server in a way that it will never stop. if it gets killed,\n * it will restart itself.\n * it spawns \"bit server\" using node-pty for a pseudo-terminal (PTY) in order for libs such as inquirer/ora/chalk to work properly.\n */\n\n/* eslint-disable no-console */\n\nimport net from 'net';\nimport os from 'os';\nimport crypto from 'crypto';\nimport { execSync } from 'child_process';\nimport { spawn } from '@lydell/node-pty';\n\nexport function spawnPTY() {\n // Create a PTY (terminal emulation) running the 'bit server' process\n // this way, we can catch terminal sequences like arrows, ctrl+c, etc.\n const flags = process.argv.slice(2).filter((arg) => arg.startsWith('-'));\n const opts = {\n name: 'xterm-color',\n cols: 80,\n rows: 30,\n cwd: process.cwd(),\n env: process.env,\n };\n const ptyProcess =\n os.platform() === 'win32'\n ? spawn('powershell.exe', ['bit', 'server', ...flags], opts)\n : spawn('bit', ['server', ...flags], opts);\n\n // Keep track of connected clients\n const clients: net.Socket[] = [];\n\n let didGetClient = false;\n let outputNotForClients = '';\n\n // @ts-ignore\n ptyProcess.on('data', (data) => {\n if (!clients.length) outputNotForClients += data.toString();\n // Forward data from the ptyProcess to connected clients\n // console.log('ptyProcess data:', data.toString());\n clients.forEach((socket) => {\n socket.write(data);\n });\n });\n\n // Create a TCP server\n const server = net.createServer((socket) => {\n console.log('Client connected.');\n didGetClient = true;\n clients.push(socket);\n\n // Forward data from the client to the ptyProcess\n socket.on('data', (data: any) => {\n // console.log('Server received data from client:', data.toString());\n if (data.toString('hex') === '03') {\n // User hit Ctrl+C\n ptyProcess.kill();\n } else {\n ptyProcess.write(data);\n }\n });\n\n // Handle client disconnect\n socket.on('end', () => {\n console.log('Client disconnected (gracefully).');\n const index = clients.indexOf(socket);\n if (index !== -1) {\n clients.splice(index, 1);\n }\n });\n\n // Handle socket errors\n socket.on('error', (err: any) => {\n if (err.code === 'ECONNRESET') {\n console.log('Client disconnected (forcibly).');\n } else {\n console.error('Socket error:', err);\n }\n const index = clients.indexOf(socket);\n if (index !== -1) {\n clients.splice(index, 1);\n }\n });\n });\n\n const PORT = getSocketPort();\n\n server.on('error', (err: any) => {\n if (err.code === 'EADDRINUSE') {\n const pid = getPidByPort(PORT, true);\n const usedByPid = pid ? ` (used by PID ${pid})` : '';\n const killCmd = pid ? `\\nAlternatively, you can kill the process by running \"kill ${pid}\".` : '';\n console.error(`Error: Port ${PORT} is already in use${usedByPid}.\nThis port is assigned based on the workspace path: '${process.cwd()}'\nThis means another instance may already be running in this workspace.\n\\nTo resolve this issue:\n- If another instance is running, please stop it before starting a new one.\n If a vscode is open on this workspace, it might be running the server. Close it.${killCmd}\n- If no other instance is running, the port may be occupied by another application.\n You can override the default port by setting the 'BIT_CLI_SERVER_SOCKET_PORT' environment variable.\n`);\n process.exit(1); // Exit the process with an error code\n } else {\n console.error('Server encountered an error:', err);\n process.exit(1);\n }\n });\n\n server.listen(PORT, () => {\n console.log(`Socket listening on port ${PORT}`);\n });\n\n // @ts-ignore\n ptyProcess.on('exit', (code, signal) => {\n server.close();\n if (didGetClient) {\n console.log(`PTY exited with code ${code} and signal ${signal}`);\n setTimeout(() => {\n console.log('Restarting the PTY process...');\n spawnPTY(); // Restart the PTY process\n }, 100);\n } else {\n console.error(`Failed to start the PTY Process. Error: ${outputNotForClients}`);\n }\n });\n}\n\nexport function getSocketPort(): number {\n return process.env.BIT_CLI_SERVER_SOCKET_PORT\n ? parseInt(process.env.BIT_CLI_SERVER_SOCKET_PORT)\n : getPortFromPath(process.cwd());\n}\n\n/**\n * it's easier to generate a random port based on the workspace path than to save it in a file\n */\nexport function getPortFromPath(path: string): number {\n // Step 1: Hash the workspace path using MD5\n const hash = crypto.createHash('md5').update(path).digest('hex');\n\n // Step 2: Convert a portion of the hash to an integer\n // We'll use the first 8 characters (32 bits)\n const hashInt = parseInt(hash.substring(0, 8), 16);\n\n // Step 3: Map the integer to the port range 49152 to 65535 (these are dynamic ports not assigned by IANA)\n const minPort = 49152;\n const maxPort = 65535;\n const portRange = maxPort - minPort + 1;\n\n const port = (hashInt % portRange) + minPort;\n\n return port;\n}\n\nexport function getPidByPort(port: number, consoleErrors = false): string | null {\n const platform = process.platform;\n try {\n if (platform === 'darwin' || platform === 'linux') {\n // For macOS and Linux\n const cmd = `lsof -iTCP:${port} -sTCP:LISTEN -n -P`;\n const stdout = execSync(cmd).toString();\n const lines = stdout.trim().split('\\n');\n\n if (lines.length > 1) {\n // Skip the header line and parse the first result\n const columns = lines[1].split(/\\s+/);\n const pid = columns[1];\n return pid;\n }\n } else if (platform === 'win32') {\n // For Windows\n const cmd = `netstat -ano -p tcp`;\n const stdout = execSync(cmd).toString();\n const lines = stdout.trim().split('\\n');\n\n for (const line of lines) {\n if (line.trim().startsWith('TCP')) {\n const columns = line.trim().split(/\\s+/);\n const localAddress = columns[1];\n const pid = columns[4];\n\n if (localAddress.endsWith(`:${port}`)) {\n return pid;\n }\n }\n }\n } else {\n if (consoleErrors) console.error('Unsupported platform:', platform);\n }\n } catch (error: any) {\n if (consoleErrors) console.error('Error executing command:', error.message);\n }\n return null;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_net","data","_interopRequireDefault","require","_os","_crypto","_child_process","_nodePty","e","__esModule","default","spawnPTY","flags","process","argv","slice","filter","arg","startsWith","opts","name","cols","rows","cwd","env","ptyProcess","os","platform","spawn","clients","didGetClient","outputNotForClients","on","length","toString","includes","console","log","forEach","socket","write","server","net","createServer","push","kill","index","indexOf","splice","err","code","error","PORT","getSocketPort","pid","getPidByPort","usedByPid","killCmd","exit","listen","signal","close","setTimeout","errorMsg","stderr","BIT_CLI_SERVER_SOCKET_PORT","parseInt","getPortFromPath","path","hash","crypto","createHash","update","digest","hashInt","substring","minPort","maxPort","portRange","port","consoleErrors","cmd","stdout","execSync","lines","trim","split","columns","line","localAddress","endsWith","message"],"sources":["server-forever.ts"],"sourcesContent":["/**\n * see the docs of server-commander.ts for more info\n * this \"server-forever\" command is used to run the bit server in a way that it will never stop. if it gets killed,\n * it will restart itself.\n * it spawns \"bit server\" using node-pty for a pseudo-terminal (PTY) in order for libs such as inquirer/ora/chalk to work properly.\n */\n\n/* eslint-disable no-console */\n\nimport net from 'net';\nimport os from 'os';\nimport crypto from 'crypto';\nimport { execSync } from 'child_process';\nimport { spawn } from '@lydell/node-pty';\n\nexport function spawnPTY() {\n // Create a PTY (terminal emulation) running the 'bit server' process\n // this way, we can catch terminal sequences like arrows, ctrl+c, etc.\n const flags = process.argv.slice(2).filter((arg) => arg.startsWith('-'));\n const opts = {\n name: 'xterm-color',\n cols: 80,\n rows: 30,\n cwd: process.cwd(),\n env: process.env,\n };\n const ptyProcess =\n os.platform() === 'win32'\n ? spawn('powershell.exe', ['bit', 'server', ...flags], opts)\n : spawn('bit', ['server', ...flags], opts);\n\n // Keep track of connected clients\n const clients: net.Socket[] = [];\n\n let didGetClient = false;\n let outputNotForClients = '';\n\n // @ts-ignore\n ptyProcess.on('data', (data) => {\n if (!clients.length) {\n outputNotForClients += data.toString();\n if (outputNotForClients.includes('Bit Server is listening')) {\n // important! if you change the message here, change it also in the vscode extension.\n console.log('successfully started the bit server');\n }\n }\n // Forward data from the ptyProcess to connected clients\n // console.log('ptyProcess data:', data.toString());\n clients.forEach((socket) => {\n socket.write(data);\n });\n });\n\n // Create a TCP server\n const server = net.createServer((socket) => {\n console.log('Client connected.');\n didGetClient = true;\n clients.push(socket);\n\n // Forward data from the client to the ptyProcess\n socket.on('data', (data: any) => {\n // console.log('Server received data from client:', data.toString());\n if (data.toString('hex') === '03') {\n // User hit Ctrl+C\n ptyProcess.kill();\n } else {\n ptyProcess.write(data);\n }\n });\n\n // Handle client disconnect\n socket.on('end', () => {\n console.log('Client disconnected (gracefully).');\n const index = clients.indexOf(socket);\n if (index !== -1) {\n clients.splice(index, 1);\n }\n });\n\n // Handle socket errors\n socket.on('error', (err: any) => {\n if (err.code === 'ECONNRESET') {\n console.log('Client disconnected (forcibly).');\n } else {\n console.error('Socket error:', err);\n }\n const index = clients.indexOf(socket);\n if (index !== -1) {\n clients.splice(index, 1);\n }\n });\n });\n\n const PORT = getSocketPort();\n\n server.on('error', (err: any) => {\n if (err.code === 'EADDRINUSE') {\n const pid = getPidByPort(PORT, true);\n const usedByPid = pid ? ` (used by PID ${pid})` : '';\n const killCmd = pid ? `\\nAlternatively, you can kill the process by running \"kill ${pid}\".` : '';\n console.error(`Error: Port ${PORT} is already in use${usedByPid}.\nThis port is assigned based on the workspace path: '${process.cwd()}'\nThis means another instance may already be running in this workspace.\n\\nTo resolve this issue:\n- If another instance is running, please stop it before starting a new one.\n If a vscode is open on this workspace, it might be running the server. Close it.${killCmd}\n- If no other instance is running, the port may be occupied by another application.\n You can override the default port by setting the 'BIT_CLI_SERVER_SOCKET_PORT' environment variable.\n`);\n process.exit(1); // Exit the process with an error code\n } else {\n console.error('Server encountered an error:', err);\n process.exit(1);\n }\n });\n\n server.listen(PORT, () => {\n console.log(`Socket listening on port ${PORT}`);\n });\n\n // @ts-ignore\n ptyProcess.on('exit', (code, signal) => {\n if (didGetClient) {\n server.close();\n console.log(`PTY exited with code ${code} and signal ${signal}`);\n setTimeout(() => {\n console.log('Restarting the PTY process...');\n spawnPTY(); // Restart the PTY process\n }, 100);\n } else {\n server.close();\n // Can't use `throw` here because this callback is from a native N-API module (node-pty),\n // and exceptions thrown in native callbacks are not properly propagated to Node.js.\n // Use process.stderr.write and wait for it to drain before exiting,\n // so the parent process (VS Code extension) can capture the error message.\n const errorMsg = `Failed to start the bit server. Error:\\n${outputNotForClients}\\n`;\n process.stderr.write(errorMsg, () => {\n process.exit(1);\n });\n }\n });\n}\n\nexport function getSocketPort(): number {\n return process.env.BIT_CLI_SERVER_SOCKET_PORT\n ? parseInt(process.env.BIT_CLI_SERVER_SOCKET_PORT)\n : getPortFromPath(process.cwd());\n}\n\n/**\n * it's easier to generate a random port based on the workspace path than to save it in a file\n */\nexport function getPortFromPath(path: string): number {\n // Step 1: Hash the workspace path using MD5\n const hash = crypto.createHash('md5').update(path).digest('hex');\n\n // Step 2: Convert a portion of the hash to an integer\n // We'll use the first 8 characters (32 bits)\n const hashInt = parseInt(hash.substring(0, 8), 16);\n\n // Step 3: Map the integer to the port range 49152 to 65535 (these are dynamic ports not assigned by IANA)\n const minPort = 49152;\n const maxPort = 65535;\n const portRange = maxPort - minPort + 1;\n\n const port = (hashInt % portRange) + minPort;\n\n return port;\n}\n\nexport function getPidByPort(port: number, consoleErrors = false): string | null {\n const platform = process.platform;\n try {\n if (platform === 'darwin' || platform === 'linux') {\n // For macOS and Linux\n const cmd = `lsof -iTCP:${port} -sTCP:LISTEN -n -P`;\n const stdout = execSync(cmd).toString();\n const lines = stdout.trim().split('\\n');\n\n if (lines.length > 1) {\n // Skip the header line and parse the first result\n const columns = lines[1].split(/\\s+/);\n const pid = columns[1];\n return pid;\n }\n } else if (platform === 'win32') {\n // For Windows\n const cmd = `netstat -ano -p tcp`;\n const stdout = execSync(cmd).toString();\n const lines = stdout.trim().split('\\n');\n\n for (const line of lines) {\n if (line.trim().startsWith('TCP')) {\n const columns = line.trim().split(/\\s+/);\n const localAddress = columns[1];\n const pid = columns[4];\n\n if (localAddress.endsWith(`:${port}`)) {\n return pid;\n }\n }\n }\n } else {\n if (consoleErrors) console.error('Unsupported platform:', platform);\n }\n } catch (error: any) {\n if (consoleErrors) console.error('Error executing command:', error.message);\n }\n return null;\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/bit",
3
- "version": "1.12.219",
3
+ "version": "1.13.1",
4
4
  "homepage": "https://bit.cloud/teambit/harmony/bit",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.harmony",
8
8
  "name": "bit",
9
- "version": "1.12.219"
9
+ "version": "1.13.1"
10
10
  },
11
11
  "dependencies": {
12
12
  "comment-json": "4.2.5",
@@ -51,9 +51,14 @@
51
51
  "@teambit/legacy.constants": "0.0.20",
52
52
  "@teambit/legacy.loader": "0.0.14",
53
53
  "@teambit/legacy.logger": "0.0.31",
54
+ "@teambit/aspect-loader": "1.0.838",
54
55
  "@teambit/bit-error": "0.0.404",
55
56
  "@teambit/clear-cache": "0.0.519",
56
57
  "@teambit/component-id": "1.2.4",
58
+ "@teambit/config": "0.0.1465",
59
+ "@teambit/envs": "1.0.838",
60
+ "@teambit/generator": "1.0.839",
61
+ "@teambit/host-initializer": "0.0.551",
57
62
  "@teambit/legacy-bit-id": "1.1.3",
58
63
  "@teambit/legacy.bit-map": "0.0.147",
59
64
  "@teambit/legacy.consumer-component": "0.0.91",
@@ -63,30 +68,13 @@
63
68
  "@teambit/scope.modules.find-scope-path": "0.0.21",
64
69
  "@teambit/workspace.modules.node-modules-linker": "0.0.319",
65
70
  "@teambit/workspace.modules.workspace-locator": "0.0.21",
66
- "@teambit/cache": "0.0.1383",
67
- "@teambit/community": "1.0.718",
68
- "@teambit/config-store": "0.0.170",
69
- "@teambit/express": "0.0.1389",
70
- "@teambit/global-config": "0.0.1293",
71
- "@teambit/logger": "0.0.1383",
72
- "@teambit/mocha": "1.0.808",
73
- "@teambit/panels": "0.0.1292",
74
- "@teambit/worker": "0.0.1594",
75
- "@teambit/ui-foundation.ui.navigation.react-router-adapter": "6.1.3",
76
- "@teambit/base-react.navigation.link": "2.0.31",
77
- "@teambit/harmony.content.cli-reference": "2.0.864",
78
- "@teambit/aspect-loader": "1.0.838",
79
- "@teambit/config": "0.0.1465",
80
- "@teambit/envs": "1.0.838",
81
- "@teambit/generator": "1.0.839",
82
- "@teambit/host-initializer": "0.0.551",
83
71
  "@teambit/api-reference": "1.0.838",
84
- "@teambit/api-server": "1.0.846",
85
72
  "@teambit/application": "1.0.838",
86
73
  "@teambit/aspect": "1.0.838",
87
74
  "@teambit/babel": "1.0.838",
88
75
  "@teambit/builder": "1.0.838",
89
76
  "@teambit/bundler": "1.0.838",
77
+ "@teambit/cache": "0.0.1383",
90
78
  "@teambit/changelog": "1.0.838",
91
79
  "@teambit/checkout": "1.0.838",
92
80
  "@teambit/ci": "1.0.200",
@@ -94,6 +82,7 @@
94
82
  "@teambit/cloud": "0.0.1119",
95
83
  "@teambit/code": "1.0.838",
96
84
  "@teambit/command-bar": "1.0.838",
85
+ "@teambit/community": "1.0.718",
97
86
  "@teambit/compiler": "1.0.838",
98
87
  "@teambit/component-compare": "1.0.838",
99
88
  "@teambit/component-log": "1.0.838",
@@ -103,6 +92,7 @@
103
92
  "@teambit/component": "1.0.838",
104
93
  "@teambit/compositions": "1.0.838",
105
94
  "@teambit/config-merger": "0.0.705",
95
+ "@teambit/config-store": "0.0.170",
106
96
  "@teambit/dependencies": "1.0.838",
107
97
  "@teambit/dependency-resolver": "1.0.838",
108
98
  "@teambit/deprecation": "1.0.838",
@@ -114,9 +104,11 @@
114
104
  "@teambit/env": "1.0.838",
115
105
  "@teambit/eslint": "1.0.838",
116
106
  "@teambit/export": "1.0.838",
107
+ "@teambit/express": "0.0.1389",
117
108
  "@teambit/forking": "1.0.838",
118
109
  "@teambit/formatter": "1.0.838",
119
110
  "@teambit/git": "1.0.838",
111
+ "@teambit/global-config": "0.0.1293",
120
112
  "@teambit/graph": "1.0.838",
121
113
  "@teambit/graphql": "1.0.838",
122
114
  "@teambit/harmony-ui-app": "1.0.838",
@@ -130,9 +122,11 @@
130
122
  "@teambit/lanes": "1.0.843",
131
123
  "@teambit/linter": "1.0.838",
132
124
  "@teambit/lister": "1.0.838",
125
+ "@teambit/logger": "0.0.1383",
133
126
  "@teambit/mdx": "1.0.838",
134
127
  "@teambit/merge-lanes": "1.0.843",
135
128
  "@teambit/merging": "1.0.839",
129
+ "@teambit/mocha": "1.0.808",
136
130
  "@teambit/mover": "1.0.838",
137
131
  "@teambit/multi-compiler": "1.0.838",
138
132
  "@teambit/multi-tester": "1.0.838",
@@ -140,6 +134,7 @@
140
134
  "@teambit/node": "1.0.838",
141
135
  "@teambit/notifications": "1.0.838",
142
136
  "@teambit/objects": "0.0.345",
137
+ "@teambit/panels": "0.0.1292",
143
138
  "@teambit/pkg": "1.0.838",
144
139
  "@teambit/pnpm": "1.0.851",
145
140
  "@teambit/prettier": "1.0.838",
@@ -169,9 +164,14 @@
169
164
  "@teambit/vue-aspect": "0.0.204",
170
165
  "@teambit/watcher": "1.0.838",
171
166
  "@teambit/webpack": "1.0.838",
167
+ "@teambit/worker": "0.0.1594",
172
168
  "@teambit/workspace-config-files": "1.0.838",
173
169
  "@teambit/workspace": "1.0.838",
174
- "@teambit/yarn": "1.0.838"
170
+ "@teambit/yarn": "1.0.838",
171
+ "@teambit/ui-foundation.ui.navigation.react-router-adapter": "6.1.3",
172
+ "@teambit/base-react.navigation.link": "2.0.31",
173
+ "@teambit/harmony.content.cli-reference": "2.0.865",
174
+ "@teambit/api-server": "1.0.847"
175
175
  },
176
176
  "devDependencies": {
177
177
  "@types/fs-extra": "9.0.7",