supa-seed
Version:
A constraint-aware, framework-agnostic database seeding framework with deep PostgreSQL business logic discovery and MakerKit integration support
112 lines • 2.6 kB
TypeScript
/**
* Basic File System Asset Loading
* Phase 1, Checkpoint A3 - Foundation for hybrid seeding
*/
export interface AssetMetadata {
title?: string;
description?: string;
tags?: string[];
category?: string;
author?: string;
date?: string;
featured?: boolean;
[key: string]: any;
}
export interface LoadedAsset {
id: string;
filePath: string;
type: 'markdown' | 'json' | 'image' | 'csv';
content?: string;
metadata: AssetMetadata;
fileSize: number;
lastModified: Date;
isValid: boolean;
validationErrors?: string[];
}
export interface AssetLoadOptions {
patterns: string[];
baseDirectory?: string;
includeContent?: boolean;
validateSchema?: boolean;
maxFileSize?: number;
allowedExtensions?: string[];
}
export interface AssetLoadResult {
assets: LoadedAsset[];
errors: Array<{
filePath: string;
error: string;
}>;
totalFiles: number;
successCount: number;
errorCount: number;
}
export declare class AssetLoader {
private defaultOptions;
/**
* Load assets from file system using glob patterns
*/
loadAssets(options: AssetLoadOptions): Promise<AssetLoadResult>;
/**
* Load a single asset file
*/
private loadSingleAsset;
/**
* Parse markdown file with frontmatter
*/
private parseMarkdownWithFrontmatter;
/**
* Extract metadata from JSON data
*/
private extractJsonMetadata;
/**
* Extract metadata from image files
*/
private extractImageMetadata;
/**
* Validate markdown asset
*/
private validateMarkdownAsset;
/**
* Validate JSON asset
*/
private validateJsonAsset;
/**
* Validate image asset
*/
private validateImageAsset;
/**
* Generate unique asset ID from file path
*/
private generateAssetId;
/**
* Get MIME type from file extension
*/
private getMimeType;
/**
* Parse CSV data into structured format
*/
private parseCsvData;
/**
* Parse a single CSV line
*/
private parseCsvLine;
/**
* Extract metadata from CSV data
*/
private extractCsvMetadata;
/**
* Validate CSV asset
*/
private validateCsvAsset;
/**
* Get asset loading statistics
*/
static getLoadingStats(result: AssetLoadResult): {
successRate: number;
avgFileSize: number;
typeDistribution: Record<string, number>;
validationRate: number;
};
}
//# sourceMappingURL=asset-loader.d.ts.map