Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions src/lib/types/fileTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,16 @@ export type FileProcessingResult = {
columnNames?: string[];
sampleData?: string | unknown[];
hasEmptyColumns?: boolean;
/** Enhanced column metadata with type detection and statistics */
columnMetadata?: CSVColumnMetadata[];
/** Data quality warnings */
dataQualityWarnings?: CSVDataQualityWarning[];
/** Overall data quality score (0-100) */
dataQualityScore?: number;
/** Whether headers were detected */
hasHeaders?: boolean;
/** Detected delimiter */
detectedDelimiter?: string;
// PDF-specific metadata
version?: string;
estimatedPages?: number | null;
Expand Down Expand Up @@ -93,6 +103,66 @@ export type FileProcessingResult = {
*/
export type SampleDataFormat = "object" | "json" | "csv" | "markdown";

/**
* Detected data type for a CSV column
*/
export type CSVColumnDataType =
| "string"
| "number"
| "integer"
| "float"
| "boolean"
| "date"
| "datetime"
| "email"
| "url"
| "empty"
| "mixed";

/**
* Data quality warning for CSV columns
*/
export type CSVDataQualityWarning = {
column: string;
type:
| "empty_values"
| "invalid_name"
| "mixed_types"
| "high_null_rate"
| "duplicates"
| "inconsistent_format";
message: string;
severity: "info" | "warning" | "error";
affectedRows?: number;
};

/**
* Rich metadata for a single CSV column
*/
export type CSVColumnMetadata = {
name: string;
index: number;
detectedType: CSVColumnDataType;
/** Confidence of type detection (0-100) */
typeConfidence: number;
/** Count of null/empty values */
nullCount: number;
/** Count of unique values */
uniqueCount: number;
/** Sample values from this column (up to 5) */
sampleValues: string[];
/** For numeric columns: min value */
minValue?: number;
/** For numeric columns: max value */
maxValue?: number;
/** For numeric columns: average value */
avgValue?: number;
/** For date columns: detected format (e.g., 'YYYY-MM-DD', 'MM/DD/YYYY') */
dateFormat?: string;
/** Column name validation issues */
nameIssues?: string[];
};

/**
* CSV processor options
*/
Expand Down
Loading
Loading