{"id":48708407,"url":"https://github.com/Gaspar1992/angular-helpers","last_synced_at":"2026-04-13T11:01:13.755Z","repository":{"id":345224996,"uuid":"1184724038","full_name":"Gaspar1992/angular-helpers","owner":"Gaspar1992","description":"A suite of Angular libraries that helps you build secure, browser-integrated applications with a clean developer experience.","archived":false,"fork":false,"pushed_at":"2026-04-06T20:49:46.000Z","size":1385,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-06T21:03:44.662Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Gaspar1992.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-17T21:48:36.000Z","updated_at":"2026-04-06T20:49:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"ed02309a-437f-4697-9411-96329abcbe69","html_url":"https://github.com/Gaspar1992/angular-helpers","commit_stats":null,"previous_names":["gaspar1992/angular-helpers"],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/Gaspar1992/angular-helpers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gaspar1992%2Fangular-helpers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gaspar1992%2Fangular-helpers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gaspar1992%2Fangular-helpers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gaspar1992%2Fangular-helpers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Gaspar1992","download_url":"https://codeload.github.com/Gaspar1992/angular-helpers/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gaspar1992%2Fangular-helpers/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31749763,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T09:16:15.125Z","status":"ssl_error","status_checked_at":"2026-04-13T09:16:05.023Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-04-11T13:00:21.209Z","updated_at":"2026-04-13T11:01:13.745Z","avatar_url":"https://github.com/Gaspar1992.png","language":"TypeScript","readme":"# 🚀 Angular Helpers\n\nA suite of Angular libraries that helps you build secure, browser-integrated applications with a clean developer experience.\n\n---\n\n## 📦 Available Packages\n\n### 🔐 `@angular-helpers/security`\n\n_Advanced regular expression security and ReDoS prevention_\n\n🌐 **Documentation**: https://gaspar1992.github.io/angular-helpers/docs/security\n\n**🎯 What it solves:**\n\n- **ReDoS (Regular Expression Denial of Service)** attacks caused by malicious or expensive patterns.\n- Safe validation of complex regular expressions without blocking your app.\n- Controlled regex execution with timeout and security analysis.\n\n**✨ Key features:**\n\n- 🛡️ **ReDoS prevention** with automatic risky pattern checks.\n- ⚡ **Web Worker execution** to avoid blocking the main thread.\n- 🕐 **Configurable timeout** to limit expensive regex operations.\n- 📊 **Risk analysis** with complexity metrics and recommendations.\n- 🏗️ **Builder pattern** for fluent secure-regex configuration.\n\n**💡 Example usage:**\n\n```typescript\n// Safe regex validation for user input\nconst result = await securityService.testRegex(userInput, text, {\n  timeout: 5000,\n  safeMode: true,\n});\n\n// Builder pattern for complex patterns\nconst { pattern, security } = RegexSecurityService.builder()\n  .pattern('\\\\d+')\n  .timeout(3000)\n  .safeMode()\n  .build();\n```\n\n**📥 Installation:**\n\n```bash\nnpm install @angular-helpers/security\n```\n\n---\n\n### 🌐 `@angular-helpers/browser-web-apis`\n\n_Unified and safe browser API access with permissions and robust error handling_\n\n🌐 **Documentation**: https://gaspar1992.github.io/angular-helpers/docs/browser-web-apis\n\n**🎯 What it solves:**\n\n- **API fragmentation** across browsers.\n- **Permission complexity** for sensitive browser features.\n- **Compatibility checks** that usually require repetitive boilerplate.\n- **Inconsistent error handling** across web APIs.\n\n**✨ Key features:**\n\n- 📸 **Camera** access and stream control.\n- 🗺️ **Geolocation** with watch support and typed errors.\n- 🔔 **Notifications** with permission-aware behavior.\n- 📋 **Clipboard** utilities.\n- 🎥 **Media Devices** enumeration and media access.\n- 🔐 **Centralized permission utilities**.\n- ✅ **Device/browser API wrappers** with fallback checks.\n- ⚡ **Signal Fn primitives** — 9 zero-boilerplate reactive inject functions (`injectPageVisibility`, `injectResizeObserver`, `injectIntersectionObserver`, `injectNetworkInformation`, `injectScreenOrientation`, `injectMutationObserver`, `injectPerformanceObserver`, `injectIdleDetector`, `injectGamepad`) with automatic cleanup and `viewChild` signal support.\n\n**📥 Installation:**\n\n```bash\nnpm install @angular-helpers/browser-web-apis\n```\n\n---\n\n### 🚀 `@angular-helpers/worker-http` _(Preview)_\n\n_Angular HTTP over Web Workers — off-main-thread HTTP pipelines_\n\n**🎯 What it solves:**\n\n- **Main-thread blocking** from heavy HTTP payloads and serialization.\n- **Request signing complexity** with WebCrypto HMAC.\n- **Serialization overhead** with pluggable format support.\n\n**✨ Key features:**\n\n- 🔀 **Off-main-thread HTTP** pipelines via Web Workers.\n- 🔌 **Typed RPC bridge** for structured worker communication.\n- 🔐 **WebCrypto HMAC** request signing.\n- 📦 **Pluggable serializers** (TOON, seroval, auto-detect).\n\n\u003e ⚠️ This package is in **preview**. APIs may change before v1.0.\n\n**📥 Installation:**\n\n```bash\nnpm install @angular-helpers/worker-http\n```\n\n---\n\n## 🎯 Why Angular Helpers?\n\n### ⚡ Immediate Productivity\n\n- Unified APIs for common browser capabilities.\n- Strict TypeScript support and better autocomplete.\n- Practical examples and ready-to-use patterns.\n- End-to-end browser test coverage in CI.\n\n### 🛡️ Security by Default\n\n- ReDoS prevention tools for regex-heavy flows.\n- Permission-aware wrappers for sensitive APIs.\n- Worker-based isolation for expensive operations.\n- Predictable error handling paths.\n\n### 🔄 Modern Stack Alignment\n\n- Built for modern Angular versions and patterns.\n- Browser-focused utilities tested with Playwright.\n- Actively maintained workflows and test harnesses.\n\n---\n\n## 🚀 Quick Start\n\n### Workspace Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/Gaspar1992/angular-helpers\ncd angular-helpers\n\n# Install dependencies\nnpm install\n\n# Generate local SSL certificates\nnpm run ssl:generate\n\n# Start demo app over HTTPS\nnpm run start:https\n```\n\n### Use in Your Project\n\n```bash\n# Install the packages you need\nnpm install @angular-helpers/security\nnpm install @angular-helpers/browser-web-apis\nnpm install @angular-helpers/worker-http  # preview\n```\n\nFor modern Angular standalone integration, check each package's own README.\n\n---\n\n## 📊 Comparison\n\n| Feature              | Angular Helpers  | Manual Implementation | Other Libraries |\n| -------------------- | ---------------- | --------------------- | --------------- |\n| **ReDoS Protection** | ✅ Built-in      | ❌ Manual             | ⚠️ Partial      |\n| **Browser APIs**     | ✅ Unified       | ❌ Fragmented         | ⚠️ Limited      |\n| **TypeScript**       | ✅ Full support  | ⚠️ Partial            | ❌ Minimal      |\n| **Testing**          | ✅ Included      | ❌ Manual             | ⚠️ Basic        |\n| **Documentation**    | ✅ Comprehensive | ❌ Missing            | ⚠️ Basic        |\n| **Support**          | ✅ Active        | ❌ Team-owned only    | ⚠️ Varies       |\n\n---\n\n## 🛠️ Development\n\n### Available Scripts\n\n```bash\n# Generate SSL certificates (local/CI)\nnpm run ssl:generate\n\n# Local HTTPS development (required for secure browser APIs)\nnpm run start:https\n\n# Build all packages\nnpm run build:packages\n\n# Browser tests on Chromium\nnpm run test:browser\n\n# Browser tests for CI (Chromium, 1 worker)\nnpm run test:browser:ci\n\n# Cross-browser smoke tests (Firefox + WebKit)\nnpm run test:browser:cross\n\n# Workspace linting\nnpm run lint\n```\n\n### Project Structure\n\n```\nangular-helpers/\n├── packages/\n│   ├── security/          # 📦 @angular-helpers/security\n│   ├── browser-web-apis/  # 📦 @angular-helpers/browser-web-apis\n│   └── worker-http/       # 📦 @angular-helpers/worker-http (preview)\n├── src/                   # 🚀 Demo application\n├── docs/                  # 📚 Documentation\n└── scripts/               # 🔧 Automation scripts\n```\n\n---\n\n## 📈 Roadmap\n\n### Planned 🚧\n\n- **@angular-helpers/pwa** - Service Worker and PWA capabilities.\n- **@angular-helpers/storage** - Unified storage helpers.\n\n### In Progress 🔄\n\n- **@angular-helpers/worker-http** — transport, serializer, backend, interceptors, and crypto sub-entry points.\n- Runtime and bundle-size improvements.\n- More real-world examples and demos.\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome.\n\n### Getting Started\n\n```bash\n# Fork and clone\ngit clone https://github.com/your-user/angular-helpers\n# or fork from https://github.com/Gaspar1992/angular-helpers\ncd angular-helpers\n\n# Create a feature branch\ngit checkout -b feature/your-feature\n\n# Commit and push\ngit commit -m \"feat: add your feature\"\ngit push origin feature/your-feature\n```\n\n### Contribution Guides\n\n- 📖 [SSR/SSG Implementation](./docs/ssr-ssg-implementation.md)\n\n---\n\n## 📄 License\n\nMIT License — see [LICENSE](./LICENSE) for details.\n\n---\n\n## � Blog\n\nArticles about library design decisions, Angular patterns, and the evolution of Angular Helpers.\nThey live as Markdown files in [`public/content/blog/`](./public/content/blog/) and are rendered on the [web](https://gaspar1992.github.io/angular-helpers/blog).\n\n| Date       | Article                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------- |\n| 2026-04-12 | [Redesigning the web \u0026 our vision as a library ecosystem](./public/content/blog/web-redesign-and-library-vision.md) |\n\n---\n\n## �🔗 Useful Links\n\n- **🐛 Issues \u0026 Feature Requests**: [GitHub Issues](https://github.com/Gaspar1992/angular-helpers/issues)\n- **💬 Discussions**: [GitHub Discussions](https://github.com/Gaspar1992/angular-helpers/discussions)\n- **📦 NPM Organization**: [npmjs.com/org/angular-helpers](https://www.npmjs.com/org/angular-helpers)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**⭐ If Angular Helpers helps your team, consider starring the repository.**\n\nMade with ❤️ by the Angular Helpers Team\n\n\u003c/div\u003e\n","funding_links":[],"categories":["Third Party Components"],"sub_categories":["Mixed Utilities"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGaspar1992%2Fangular-helpers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FGaspar1992%2Fangular-helpers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGaspar1992%2Fangular-helpers/lists"}