mirror of
https://github.com/samiyev/puaros.git
synced 2025-12-27 23:06:54 +05:00
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.
53 lines
1.4 KiB
TypeScript
53 lines
1.4 KiB
TypeScript
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)
|
|
}
|
|
}
|