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:
imfozilbek
2025-11-24 02:54:39 +05:00
parent 9f97509b06
commit 03705b5264
96 changed files with 9520 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
import { Order } from "../aggregates/Order"
import { OrderId } from "../value-objects/OrderId"
import { UserId } from "../value-objects/UserId"
/**
* Order Repository Interface
*
* DDD Pattern: Repository
* - Aggregate-oriented persistence
* - Collection metaphor
* - No business logic (that's in Order aggregate)
*/
export interface IOrderRepository {
/**
* Save order (create or update)
*/
save(order: Order): Promise<void>
/**
* Find order by ID
*/
findById(id: OrderId): Promise<Order | null>
/**
* Find orders by user
*/
findByUserId(userId: UserId): Promise<Order[]>
/**
* Find orders by status
*/
findByStatus(status: string): Promise<Order[]>
/**
* Find all orders
*/
findAll(): Promise<Order[]>
/**
* Delete order
*/
delete(id: OrderId): Promise<void>
/**
* Check if order exists
*/
exists(id: OrderId): Promise<boolean>
}

View File

@@ -0,0 +1,57 @@
import { User } from "../aggregates/User"
import { UserId } from "../value-objects/UserId"
import { Email } from "../value-objects/Email"
/**
* User Repository Interface
*
* DDD Pattern: Repository
* - Interface in domain layer
* - Implementation in infrastructure layer
* - Collection-like API for aggregates
*
* SOLID Principles:
* - DIP: domain depends on abstraction
* - ISP: focused interface
* - SRP: manages User persistence
*
* Clean Architecture:
* - Domain doesn't know about DB
* - Infrastructure implements this
*/
export interface IUserRepository {
/**
* Save user (create or update)
*/
save(user: User): Promise<void>
/**
* Find user by ID
*/
findById(id: UserId): Promise<User | null>
/**
* Find user by email
*/
findByEmail(email: Email): Promise<User | null>
/**
* Find all users
*/
findAll(): Promise<User[]>
/**
* Find active users
*/
findActive(): Promise<User[]>
/**
* Delete user
*/
delete(id: UserId): Promise<void>
/**
* Check if user exists
*/
exists(id: UserId): Promise<boolean>
}