mirror of
https://github.com/samiyev/puaros.git
synced 2025-12-27 23:06:54 +05:00
feat(guardian): add guardian package - code quality analyzer
Add @puaros/guardian package v0.1.0 - code quality guardian for vibe coders and enterprise teams. Features: - Hardcode detection (magic numbers, magic strings) - Circular dependency detection - Naming convention enforcement (Clean Architecture) - Architecture violation detection - CLI tool with comprehensive reporting - 159 tests with 80%+ coverage - Smart suggestions for fixes - Built for AI-assisted development Built with Clean Architecture and DDD principles. Works with Claude, GPT, Copilot, Cursor, and any AI coding assistant.
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
import { Specification } from "./Specification"
|
||||
import { Email } from "../value-objects/Email"
|
||||
|
||||
/**
|
||||
* Email Domain Specification
|
||||
*
|
||||
* Business Rule: Check if email is from corporate domain
|
||||
*/
|
||||
export class CorporateEmailSpecification extends Specification<Email> {
|
||||
private static readonly CORPORATE_DOMAINS = ["company.com", "corp.company.com"]
|
||||
|
||||
public isSatisfiedBy(email: Email): boolean {
|
||||
const domain = email.getDomain()
|
||||
return CorporateEmailSpecification.CORPORATE_DOMAINS.includes(domain)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Email Blacklist Specification
|
||||
*
|
||||
* Business Rule: Check if email domain is blacklisted
|
||||
*/
|
||||
export class BlacklistedEmailSpecification extends Specification<Email> {
|
||||
private static readonly BLACKLISTED_DOMAINS = [
|
||||
"tempmail.com",
|
||||
"throwaway.email",
|
||||
"guerrillamail.com",
|
||||
]
|
||||
|
||||
public isSatisfiedBy(email: Email): boolean {
|
||||
const domain = email.getDomain()
|
||||
return BlacklistedEmailSpecification.BLACKLISTED_DOMAINS.includes(domain)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Valid Email for Registration
|
||||
*
|
||||
* Composed specification: not blacklisted
|
||||
*/
|
||||
export class ValidEmailForRegistrationSpecification extends Specification<Email> {
|
||||
private readonly notBlacklisted: Specification<Email>
|
||||
|
||||
constructor() {
|
||||
super()
|
||||
this.notBlacklisted = new BlacklistedEmailSpecification().not()
|
||||
}
|
||||
|
||||
public isSatisfiedBy(email: Email): boolean {
|
||||
return this.notBlacklisted.isSatisfiedBy(email)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user