///
import { ExcelParseOptions } from "@punks/backend-core";
export type EntryValidationError = {
errorCode: string;
value?: any;
payload?: any;
};
export type EntryValidationResult = {
isValid: boolean;
validationErrors: EntryValidationError[];
};
export type ImportEntryValidationError = {
errorCode: string;
column: {
name: string;
key: string;
value?: any;
};
};
export type ImportEntryValidationResult = {
isValid: boolean;
validationErrors: ImportEntryValidationError[];
};
export type EntitySerializerColumnParser = (value: any) => any;
export type EntitySerializerColumnParseAction = (value: any, item: TSheetItem) => void;
export type EntitySerializerColumnConverter = (value: any, item: TSheetItem) => any;
export type EntitySerializerColumnValidator = {
key: string;
fn: (item: TSheetItem) => EntryValidationResult;
};
export type EntitySerializerSheetCustomParser = "date";
export type EntitySerializerColumnModifier = "trim" | "lowercase" | "uppercase";
export type EntitySerializerColumnDefinition = {
name: string;
aliases?: string[];
key: string;
selector: keyof TSheetItem | ((item: TSheetItem) => any);
colSpan?: number;
sampleValue?: any;
parser?: EntitySerializerColumnParser;
parseAction?: EntitySerializerColumnParseAction;
converter?: EntitySerializerColumnConverter;
validators?: EntitySerializerColumnValidator[];
idColumn?: boolean;
sheetParser?: EntitySerializerSheetCustomParser;
array?: boolean;
arraySeparator?: string | RegExp;
modifiers?: EntitySerializerColumnModifier[];
};
export type EntitySerializerSheetOptions = {
name?: string;
useTypeColumn?: boolean;
};
export type EntitySerializerSheetDefinition = {
autoColumns?: boolean;
columns: EntitySerializerColumnDefinition[];
sheet?: EntitySerializerSheetOptions;
options?: ExcelParseOptions;
};
export type EntityExportFile = {
content: Buffer;
contentType: string;
fileName: string;
};
export declare enum EntitySerializationFormat {
Csv = "csv",
Json = "json",
Xlsx = "xlsx"
}
export type ImportEntry = {
id?: TEntityId;
item: TSheetItem;
rowIndex: number;
status: ImportEntryValidationResult;
};
export interface IEntitySerializer {
export(filters?: TEntitySearchParameters, payload?: TPayload): Promise;
import(items: TSheetItem[], payload?: TPayload): Promise;
serialize(items: TSheetItem[], format: EntitySerializationFormat, payload?: TPayload): Promise;
parse(data: Buffer, format: EntitySerializationFormat, payload?: TPayload): Promise[]>;
createSample(format: EntitySerializationFormat): Promise;
}