@the-bearded-bear/claude-craft 3.1.2 → 3.3.1-next.f4f0d1e
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.
- package/Dev/i18n/de/Angular/CLAUDE.md.template +49 -0
- package/Dev/i18n/de/Angular/agents/angular-reviewer.md +213 -0
- package/Dev/i18n/de/Angular/checklists/new-feature.md +125 -0
- package/Dev/i18n/de/Angular/checklists/pre-commit.md +77 -0
- package/Dev/i18n/de/Angular/commands/check-architecture.md +261 -0
- package/Dev/i18n/de/Angular/commands/check-code-quality.md +238 -0
- package/Dev/i18n/de/Angular/commands/check-compliance.md +199 -0
- package/Dev/i18n/de/Angular/commands/check-security.md +263 -0
- package/Dev/i18n/de/Angular/commands/check-testing.md +292 -0
- package/Dev/i18n/de/Angular/commands/generate-component.md +220 -0
- package/Dev/i18n/de/Angular/rules/00-project-context.md.template +78 -0
- package/Dev/i18n/de/Angular/rules/02-architecture-angular.md +477 -0
- package/Dev/i18n/de/Angular/rules/03-coding-standards.md +640 -0
- package/Dev/i18n/de/Angular/rules/06-tooling.md +516 -0
- package/Dev/i18n/de/Angular/rules/07-testing-angular.md +739 -0
- package/Dev/i18n/de/Angular/rules/08-quality-tools.md +501 -0
- package/Dev/i18n/de/Angular/rules/11-security-angular.md +497 -0
- package/Dev/i18n/de/Angular/templates/component.template.ts +115 -0
- package/Dev/i18n/de/Angular/templates/service.template.ts +203 -0
- package/Dev/i18n/de/CSharp/CLAUDE.md.template +65 -0
- package/Dev/i18n/de/CSharp/agents/csharp-reviewer.md +166 -0
- package/Dev/i18n/de/CSharp/checklists/new-feature.md +178 -0
- package/Dev/i18n/de/CSharp/checklists/pre-commit.md +126 -0
- package/Dev/i18n/de/CSharp/commands/check-architecture.md +294 -0
- package/Dev/i18n/de/CSharp/commands/check-code-quality.md +355 -0
- package/Dev/i18n/de/CSharp/commands/check-compliance.md +178 -0
- package/Dev/i18n/de/CSharp/commands/check-security.md +369 -0
- package/Dev/i18n/de/CSharp/commands/check-testing.md +295 -0
- package/Dev/i18n/de/CSharp/commands/generate-feature.md +481 -0
- package/Dev/i18n/de/CSharp/rules/00-project-context.md.template +100 -0
- package/Dev/i18n/de/CSharp/rules/02-architecture-csharp.md +536 -0
- package/Dev/i18n/de/CSharp/rules/03-coding-standards.md +494 -0
- package/Dev/i18n/de/CSharp/rules/06-tooling.md +493 -0
- package/Dev/i18n/de/CSharp/rules/07-testing-csharp.md +566 -0
- package/Dev/i18n/de/CSharp/rules/08-quality-tools.md +497 -0
- package/Dev/i18n/de/CSharp/rules/11-security-csharp.md +568 -0
- package/Dev/i18n/de/CSharp/rules/12-aspire-cloud-native.md +514 -0
- package/Dev/i18n/de/CSharp/templates/command-handler.template.cs +100 -0
- package/Dev/i18n/de/CSharp/templates/entity.template.cs +159 -0
- package/Dev/i18n/de/Common/commands/add-technology.md +195 -0
- package/Dev/i18n/de/Laravel/CLAUDE.md.template +104 -0
- package/Dev/i18n/de/Laravel/agents/laravel-reviewer.md +200 -0
- package/Dev/i18n/de/Laravel/checklists/new-feature.md +277 -0
- package/Dev/i18n/de/Laravel/checklists/pre-commit.md +156 -0
- package/Dev/i18n/de/Laravel/commands/check-architecture.md +306 -0
- package/Dev/i18n/de/Laravel/commands/check-code-quality.md +302 -0
- package/Dev/i18n/de/Laravel/commands/check-compliance.md +141 -0
- package/Dev/i18n/de/Laravel/commands/check-security.md +372 -0
- package/Dev/i18n/de/Laravel/commands/check-testing.md +397 -0
- package/Dev/i18n/de/Laravel/commands/generate-controller.md +388 -0
- package/Dev/i18n/de/Laravel/rules/00-project-context.md.template +140 -0
- package/Dev/i18n/de/Laravel/rules/02-architecture-laravel.md +644 -0
- package/Dev/i18n/de/Laravel/rules/03-coding-standards.md +573 -0
- package/Dev/i18n/de/Laravel/rules/06-tooling.md +580 -0
- package/Dev/i18n/de/Laravel/rules/07-testing-laravel.md +525 -0
- package/Dev/i18n/de/Laravel/rules/08-quality-tools.md +591 -0
- package/Dev/i18n/de/Laravel/rules/11-security-laravel.md +787 -0
- package/Dev/i18n/de/Laravel/templates/action.template.php +79 -0
- package/Dev/i18n/de/Laravel/templates/controller.template.php +99 -0
- package/Dev/i18n/de/Laravel/templates/model.template.php +206 -0
- package/Dev/i18n/de/Laravel/templates/test.template.php +263 -0
- package/Dev/i18n/de/PHP/CLAUDE.md.template +460 -0
- package/Dev/i18n/de/PHP/agents/php-reviewer.md +345 -0
- package/Dev/i18n/de/PHP/checklists/new-feature.md +132 -0
- package/Dev/i18n/de/PHP/checklists/pre-commit.md +231 -0
- package/Dev/i18n/de/PHP/commands/check-architecture.md +557 -0
- package/Dev/i18n/de/PHP/commands/check-code-quality.md +448 -0
- package/Dev/i18n/de/PHP/commands/check-compliance.md +477 -0
- package/Dev/i18n/de/PHP/commands/check-security.md +420 -0
- package/Dev/i18n/de/PHP/commands/check-testing.md +486 -0
- package/Dev/i18n/de/PHP/rules/00-project-context.md.template +266 -0
- package/Dev/i18n/de/PHP/rules/02-architecture-php.md +696 -0
- package/Dev/i18n/de/PHP/rules/03-coding-standards.md +641 -0
- package/Dev/i18n/de/PHP/rules/06-tooling.md +543 -0
- package/Dev/i18n/de/PHP/rules/07-testing-php.md +636 -0
- package/Dev/i18n/de/PHP/rules/08-quality-tools.md +533 -0
- package/Dev/i18n/de/PHP/rules/11-security-php.md +759 -0
- package/Dev/i18n/de/PHP/templates/entity.md +435 -0
- package/Dev/i18n/de/PHP/templates/use-case.md +512 -0
- package/Dev/i18n/de/PHP/templates/value-object.md +555 -0
- package/Dev/i18n/de/VueJS/CLAUDE.md.template +102 -0
- package/Dev/i18n/de/VueJS/agents/vuejs-reviewer.md +206 -0
- package/Dev/i18n/de/VueJS/checklists/new-feature.md +131 -0
- package/Dev/i18n/de/VueJS/checklists/pre-commit.md +68 -0
- package/Dev/i18n/de/VueJS/commands/check-architecture.md +137 -0
- package/Dev/i18n/de/VueJS/commands/check-code-quality.md +152 -0
- package/Dev/i18n/de/VueJS/commands/check-compliance.md +124 -0
- package/Dev/i18n/de/VueJS/commands/check-security.md +186 -0
- package/Dev/i18n/de/VueJS/commands/check-testing.md +185 -0
- package/Dev/i18n/de/VueJS/commands/generate-component.md +233 -0
- package/Dev/i18n/de/VueJS/rules/00-project-context.md.template +125 -0
- package/Dev/i18n/de/VueJS/rules/02-architecture-vuejs.md +375 -0
- package/Dev/i18n/de/VueJS/rules/03-coding-standards.md +502 -0
- package/Dev/i18n/de/VueJS/rules/06-tooling.md +422 -0
- package/Dev/i18n/de/VueJS/rules/07-testing-vuejs.md +606 -0
- package/Dev/i18n/de/VueJS/rules/08-quality-tools.md +441 -0
- package/Dev/i18n/de/VueJS/rules/11-security-vuejs.md +465 -0
- package/Dev/i18n/de/VueJS/templates/component.template.vue +133 -0
- package/Dev/i18n/de/VueJS/templates/composable.template.ts +162 -0
- package/Dev/i18n/de/VueJS/templates/store.template.ts +282 -0
- package/Dev/i18n/de/VueJS/templates/test.template.ts +233 -0
- package/Dev/i18n/en/Angular/CLAUDE.md.template +49 -0
- package/Dev/i18n/en/Angular/agents/angular-reviewer.md +213 -0
- package/Dev/i18n/en/Angular/checklists/new-feature.md +125 -0
- package/Dev/i18n/en/Angular/checklists/pre-commit.md +77 -0
- package/Dev/i18n/en/Angular/commands/check-architecture.md +261 -0
- package/Dev/i18n/en/Angular/commands/check-code-quality.md +238 -0
- package/Dev/i18n/en/Angular/commands/check-compliance.md +199 -0
- package/Dev/i18n/en/Angular/commands/check-security.md +263 -0
- package/Dev/i18n/en/Angular/commands/check-testing.md +292 -0
- package/Dev/i18n/en/Angular/commands/generate-component.md +220 -0
- package/Dev/i18n/en/Angular/rules/00-project-context.md.template +78 -0
- package/Dev/i18n/en/Angular/rules/02-architecture-angular.md +477 -0
- package/Dev/i18n/en/Angular/rules/03-coding-standards.md +640 -0
- package/Dev/i18n/en/Angular/rules/06-tooling.md +516 -0
- package/Dev/i18n/en/Angular/rules/07-testing-angular.md +739 -0
- package/Dev/i18n/en/Angular/rules/08-quality-tools.md +501 -0
- package/Dev/i18n/en/Angular/rules/11-security-angular.md +497 -0
- package/Dev/i18n/en/Angular/templates/component.template.ts +115 -0
- package/Dev/i18n/en/Angular/templates/service.template.ts +203 -0
- package/Dev/i18n/en/CSharp/CLAUDE.md.template +65 -0
- package/Dev/i18n/en/CSharp/agents/csharp-reviewer.md +166 -0
- package/Dev/i18n/en/CSharp/checklists/new-feature.md +178 -0
- package/Dev/i18n/en/CSharp/checklists/pre-commit.md +126 -0
- package/Dev/i18n/en/CSharp/commands/check-architecture.md +294 -0
- package/Dev/i18n/en/CSharp/commands/check-code-quality.md +355 -0
- package/Dev/i18n/en/CSharp/commands/check-compliance.md +178 -0
- package/Dev/i18n/en/CSharp/commands/check-security.md +369 -0
- package/Dev/i18n/en/CSharp/commands/check-testing.md +295 -0
- package/Dev/i18n/en/CSharp/commands/generate-feature.md +481 -0
- package/Dev/i18n/en/CSharp/rules/00-project-context.md.template +100 -0
- package/Dev/i18n/en/CSharp/rules/02-architecture-csharp.md +536 -0
- package/Dev/i18n/en/CSharp/rules/03-coding-standards.md +494 -0
- package/Dev/i18n/en/CSharp/rules/06-tooling.md +493 -0
- package/Dev/i18n/en/CSharp/rules/07-testing-csharp.md +566 -0
- package/Dev/i18n/en/CSharp/rules/08-quality-tools.md +497 -0
- package/Dev/i18n/en/CSharp/rules/11-security-csharp.md +568 -0
- package/Dev/i18n/en/CSharp/rules/12-aspire-cloud-native.md +514 -0
- package/Dev/i18n/en/CSharp/templates/command-handler.template.cs +100 -0
- package/Dev/i18n/en/CSharp/templates/entity.template.cs +159 -0
- package/Dev/i18n/en/Common/commands/add-technology.md +293 -0
- package/Dev/i18n/en/Laravel/CLAUDE.md.template +104 -0
- package/Dev/i18n/en/Laravel/agents/laravel-reviewer.md +200 -0
- package/Dev/i18n/en/Laravel/checklists/new-feature.md +277 -0
- package/Dev/i18n/en/Laravel/checklists/pre-commit.md +156 -0
- package/Dev/i18n/en/Laravel/commands/check-architecture.md +306 -0
- package/Dev/i18n/en/Laravel/commands/check-code-quality.md +302 -0
- package/Dev/i18n/en/Laravel/commands/check-compliance.md +141 -0
- package/Dev/i18n/en/Laravel/commands/check-security.md +372 -0
- package/Dev/i18n/en/Laravel/commands/check-testing.md +397 -0
- package/Dev/i18n/en/Laravel/commands/generate-controller.md +388 -0
- package/Dev/i18n/en/Laravel/rules/00-project-context.md.template +140 -0
- package/Dev/i18n/en/Laravel/rules/02-architecture-laravel.md +644 -0
- package/Dev/i18n/en/Laravel/rules/03-coding-standards.md +573 -0
- package/Dev/i18n/en/Laravel/rules/06-tooling.md +580 -0
- package/Dev/i18n/en/Laravel/rules/07-testing-laravel.md +525 -0
- package/Dev/i18n/en/Laravel/rules/08-quality-tools.md +591 -0
- package/Dev/i18n/en/Laravel/rules/11-security-laravel.md +787 -0
- package/Dev/i18n/en/Laravel/templates/action.template.php +79 -0
- package/Dev/i18n/en/Laravel/templates/controller.template.php +99 -0
- package/Dev/i18n/en/Laravel/templates/model.template.php +206 -0
- package/Dev/i18n/en/Laravel/templates/test.template.php +263 -0
- package/Dev/i18n/en/PHP/CLAUDE.md.template +460 -0
- package/Dev/i18n/en/PHP/agents/php-reviewer.md +345 -0
- package/Dev/i18n/en/PHP/checklists/new-feature.md +132 -0
- package/Dev/i18n/en/PHP/checklists/pre-commit.md +231 -0
- package/Dev/i18n/en/PHP/commands/check-architecture.md +557 -0
- package/Dev/i18n/en/PHP/commands/check-code-quality.md +448 -0
- package/Dev/i18n/en/PHP/commands/check-compliance.md +477 -0
- package/Dev/i18n/en/PHP/commands/check-security.md +420 -0
- package/Dev/i18n/en/PHP/commands/check-testing.md +486 -0
- package/Dev/i18n/en/PHP/rules/00-project-context.md.template +266 -0
- package/Dev/i18n/en/PHP/rules/02-architecture-php.md +696 -0
- package/Dev/i18n/en/PHP/rules/03-coding-standards.md +641 -0
- package/Dev/i18n/en/PHP/rules/06-tooling.md +543 -0
- package/Dev/i18n/en/PHP/rules/07-testing-php.md +636 -0
- package/Dev/i18n/en/PHP/rules/08-quality-tools.md +533 -0
- package/Dev/i18n/en/PHP/rules/11-security-php.md +759 -0
- package/Dev/i18n/en/PHP/templates/entity.md +435 -0
- package/Dev/i18n/en/PHP/templates/use-case.md +512 -0
- package/Dev/i18n/en/PHP/templates/value-object.md +555 -0
- package/Dev/i18n/en/VueJS/CLAUDE.md.template +102 -0
- package/Dev/i18n/en/VueJS/agents/vuejs-reviewer.md +206 -0
- package/Dev/i18n/en/VueJS/checklists/new-feature.md +131 -0
- package/Dev/i18n/en/VueJS/checklists/pre-commit.md +68 -0
- package/Dev/i18n/en/VueJS/commands/check-architecture.md +137 -0
- package/Dev/i18n/en/VueJS/commands/check-code-quality.md +152 -0
- package/Dev/i18n/en/VueJS/commands/check-compliance.md +124 -0
- package/Dev/i18n/en/VueJS/commands/check-security.md +186 -0
- package/Dev/i18n/en/VueJS/commands/check-testing.md +185 -0
- package/Dev/i18n/en/VueJS/commands/generate-component.md +233 -0
- package/Dev/i18n/en/VueJS/rules/00-project-context.md.template +125 -0
- package/Dev/i18n/en/VueJS/rules/02-architecture-vuejs.md +375 -0
- package/Dev/i18n/en/VueJS/rules/03-coding-standards.md +502 -0
- package/Dev/i18n/en/VueJS/rules/06-tooling.md +422 -0
- package/Dev/i18n/en/VueJS/rules/07-testing-vuejs.md +606 -0
- package/Dev/i18n/en/VueJS/rules/08-quality-tools.md +441 -0
- package/Dev/i18n/en/VueJS/rules/11-security-vuejs.md +465 -0
- package/Dev/i18n/en/VueJS/templates/component.template.vue +133 -0
- package/Dev/i18n/en/VueJS/templates/composable.template.ts +162 -0
- package/Dev/i18n/en/VueJS/templates/store.template.ts +282 -0
- package/Dev/i18n/en/VueJS/templates/test.template.ts +233 -0
- package/Dev/i18n/es/Angular/CLAUDE.md.template +49 -0
- package/Dev/i18n/es/Angular/agents/angular-reviewer.md +213 -0
- package/Dev/i18n/es/Angular/checklists/new-feature.md +125 -0
- package/Dev/i18n/es/Angular/checklists/pre-commit.md +77 -0
- package/Dev/i18n/es/Angular/commands/check-architecture.md +261 -0
- package/Dev/i18n/es/Angular/commands/check-code-quality.md +238 -0
- package/Dev/i18n/es/Angular/commands/check-compliance.md +199 -0
- package/Dev/i18n/es/Angular/commands/check-security.md +263 -0
- package/Dev/i18n/es/Angular/commands/check-testing.md +292 -0
- package/Dev/i18n/es/Angular/commands/generate-component.md +220 -0
- package/Dev/i18n/es/Angular/rules/00-project-context.md.template +78 -0
- package/Dev/i18n/es/Angular/rules/02-architecture-angular.md +477 -0
- package/Dev/i18n/es/Angular/rules/03-coding-standards.md +640 -0
- package/Dev/i18n/es/Angular/rules/06-tooling.md +516 -0
- package/Dev/i18n/es/Angular/rules/07-testing-angular.md +739 -0
- package/Dev/i18n/es/Angular/rules/08-quality-tools.md +501 -0
- package/Dev/i18n/es/Angular/rules/11-security-angular.md +497 -0
- package/Dev/i18n/es/Angular/templates/component.template.ts +115 -0
- package/Dev/i18n/es/Angular/templates/service.template.ts +203 -0
- package/Dev/i18n/es/CSharp/CLAUDE.md.template +65 -0
- package/Dev/i18n/es/CSharp/agents/csharp-reviewer.md +166 -0
- package/Dev/i18n/es/CSharp/checklists/new-feature.md +178 -0
- package/Dev/i18n/es/CSharp/checklists/pre-commit.md +126 -0
- package/Dev/i18n/es/CSharp/commands/check-architecture.md +294 -0
- package/Dev/i18n/es/CSharp/commands/check-code-quality.md +355 -0
- package/Dev/i18n/es/CSharp/commands/check-compliance.md +178 -0
- package/Dev/i18n/es/CSharp/commands/check-security.md +369 -0
- package/Dev/i18n/es/CSharp/commands/check-testing.md +295 -0
- package/Dev/i18n/es/CSharp/commands/generate-feature.md +481 -0
- package/Dev/i18n/es/CSharp/rules/00-project-context.md.template +100 -0
- package/Dev/i18n/es/CSharp/rules/02-architecture-csharp.md +536 -0
- package/Dev/i18n/es/CSharp/rules/03-coding-standards.md +494 -0
- package/Dev/i18n/es/CSharp/rules/06-tooling.md +493 -0
- package/Dev/i18n/es/CSharp/rules/07-testing-csharp.md +566 -0
- package/Dev/i18n/es/CSharp/rules/08-quality-tools.md +497 -0
- package/Dev/i18n/es/CSharp/rules/11-security-csharp.md +568 -0
- package/Dev/i18n/es/CSharp/rules/12-aspire-cloud-native.md +514 -0
- package/Dev/i18n/es/CSharp/templates/command-handler.template.cs +100 -0
- package/Dev/i18n/es/CSharp/templates/entity.template.cs +159 -0
- package/Dev/i18n/es/Common/commands/add-technology.md +195 -0
- package/Dev/i18n/es/Laravel/CLAUDE.md.template +104 -0
- package/Dev/i18n/es/Laravel/agents/laravel-reviewer.md +200 -0
- package/Dev/i18n/es/Laravel/checklists/new-feature.md +277 -0
- package/Dev/i18n/es/Laravel/checklists/pre-commit.md +156 -0
- package/Dev/i18n/es/Laravel/commands/check-architecture.md +306 -0
- package/Dev/i18n/es/Laravel/commands/check-code-quality.md +302 -0
- package/Dev/i18n/es/Laravel/commands/check-compliance.md +141 -0
- package/Dev/i18n/es/Laravel/commands/check-security.md +372 -0
- package/Dev/i18n/es/Laravel/commands/check-testing.md +397 -0
- package/Dev/i18n/es/Laravel/commands/generate-controller.md +388 -0
- package/Dev/i18n/es/Laravel/rules/00-project-context.md.template +140 -0
- package/Dev/i18n/es/Laravel/rules/02-architecture-laravel.md +644 -0
- package/Dev/i18n/es/Laravel/rules/03-coding-standards.md +573 -0
- package/Dev/i18n/es/Laravel/rules/06-tooling.md +580 -0
- package/Dev/i18n/es/Laravel/rules/07-testing-laravel.md +525 -0
- package/Dev/i18n/es/Laravel/rules/08-quality-tools.md +591 -0
- package/Dev/i18n/es/Laravel/rules/11-security-laravel.md +787 -0
- package/Dev/i18n/es/Laravel/templates/action.template.php +79 -0
- package/Dev/i18n/es/Laravel/templates/controller.template.php +99 -0
- package/Dev/i18n/es/Laravel/templates/model.template.php +206 -0
- package/Dev/i18n/es/Laravel/templates/test.template.php +263 -0
- package/Dev/i18n/es/PHP/CLAUDE.md.template +460 -0
- package/Dev/i18n/es/PHP/agents/php-reviewer.md +345 -0
- package/Dev/i18n/es/PHP/checklists/new-feature.md +132 -0
- package/Dev/i18n/es/PHP/checklists/pre-commit.md +231 -0
- package/Dev/i18n/es/PHP/commands/check-architecture.md +557 -0
- package/Dev/i18n/es/PHP/commands/check-code-quality.md +448 -0
- package/Dev/i18n/es/PHP/commands/check-compliance.md +477 -0
- package/Dev/i18n/es/PHP/commands/check-security.md +420 -0
- package/Dev/i18n/es/PHP/commands/check-testing.md +486 -0
- package/Dev/i18n/es/PHP/rules/00-project-context.md.template +266 -0
- package/Dev/i18n/es/PHP/rules/02-architecture-php.md +696 -0
- package/Dev/i18n/es/PHP/rules/03-coding-standards.md +641 -0
- package/Dev/i18n/es/PHP/rules/06-tooling.md +543 -0
- package/Dev/i18n/es/PHP/rules/07-testing-php.md +636 -0
- package/Dev/i18n/es/PHP/rules/08-quality-tools.md +533 -0
- package/Dev/i18n/es/PHP/rules/11-security-php.md +759 -0
- package/Dev/i18n/es/PHP/templates/entity.md +435 -0
- package/Dev/i18n/es/PHP/templates/use-case.md +512 -0
- package/Dev/i18n/es/PHP/templates/value-object.md +555 -0
- package/Dev/i18n/es/VueJS/CLAUDE.md.template +102 -0
- package/Dev/i18n/es/VueJS/agents/vuejs-reviewer.md +206 -0
- package/Dev/i18n/es/VueJS/checklists/new-feature.md +131 -0
- package/Dev/i18n/es/VueJS/checklists/pre-commit.md +68 -0
- package/Dev/i18n/es/VueJS/commands/check-architecture.md +137 -0
- package/Dev/i18n/es/VueJS/commands/check-code-quality.md +152 -0
- package/Dev/i18n/es/VueJS/commands/check-compliance.md +124 -0
- package/Dev/i18n/es/VueJS/commands/check-security.md +186 -0
- package/Dev/i18n/es/VueJS/commands/check-testing.md +185 -0
- package/Dev/i18n/es/VueJS/commands/generate-component.md +233 -0
- package/Dev/i18n/es/VueJS/rules/00-project-context.md.template +125 -0
- package/Dev/i18n/es/VueJS/rules/02-architecture-vuejs.md +375 -0
- package/Dev/i18n/es/VueJS/rules/03-coding-standards.md +502 -0
- package/Dev/i18n/es/VueJS/rules/06-tooling.md +422 -0
- package/Dev/i18n/es/VueJS/rules/07-testing-vuejs.md +606 -0
- package/Dev/i18n/es/VueJS/rules/08-quality-tools.md +441 -0
- package/Dev/i18n/es/VueJS/rules/11-security-vuejs.md +465 -0
- package/Dev/i18n/es/VueJS/templates/component.template.vue +133 -0
- package/Dev/i18n/es/VueJS/templates/composable.template.ts +162 -0
- package/Dev/i18n/es/VueJS/templates/store.template.ts +282 -0
- package/Dev/i18n/es/VueJS/templates/test.template.ts +233 -0
- package/Dev/i18n/fr/Angular/CLAUDE.md.template +49 -0
- package/Dev/i18n/fr/Angular/agents/angular-reviewer.md +213 -0
- package/Dev/i18n/fr/Angular/checklists/new-feature.md +125 -0
- package/Dev/i18n/fr/Angular/checklists/pre-commit.md +77 -0
- package/Dev/i18n/fr/Angular/commands/check-architecture.md +261 -0
- package/Dev/i18n/fr/Angular/commands/check-code-quality.md +238 -0
- package/Dev/i18n/fr/Angular/commands/check-compliance.md +199 -0
- package/Dev/i18n/fr/Angular/commands/check-security.md +263 -0
- package/Dev/i18n/fr/Angular/commands/check-testing.md +292 -0
- package/Dev/i18n/fr/Angular/commands/generate-component.md +220 -0
- package/Dev/i18n/fr/Angular/rules/00-project-context.md.template +78 -0
- package/Dev/i18n/fr/Angular/rules/02-architecture-angular.md +477 -0
- package/Dev/i18n/fr/Angular/rules/03-coding-standards.md +640 -0
- package/Dev/i18n/fr/Angular/rules/06-tooling.md +516 -0
- package/Dev/i18n/fr/Angular/rules/07-testing-angular.md +739 -0
- package/Dev/i18n/fr/Angular/rules/08-quality-tools.md +501 -0
- package/Dev/i18n/fr/Angular/rules/11-security-angular.md +497 -0
- package/Dev/i18n/fr/Angular/templates/component.template.ts +115 -0
- package/Dev/i18n/fr/Angular/templates/service.template.ts +203 -0
- package/Dev/i18n/fr/CSharp/CLAUDE.md.template +65 -0
- package/Dev/i18n/fr/CSharp/agents/csharp-reviewer.md +166 -0
- package/Dev/i18n/fr/CSharp/checklists/new-feature.md +178 -0
- package/Dev/i18n/fr/CSharp/checklists/pre-commit.md +126 -0
- package/Dev/i18n/fr/CSharp/commands/check-architecture.md +294 -0
- package/Dev/i18n/fr/CSharp/commands/check-code-quality.md +355 -0
- package/Dev/i18n/fr/CSharp/commands/check-compliance.md +178 -0
- package/Dev/i18n/fr/CSharp/commands/check-security.md +369 -0
- package/Dev/i18n/fr/CSharp/commands/check-testing.md +295 -0
- package/Dev/i18n/fr/CSharp/commands/generate-feature.md +481 -0
- package/Dev/i18n/fr/CSharp/rules/00-project-context.md.template +100 -0
- package/Dev/i18n/fr/CSharp/rules/02-architecture-csharp.md +536 -0
- package/Dev/i18n/fr/CSharp/rules/03-coding-standards.md +494 -0
- package/Dev/i18n/fr/CSharp/rules/06-tooling.md +493 -0
- package/Dev/i18n/fr/CSharp/rules/07-testing-csharp.md +566 -0
- package/Dev/i18n/fr/CSharp/rules/08-quality-tools.md +497 -0
- package/Dev/i18n/fr/CSharp/rules/11-security-csharp.md +568 -0
- package/Dev/i18n/fr/CSharp/rules/12-aspire-cloud-native.md +514 -0
- package/Dev/i18n/fr/CSharp/templates/command-handler.template.cs +100 -0
- package/Dev/i18n/fr/CSharp/templates/entity.template.cs +159 -0
- package/Dev/i18n/fr/Common/commands/add-technology.md +293 -0
- package/Dev/i18n/fr/Laravel/CLAUDE.md.template +104 -0
- package/Dev/i18n/fr/Laravel/agents/laravel-reviewer.md +200 -0
- package/Dev/i18n/fr/Laravel/checklists/new-feature.md +277 -0
- package/Dev/i18n/fr/Laravel/checklists/pre-commit.md +156 -0
- package/Dev/i18n/fr/Laravel/commands/check-architecture.md +306 -0
- package/Dev/i18n/fr/Laravel/commands/check-code-quality.md +302 -0
- package/Dev/i18n/fr/Laravel/commands/check-compliance.md +141 -0
- package/Dev/i18n/fr/Laravel/commands/check-security.md +372 -0
- package/Dev/i18n/fr/Laravel/commands/check-testing.md +397 -0
- package/Dev/i18n/fr/Laravel/commands/generate-controller.md +388 -0
- package/Dev/i18n/fr/Laravel/rules/00-project-context.md.template +140 -0
- package/Dev/i18n/fr/Laravel/rules/02-architecture-laravel.md +644 -0
- package/Dev/i18n/fr/Laravel/rules/03-coding-standards.md +573 -0
- package/Dev/i18n/fr/Laravel/rules/06-tooling.md +580 -0
- package/Dev/i18n/fr/Laravel/rules/07-testing-laravel.md +525 -0
- package/Dev/i18n/fr/Laravel/rules/08-quality-tools.md +591 -0
- package/Dev/i18n/fr/Laravel/rules/11-security-laravel.md +787 -0
- package/Dev/i18n/fr/Laravel/templates/action.template.php +79 -0
- package/Dev/i18n/fr/Laravel/templates/controller.template.php +99 -0
- package/Dev/i18n/fr/Laravel/templates/model.template.php +206 -0
- package/Dev/i18n/fr/Laravel/templates/test.template.php +263 -0
- package/Dev/i18n/fr/PHP/CLAUDE.md.template +460 -0
- package/Dev/i18n/fr/PHP/agents/php-reviewer.md +345 -0
- package/Dev/i18n/fr/PHP/checklists/new-feature.md +132 -0
- package/Dev/i18n/fr/PHP/checklists/pre-commit.md +231 -0
- package/Dev/i18n/fr/PHP/commands/check-architecture.md +557 -0
- package/Dev/i18n/fr/PHP/commands/check-code-quality.md +448 -0
- package/Dev/i18n/fr/PHP/commands/check-compliance.md +477 -0
- package/Dev/i18n/fr/PHP/commands/check-security.md +420 -0
- package/Dev/i18n/fr/PHP/commands/check-testing.md +486 -0
- package/Dev/i18n/fr/PHP/rules/00-project-context.md.template +266 -0
- package/Dev/i18n/fr/PHP/rules/02-architecture-php.md +506 -0
- package/Dev/i18n/fr/PHP/rules/03-coding-standards.md +585 -0
- package/Dev/i18n/fr/PHP/rules/06-tooling.md +543 -0
- package/Dev/i18n/fr/PHP/rules/07-testing-php.md +636 -0
- package/Dev/i18n/fr/PHP/rules/08-quality-tools.md +533 -0
- package/Dev/i18n/fr/PHP/rules/11-security-php.md +642 -0
- package/Dev/i18n/fr/PHP/templates/entity.md +435 -0
- package/Dev/i18n/fr/PHP/templates/use-case.md +512 -0
- package/Dev/i18n/fr/PHP/templates/value-object.md +555 -0
- package/Dev/i18n/fr/VueJS/CLAUDE.md.template +102 -0
- package/Dev/i18n/fr/VueJS/agents/vuejs-reviewer.md +206 -0
- package/Dev/i18n/fr/VueJS/checklists/new-feature.md +131 -0
- package/Dev/i18n/fr/VueJS/checklists/pre-commit.md +68 -0
- package/Dev/i18n/fr/VueJS/commands/check-architecture.md +137 -0
- package/Dev/i18n/fr/VueJS/commands/check-code-quality.md +152 -0
- package/Dev/i18n/fr/VueJS/commands/check-compliance.md +124 -0
- package/Dev/i18n/fr/VueJS/commands/check-security.md +186 -0
- package/Dev/i18n/fr/VueJS/commands/check-testing.md +185 -0
- package/Dev/i18n/fr/VueJS/commands/generate-component.md +233 -0
- package/Dev/i18n/fr/VueJS/rules/00-project-context.md.template +125 -0
- package/Dev/i18n/fr/VueJS/rules/02-architecture-vuejs.md +375 -0
- package/Dev/i18n/fr/VueJS/rules/03-coding-standards.md +502 -0
- package/Dev/i18n/fr/VueJS/rules/06-tooling.md +422 -0
- package/Dev/i18n/fr/VueJS/rules/07-testing-vuejs.md +606 -0
- package/Dev/i18n/fr/VueJS/rules/08-quality-tools.md +441 -0
- package/Dev/i18n/fr/VueJS/rules/11-security-vuejs.md +465 -0
- package/Dev/i18n/fr/VueJS/templates/component.template.vue +133 -0
- package/Dev/i18n/fr/VueJS/templates/composable.template.ts +162 -0
- package/Dev/i18n/fr/VueJS/templates/store.template.ts +282 -0
- package/Dev/i18n/fr/VueJS/templates/test.template.ts +233 -0
- package/Dev/i18n/pt/Angular/CLAUDE.md.template +49 -0
- package/Dev/i18n/pt/Angular/agents/angular-reviewer.md +213 -0
- package/Dev/i18n/pt/Angular/checklists/new-feature.md +125 -0
- package/Dev/i18n/pt/Angular/checklists/pre-commit.md +77 -0
- package/Dev/i18n/pt/Angular/commands/check-architecture.md +261 -0
- package/Dev/i18n/pt/Angular/commands/check-code-quality.md +238 -0
- package/Dev/i18n/pt/Angular/commands/check-compliance.md +199 -0
- package/Dev/i18n/pt/Angular/commands/check-security.md +263 -0
- package/Dev/i18n/pt/Angular/commands/check-testing.md +292 -0
- package/Dev/i18n/pt/Angular/commands/generate-component.md +220 -0
- package/Dev/i18n/pt/Angular/rules/00-project-context.md.template +78 -0
- package/Dev/i18n/pt/Angular/rules/02-architecture-angular.md +477 -0
- package/Dev/i18n/pt/Angular/rules/03-coding-standards.md +640 -0
- package/Dev/i18n/pt/Angular/rules/06-tooling.md +516 -0
- package/Dev/i18n/pt/Angular/rules/07-testing-angular.md +739 -0
- package/Dev/i18n/pt/Angular/rules/08-quality-tools.md +501 -0
- package/Dev/i18n/pt/Angular/rules/11-security-angular.md +497 -0
- package/Dev/i18n/pt/Angular/templates/component.template.ts +115 -0
- package/Dev/i18n/pt/Angular/templates/service.template.ts +203 -0
- package/Dev/i18n/pt/CSharp/CLAUDE.md.template +65 -0
- package/Dev/i18n/pt/CSharp/agents/csharp-reviewer.md +166 -0
- package/Dev/i18n/pt/CSharp/checklists/new-feature.md +178 -0
- package/Dev/i18n/pt/CSharp/checklists/pre-commit.md +126 -0
- package/Dev/i18n/pt/CSharp/commands/check-architecture.md +294 -0
- package/Dev/i18n/pt/CSharp/commands/check-code-quality.md +355 -0
- package/Dev/i18n/pt/CSharp/commands/check-compliance.md +178 -0
- package/Dev/i18n/pt/CSharp/commands/check-security.md +369 -0
- package/Dev/i18n/pt/CSharp/commands/check-testing.md +295 -0
- package/Dev/i18n/pt/CSharp/commands/generate-feature.md +481 -0
- package/Dev/i18n/pt/CSharp/rules/00-project-context.md.template +100 -0
- package/Dev/i18n/pt/CSharp/rules/02-architecture-csharp.md +536 -0
- package/Dev/i18n/pt/CSharp/rules/03-coding-standards.md +494 -0
- package/Dev/i18n/pt/CSharp/rules/06-tooling.md +493 -0
- package/Dev/i18n/pt/CSharp/rules/07-testing-csharp.md +566 -0
- package/Dev/i18n/pt/CSharp/rules/08-quality-tools.md +497 -0
- package/Dev/i18n/pt/CSharp/rules/11-security-csharp.md +568 -0
- package/Dev/i18n/pt/CSharp/rules/12-aspire-cloud-native.md +514 -0
- package/Dev/i18n/pt/CSharp/templates/command-handler.template.cs +100 -0
- package/Dev/i18n/pt/CSharp/templates/entity.template.cs +159 -0
- package/Dev/i18n/pt/Common/commands/add-technology.md +195 -0
- package/Dev/i18n/pt/Laravel/CLAUDE.md.template +104 -0
- package/Dev/i18n/pt/Laravel/agents/laravel-reviewer.md +200 -0
- package/Dev/i18n/pt/Laravel/checklists/new-feature.md +277 -0
- package/Dev/i18n/pt/Laravel/checklists/pre-commit.md +156 -0
- package/Dev/i18n/pt/Laravel/commands/check-architecture.md +306 -0
- package/Dev/i18n/pt/Laravel/commands/check-code-quality.md +302 -0
- package/Dev/i18n/pt/Laravel/commands/check-compliance.md +141 -0
- package/Dev/i18n/pt/Laravel/commands/check-security.md +372 -0
- package/Dev/i18n/pt/Laravel/commands/check-testing.md +397 -0
- package/Dev/i18n/pt/Laravel/commands/generate-controller.md +388 -0
- package/Dev/i18n/pt/Laravel/rules/00-project-context.md.template +140 -0
- package/Dev/i18n/pt/Laravel/rules/02-architecture-laravel.md +644 -0
- package/Dev/i18n/pt/Laravel/rules/03-coding-standards.md +573 -0
- package/Dev/i18n/pt/Laravel/rules/06-tooling.md +580 -0
- package/Dev/i18n/pt/Laravel/rules/07-testing-laravel.md +525 -0
- package/Dev/i18n/pt/Laravel/rules/08-quality-tools.md +591 -0
- package/Dev/i18n/pt/Laravel/rules/11-security-laravel.md +787 -0
- package/Dev/i18n/pt/Laravel/templates/action.template.php +79 -0
- package/Dev/i18n/pt/Laravel/templates/controller.template.php +99 -0
- package/Dev/i18n/pt/Laravel/templates/model.template.php +206 -0
- package/Dev/i18n/pt/Laravel/templates/test.template.php +263 -0
- package/Dev/i18n/pt/PHP/CLAUDE.md.template +460 -0
- package/Dev/i18n/pt/PHP/agents/php-reviewer.md +345 -0
- package/Dev/i18n/pt/PHP/checklists/new-feature.md +132 -0
- package/Dev/i18n/pt/PHP/checklists/pre-commit.md +231 -0
- package/Dev/i18n/pt/PHP/commands/check-architecture.md +557 -0
- package/Dev/i18n/pt/PHP/commands/check-code-quality.md +448 -0
- package/Dev/i18n/pt/PHP/commands/check-compliance.md +477 -0
- package/Dev/i18n/pt/PHP/commands/check-security.md +420 -0
- package/Dev/i18n/pt/PHP/commands/check-testing.md +486 -0
- package/Dev/i18n/pt/PHP/rules/00-project-context.md.template +266 -0
- package/Dev/i18n/pt/PHP/rules/02-architecture-php.md +696 -0
- package/Dev/i18n/pt/PHP/rules/03-coding-standards.md +641 -0
- package/Dev/i18n/pt/PHP/rules/06-tooling.md +543 -0
- package/Dev/i18n/pt/PHP/rules/07-testing-php.md +636 -0
- package/Dev/i18n/pt/PHP/rules/08-quality-tools.md +533 -0
- package/Dev/i18n/pt/PHP/rules/11-security-php.md +759 -0
- package/Dev/i18n/pt/PHP/templates/entity.md +435 -0
- package/Dev/i18n/pt/PHP/templates/use-case.md +512 -0
- package/Dev/i18n/pt/PHP/templates/value-object.md +555 -0
- package/Dev/i18n/pt/VueJS/CLAUDE.md.template +102 -0
- package/Dev/i18n/pt/VueJS/agents/vuejs-reviewer.md +206 -0
- package/Dev/i18n/pt/VueJS/checklists/new-feature.md +131 -0
- package/Dev/i18n/pt/VueJS/checklists/pre-commit.md +68 -0
- package/Dev/i18n/pt/VueJS/commands/check-architecture.md +137 -0
- package/Dev/i18n/pt/VueJS/commands/check-code-quality.md +152 -0
- package/Dev/i18n/pt/VueJS/commands/check-compliance.md +124 -0
- package/Dev/i18n/pt/VueJS/commands/check-security.md +186 -0
- package/Dev/i18n/pt/VueJS/commands/check-testing.md +185 -0
- package/Dev/i18n/pt/VueJS/commands/generate-component.md +233 -0
- package/Dev/i18n/pt/VueJS/rules/00-project-context.md.template +125 -0
- package/Dev/i18n/pt/VueJS/rules/02-architecture-vuejs.md +375 -0
- package/Dev/i18n/pt/VueJS/rules/03-coding-standards.md +502 -0
- package/Dev/i18n/pt/VueJS/rules/06-tooling.md +422 -0
- package/Dev/i18n/pt/VueJS/rules/07-testing-vuejs.md +606 -0
- package/Dev/i18n/pt/VueJS/rules/08-quality-tools.md +441 -0
- package/Dev/i18n/pt/VueJS/rules/11-security-vuejs.md +465 -0
- package/Dev/i18n/pt/VueJS/templates/component.template.vue +133 -0
- package/Dev/i18n/pt/VueJS/templates/composable.template.ts +162 -0
- package/Dev/i18n/pt/VueJS/templates/store.template.ts +282 -0
- package/Dev/i18n/pt/VueJS/templates/test.template.ts +233 -0
- package/Dev/scripts/install-angular-rules.sh +543 -0
- package/Dev/scripts/install-common-rules.sh +13 -1
- package/Dev/scripts/install-csharp-rules.sh +544 -0
- package/Dev/scripts/install-flutter-rules.sh +17 -4
- package/Dev/scripts/install-from-config.sh +61 -23
- package/Dev/scripts/install-laravel-rules.sh +552 -0
- package/Dev/scripts/install-php-rules.sh +537 -0
- package/Dev/scripts/install-python-rules.sh +17 -4
- package/Dev/scripts/install-react-rules.sh +17 -4
- package/Dev/scripts/install-reactnative-rules.sh +17 -4
- package/Dev/scripts/install-symfony-rules.sh +22 -4
- package/Dev/scripts/install-vuejs-rules.sh +588 -0
- package/README.md +68 -2
- package/Tools/Ralph/README.md +106 -10
- package/Tools/Ralph/lib/checkpoint.sh +15 -9
- package/Tools/Ralph/lib/circuit-breaker.sh +16 -7
- package/Tools/Ralph/lib/context-manager.sh +473 -0
- package/Tools/Ralph/lib/context-reconstruction.sh +329 -0
- package/Tools/Ralph/lib/dod-validator.sh +17 -4
- package/Tools/Ralph/lib/loop.sh +33 -10
- package/Tools/Ralph/lib/session.sh +88 -33
- package/Tools/Ralph/lib/sprint-progress.sh +832 -0
- package/Tools/Ralph/lib/utils.sh +362 -0
- package/Tools/Ralph/ralph.sh +172 -14
- package/Tools/Ralph/templates/ralph.yml.template +87 -0
- package/Tools/Ralph/templates/sprint-progress.md.template +72 -0
- package/Tools/i18n/ralph/de.sh +31 -0
- package/Tools/i18n/ralph/en.sh +31 -0
- package/Tools/i18n/ralph/es.sh +31 -0
- package/Tools/i18n/ralph/fr.sh +31 -0
- package/Tools/i18n/ralph/pt.sh +31 -0
- package/package.json +1 -1
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Angular Code Quality Analysis
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Angular Code Quality Analysis
|
|
6
|
+
|
|
7
|
+
Analyze code quality and identify areas for improvement in the Angular project.
|
|
8
|
+
|
|
9
|
+
## What This Command Does
|
|
10
|
+
|
|
11
|
+
1. **Code Quality Metrics**
|
|
12
|
+
- TypeScript strict compliance
|
|
13
|
+
- ESLint violations
|
|
14
|
+
- Code complexity
|
|
15
|
+
- Duplicated code
|
|
16
|
+
|
|
17
|
+
2. **Angular-Specific Quality**
|
|
18
|
+
- Component best practices
|
|
19
|
+
- RxJS patterns
|
|
20
|
+
- Memory leak prevention
|
|
21
|
+
- Performance patterns
|
|
22
|
+
|
|
23
|
+
3. **Generated Report**
|
|
24
|
+
- Quality score
|
|
25
|
+
- Issues by severity
|
|
26
|
+
- Actionable recommendations
|
|
27
|
+
|
|
28
|
+
## Quality Criteria
|
|
29
|
+
|
|
30
|
+
### 1. TypeScript Quality
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
// ✅ Good - Explicit types, null safety
|
|
34
|
+
interface User {
|
|
35
|
+
id: string;
|
|
36
|
+
name: string;
|
|
37
|
+
email: string | null;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function getUser(id: string): User | undefined {
|
|
41
|
+
return users.find(u => u.id === id);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const userName = getUser('1')?.name ?? 'Unknown';
|
|
45
|
+
|
|
46
|
+
// ❌ Bad - Implicit any, no null handling
|
|
47
|
+
function getUser(id) {
|
|
48
|
+
return users.find(u => u.id === id);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const userName = getUser('1').name; // Potential null error
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 2. Component Quality
|
|
55
|
+
|
|
56
|
+
```typescript
|
|
57
|
+
// ✅ Good - Small, focused component
|
|
58
|
+
@Component({
|
|
59
|
+
selector: 'app-user-avatar',
|
|
60
|
+
standalone: true,
|
|
61
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
62
|
+
template: `
|
|
63
|
+
<img [src]="avatarUrl()" [alt]="user().name" class="avatar" />
|
|
64
|
+
`
|
|
65
|
+
})
|
|
66
|
+
export class UserAvatarComponent {
|
|
67
|
+
user = input.required<User>();
|
|
68
|
+
avatarUrl = computed(() => this.user().avatar ?? '/default-avatar.png');
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// ❌ Bad - Large component doing too much
|
|
72
|
+
@Component({
|
|
73
|
+
selector: 'app-user-page',
|
|
74
|
+
template: `<!-- 500 lines of HTML -->`
|
|
75
|
+
})
|
|
76
|
+
export class UserPageComponent {
|
|
77
|
+
// 50+ methods, multiple responsibilities
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 3. RxJS Best Practices
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
// ✅ Good - Proper subscription management
|
|
85
|
+
export class UserListComponent implements OnInit {
|
|
86
|
+
private destroyRef = inject(DestroyRef);
|
|
87
|
+
|
|
88
|
+
ngOnInit(): void {
|
|
89
|
+
this.userService.users$
|
|
90
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
91
|
+
.subscribe(users => this.handleUsers(users));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// ❌ Bad - Memory leak (no unsubscribe)
|
|
96
|
+
export class UserListComponent implements OnInit {
|
|
97
|
+
ngOnInit(): void {
|
|
98
|
+
this.userService.users$.subscribe(users => {
|
|
99
|
+
this.users = users; // Never unsubscribed!
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 4. Performance Patterns
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
// ✅ Good - trackBy for lists
|
|
109
|
+
@Component({
|
|
110
|
+
template: `
|
|
111
|
+
@for (user of users(); track user.id) {
|
|
112
|
+
<app-user-card [user]="user" />
|
|
113
|
+
}
|
|
114
|
+
`
|
|
115
|
+
})
|
|
116
|
+
|
|
117
|
+
// ❌ Bad - No trackBy (causes re-render issues)
|
|
118
|
+
@Component({
|
|
119
|
+
template: `
|
|
120
|
+
@for (user of users(); track $index) {
|
|
121
|
+
<app-user-card [user]="user" />
|
|
122
|
+
}
|
|
123
|
+
`
|
|
124
|
+
})
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### 5. Error Handling
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
// ✅ Good - Proper error handling
|
|
131
|
+
loadUsers(): void {
|
|
132
|
+
this.loading.set(true);
|
|
133
|
+
this.error.set(null);
|
|
134
|
+
|
|
135
|
+
this.api.getUsers().subscribe({
|
|
136
|
+
next: users => {
|
|
137
|
+
this.users.set(users);
|
|
138
|
+
this.loading.set(false);
|
|
139
|
+
},
|
|
140
|
+
error: (err: HttpErrorResponse) => {
|
|
141
|
+
this.error.set(this.getErrorMessage(err));
|
|
142
|
+
this.loading.set(false);
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
private getErrorMessage(error: HttpErrorResponse): string {
|
|
148
|
+
if (error.status === 0) return 'Network error. Please check your connection.';
|
|
149
|
+
if (error.status === 404) return 'Users not found.';
|
|
150
|
+
return 'An unexpected error occurred.';
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// ❌ Bad - No error handling
|
|
154
|
+
loadUsers(): void {
|
|
155
|
+
this.api.getUsers().subscribe(users => {
|
|
156
|
+
this.users = users;
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Scoring Criteria
|
|
162
|
+
|
|
163
|
+
| Category | Weight | Criteria |
|
|
164
|
+
|----------|--------|----------|
|
|
165
|
+
| TypeScript Strict | 20% | No any, null safety |
|
|
166
|
+
| Component Size | 15% | <300 lines, single responsibility |
|
|
167
|
+
| Subscription Mgmt | 15% | All subscriptions cleaned up |
|
|
168
|
+
| Error Handling | 15% | Proper error handling patterns |
|
|
169
|
+
| Performance | 15% | trackBy, OnPush, lazy loading |
|
|
170
|
+
| Code Duplication | 10% | <5% duplicated code |
|
|
171
|
+
| Complexity | 10% | Cyclomatic complexity <10 |
|
|
172
|
+
|
|
173
|
+
## Output Format
|
|
174
|
+
|
|
175
|
+
```
|
|
176
|
+
══════════════════════════════════════════════════════════════
|
|
177
|
+
ANGULAR CODE QUALITY REPORT
|
|
178
|
+
══════════════════════════════════════════════════════════════
|
|
179
|
+
|
|
180
|
+
📊 QUALITY SCORE: 82/100
|
|
181
|
+
|
|
182
|
+
📝 TYPESCRIPT QUALITY: 90/100
|
|
183
|
+
──────────────────────────────────────────────────────────────
|
|
184
|
+
✅ Strict mode enabled
|
|
185
|
+
✅ No implicit any
|
|
186
|
+
⚠️ 3 instances of type assertions
|
|
187
|
+
- src/app/features/users/user.service.ts:45
|
|
188
|
+
|
|
189
|
+
🧩 COMPONENT QUALITY: 85/100
|
|
190
|
+
──────────────────────────────────────────────────────────────
|
|
191
|
+
✅ Average component size: 120 lines
|
|
192
|
+
⚠️ 2 components exceed 300 lines:
|
|
193
|
+
- src/app/features/dashboard/dashboard.component.ts (450 lines)
|
|
194
|
+
- src/app/features/users/user-form.component.ts (380 lines)
|
|
195
|
+
|
|
196
|
+
🔄 RXJS PATTERNS: 75/100
|
|
197
|
+
──────────────────────────────────────────────────────────────
|
|
198
|
+
✅ takeUntilDestroyed used: 18/20 subscriptions
|
|
199
|
+
❌ Potential memory leaks:
|
|
200
|
+
- src/app/features/chat/chat.component.ts:34
|
|
201
|
+
- src/app/core/services/websocket.service.ts:67
|
|
202
|
+
|
|
203
|
+
⚡ PERFORMANCE: 80/100
|
|
204
|
+
──────────────────────────────────────────────────────────────
|
|
205
|
+
✅ OnPush: 24/24 components
|
|
206
|
+
✅ trackBy: 15/18 @for loops
|
|
207
|
+
⚠️ Missing trackBy:
|
|
208
|
+
- src/app/shared/dropdown/dropdown.component.html:12
|
|
209
|
+
|
|
210
|
+
🚨 ERROR HANDLING: 85/100
|
|
211
|
+
──────────────────────────────────────────────────────────────
|
|
212
|
+
✅ Global error handler configured
|
|
213
|
+
✅ HTTP errors handled: 12/14 API calls
|
|
214
|
+
⚠️ Missing error handling:
|
|
215
|
+
- src/app/features/upload/upload.service.ts:28
|
|
216
|
+
|
|
217
|
+
📋 RECOMMENDATIONS
|
|
218
|
+
──────────────────────────────────────────────────────────────
|
|
219
|
+
1. Split large components into smaller pieces
|
|
220
|
+
2. Add takeUntilDestroyed to remaining subscriptions
|
|
221
|
+
3. Add trackBy to all @for loops
|
|
222
|
+
4. Add error handling to upload service
|
|
223
|
+
|
|
224
|
+
══════════════════════════════════════════════════════════════
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## Quality Checklist
|
|
228
|
+
|
|
229
|
+
- [ ] TypeScript strict mode enabled
|
|
230
|
+
- [ ] No explicit `any` types
|
|
231
|
+
- [ ] All subscriptions properly managed
|
|
232
|
+
- [ ] Error handling on all API calls
|
|
233
|
+
- [ ] Components <300 lines
|
|
234
|
+
- [ ] Cyclomatic complexity <10
|
|
235
|
+
- [ ] trackBy on all @for loops
|
|
236
|
+
- [ ] OnPush on all components
|
|
237
|
+
- [ ] <5% code duplication
|
|
238
|
+
- [ ] No console.log in production code
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Angular Standards Compliance Check
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Angular Standards Compliance Check
|
|
6
|
+
|
|
7
|
+
Verify that the Angular project follows established coding standards and best practices.
|
|
8
|
+
|
|
9
|
+
## What This Command Does
|
|
10
|
+
|
|
11
|
+
1. **Standards Verification**
|
|
12
|
+
- Check coding conventions
|
|
13
|
+
- Verify naming conventions
|
|
14
|
+
- Validate file organization
|
|
15
|
+
- Check import order
|
|
16
|
+
- Verify documentation standards
|
|
17
|
+
|
|
18
|
+
2. **Angular-Specific Checks**
|
|
19
|
+
- Standalone components usage
|
|
20
|
+
- Signals implementation
|
|
21
|
+
- OnPush change detection
|
|
22
|
+
- Modern control flow (@if, @for)
|
|
23
|
+
- Typed forms
|
|
24
|
+
|
|
25
|
+
3. **Generated Report**
|
|
26
|
+
- Non-compliant files
|
|
27
|
+
- Severity levels
|
|
28
|
+
- Remediation recommendations
|
|
29
|
+
- Compliance score (/100)
|
|
30
|
+
|
|
31
|
+
## Compliance Areas
|
|
32
|
+
|
|
33
|
+
### 1. Component Standards
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
// ✅ Compliant
|
|
37
|
+
@Component({
|
|
38
|
+
selector: 'app-user-profile',
|
|
39
|
+
standalone: true,
|
|
40
|
+
imports: [CommonModule],
|
|
41
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
42
|
+
template: `...`
|
|
43
|
+
})
|
|
44
|
+
export class UserProfileComponent {}
|
|
45
|
+
|
|
46
|
+
// ❌ Non-compliant
|
|
47
|
+
@Component({
|
|
48
|
+
selector: 'user-profile', // Missing app- prefix
|
|
49
|
+
// standalone: missing // Not standalone
|
|
50
|
+
// changeDetection: missing // Not OnPush
|
|
51
|
+
})
|
|
52
|
+
export class UserProfile {} // Missing Component suffix
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 2. Signal Usage
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
// ✅ Compliant - Using signals
|
|
59
|
+
export class CounterComponent {
|
|
60
|
+
count = signal(0);
|
|
61
|
+
doubleCount = computed(() => this.count() * 2);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// ❌ Non-compliant - Using observables for local state
|
|
65
|
+
export class CounterComponent {
|
|
66
|
+
count$ = new BehaviorSubject(0);
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 3. Template Syntax
|
|
71
|
+
|
|
72
|
+
```html
|
|
73
|
+
<!-- ✅ Compliant - Modern control flow -->
|
|
74
|
+
@if (loading()) {
|
|
75
|
+
<app-spinner />
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
@for (item of items(); track item.id) {
|
|
79
|
+
<app-item [data]="item" />
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
<!-- ❌ Non-compliant - Legacy syntax -->
|
|
83
|
+
<app-spinner *ngIf="loading"></app-spinner>
|
|
84
|
+
<app-item *ngFor="let item of items" [data]="item"></app-item>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 4. Dependency Injection
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
// ✅ Compliant - inject() function
|
|
91
|
+
export class MyComponent {
|
|
92
|
+
private readonly userService = inject(UserService);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// ⚠️ Warning - Constructor injection (valid but verbose)
|
|
96
|
+
export class MyComponent {
|
|
97
|
+
constructor(private userService: UserService) {}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 5. File Naming
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
✅ Compliant:
|
|
105
|
+
- user-profile.component.ts
|
|
106
|
+
- auth.service.ts
|
|
107
|
+
- auth.guard.ts
|
|
108
|
+
- date-format.pipe.ts
|
|
109
|
+
|
|
110
|
+
❌ Non-compliant:
|
|
111
|
+
- UserProfile.component.ts (PascalCase)
|
|
112
|
+
- authService.ts (missing suffix)
|
|
113
|
+
- AuthGuard.ts (PascalCase)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Scoring Criteria
|
|
117
|
+
|
|
118
|
+
| Category | Weight | Criteria |
|
|
119
|
+
|----------|--------|----------|
|
|
120
|
+
| Standalone Components | 20% | All components are standalone |
|
|
121
|
+
| Signals Usage | 15% | Local state uses signals |
|
|
122
|
+
| OnPush Strategy | 15% | All components use OnPush |
|
|
123
|
+
| Modern Control Flow | 10% | @if/@for instead of *ngIf/*ngFor |
|
|
124
|
+
| Typed Forms | 10% | Forms are strongly typed |
|
|
125
|
+
| Naming Conventions | 10% | Correct file/class naming |
|
|
126
|
+
| Import Organization | 10% | Imports properly ordered |
|
|
127
|
+
| Documentation | 10% | Key components documented |
|
|
128
|
+
|
|
129
|
+
## Output Format
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
══════════════════════════════════════════════════════════════
|
|
133
|
+
ANGULAR COMPLIANCE REPORT
|
|
134
|
+
══════════════════════════════════════════════════════════════
|
|
135
|
+
|
|
136
|
+
📊 SCORE: 85/100
|
|
137
|
+
|
|
138
|
+
✅ PASSING (6)
|
|
139
|
+
──────────────────────────────────────────────────────────────
|
|
140
|
+
• Standalone components: 100% (24/24 components)
|
|
141
|
+
• OnPush strategy: 100% (24/24 components)
|
|
142
|
+
• Typed forms: 100% (8/8 forms)
|
|
143
|
+
• Import organization: 100%
|
|
144
|
+
• File naming: 100%
|
|
145
|
+
• Documentation: 90%
|
|
146
|
+
|
|
147
|
+
⚠️ WARNINGS (2)
|
|
148
|
+
──────────────────────────────────────────────────────────────
|
|
149
|
+
• Modern control flow: 75% (18/24 templates)
|
|
150
|
+
- src/app/features/users/user-list.component.html:15 - Uses *ngFor
|
|
151
|
+
- src/app/shared/modal/modal.component.html:8 - Uses *ngIf
|
|
152
|
+
|
|
153
|
+
• Signals usage: 80% (16/20 components with local state)
|
|
154
|
+
- src/app/features/auth/login.component.ts - Uses BehaviorSubject
|
|
155
|
+
|
|
156
|
+
❌ ERRORS (1)
|
|
157
|
+
──────────────────────────────────────────────────────────────
|
|
158
|
+
• Constructor injection detected (prefer inject()):
|
|
159
|
+
- src/app/core/services/api.service.ts:15
|
|
160
|
+
|
|
161
|
+
📋 RECOMMENDATIONS
|
|
162
|
+
──────────────────────────────────────────────────────────────
|
|
163
|
+
1. Migrate remaining *ngFor to @for with track
|
|
164
|
+
2. Replace BehaviorSubject with signal() for local state
|
|
165
|
+
3. Use inject() function instead of constructor injection
|
|
166
|
+
|
|
167
|
+
══════════════════════════════════════════════════════════════
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Automated Checks
|
|
171
|
+
|
|
172
|
+
Run these commands to verify compliance:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
# Lint check
|
|
176
|
+
ng lint
|
|
177
|
+
|
|
178
|
+
# Type check
|
|
179
|
+
npx tsc --noEmit
|
|
180
|
+
|
|
181
|
+
# Test coverage
|
|
182
|
+
npm run test:ci
|
|
183
|
+
|
|
184
|
+
# Build check
|
|
185
|
+
ng build --configuration=production
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Checklist
|
|
189
|
+
|
|
190
|
+
- [ ] All components are standalone
|
|
191
|
+
- [ ] All components use OnPush change detection
|
|
192
|
+
- [ ] Local state uses signals (not BehaviorSubject)
|
|
193
|
+
- [ ] Templates use @if/@for/@switch
|
|
194
|
+
- [ ] Forms are typed (FormGroup<T>)
|
|
195
|
+
- [ ] inject() used for dependency injection
|
|
196
|
+
- [ ] File naming follows conventions
|
|
197
|
+
- [ ] Imports are organized
|
|
198
|
+
- [ ] Public API documented
|
|
199
|
+
- [ ] Tests pass with >80% coverage
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Angular Security Audit
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Angular Security Audit
|
|
6
|
+
|
|
7
|
+
Perform a comprehensive security audit of the Angular application.
|
|
8
|
+
|
|
9
|
+
## What This Command Does
|
|
10
|
+
|
|
11
|
+
1. **Vulnerability Scanning**
|
|
12
|
+
- XSS vulnerabilities
|
|
13
|
+
- CSRF protection
|
|
14
|
+
- Injection risks
|
|
15
|
+
- Authentication issues
|
|
16
|
+
|
|
17
|
+
2. **Dependency Audit**
|
|
18
|
+
- npm audit results
|
|
19
|
+
- Outdated packages
|
|
20
|
+
- Known vulnerabilities
|
|
21
|
+
|
|
22
|
+
3. **Generated Report**
|
|
23
|
+
- Security score
|
|
24
|
+
- Vulnerabilities by severity
|
|
25
|
+
- Remediation steps
|
|
26
|
+
|
|
27
|
+
## Security Checks
|
|
28
|
+
|
|
29
|
+
### 1. XSS Protection
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
// ✅ Safe - Angular sanitizes automatically
|
|
33
|
+
@Component({
|
|
34
|
+
template: `<div [innerHTML]="content"></div>`
|
|
35
|
+
})
|
|
36
|
+
export class SafeComponent {
|
|
37
|
+
content = '<p>Safe content</p>'; // Sanitized by Angular
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// ❌ Dangerous - Bypassing sanitization
|
|
41
|
+
@Component({
|
|
42
|
+
template: `<div [innerHTML]="trustedContent"></div>`
|
|
43
|
+
})
|
|
44
|
+
export class DangerousComponent {
|
|
45
|
+
trustedContent = this.sanitizer.bypassSecurityTrustHtml(userInput);
|
|
46
|
+
// Only bypass for trusted sources!
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 2. CSRF Protection
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
// ✅ Good - XSRF protection enabled
|
|
54
|
+
// app.config.ts
|
|
55
|
+
export const appConfig = {
|
|
56
|
+
providers: [
|
|
57
|
+
provideHttpClient(
|
|
58
|
+
withXsrfConfiguration({
|
|
59
|
+
cookieName: 'XSRF-TOKEN',
|
|
60
|
+
headerName: 'X-XSRF-TOKEN'
|
|
61
|
+
})
|
|
62
|
+
)
|
|
63
|
+
]
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// ❌ Bad - No CSRF protection
|
|
67
|
+
export const appConfig = {
|
|
68
|
+
providers: [
|
|
69
|
+
provideHttpClient() // No XSRF configuration
|
|
70
|
+
]
|
|
71
|
+
};
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 3. Authentication Security
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
// ✅ Good - Secure token handling
|
|
78
|
+
@Injectable({ providedIn: 'root' })
|
|
79
|
+
export class AuthService {
|
|
80
|
+
// Use sessionStorage (not localStorage) for tokens
|
|
81
|
+
private getToken(): string | null {
|
|
82
|
+
return sessionStorage.getItem('token');
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Check token expiration
|
|
86
|
+
isTokenValid(): boolean {
|
|
87
|
+
const token = this.getToken();
|
|
88
|
+
if (!token) return false;
|
|
89
|
+
|
|
90
|
+
try {
|
|
91
|
+
const payload = JSON.parse(atob(token.split('.')[1]));
|
|
92
|
+
return payload.exp * 1000 > Date.now();
|
|
93
|
+
} catch {
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// ❌ Bad - Insecure token storage
|
|
100
|
+
localStorage.setItem('token', token); // Vulnerable to XSS
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 4. Route Protection
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
// ✅ Good - Protected routes
|
|
107
|
+
export const routes: Routes = [
|
|
108
|
+
{
|
|
109
|
+
path: 'admin',
|
|
110
|
+
canActivate: [authGuard, roleGuard(['admin'])],
|
|
111
|
+
loadComponent: () => import('./admin/admin.component')
|
|
112
|
+
}
|
|
113
|
+
];
|
|
114
|
+
|
|
115
|
+
// ❌ Bad - Unprotected sensitive routes
|
|
116
|
+
export const routes: Routes = [
|
|
117
|
+
{
|
|
118
|
+
path: 'admin',
|
|
119
|
+
loadComponent: () => import('./admin/admin.component')
|
|
120
|
+
// No guards!
|
|
121
|
+
}
|
|
122
|
+
];
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 5. Sensitive Data Handling
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
// ✅ Good - No sensitive data in code
|
|
129
|
+
// environment.ts
|
|
130
|
+
export const environment = {
|
|
131
|
+
apiUrl: '/api',
|
|
132
|
+
// API keys should come from backend, not frontend
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
// ❌ Bad - Secrets in code
|
|
136
|
+
export const environment = {
|
|
137
|
+
apiKey: 'sk-12345...', // NEVER do this!
|
|
138
|
+
secretKey: 'secret...' // NEVER do this!
|
|
139
|
+
};
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### 6. Input Validation
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
// ✅ Good - Validated input
|
|
146
|
+
const form = new FormGroup({
|
|
147
|
+
email: new FormControl('', [
|
|
148
|
+
Validators.required,
|
|
149
|
+
Validators.email,
|
|
150
|
+
Validators.maxLength(255)
|
|
151
|
+
]),
|
|
152
|
+
password: new FormControl('', [
|
|
153
|
+
Validators.required,
|
|
154
|
+
Validators.minLength(12),
|
|
155
|
+
strongPasswordValidator
|
|
156
|
+
])
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
// ❌ Bad - No validation
|
|
160
|
+
const form = new FormGroup({
|
|
161
|
+
email: new FormControl(''),
|
|
162
|
+
password: new FormControl('')
|
|
163
|
+
});
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Severity Levels
|
|
167
|
+
|
|
168
|
+
| Level | Description | Action |
|
|
169
|
+
|-------|-------------|--------|
|
|
170
|
+
| Critical | Immediate exploitation risk | Fix immediately |
|
|
171
|
+
| High | Serious vulnerability | Fix within 24h |
|
|
172
|
+
| Medium | Potential risk | Fix within 1 week |
|
|
173
|
+
| Low | Minor issue | Fix in next sprint |
|
|
174
|
+
| Info | Best practice | Consider fixing |
|
|
175
|
+
|
|
176
|
+
## Output Format
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
══════════════════════════════════════════════════════════════
|
|
180
|
+
ANGULAR SECURITY AUDIT REPORT
|
|
181
|
+
══════════════════════════════════════════════════════════════
|
|
182
|
+
|
|
183
|
+
📊 SECURITY SCORE: 75/100
|
|
184
|
+
|
|
185
|
+
🔴 CRITICAL (0)
|
|
186
|
+
──────────────────────────────────────────────────────────────
|
|
187
|
+
No critical vulnerabilities found.
|
|
188
|
+
|
|
189
|
+
🟠 HIGH (2)
|
|
190
|
+
──────────────────────────────────────────────────────────────
|
|
191
|
+
1. [H001] bypassSecurityTrustHtml with user input
|
|
192
|
+
File: src/app/features/blog/blog-post.component.ts:45
|
|
193
|
+
Risk: XSS vulnerability
|
|
194
|
+
Fix: Remove bypassSecurityTrustHtml or validate input server-side
|
|
195
|
+
|
|
196
|
+
2. [H002] JWT stored in localStorage
|
|
197
|
+
File: src/app/core/services/auth.service.ts:23
|
|
198
|
+
Risk: Token theft via XSS
|
|
199
|
+
Fix: Use sessionStorage or httpOnly cookies
|
|
200
|
+
|
|
201
|
+
🟡 MEDIUM (3)
|
|
202
|
+
──────────────────────────────────────────────────────────────
|
|
203
|
+
1. [M001] Missing CSRF protection
|
|
204
|
+
File: src/app/app.config.ts
|
|
205
|
+
Risk: Cross-site request forgery
|
|
206
|
+
Fix: Add withXsrfConfiguration()
|
|
207
|
+
|
|
208
|
+
2. [M002] Unprotected admin route
|
|
209
|
+
File: src/app/app.routes.ts:45
|
|
210
|
+
Risk: Unauthorized access
|
|
211
|
+
Fix: Add authGuard and roleGuard
|
|
212
|
+
|
|
213
|
+
3. [M003] Weak password requirements
|
|
214
|
+
File: src/app/features/auth/register.component.ts
|
|
215
|
+
Risk: Weak passwords
|
|
216
|
+
Fix: Add strong password validator
|
|
217
|
+
|
|
218
|
+
🟢 LOW (2)
|
|
219
|
+
──────────────────────────────────────────────────────────────
|
|
220
|
+
1. [L001] Console.log in production
|
|
221
|
+
Files: 5 files
|
|
222
|
+
Risk: Information disclosure
|
|
223
|
+
Fix: Remove or guard console statements
|
|
224
|
+
|
|
225
|
+
2. [L002] Missing CSP headers
|
|
226
|
+
Risk: Script injection
|
|
227
|
+
Fix: Configure Content-Security-Policy
|
|
228
|
+
|
|
229
|
+
📦 DEPENDENCY AUDIT
|
|
230
|
+
──────────────────────────────────────────────────────────────
|
|
231
|
+
npm audit results:
|
|
232
|
+
Critical: 0
|
|
233
|
+
High: 1 (lodash - prototype pollution)
|
|
234
|
+
Medium: 2
|
|
235
|
+
Low: 5
|
|
236
|
+
|
|
237
|
+
Outdated packages:
|
|
238
|
+
@angular/core: 17.0.0 → 18.0.0 (security patches)
|
|
239
|
+
rxjs: 7.5.0 → 7.8.0
|
|
240
|
+
|
|
241
|
+
📋 RECOMMENDATIONS
|
|
242
|
+
──────────────────────────────────────────────────────────────
|
|
243
|
+
1. Fix HIGH severity issues immediately
|
|
244
|
+
2. Run: npm audit fix
|
|
245
|
+
3. Update Angular to latest version
|
|
246
|
+
4. Configure CSP headers on server
|
|
247
|
+
5. Add security monitoring
|
|
248
|
+
|
|
249
|
+
══════════════════════════════════════════════════════════════
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## Security Checklist
|
|
253
|
+
|
|
254
|
+
- [ ] No bypassSecurityTrust* with user input
|
|
255
|
+
- [ ] CSRF protection enabled
|
|
256
|
+
- [ ] Tokens stored securely (not localStorage)
|
|
257
|
+
- [ ] All sensitive routes protected
|
|
258
|
+
- [ ] No secrets in source code
|
|
259
|
+
- [ ] Input validation on all forms
|
|
260
|
+
- [ ] npm audit shows no critical/high
|
|
261
|
+
- [ ] Dependencies up to date
|
|
262
|
+
- [ ] CSP headers configured
|
|
263
|
+
- [ ] HTTPS enforced in production
|