UNPKG

sicua

Version:

A tool for analyzing project structure and dependencies

379 lines (378 loc) 11.4 kB
import { BusinessOperation, DataFlowPattern, SideEffect } from "./contextualSummaries.types"; export interface BusinessLogicDefinition { domain: string; operations: BusinessOperation[]; dataFlow: DataFlowPattern[]; sideEffects: SideEffect[]; complexity: BusinessComplexity; patterns: BusinessPatterns; quality: BusinessQuality; dependencies: BusinessDependencies; rules: BusinessRule[]; workflows: WorkflowDefinition[]; validations: ValidationDefinition[]; transformations: DataTransformation[]; } export interface BusinessComplexity { operationalComplexity: number; dataComplexity: number; logicalComplexity: number; integrationComplexity: number; overallComplexity: "low" | "medium" | "high" | "very-high"; complexityFactors: ComplexityFactor[]; } export interface BusinessPatterns { architecturalPatterns: ArchitecturalPattern[]; domainPatterns: DomainPattern[]; dataPatterns: DataPattern[]; integrationPatterns: IntegrationPattern[]; antiPatterns: BusinessAntiPattern[]; } export interface BusinessQuality { maintainability: number; testability: number; reusability: number; reliability: number; performance: number; security: number; overallScore: number; qualityIssues: QualityIssue[]; } export interface BusinessDependencies { externalServices: ExternalService[]; databases: DatabaseDependency[]; apis: ApiDependency[]; libraries: LibraryDependency[]; configurations: ConfigurationDependency[]; resources: ResourceDependency[]; } export interface BusinessRule { id: string; name: string; type: BusinessRuleType; condition: string; action: string; priority: "low" | "medium" | "high" | "critical"; domain: string; implementation: RuleImplementation; validation: RuleValidation; } export interface WorkflowDefinition { name: string; steps: WorkflowStep[]; triggers: WorkflowTrigger[]; conditions: WorkflowCondition[]; outcomes: WorkflowOutcome[]; complexity: "simple" | "moderate" | "complex"; async: boolean; errorHandling: ErrorHandlingStrategy[]; } export interface ValidationDefinition { field: string; rules: ValidationRule[]; messages: ValidationMessage[]; async: boolean; dependencies: string[]; customValidators: CustomValidator[]; } export interface DataTransformation { name: string; input: DataStructure; output: DataStructure; transformationType: TransformationType; complexity: "simple" | "moderate" | "complex"; performance: TransformationPerformance; validation: TransformationValidation; } export interface ComplexityFactor { factor: string; impact: number; description: string; mitigation?: string; } export interface ArchitecturalPattern { name: string; confidence: number; evidence: string[]; benefits: string[]; drawbacks: string[]; } export interface DomainPattern { name: string; domain: string; usage: string; effectiveness: "low" | "medium" | "high"; } export interface DataPattern { pattern: string; usage: DataUsageInfo; optimization: string[]; issues: string[]; } export interface IntegrationPattern { pattern: string; services: string[]; reliability: "low" | "medium" | "high"; performance: "slow" | "moderate" | "fast"; } export interface BusinessAntiPattern { name: string; severity: "low" | "medium" | "high" | "critical"; description: string; impact: string; solution: string; location: string; } export interface QualityIssue { type: QualityIssueType; severity: "low" | "medium" | "high" | "critical"; description: string; location: string; suggestion: string; impact: string; } export interface ExternalService { name: string; type: ServiceType; reliability: "low" | "medium" | "high"; performance: "slow" | "moderate" | "fast"; security: "low" | "medium" | "high"; cost: "low" | "medium" | "high"; alternatives: string[]; } export interface DatabaseDependency { type: "sql" | "nosql" | "cache" | "search" | "graph"; operations: DatabaseOperation[]; performance: DatabasePerformance; reliability: "low" | "medium" | "high"; scalability: "low" | "medium" | "high"; } export interface ApiDependency { endpoint: string; method: HttpMethod; authentication: AuthenticationType; rateLimit?: RateLimit; reliability: "low" | "medium" | "high"; errorHandling: ApiErrorHandling; } export interface LibraryDependency { name: string; purpose: LibraryPurpose; version: string; security: SecurityInfo; maintenance: MaintenanceInfo; alternatives: Alternative[]; } export interface ConfigurationDependency { name: string; type: ConfigurationType; required: boolean; sensitive: boolean; validation: ConfigValidation; } export interface ResourceDependency { name: string; type: ResourceType; size?: string; availability: "local" | "remote" | "cdn"; optimization: ResourceOptimization; } export interface RuleImplementation { method: "declarative" | "imperative" | "mixed"; location: string; testable: boolean; configurable: boolean; } export interface RuleValidation { hasTests: boolean; coverage: number; scenarios: TestScenario[]; } export interface WorkflowStep { name: string; type: StepType; async: boolean; dependencies: string[]; errorHandling: StepErrorHandling; compensation?: CompensationAction; } export interface WorkflowTrigger { type: TriggerType; condition: string; source: string; } export interface WorkflowCondition { expression: string; variables: string[]; complex: boolean; } export interface WorkflowOutcome { type: "success" | "failure" | "partial" | "timeout"; actions: string[]; notifications: string[]; } export interface ErrorHandlingStrategy { type: ErrorHandlingType; retry: RetryStrategy; fallback: FallbackStrategy; logging: LoggingStrategy; } export interface ValidationRule { type: ValidationType; parameters: ValidationParameter[]; async: boolean; custom: boolean; } export interface ValidationMessage { rule: string; message: string; level: "info" | "warning" | "error"; } export interface CustomValidator { name: string; async: boolean; dependencies: string[]; testable: boolean; } export interface DataStructure { schema: string; fields: DataField[]; relationships: DataRelationship[]; constraints: DataConstraint[]; } export interface TransformationPerformance { complexity: "O(1)" | "O(n)" | "O(n²)" | "O(log n)" | "unknown"; memoryUsage: "low" | "medium" | "high"; optimizable: boolean; } export interface TransformationValidation { inputValidation: boolean; outputValidation: boolean; errorHandling: boolean; testCoverage: number; } export type BusinessRuleType = "validation" | "calculation" | "constraint" | "workflow" | "security" | "business-policy"; export type TransformationType = "mapping" | "aggregation" | "filtering" | "sorting" | "computation" | "normalization"; export type QualityIssueType = "complexity" | "coupling" | "duplication" | "security" | "performance" | "maintainability"; export type ServiceType = "rest-api" | "graphql" | "websocket" | "message-queue" | "database" | "cache" | "auth" | "payment" | "notification"; export type HttpMethod = "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD" | "OPTIONS"; export type AuthenticationType = "none" | "basic" | "bearer" | "oauth" | "api-key" | "custom"; export type LibraryPurpose = "utility" | "ui" | "state-management" | "data-fetching" | "validation" | "testing" | "build" | "security"; export type ConfigurationType = "environment" | "feature-flag" | "api-config" | "database-config" | "security-config" | "performance-config"; export type ResourceType = "image" | "video" | "audio" | "document" | "font" | "data" | "style" | "script"; export type StepType = "action" | "decision" | "parallel" | "sequential" | "conditional" | "loop"; export type TriggerType = "event" | "time" | "condition" | "manual" | "api" | "webhook"; export type ErrorHandlingType = "retry" | "fallback" | "circuit-breaker" | "timeout" | "bulkhead" | "graceful-degradation"; export type ValidationType = "required" | "format" | "length" | "range" | "pattern" | "custom" | "async"; export interface DataUsageInfo { reads: number; writes: number; transforms: number; caching: boolean; } export interface DatabaseOperation { type: "create" | "read" | "update" | "delete" | "query"; frequency: "low" | "medium" | "high"; complexity: "simple" | "moderate" | "complex"; } export interface DatabasePerformance { queryOptimization: boolean; indexing: boolean; caching: boolean; connectionPooling: boolean; } export interface RateLimit { requests: number; period: string; strategy: "fixed" | "sliding" | "token-bucket"; } export interface ApiErrorHandling { retries: number; timeout: number; fallback: boolean; circuitBreaker: boolean; } export interface SecurityInfo { vulnerabilities: SecurityVulnerability[]; lastAudit: string; riskLevel: "low" | "medium" | "high" | "critical"; } export interface MaintenanceInfo { lastUpdate: string; activelyMaintained: boolean; communitySupport: "low" | "medium" | "high"; } export interface Alternative { name: string; pros: string[]; cons: string[]; migrationEffort: "low" | "medium" | "high"; } export interface ConfigValidation { required: boolean; format?: string; allowedValues?: string[]; validation?: string; } export interface ResourceOptimization { compressed: boolean; cached: boolean; lazyLoaded: boolean; optimized: boolean; } export interface TestScenario { name: string; input: string; expectedOutput: string; complexity: "simple" | "moderate" | "complex"; } export interface StepErrorHandling { strategy: ErrorHandlingType; maxRetries: number; timeout: number; fallback?: string; } export interface CompensationAction { action: string; automatic: boolean; dependencies: string[]; } export interface RetryStrategy { maxAttempts: number; backoff: "linear" | "exponential" | "fixed"; conditions: string[]; } export interface FallbackStrategy { type: "default-value" | "cached-value" | "alternative-service" | "degraded-service"; implementation: string; } export interface LoggingStrategy { level: "debug" | "info" | "warn" | "error"; structured: boolean; sensitive: boolean; } export interface ValidationParameter { name: string; value: string; type: string; } export interface DataField { name: string; type: string; required: boolean; validation?: string; } export interface DataRelationship { type: "one-to-one" | "one-to-many" | "many-to-many"; target: string; cascading: boolean; } export interface DataConstraint { type: "unique" | "foreign-key" | "check" | "not-null"; definition: string; } export interface SecurityVulnerability { type: string; severity: "low" | "medium" | "high" | "critical"; description: string; }