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,92 @@
import { ValueObject } from "../../../../src/domain/value-objects/ValueObject"
interface OrderStatusProps {
readonly value: string
}
/**
* OrderStatus Value Object
*
* DDD Pattern: Enum as Value Object
* - Type-safe status
* - Business logic: valid transitions
* - Self-validating
*/
export class OrderStatus extends ValueObject<OrderStatusProps> {
public static readonly PENDING = new OrderStatus({ value: "pending" })
public static readonly CONFIRMED = new OrderStatus({ value: "confirmed" })
public static readonly PAID = new OrderStatus({ value: "paid" })
public static readonly SHIPPED = new OrderStatus({ value: "shipped" })
public static readonly DELIVERED = new OrderStatus({ value: "delivered" })
public static readonly CANCELLED = new OrderStatus({ value: "cancelled" })
private static readonly VALID_STATUSES = [
"pending",
"confirmed",
"paid",
"shipped",
"delivered",
"cancelled",
]
private constructor(props: OrderStatusProps) {
super(props)
}
public static create(status: string): OrderStatus {
const lower = status.toLowerCase()
if (!OrderStatus.VALID_STATUSES.includes(lower)) {
throw new Error(
`Invalid order status: ${status}. Valid: ${OrderStatus.VALID_STATUSES.join(", ")}`,
)
}
return new OrderStatus({ value: lower })
}
public get value(): string {
return this.props.value
}
/**
* Business Rule: Valid status transitions
*/
public canTransitionTo(newStatus: OrderStatus): boolean {
const transitions: Record<string, string[]> = {
pending: ["confirmed", "cancelled"],
confirmed: ["paid", "cancelled"],
paid: ["shipped", "cancelled"],
shipped: ["delivered"],
delivered: [],
cancelled: [],
}
const allowedTransitions = transitions[this.value] ?? []
return allowedTransitions.includes(newStatus.value)
}
public isPending(): boolean {
return this.value === "pending"
}
public isConfirmed(): boolean {
return this.value === "confirmed"
}
public isCancelled(): boolean {
return this.value === "cancelled"
}
public isDelivered(): boolean {
return this.value === "delivered"
}
public isFinal(): boolean {
return this.isDelivered() || this.isCancelled()
}
public toString(): string {
return this.props.value
}
}