diff --git a/types/pdfmake/index.d.ts b/types/pdfmake/index.d.ts new file mode 100644 index 0000000000..9d5f8023c3 --- /dev/null +++ b/types/pdfmake/index.d.ts @@ -0,0 +1,70 @@ +// Type definitions for pdfmake 0.1 +// Project: http://pdfmake.org +// Definitions by: Milen Stefanov +// Rajab Shakirov +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +declare module 'pdfmake/build/vfs_fonts' { + let pdfMake: { + vfs: any; + [name: string]: any; + }; +} + +declare module 'pdfmake/build/pdfmake' { + let vfs: TFontFamily; + let fonts: { [name: string]: TFontFamilyTypes }; + function createPdf(documentDefinitions: TDocumentDefinitions): TCreatedPdf; + + type pageSizeType = + '4A0' | '2A0' | 'A0' | 'A1' | 'A2' | 'A3' | 'A4' | 'A5' | 'A6' | 'A7' | 'A8' | 'A9' | 'A10' | + 'B0' | 'B1' | 'B2' | 'B3' | 'B4' | 'B5' | 'B6' | 'B7' | 'B8' | 'B9' | 'B10' | + 'C0' | 'C1' | 'C2' | 'C3' | 'C4' | 'C5' | 'C6' | 'C7' | 'C8' | 'C9' | 'C10' | + 'RA0' | 'RA1' | 'RA2' | 'RA3' | 'RA4' | + 'SRA0' | 'SRA1' | 'SRA2' | 'SRA3' | 'SRA4' | + 'EXECUTIVE' | 'FOLIO' | 'LEGAL' | 'LETTER' | 'TABLOID'; + + type pageOrientationType = "portrait" | "landscape"; + + let pdfMake: pdfMakeStatic; + + interface TFontFamily { + [fontName: string]: string; + } + + interface TFontFamilyTypes { + normal?: string; + bold?: string; + italics?: string; + bolditalics?: string; + } + + interface TDocumentDefinitions { + content: any; + styles?: any; + pageSize?: pageSizeType; + pageOrientation?: pageOrientationType; + pageMargins?: [number, number, number, number]; + defaultStyle?: { + font?: string; + }; + } + + type CreatedPdfParams = ( + defaultFileName?: string, + cb?: string, + options?: string + ) => void; + + interface TCreatedPdf { + download: CreatedPdfParams; + open: CreatedPdfParams; + print: CreatedPdfParams; + } + + interface pdfMakeStatic { + vfs: TFontFamily; + fonts: { [name: string]: TFontFamilyTypes }; + createPdf(documentDefinitions: TDocumentDefinitions): TCreatedPdf; + } +} diff --git a/types/pdfmake/pdfmake-tests.ts b/types/pdfmake/pdfmake-tests.ts new file mode 100644 index 0000000000..0f23e5c5d5 --- /dev/null +++ b/types/pdfmake/pdfmake-tests.ts @@ -0,0 +1,10 @@ +import * as pdfMake from 'pdfmake/build/pdfmake'; +import * as pdfFonts from 'pdfmake/build/vfs_fonts'; + +const docDefinition = { content: 'This is an sample PDF printed with pdfMake' }; + +const createPdf = () => { + const pdf = pdfMake; + pdf.vfs = pdfFonts.pdfMake.vfs; + pdfMake.createPdf(docDefinition).download(); +}; diff --git a/types/pdfmake/tsconfig.json b/types/pdfmake/tsconfig.json new file mode 100644 index 0000000000..2e8b5b10af --- /dev/null +++ b/types/pdfmake/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "esModuleInterop": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "pdfmake-tests.ts" + ] +} diff --git a/types/pdfmake/tslint.json b/types/pdfmake/tslint.json new file mode 100644 index 0000000000..aa858f144a --- /dev/null +++ b/types/pdfmake/tslint.json @@ -0,0 +1,6 @@ +{ + "extends": "dtslint/dt.json", + "rules": { + "no-declare-current-package": false + } +} \ No newline at end of file