{"_id":"@aminventive/port-killer","_rev":"4-b68988c066640b5878e27027e2321163","name":"@aminventive/port-killer","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@aminventive/port-killer","version":"1.0.0","keywords":["port","kill","process","cli","nodejs","cross-platform","port-management","development-tools","netstat","lsof","devtools","port-scanner","process-killer","interactive","terminal","windows","macos","linux","typescript"],"author":{"name":"Raine Sanchez"},"license":"MIT","_id":"@aminventive/port-killer@1.0.0","maintainers":[{"name":"raine1120","email":"raine1120@gmail.com"}],"homepage":"https://github.com/Aminventive/port-killer#readme","bugs":{"url":"https://github.com/Aminventive/port-killer/issues"},"bin":{"pk":"dist/cli.js","port-killer":"dist/cli.js"},"dist":{"shasum":"49bdc3cb4d4f072a22a8f172c6f80bdd7b063204","tarball":"https://registry.npmjs.org/@aminventive/port-killer/-/port-killer-1.0.0.tgz","fileCount":29,"integrity":"sha512-i+VjhPycBZToZcUTXKAdE7lw8zMme/2mo4PtTb6UzCZ2Tqtpwc7xayIze9ZWW/dqFcIra+cmzjg4JelSUr422A==","signatures":[{"sig":"MEYCIQDAUmESrlqD93QvZKmgq4gyH3s68zo/UkrIZqkv5+Ve7QIhAOAsBnat0V4UdgL5OVI4YicGYyd1maVxO6yulRJlWL8a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":153384},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"2814b5302d264c71720f3c2b3e68870f2533f7bc","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rm -rf dist","start":"node dist/cli.js","prepare":"npm run clean && npm run build","lint:fix":"eslint src/**/*.ts --fix","postpublish":"git push && git push --tags","prepublishOnly":"npm run lint && npm run build"},"_npmUser":{"name":"raine1120","email":"raine1120@gmail.com"},"repository":{"url":"git+https://github.com/Aminventive/port-killer.git","type":"git"},"_npmVersion":"10.9.3","description":"A comprehensive Node.js CLI tool and library for managing ports and killing processes","directories":{},"_nodeVersion":"22.18.0","dependencies":{"ora":"^5.4.1","chalk":"^4.1.2","inquirer":"^8.2.6","commander":"^9.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.49.0","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^18.17.15","@types/inquirer":"^9.0.3","@typescript-eslint/parser":"^6.7.2","@typescript-eslint/eslint-plugin":"^6.7.2"},"_npmOperationalInternal":{"tmp":"tmp/port-killer_1.0.0_1757340063497_0.6839874294758483","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aminventive/port-killer","version":"1.0.1","keywords":["port","kill","process","cli","nodejs","cross-platform","port-management","development-tools","netstat","lsof","devtools","port-scanner","process-killer","interactive","terminal","windows","macos","linux","typescript"],"author":{"name":"Raine Sanchez"},"license":"MIT","_id":"@aminventive/port-killer@1.0.1","maintainers":[{"name":"raine1120","email":"raine1120@gmail.com"}],"homepage":"https://github.com/Aminventive/port-killer#readme","bugs":{"url":"https://github.com/Aminventive/port-killer/issues"},"bin":{"pk":"dist/cli.js","port-killer":"dist/cli.js"},"dist":{"shasum":"242aeffdd1f3ba8169fdc4a0c0e6bdf38e7838db","tarball":"https://registry.npmjs.org/@aminventive/port-killer/-/port-killer-1.0.1.tgz","fileCount":29,"integrity":"sha512-6yuMbyDuouq81NB+09KN29We6n2Zf2ZS1qNpjPG3WczJvewq4gemLNTkFoWhZq/rmJSouPjdT5r7sFPfdBO3pg==","signatures":[{"sig":"MEQCIAg0oh43j1gPaKjOJlivOAGvDh0BlFJKcaCG5wX6bNhFAiBeUzeH0B8fIDBJpiPL3bvGNlQwpfAFxS4wzM7yKL7mMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156482},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"2c56fe6a9603ce0c8932af818dc05134db955247","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rm -rf dist","start":"node dist/cli.js","prepare":"npm run clean && npm run build","lint:fix":"eslint src/**/*.ts --fix","postpublish":"git push && git push --tags","prepublishOnly":"npm run lint && npm run build"},"_npmUser":{"name":"raine1120","email":"raine1120@gmail.com"},"repository":{"url":"git+https://github.com/Aminventive/port-killer.git","type":"git"},"_npmVersion":"10.9.0","description":"A comprehensive Node.js CLI tool and library for managing ports and killing processes","directories":{},"_nodeVersion":"20.19.5","dependencies":{"ora":"^5.4.1","chalk":"^4.1.2","inquirer":"^8.2.6","commander":"^9.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.49.0","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^18.17.15","@types/inquirer":"^9.0.3","@typescript-eslint/parser":"^6.7.2","@typescript-eslint/eslint-plugin":"^6.7.2"},"_npmOperationalInternal":{"tmp":"tmp/port-killer_1.0.1_1764678984830_0.9847494063504911","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aminventive/port-killer","version":"1.0.2","keywords":["port","kill","process","cli","nodejs","cross-platform","port-management","development-tools","netstat","lsof","devtools","port-scanner","process-killer","interactive","terminal","windows","macos","linux","typescript"],"author":{"name":"Raine Sanchez"},"license":"MIT","_id":"@aminventive/port-killer@1.0.2","maintainers":[{"name":"raine1120","email":"raine1120@gmail.com"}],"homepage":"https://github.com/Aminventive/port-killer#readme","bugs":{"url":"https://github.com/Aminventive/port-killer/issues"},"bin":{"pk":"dist/cli.js","port-killer":"dist/cli.js"},"dist":{"shasum":"87753fa8fabbeb0924df1f46fd367a3b79263f19","tarball":"https://registry.npmjs.org/@aminventive/port-killer/-/port-killer-1.0.2.tgz","fileCount":29,"integrity":"sha512-ddcfkZvGyT+6vD1CzyDv52qNtHHRO4eygRXRCjyFkDKTlGMsDRv7PC3Guo20NoluFkuhAI6Ek5SUnxi2ZAcjdg==","signatures":[{"sig":"MEQCIFjDWYXY/WjEoMPLur27KMJMD/KNnhdnIwxIVjUrASYsAiByTYHs4IIncdx0iqmBP5Gaer9bGcOQ1IaoNXLjhMIZGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":156559},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"2c56fe6a9603ce0c8932af818dc05134db955247","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rm -rf dist","start":"node dist/cli.js","prepare":"npm run clean && npm run build","lint:fix":"eslint src/**/*.ts --fix","postpublish":"git push && git push --tags","prepublishOnly":"npm run lint && npm run build"},"_npmUser":{"name":"raine1120","email":"raine1120@gmail.com"},"repository":{"url":"git+https://github.com/Aminventive/port-killer.git","type":"git"},"_npmVersion":"10.9.0","description":"A comprehensive Node.js CLI tool and library for managing ports and killing processes","directories":{},"_nodeVersion":"20.19.5","dependencies":{"ora":"^5.4.1","chalk":"^4.1.2","inquirer":"^8.2.6","commander":"^9.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.49.0","ts-jest":"^29.1.1","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/node":"^18.17.15","@types/inquirer":"^9.0.3","@typescript-eslint/parser":"^6.7.2","@typescript-eslint/eslint-plugin":"^6.7.2"},"_npmOperationalInternal":{"tmp":"tmp/port-killer_1.0.2_1764679182585_0.2901951342310771","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@aminventive/port-killer","version":"1.0.3","description":"A comprehensive Node.js CLI tool and library for managing ports and killing processes","main":"dist/index.js","types":"dist/index.d.ts","bin":{"port-killer":"dist/cli.js","pk":"dist/cli.js"},"scripts":{"build":"tsc","dev":"tsc --watch","start":"node dist/cli.js","test":"jest","lint":"eslint src/**/*.ts","lint:fix":"eslint src/**/*.ts --fix","clean":"rm -rf dist","prepare":"npm run clean && npm run build","prepublishOnly":"npm run lint && npm run build","postpublish":"git push && git push --tags"},"keywords":["port","kill","process","cli","nodejs","cross-platform","port-management","development-tools","netstat","lsof","devtools","port-scanner","process-killer","interactive","terminal","windows","macos","linux","typescript"],"author":{"name":"Raine Sanchez"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Aminventive/port-killer.git"},"bugs":{"url":"https://github.com/Aminventive/port-killer/issues"},"homepage":"https://github.com/Aminventive/port-killer#readme","engines":{"node":">=14.0.0"},"dependencies":{"chalk":"^4.1.2","commander":"^9.4.1","inquirer":"^8.2.6","ora":"^5.4.1"},"devDependencies":{"@types/inquirer":"^9.0.3","@types/jest":"^29.5.5","@types/node":"^18.17.15","@typescript-eslint/eslint-plugin":"^6.7.2","@typescript-eslint/parser":"^6.7.2","eslint":"^8.49.0","jest":"^29.7.0","ts-jest":"^29.1.1","typescript":"^5.2.2"},"publishConfig":{"access":"public"},"_id":"@aminventive/port-killer@1.0.3","gitHead":"4050c78047b51b1ab47716ce0b1cdcade3173e3b","_nodeVersion":"20.19.5","_npmVersion":"10.9.0","dist":{"integrity":"sha512-PbruU0JiK+3Iop4aHEF5hHe6d3XpLR/KxyXIadf9pbFhEfGmKZiUxrQ8yLQrZ0NtBSc9QyChKH6YNQuKRxrC0w==","shasum":"094c737d489e9935ff26f28a0ef8fb8d8a0628ed","tarball":"https://registry.npmjs.org/@aminventive/port-killer/-/port-killer-1.0.3.tgz","fileCount":29,"unpackedSize":156559,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIADvrFB3d+VjDvkxYyQSqWbT/C3XnJ/XyVo/UkLndJFHAiEAqTYkITkSBbjuYl1gLHtqwDKs4VfhBxOB4DQ4dG94EpA="}]},"_npmUser":{"name":"raine1120","email":"raine1120@gmail.com"},"directories":{},"maintainers":[{"name":"raine1120","email":"raine1120@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/port-killer_1.0.3_1764679298727_0.7546840130997945"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-08T14:01:03.011Z","modified":"2025-12-02T12:41:39.142Z","1.0.0":"2025-09-08T14:01:03.673Z","1.0.1":"2025-12-02T12:36:25.027Z","1.0.2":"2025-12-02T12:39:42.778Z","1.0.3":"2025-12-02T12:41:38.917Z"},"bugs":{"url":"https://github.com/Aminventive/port-killer/issues"},"author":{"name":"Raine Sanchez"},"license":"MIT","homepage":"https://github.com/Aminventive/port-killer#readme","keywords":["port","kill","process","cli","nodejs","cross-platform","port-management","development-tools","netstat","lsof","devtools","port-scanner","process-killer","interactive","terminal","windows","macos","linux","typescript"],"repository":{"type":"git","url":"git+https://github.com/Aminventive/port-killer.git"},"description":"A comprehensive Node.js CLI tool and library for managing ports and killing processes","maintainers":[{"name":"raine1120","email":"raine1120@gmail.com"}],"readme":"# 🎯 Port Killer\n\n[![npm version](https://badge.fury.io/js/@aminventive%2Fport-killer.svg)](https://badge.fury.io/js/@aminventive%2Fport-killer)\n[![Node.js CI](https://github.com/Aminventive/port-killer/workflows/Node.js%20CI/badge.svg)](https://github.com/Aminventive/port-killer/actions)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nA comprehensive Node.js CLI tool and library for managing ports and killing processes. Cross-platform support for Windows, macOS, and Linux.\n\n> **Quick Start**: `npx @aminventive/port-killer list -s 3000 -e 8000` or `npm install -g @aminventive/port-killer`\n\n## Features\n\n- 🔍 **List all open ports** with detailed process information\n- ⚡ **Kill processes by port** with graceful termination strategy\n- 🎯 **Interactive mode** for selecting and killing multiple processes\n- 🖥️ **Cross-platform** support (Windows, macOS, Linux)\n- 📚 **Both CLI and programmatic API**\n- 🛡️ **Graceful termination** with SIGTERM → SIGKILL fallback\n- 🎨 **Colorized output** for better user experience\n- 🚫 **No duplicate entries** - Smart deduplication across IPv4/IPv6\n- 📊 **Accurate port filtering** - Precise range filtering on all platforms\n- ⚡ **Fast performance** - Shows only LISTENING processes (servers)\n\n## 🚀 Installation & Quick Start\n\n### Option 1: Use without installing (Recommended for first try)\n```bash\n# Try it instantly with npx\nnpx @aminventive/port-killer list -s 3000 -e 8000\nnpx @aminventive/port-killer interactive\n```\n\n### Option 2: Global Installation (Recommended for regular use)\n```bash\nnpm install -g @aminventive/port-killer\n\n# Now use anywhere\nport-killer list -s 3000 -e 8000\npk i  # Interactive mode\n```\n\n### Option 3: Local Project Installation (For programmatic usage)\n```bash\nnpm install @aminventive/port-killer\n```\n\n### System Requirements\n- **Node.js**: 14.0.0 or higher\n- **OS**: Windows, macOS, or Linux\n- **Permissions**: May require elevated permissions for system processes\n\n## CLI Usage\n\n### List all processes on ports\n\n```bash\n# List all processes\nport-killer list\n\n# Short alias\npk ls\n\n# List processes in specific port range\nport-killer list --start 3000 --end 8000\n# Short flags available\nport-killer list -s 3000 -e 8000\n\n# Filter by protocol\nport-killer list --protocol tcp\nport-killer list -p tcp\n\n# JSON output\nport-killer list --json\n```\n\n### Kill process on specific port\n\n```bash\n# Kill process on port 3000\nport-killer kill 3000\n\n# Force kill (skip graceful termination)\nport-killer kill 3000 --force\n\n# Custom timeout for graceful termination\nport-killer kill 3000 --timeout 10000\n```\n\n### Interactive mode\n\n```bash\n# Launch interactive mode\nport-killer interactive\n\n# Short alias\npk i\n\n# Interactive mode with port range\nport-killer interactive --start 3000 --end 8000\n# Short flags and alias\npk i -s 3000 -e 8000\n```\n\n### Kill all processes (use with caution)\n\n```bash\n# Kill all processes (with confirmation)\nport-killer kill-all\n\n# Force kill all without confirmation\nport-killer kill-all --force\n\n# Kill all in specific range\nport-killer kill-all --start 3000 --end 5000\n```\n\n### CLI Options\n\n| Option | Description | Default |\n|--------|-------------|---------|\n| `-s, --start <port>` | Start port range | 1 |\n| `-e, --end <port>` | End port range | 65535 |\n| `-p, --protocol <protocol>` | Protocol filter (tcp, udp, both) | both |\n| `-f, --force` | Force kill without graceful termination | false |\n| `-t, --timeout <ms>` | Timeout for graceful termination | 5000 |\n| `-i` | Interactive mode (alias for `interactive` command) | - |\n| `--json` | Output as JSON (list command only) | false |\n\n## Programmatic API\n\n### Import\n\n```typescript\n// ES6/TypeScript\nimport { getProcessesOnPorts, killProcessOnPort, PortScanner, ProcessKiller } from '@aminventive/port-killer';\n\n// CommonJS\nconst { getProcessesOnPorts, killProcessOnPort } = require('@aminventive/port-killer');\n```\n\n### Convenience Functions\n\n```typescript\nimport { getProcessesOnPorts, getProcessOnPort, killProcessOnPort } from '@aminventive/port-killer';\n\n// Get all processes on ports\nconst processes = await getProcessesOnPorts();\nconsole.log(processes);\n\n// Get specific process on port\nconst process = await getProcessOnPort(3000);\nif (process) {\n  console.log(`Process ${process.processName} is running on port 3000`);\n}\n\n// Kill process on port\nconst success = await killProcessOnPort(3000);\nif (success) {\n  console.log('Process killed successfully');\n}\n```\n\n### Class-based API\n\n```typescript\nimport { PortScanner, ProcessKiller } from '@aminventive/port-killer';\n\nconst scanner = new PortScanner();\nconst killer = new ProcessKiller();\n\n// Scan for processes\nconst processes = await scanner.getProcessesOnPorts({\n  startPort: 3000,\n  endPort: 8000,\n  protocol: 'tcp'\n});\n\n// Kill multiple processes\nconst result = await killer.killMultipleProcesses(processes, {\n  force: false,\n  timeout: 5000\n});\n\nconsole.log(`Killed: ${result.killed.length}, Failed: ${result.failed.length}`);\n```\n\n### Advanced Usage\n\n```typescript\nimport { PortScanner, ProcessKiller, ProcessInfo } from '@aminventive/port-killer';\n\nconst scanner = new PortScanner();\nconst killer = new ProcessKiller();\n\n// Custom port scanning\nasync function findNodeProcesses(): Promise<ProcessInfo[]> {\n  const allProcesses = await scanner.getProcessesOnPorts();\n  return allProcesses.filter(p => \n    p.processName.toLowerCase().includes('node') ||\n    p.command.toLowerCase().includes('node')\n  );\n}\n\n// Kill processes with custom logic\nasync function killDevelopmentServers() {\n  const processes = await findNodeProcesses();\n  const devProcesses = processes.filter(p => \n    p.port >= 3000 && p.port <= 9000\n  );\n  \n  if (devProcesses.length === 0) {\n    console.log('No development servers found');\n    return;\n  }\n  \n  console.log(`Found ${devProcesses.length} development servers`);\n  const result = await killer.killMultipleProcesses(devProcesses);\n  \n  console.log(`Successfully killed ${result.killed.length} processes`);\n  if (result.failed.length > 0) {\n    console.log(`Failed to kill ${result.failed.length} processes`);\n  }\n}\n\nkillDevelopmentServers().catch(console.error);\n```\n\n## TypeScript Support\n\nFull TypeScript support with comprehensive type definitions:\n\n```typescript\nimport { ProcessInfo, PortKillOptions, PortScanOptions } from '@aminventive/port-killer';\n\ninterface ProcessInfo {\n  pid: number;\n  port: number;\n  protocol: string;\n  processName: string;\n  command: string;\n  state?: string;\n}\n\ninterface PortKillOptions {\n  timeout?: number;\n  signal?: 'SIGTERM' | 'SIGKILL';\n  force?: boolean;\n}\n\ninterface PortScanOptions {\n  startPort?: number;\n  endPort?: number;\n  protocol?: 'tcp' | 'udp' | 'both';\n}\n```\n\n## Examples\n\n### Development Workflow\n\n```bash\n# Check what's running on common dev ports\npk ls -s 3000 -e 9000\n\n# Kill your React dev server\npk kill 3000\n\n# Interactive cleanup of all dev servers\npk i -s 3000 -e 9000\n```\n\n### One-liner Examples\n```bash\n# Quick port check without installing\nnpx @aminventive/port-killer list -s 80 -e 80\n\n# Kill process on port 3000 (React dev server)\nnpx @aminventive/port-killer kill 3000\n\n# Interactive mode for port cleanup\nnpx @aminventive/port-killer i -s 3000 -e 8000\n```\n\n### CI/CD Integration\n\n```typescript\n// cleanup.js - Clean up ports before tests\nconst { killProcessesInRange } = require('@aminventive/port-killer');\n\nasync function cleanupPorts() {\n  console.log('Cleaning up development ports...');\n  const result = await killProcessesInRange(3000, 9000);\n  console.log(`Cleaned up ${result.killed.length} processes`);\n}\n\ncleanupPorts().catch(console.error);\n```\n\n### Docker Integration\n\n```bash\n# Kill processes that might conflict with Docker\npk kill 3000 5432 6379 27017\n```\n\n## Error Handling\n\nThe library includes comprehensive error handling:\n\n```typescript\nimport { killProcessOnPort } from '@aminventive/port-killer';\n\ntry {\n  const success = await killProcessOnPort(3000);\n  if (!success) {\n    console.log('No process found on port 3000');\n  }\n} catch (error) {\n  console.error('Failed to kill process:', error.message);\n}\n```\n\n## Platform Compatibility\n\n| Platform | Port Discovery | Process Killing | Notes |\n|----------|---------------|-----------------|-------|\n| Windows  | `netstat` + `tasklist` | `taskkill` | Full support with IPv4/IPv6 deduplication |\n| macOS    | `lsof` | `kill` | Full support |\n| Linux    | `lsof` + `netstat` | `kill` | Full support |\n\n## Recent Improvements\n\n- **v1.0.0**: Fixed Windows port range filtering (`--start`/`--end` now work correctly)\n- **v1.0.0**: Eliminated duplicate entries on Windows (IPv4/IPv6 deduplication) \n- **v1.0.0**: Shows only LISTENING processes for cleaner output\n- **v1.0.0**: All commands support short flags (`-s`, `-e`, `-p`, `-i`)\n\n## Permissions\n\nSome operations may require elevated permissions:\n\n- **Windows**: May need to run as Administrator for system processes\n- **macOS/Linux**: May need `sudo` for processes owned by other users\n\n## 🛠️ Development\n\n### Local Development\n```bash\ngit clone https://github.com/Aminventive/port-killer.git\ncd port-killer\nnpm install\nnpm run build\nnpm link  # For global testing\n```\n\n### Contributing\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add some amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## 📈 Stats\n\n- **Zero dependencies** in production (only dev dependencies)\n- **TypeScript** for type safety\n- **Cross-platform** - Works on Windows, macOS, Linux\n- **Fast** - Shows only relevant LISTENING processes\n- **Clean** - No duplicate entries\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- Inspired by [port-kill](https://github.com/kagehq/port-kill) desktop application\n- Built with modern Node.js and TypeScript best practices\n- Cross-platform compatibility using native system commands\n\n---\n\n**Made with ❤️ by [Raine Sanchez](https://github.com/Aminventive)**\n\n[![GitHub stars](https://img.shields.io/github/stars/Aminventive/port-killer.svg?style=social&label=Star)](https://github.com/Aminventive/port-killer)","readmeFilename":"README.md"}