supa-seed
Version:
A constraint-aware, framework-agnostic database seeding framework with deep PostgreSQL business logic discovery and MakerKit integration support
118 lines • 3.15 kB
TypeScript
/**
* Asset Pool Engine
* Phase 2, Checkpoint B1 - Advanced asset management and pool system
*/
import { LoadedAsset } from './asset-loader';
export interface AssetPool {
id: string;
name: string;
description?: string;
baseDirectory: string;
patterns: string[];
assets: LoadedAsset[];
metadata: {
totalAssets: number;
assetTypes: Record<string, number>;
lastLoaded: Date;
loadDuration: number;
averageFileSize: number;
validationRate: number;
};
config: AssetPoolConfig;
}
export interface AssetPoolConfig {
includeContent: boolean;
validateAssets: boolean;
maxFileSize: number;
allowedExtensions: string[];
enableCaching: boolean;
cacheDirectory?: string;
refreshInterval?: number;
contentFilters?: {
minContentLength?: number;
requiredFields?: string[];
tagFilters?: string[];
categoryFilters?: string[];
};
batchSize?: number;
maxConcurrentLoads?: number;
memoryLimit?: number;
}
export interface AssetPoolStats {
totalPools: number;
totalAssets: number;
averagePoolSize: number;
typeDistribution: Record<string, number>;
healthStatus: 'healthy' | 'warning' | 'error';
issues: string[];
}
export declare class AssetPoolEngine {
private pools;
private assetLoader;
private defaultConfig;
constructor();
/**
* Create a new asset pool
*/
createPool(id: string, name: string, baseDirectory: string, patterns: string[], config?: Partial<AssetPoolConfig>): Promise<AssetPool>;
/**
* Get an asset pool by ID
*/
getPool(id: string): AssetPool | undefined;
/**
* List all asset pools
*/
getAllPools(): AssetPool[];
/**
* Refresh a pool by reloading its assets
*/
refreshPool(id: string): Promise<AssetPool>;
/**
* Remove a pool
*/
removePool(id: string): boolean;
/**
* Get assets from multiple pools
*/
getAssetsFromPools(poolIds: string[]): LoadedAsset[];
/**
* Search assets across all pools
*/
searchAssets(query: {
pools?: string[];
types?: ('markdown' | 'json' | 'image' | 'csv')[];
tags?: string[];
categories?: string[];
titleContains?: string;
contentContains?: string;
validOnly?: boolean;
}): LoadedAsset[];
/**
* Get comprehensive statistics about all pools
*/
getPoolStats(): AssetPoolStats;
/**
* Apply content filters to assets
*/
private applyContentFilters;
/**
* Calculate pool metadata and statistics
*/
private calculatePoolMetadata;
/**
* Validate pool configuration
*/
static validatePoolConfig(config: Partial<AssetPoolConfig>): {
isValid: boolean;
errors: string[];
};
/**
* Export pool configuration for persistence
*/
exportPoolConfig(id: string): any;
/**
* Import pool configuration and create pool
*/
importPoolConfig(config: any): Promise<AssetPool>;
}
//# sourceMappingURL=asset-pool-engine.d.ts.map