supa-seed
Version:
A constraint-aware, framework-agnostic database seeding framework with deep PostgreSQL business logic discovery and MakerKit integration support
131 lines • 3.94 kB
TypeScript
/**
* Advanced Slug Management System for Epic 1: Universal MakerKit Core System
* Comprehensive slug generation, validation, and collision handling for team accounts
* Part of Task 1.5.3: Implement advanced slug management system for team accounts
*/
/**
* Configuration options for slug generation
*/
export interface SlugGenerationOptions {
maxLength?: number;
allowNumbers?: boolean;
allowHyphens?: boolean;
forceLowercase?: boolean;
addTimestamp?: boolean;
customSeparator?: string;
reservedSlugs?: string[];
collisionStrategy?: 'increment' | 'timestamp' | 'random' | 'uuid';
}
/**
* Result of slug validation operation
*/
export interface SlugValidationResult {
isValid: boolean;
normalizedSlug: string;
issues: string[];
suggestions: string[];
collisionDetected: boolean;
alternativeSlugs: string[];
}
/**
* Slug collision resolution result
*/
export interface SlugCollisionResult {
originalSlug: string;
resolvedSlug: string;
strategy: string;
attempts: number;
alternativesGenerated: string[];
}
/**
* Advanced Slug Manager for MakerKit team accounts
*/
export declare class AdvancedSlugManager {
private client?;
private defaultOptions;
constructor(client?: any);
/**
* Generate a unique slug for team accounts with comprehensive validation
*/
generateUniqueSlug(baseName: string, tableName?: string, options?: Partial<SlugGenerationOptions>): Promise<string>;
/**
* Validate an existing slug and provide suggestions for improvement
*/
validateSlug(slug: string, tableName?: string, options?: Partial<SlugGenerationOptions>): Promise<SlugValidationResult>;
/**
* Normalize a slug according to MakerKit standards
*/
normalizeSlug(input: string, options: SlugGenerationOptions): string;
/**
* Check if a slug collides with existing records in the database
*/
private checkSlugCollision;
/**
* Resolve slug collision using specified strategy
*/
private resolveSlugCollision;
/**
* Validate slug format against rules
*/
private validateSlugFormat;
/**
* Check if slug is reserved
*/
private isReservedSlug;
/**
* Resolve reserved slug collision
*/
private resolveReservedSlugCollision;
/**
* Generate alternative slugs for reserved conflicts
*/
private generateAlternativeReservedSlugs;
/**
* Generate alternative slugs for database collisions
*/
private generateAlternativeSlugs;
/**
* Generate suggestions for slug improvement
*/
private generateSlugImprovementSuggestions;
/**
* Generate a short UUID-like string
*/
private generateShortUuid;
/**
* Batch validate multiple slugs
*/
batchValidateSlugs(slugs: string[], tableName?: string, options?: Partial<SlugGenerationOptions>): Promise<Map<string, SlugValidationResult>>;
/**
* Get slug generation statistics
*/
getSlugStatistics(slugs: string[]): {
averageLength: number;
mostCommonPattern: string;
reservedConflicts: number;
formatIssues: number;
};
}
/**
* Utility functions for slug management
*/
export declare class SlugUtils {
/**
* Extract potential slug base from various data sources
*/
static extractSlugBase(data: any): string;
/**
* Suggest slug based on business context
*/
static suggestContextualSlug(data: any): string;
/**
* Check if slug follows MakerKit naming conventions
*/
static followsMakerKitConventions(slug: string): boolean;
/**
* Convert various naming formats to slug format
*/
static convertToSlugFormat(input: string, format: 'camelCase' | 'snake_case' | 'Title Case' | 'UPPER'): string;
}
export default AdvancedSlugManager;
//# sourceMappingURL=slug-management-system.d.ts.map