{"id":32791543,"url":"https://github.com/offensiveedge/urls-le","last_synced_at":"2026-01-20T17:53:32.330Z","repository":{"id":318733969,"uuid":"1073380894","full_name":"OffensiveEdge/urls-le","owner":"OffensiveEdge","description":"Zero Hassle URL Extraction \u0026 Validation - Extract, validate, and analyze URLs from logs, configs, code, and documentation. Features accessibility checking, link validation, pattern analysis, and comprehensive reporting.","archived":false,"fork":false,"pushed_at":"2025-11-02T16:46:17.000Z","size":8936,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-02T18:15:50.708Z","etag":null,"topics":["accessibility","analysis","code","configs","developer-tools","documentation","extension","extraction","functional-programming","link-validation","logs","pattern-analysis","productivity","typescript","url-extraction","url-validation","urls","visual-studio-code","vscode","vscode-extension"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OffensiveEdge.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":"docs/governance/CHANGELOG_GOVERNANCE.md","roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-10T03:11:21.000Z","updated_at":"2025-11-02T16:46:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"ccb0aa95-5966-4688-9a51-5339e14ee423","html_url":"https://github.com/OffensiveEdge/urls-le","commit_stats":null,"previous_names":["nolindnaidoo/urls-le","offensiveedge/urls-le"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/OffensiveEdge/urls-le","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OffensiveEdge%2Furls-le","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OffensiveEdge%2Furls-le/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OffensiveEdge%2Furls-le/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OffensiveEdge%2Furls-le/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OffensiveEdge","download_url":"https://codeload.github.com/OffensiveEdge/urls-le/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OffensiveEdge%2Furls-le/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":282823603,"owners_count":26733133,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-05T02:00:05.946Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["accessibility","analysis","code","configs","developer-tools","documentation","extension","extraction","functional-programming","link-validation","logs","pattern-analysis","productivity","typescript","url-extraction","url-validation","urls","visual-studio-code","vscode","vscode-extension"],"created_at":"2025-11-05T13:01:11.551Z","updated_at":"2025-11-05T13:01:49.644Z","avatar_url":"https://github.com/OffensiveEdge.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"src/assets/images/icon.png\" alt=\"URLs-LE Logo\" width=\"96\" height=\"96\"/\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003eURLs-LE: Zero Hassle URL Extraction\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eExtract 10,000+ URLs per second\u003c/b\u003e • \u003cb\u003e100x faster than manual searching\u003c/b\u003e\u003cbr/\u003e\n  \u003ci\u003eHTML, CSS, JavaScript, JSON, YAML, XML, TOML, INI, Properties, Markdown, and more\u003c/i\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://open-vsx.org/extension/OffensiveEdge/urls-le\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Install%20from-Open%20VSX-blue?style=for-the-badge\u0026logo=visualstudiocode\" alt=\"Install from Open VSX\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.urls-le\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Install%20from-VS%20Code-blue?style=for-the-badge\u0026logo=visualstudiocode\" alt=\"Install from VS Code\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/open-vsx/dt/OffensiveEdge/urls-le?label=downloads\u0026color=green\" alt=\"Downloads\" /\u003e\n  \u003cimg src=\"https://img.shields.io/open-vsx/rating/OffensiveEdge/urls-le?label=rating\u0026color=yellow\" alt=\"Rating\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Open%20Source-100%25-purple\" alt=\"100% Open Source\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Vulnerabilities-0%20Critical-brightgreen\" alt=\"Zero Critical Vulnerabilities\" /\u003e\n\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"src/assets/images/demo.gif\" alt=\"URL Extraction Demo\" style=\"max-width: 100%; height: auto;\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"src/assets/images/command-palette.png\" alt=\"Command Palette\" style=\"max-width: 80%; height: auto;\" /\u003e\n\u003c/p\u003e\n\n---\n\n## ⚡ See It In Action\n\n**Before**: Manually searching through HTML/CSS for broken links (20 minutes)\n\n```html\n\u003clink href=\"https://cdn.example.com/style.css\" /\u003e\n\u003cimg src=\"https://images.example.com/logo.png\" /\u003e\n\u003c!-- ... 100 more URLs scattered across files --\u003e\n```\n\n**After**: One command extracts all 103 URLs in 0.5 seconds\n\n```\nhttps://cdn.example.com/style.css (line 5)\nhttps://images.example.com/logo.png (line 8)\nhttps://api.example.com/users (line 45)\n... (103 URLs total)\n```\n\n**Time Saved**: 20 minutes → 1 second ⚡\n\n---\n\n## ✅ Why URLs-LE?\n\n- **10,000+ URLs per second** - 100x faster than manual searching\n- **Zero Config** - Install → Press `Cmd+Alt+U` → Done\n- **Battle-Tested** - 347 unit tests, 95% coverage, zero critical vulnerabilities\n- **Security-Hardened** - 83 tests prevent URL injection, SSRF attacks, protocol exploitation\n\nPerfect for API audits, link validation, and resource tracking.\n\n---\n\n## 🙏 Thank You\n\nIf URLs-LE saves you time, a quick rating helps other developers discover it:  \n⭐ [Open VSX](https://open-vsx.org/extension/OffensiveEdge/urls-le) • [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.urls-le)\n\n---\n\n### Key Features\n\n- **Automatic cleanup** - Sort, dedupe, and filter by protocol or domain\n- **10+ file formats** - HTML, CSS, JavaScript, JSON, YAML, XML, Markdown, TOML, INI\n- **Smart filtering** - Excludes `data:` URIs and `javascript:` pseudo-protocols\n- **Fast at scale** - Process large documentation and config files efficiently\n- **13 languages** - English, Chinese, German, Spanish, French, Indonesian, Italian, Japanese, Korean, Portuguese, Russian, Ukrainian, Vietnamese\n\n## 🚀 More from the LE Family\n\n- **[String-LE](https://open-vsx.org/extension/OffensiveEdge/string-le)** - Extract user-visible strings for i18n and validation • [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.string-le)\n- **[Numbers-LE](https://open-vsx.org/extension/OffensiveEdge/numbers-le)** - Extract and analyze numeric data with statistics • [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.numbers-le)\n- **[EnvSync-LE](https://open-vsx.org/extension/OffensiveEdge/envsync-le)** - Keep .env files in sync with visual diffs • [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.envsync-le)\n- **[Paths-LE](https://open-vsx.org/extension/OffensiveEdge/paths-le)** - Extract file paths from imports and dependencies • [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.paths-le)\n- **[Regex-LE](https://open-vsx.org/extension/OffensiveEdge/regex-le)** - Test and validate regex patterns with live feedback • [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.regex-le)\n- **[Secrets-LE](https://open-vsx.org/extension/OffensiveEdge/secrets-le)** - Detect and sanitize secrets before you commit • [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.secrets-le)\n- **[Scrape-LE](https://open-vsx.org/extension/OffensiveEdge/scrape-le)** - Validate scraper targets before debugging • [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.scrape-le)\n- **[Colors-LE](https://open-vsx.org/extension/OffensiveEdge/colors-le)** - Extract and analyze colors from stylesheets • [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.colors-le)\n- **[Dates-LE](https://open-vsx.org/extension/OffensiveEdge/dates-le)** - Extract temporal data from logs and APIs • [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.dates-le)\n\n## 💡 Use Cases\n\n- **Web Auditing** - Extract all links and resources from HTML/CSS for validation\n- **API Documentation** - Pull API endpoints from docs and code for cataloging\n- **Link Validation** - Find all external URLs for broken link checking\n- **Resource Tracking** - Audit CDN and asset URLs across your project\n\n## 🚀 Quick Start\n\n1. Install from [Open VSX](https://open-vsx.org/extension/OffensiveEdge/urls-le) or [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.urls-le)\n2. Open any supported file type (`Cmd/Ctrl + P` → search for \"URLs-LE\")\n3. Run Quick Extract (`Cmd+Alt+U` / `Ctrl+Alt+U` / Status Bar)\n\n## ⚙️ Configuration\n\nURLs-LE has minimal configuration to keep things simple. Most settings are available in VS Code's settings UI under \"URLs-LE\".\n\nKey settings include:\n\n- Output format preferences (side-by-side, clipboard copy)\n- Safety warnings and thresholds for large files\n- Notification levels (silent, important, all)\n- Status bar visibility\n- Local telemetry logging for debugging\n\nFor the complete list of available settings, open VS Code Settings and search for \"urls-le\".\n\n## 🌍 Language Support\n\n**13 languages**: English, German, Spanish, French, Indonesian, Italian, Japanese, Korean, Portuguese (Brazil), Russian, Ukrainian, Vietnamese, Chinese (Simplified)\n\n## 🧩 System Requirements\n\n**VS Code** 1.70.0+ • **Platform** Windows, macOS, Linux  \n**Memory** 200MB recommended for large files\n\n## 🔒 Privacy\n\n100% local processing. No data leaves your machine. Optional logging: `urls-le.telemetryEnabled`\n\n## ⚡ Performance\n\n\u003c!-- PERFORMANCE_START --\u003e\n\nURLs-LE is built for speed and efficiently processes files from 100KB to 30MB+. See [detailed benchmarks](docs/PERFORMANCE.md).\n\n| Format   | File Size | Throughput | Duration | Memory | Tested On     |\n| -------- | --------- | ---------- | -------- | ------ | ------------- |\n| **JSON** | 1K lines  | 1,382,278  | ~1.58    | \u003c 1MB  | Apple Silicon |\n| **CSS**  | 3K lines  | 1,048,387  | ~0.31    | \u003c 1MB  | Apple Silicon |\n| **HTML** | 10K lines | 298,122    | ~4.26    | \u003c 1MB  | Apple Silicon |\n\n**Note**: Performance results are based on files containing actual URLs. Files without URLs (like large JSON/CSV data files) are processed much faster but extract 0 URLs.  \n**Real-World Performance**: Tested with actual data up to 30MB (practical limit: 1MB warning, 10MB error threshold)  \n**Performance Monitoring**: Built-in real-time tracking with configurable thresholds  \n**Full Metrics**: [docs/PERFORMANCE.md](docs/PERFORMANCE.md) • Test Environment: macOS, Bun 1.2.22, Node 22.x\n\nFor detailed information, see [Performance Monitoring](docs/PERFORMANCE.md).\n\n\u003c!-- PERFORMANCE_END --\u003e\n\n## 🔧 Troubleshooting\n\n**Not detecting URLs?**  \nEnsure file is saved with supported extension (.html, .css, .js, .json, .yaml, .md)\n\n**Large files slow?**  \nFiles over 10MB may take longer. Consider splitting into smaller chunks\n\n**Need help?**  \nCheck [Issues](https://github.com/OffensiveEdge/urls-le/issues) or enable logging: `urls-le.telemetryEnabled: true`\n\n## ❓ FAQ\n\n**What URLs are extracted?**  \nHTTP/HTTPS, FTP, mailto, tel, file URLs (excludes `data:` and `javascript:` pseudo-protocols)\n\n**Can I deduplicate?**  \nYes, enable `urls-le.dedupeEnabled: true` to remove duplicates automatically\n\n**Max file size?**  \nUp to 30MB. Practical limit: 10MB for optimal performance\n\n**Perfect for web projects?**  \nAbsolutely! Audit API endpoints, asset references, and external links for broken URLs\n\n## 📊 Testing\n\n**347 unit tests** • **95% function coverage, 86% line coverage**  \nPowered by Vitest • Run with `bun run test:coverage`\n\n### Core Principle\n\n**No broken or failed tests are allowed in commits.** All tests must pass before code can be committed or merged.\n\n### Test Suite Highlights\n\n- **83 security tests** for URL injection \u0026 SSRF prevention\n- **71 edge case tests** for extraction logic \u0026 performance\n- **37 tests** for JavaScript/TypeScript URL extraction\n- **34 tests** for content limits, cancellation, and error handling\n- **Comprehensive coverage** of all file formats and protocols\n\nFor detailed testing guidelines, see [Testing Guidelines](docs/TESTING.md).\n\n---\n\nCopyright © 2025\n\u003ca href=\"https://github.com/OffensiveEdge\"\u003e@OffensiveEdge\u003c/a\u003e. All rights reserved.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foffensiveedge%2Furls-le","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foffensiveedge%2Furls-le","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foffensiveedge%2Furls-le/lists"}