///
import { Readable, TransformOptions } from "stream";
import JSON2CSVParser = require("./JSON2CSVParser");
import JSON2CSVAsyncParser = require("./JSON2CSVAsyncParser");
import JSON2CSVTransform = require("./JSON2CSVTransform");
import flatten = require("./transforms/flatten");
import unwind = require("./transforms/unwind");
export as namespace json2csv;
export { JSON2CSVAsyncParser as AsyncParser, JSON2CSVParser as Parser, JSON2CSVTransform as Transform };
// Convenience method to keep the API similar to version 3.X
export function parse(data: Readonly | readonly T[], opts?: json2csv.Options): string;
export function parseAsync(
data: Readonly | readonly T[] | Readable,
opts?: json2csv.Options,
transformOpts?: TransformOptions,
): Promise;
export const transforms: {
flatten: typeof flatten;
unwind: typeof unwind;
};
export interface FieldValueCallbackInfo {
label: string;
default?: string | undefined;
}
export type FieldValueCallback = FieldValueCallbackWithoutField | FieldValueCallbackWithField;
export interface FieldValueCallbackWithoutField {
(row: T): any;
}
export interface FieldValueCallbackWithField {
(row: T, field: FieldValueCallbackInfo): any;
}
export interface FieldInfo {
label?: string | undefined;
default?: string | undefined;
value: string | FieldValueCallback;
}
export interface NormalizedFieldInfo {
label: string;
value: FieldValueCallback;
}
export interface Options {
fields?: Array> | undefined;
ndjson?: boolean | undefined;
defaultValue?: string | undefined;
quote?: string | undefined;
escapedQuote?: string | undefined;
delimiter?: string | undefined;
eol?: string | undefined;
excelStrings?: boolean | undefined;
header?: boolean | undefined;
includeEmptyRows?: boolean | undefined;
withBOM?: boolean | undefined;
transforms?: Array> | undefined;
}
export interface FlattenOptions {
objects?: boolean | undefined;
arrays?: boolean | undefined;
separator?: string | undefined;
}
export type Json2CsvTransform = (item: T1) => T2 | T2[];
export interface UnwindOptions {
paths?: string[] | undefined;
blankOut?: boolean | undefined;
}