///
///
import { URL } from 'url';
import FormData from 'form-data';
export interface GotenbergClient {
post: (url: string, data: FormData, headers?: {
[header: string]: number | string | string[] | undefined;
}) => Promise;
get?: (url: string) => Promise;
}
export interface GotenbergClientFunction {
(config?: object): GotenbergClient;
}
export interface GotenbergClientClass {
new (config?: object): GotenbergClient;
}
export declare type CommonRequestFields = {
waitTimeout?: number;
webhookURL?: string;
webhookURLTimeout?: number;
resultFilename?: string;
};
export declare type ChromeRequestFields = {
waitDelay?: number;
googleChromeRpccBufferSize?: number;
};
export declare type HtmlRequestFields = {
paperWidth?: number;
paperHeight?: number;
marginTop?: number;
marginBottom?: number;
marginLeft?: number;
marginRight?: number;
landscape?: boolean;
pageRanges?: string;
scale?: number;
};
export declare type MarkdownRequestFields = HtmlRequestFields;
export declare type OfficeRequestFields = {
landscape?: boolean;
pageRanges?: string;
};
export declare type UrlRequestFields = HtmlRequestFields & {
remoteURL?: string;
};
export declare type MergeRequestFields = {};
export declare type RequestFields = CommonRequestFields & UrlRequestFields & HtmlRequestFields & MergeRequestFields & OfficeRequestFields & ChromeRequestFields & MarkdownRequestFields;
export declare type FieldsModifier = (fields: RequestFields) => void;
export declare type PaperOptions = [number, number] | {
width?: number;
height?: number;
};
export declare type MarginOptions = [number, number, number, number] | {
top?: number;
right?: number;
bottom?: number;
left?: number;
};
export declare type ConversionOptions = PaperOptions | MarginOptions | FieldsModifier | (HtmlRequestFields & OfficeRequestFields & MarkdownRequestFields & {
paper?: PaperOptions;
} & {
margins?: MarginOptions;
});
export declare type FileURI = string;
export declare type PlainSource = string | Buffer | FileURI | NodeJS.ReadableStream;
export declare type TupleSource = [string, PlainSource];
export declare type ObjectSource = {
[name: string]: PlainSource;
};
export declare type Source = URL | PlainSource | TupleSource | ObjectSource | Array | Iterable;
export declare type TupleStreamsSource = [string, NodeJS.ReadableStream];
export declare type HeadersModifier = (headers: HttpHeaders) => void;
export declare type HttpHeaders = {
[header: string]: number | string;
};
export declare enum RequestType {
Url = 0,
Ping = 1,
Html = 2,
Merge = 3,
Office = 4,
Markdown = 5,
Undefined = 6
}
export declare type Request = {
type: RequestType;
url: string;
client: GotenbergClient;
source?: Source;
fields: RequestFields;
headers?: HttpHeaders;
};
export declare type UrlRequest = Request & {
type: RequestType.Url;
};
export declare type PingRequest = Request & {
type: RequestType.Ping;
};
export declare type HtmlRequest = Request & {
type: RequestType.Html;
};
export declare type MergeRequest = Request & {
type: RequestType.Merge;
};
export declare type OfficeRequest = Request & {
type: RequestType.Office;
};
export declare type MarkdownRequest = Request & {
type: RequestType.Markdown;
};
export declare type TypedRequest = UrlRequest | PingRequest | HtmlRequest | MergeRequest | OfficeRequest | MarkdownRequest;