UNPKG

docxtemplater

Version:

Generate docx, pptx, and xlsx from templates (Word, Powerpoint and Excel documents), from Node.js, the Browser and the command line

202 lines (181 loc) 6.41 kB
declare namespace DXT { type integer = number; interface SimplePart { type: string; value: string; module?: string; [x: string]: any; } interface Part { type: string; value: string; module: string; raw: string; offset: integer; lIndex: integer; num: integer; inverted?: boolean; endLindex?: integer; expanded?: Part[]; subparsed?: Part[]; position?: string; tag?: string; } interface ScopeManager { scopeList: any[]; scopeLindex: integer[]; scopePath: string[]; scopePathItem: integer[]; scopePathLength: integer[]; resolved: any; cachedParsers: Record<string, (scope: any, context: ParserContext) => any>; parser(tag: string): Parser; } interface Rendered { value: string; errors: any[]; } type Error = any; type Compression = "STORE" | "DEFLATE"; interface ZipOptions { /** * the default file compression method to use. Available methods are `STORE` and `DEFLATE`. You can also provide your own compression method. * @default "DEFLATE" */ compression?: Compression | undefined; /** * the options to use when compressing the file. With `STORE` (no compression), this parameter is ignored. * With `DEFLATE`, you can give the compression level with `compressionOptions : {level:6}` * (or any level between 1 (best speed) and 9 (best compression)). * * Note : if the entry is already compressed (coming from a compressed zip file), * calling `generate()` with a different compression level won't update the entry. * The reason is simple : PizZip doesn't know how compressed the content was and how to match the compression level with the implementation we use. */ compressionOptions?: | { level: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9; } | null | undefined; /** * The comment to use for the zip file. */ comment?: string | undefined; /** * The platform to use when generating the zip file. When using `DOS`, the attribute `dosPermissions` of each file is used. * When using `UNIX`, the attribute `unixPermissions` of each file is used. * If you set the platform value on nodejs, be sure to use `process.platform`. * `fs.stats` returns a non executable mode for folders on windows, * if you force the platform to `UNIX` the generated zip file will have a strange behavior on UNIX platforms. * @default "DOS" */ platform?: "DOS" | "UNIX" | NodeJS.Platform | undefined; /** * The function to encode the file name / comment. * By default, PizZip uses UTF-8 to encode the file names / comments. You can use this method to force an other encoding. * Note : the encoding used is not stored in a zip file, not using UTF-8 may lead to encoding issues. * The function takes a string and returns a bytes array (Uint8Array or Array). */ encodeFileName?(name: string): Buffer; /** * The function to change the ordering of the files in the zip archive. * The function takes the files array and returns the list of files in the order that you want them to be in the final zip file. */ fileOrder?(files: string[]): string[]; } interface Module { set?(options: any): void; clone?(): Module; matchers?(): [ string, string, { [x: string]: any } | ((part: SimplePart) => { [x: string]: any }), ][]; render?(part: Part): Rendered | null; getTraits?(traitName: string, parsed: any): any; getFileType?(opts: any): string | void; nullGetter?(part: Part, scopeManager: any): any; optionsTransformer?(options: Options): Options; postrender?(parts: string[], options: any): string[]; errorsTransformer?(errors: Error[]): Error[]; getRenderedMap?(map: any): any; preparse?(parsed: any, options: any): any; parse?(placeHolderContent: string): SimplePart | null; postparse?(postparsed: Part[], modules: Module[], options: any): Part[]; on?(event: string): void; preResolve?(options: any): void; resolve?(part: Part, options: any): null | Promise<any>; preZip?(content: string, currentFile: string): null | string; [x: string]: any; } interface ParserContext { meta: { part: Part; }; scopeList: any[]; scopePath: string[]; scopePathItem: integer[]; scopePathLength: integer[]; num: integer; } interface Parser { get(scope: any, context: ParserContext): any; } interface Syntax { allowUnopenedTag?: boolean; allowUnclosedTag?: boolean; changeDelimiterPrefix?: string | null; } interface Options { delimiters?: { start: string; end: string }; paragraphLoop?: boolean; parser?(tag: string): Parser; errorLogging?: boolean | string; linebreaks?: boolean; nullGetter?(part: Part): any; syntax?: Syntax; stripInvalidXMLChars?: boolean; } interface ConstructorOptions extends Options { modules?: Module[]; } } declare class Docxtemplater<TZip = any> { static default: typeof Docxtemplater; /** * Create Docxtemplater instance (and compile it on the fly) * * @param zip Serialized zip archive * @param options `modules` and other options */ constructor(zip: TZip, options?: DXT.ConstructorOptions); /** * Create Docxtemplater instance, without options */ constructor(); setData(data: any): this; resolveData(data: any): Promise<any>; render(data?: any): this; renderAsync(data?: any): Promise<any>; getZip(): TZip; loadZip(zip: TZip): this; setOptions(options: DXT.Options): this; attachModule(module: DXT.Module): this; compile(): this; getFullText(path?: string): string; targets: string[]; // used to know which files are templated replaceFirstSection?: boolean; // used for the subsection module replaceLastSection?: boolean; // used for the subsection module includeSections?: boolean; // used for the subsection module keepStyles?: boolean; // used for the subtemplate module toBuffer(options?: DXT.ZipOptions): Buffer; toBlob(options?: DXT.ZipOptions): Blob; toBase64(options?: DXT.ZipOptions): string; toUint8Array(options?: DXT.ZipOptions): Uint8Array; toArrayBuffer(options?: DXT.ZipOptions): ArrayBuffer; } declare namespace Docxtemplater { export { DXT }; } export = Docxtemplater;