jsonweaver
Version:
A simple utility to transform JSON data into CSV, XML, YAML, JSONLines and Markdown table formats.
52 lines (42 loc) • 1.6 kB
text/typescript
import { Readable } from 'stream';
type JsonObject = Record<string, any>;
type JsonArray = JsonObject[];
type ToXmlOptions = {
maxDepth?: number;
arrayHandling?: 'wrap' | 'index';
prettyPrint?: boolean;
};
type Field = {
label: string;
value: string | ((row: Record<string, any>) => string);
};
type FieldGenerator = (json: JsonArray) => Field[];
type toYamlOptions = {
sortKeys?: boolean;
noRefs?: boolean;
};
type ToJsonLinesOptions = {
indent?: number;
excludeKeys?: string[];
};
type JsonLinesObject = {
[key: string]: any;
};
declare function toJsonLines(jsonArray: JsonLinesObject[], options?: ToJsonLinesOptions): string;
declare function toJsonLinesStream(jsonArray: object[]): Readable;
declare function validateJsonSchema(json: JsonObject, schema: JsonObject): void;
declare function toMarkdownTable(json: JsonArray): string;
declare function batchProcess<T>(data: JsonArray, batchSize: number, processor: (batch: JsonArray, index: number) => Promise<T> | T): Promise<T[]>;
declare function toYaml(jsonInput: string | JsonObject, options?: toYamlOptions): string;
declare function toXML(json: JsonObject, options?: ToXmlOptions): string;
declare const jsonweaver: {
validateJsonSchema: typeof validateJsonSchema;
toJsonLinesStream: typeof toJsonLinesStream;
toMarkdownTable: typeof toMarkdownTable;
batchProcess: typeof batchProcess;
toJsonLines: typeof toJsonLines;
toYaml: typeof toYaml;
toCSV: (Json: JsonArray, fieldGenerator?: FieldGenerator) => string;
toXML: typeof toXML;
};
export { jsonweaver };