diff --git a/types/carbone/carbone-tests.ts b/types/carbone/carbone-tests.ts new file mode 100644 index 0000000000..7373c58bb4 --- /dev/null +++ b/types/carbone/carbone-tests.ts @@ -0,0 +1,127 @@ +import carbone = require('carbone'); + +const buffer = Buffer.alloc(1024); +const convertTo = 'pdf'; +const currencySource = 'EUR'; +const currencyTarget = 'PLN'; +const extension = 'odt'; +const lang = 'pl'; +const tempPath = '/tmp'; +const templatePath = './templates'; + +const emptyCurrencyRates = {}; +const currencyRates = { + ...emptyCurrencyRates, + EUR: 1, + PLN: 0.25, +}; + +const emptyFormatters: carbone.Formatters = {}; +const formatters: carbone.Formatters = { + ...emptyFormatters, + json: data => JSON.stringify(data), +}; + +const emptyTranslations: carbone.Translations = {}; +const translations: carbone.Translations = { + ...emptyTranslations, + en: { + Hello: 'Hello', + Goodbye: 'Goodbye', + }, + pl: { + Hello: 'Witaj', + Goodbye: 'Do widzenia', + }, +}; + +const emptyData = {}; +const data = { + ...emptyData, + b: true, + n: 100, + s: 'carbone', + o: { + field: 'value', + }, +}; + +const emptyEnums: carbone.Enums = {}; +const enums: carbone.Enums = { + ...emptyEnums, + ARRAY: ['some', 'values'], + MAP: { + yes: 'true', + no: 'false', + }, +}; + +const emptyOptions: carbone.Options = {}; +const options: carbone.Options = { + ...emptyOptions, + tempPath, + templatePath, + lang, + translations, + currencySource, + currencyTarget, + currencyRates, +}; + +const emptyRenderOptions: carbone.RenderOptions = {}; +const renderOptions: carbone.RenderOptions = { + ...emptyRenderOptions, + complement: data, + convertTo, + currencyRates, + currencySource, + currencyTarget, + enum: enums, + lang, + translations, + variableStr: '', +}; + +const variables: carbone.Variable[] = [ + { + code: 'code1', + name: 'name1', + regex: /^/, + }, + { + code: 'code2', + name: 'name2', + regex: /$/, + }, +]; + +const emptyRenderXMLOptions: carbone.RenderXMLOptions = {}; +const renderXMLOptions: carbone.RenderXMLOptions = { + ...emptyRenderXMLOptions, + complement: data, + formatters, + lang, + translations, + existingVariables: variables, + extension, +}; + +carbone.set(emptyOptions); +carbone.set(options); +carbone.reset(); + +carbone.addFormatters(formatters); + +carbone.addTemplate('xml', '', err => {}); +carbone.removeTemplate('xml', err => {}); + +const conversionFormats: carbone.ConversionFormat[] = carbone.listConversionFormats('document'); + +carbone.render('./template.odf', data, renderOptions, (err, result: Buffer | string, reportName: string) => {}); +carbone.render('./template.odf', data, (err, result: Buffer | string, reportName: string) => {}); + +carbone.renderXML('', data, renderXMLOptions, (err, result: Buffer | string) => {}); +carbone.renderXML('', data, (err, result: Buffer | string) => {}); + +carbone.convert(buffer, 'pdf', {}, (err, result: Buffer) => {}); +carbone.convert(buffer, 'pdf', (err, result: Buffer) => {}); diff --git a/types/carbone/index.d.ts b/types/carbone/index.d.ts new file mode 100644 index 0000000000..3b54552feb --- /dev/null +++ b/types/carbone/index.d.ts @@ -0,0 +1,93 @@ +// Type definitions for carbone 1.2 +// Project: https://carbone.io +// Definitions by: Artur Nerkowski +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +export interface ConversionFormat { + id: string; + extension: string; + desc: string; + format: string; +} +export interface CurrencyRates { + [currency: string]: number; +} +export type DocumentType = 'document' | 'web' | 'graphics' | 'spreadsheet' | 'presentation'; +export interface Enums { + [type: string]: string[] | { [key: string]: string }; +} +export interface FormatterContext { + currency: { + rates: CurrencyRates; + source: string; + target: string; + }; + enum: Enums; + extension: string; + lang: string; + stopPropagation: boolean; +} +export type Formatter = (this: FormatterContext, data: any, ...params: any[]) => void; +export interface Formatters { + [name: string]: Formatter; +} +export interface Translations { + [lang: string]: { + [key: string]: string; + }; +} +export interface Variable { + name: string; + code: string; + regex: RegExp; +} +export type VoidCallback = (err: NodeJS.ErrnoException | null) => void; + +export interface Options { + tempPath?: string; + templatePath?: string; + lang?: string; + translations?: Translations; + currencySource?: string; + currencyTarget?: string; + currencyRates?: CurrencyRates; +} +export function set(options: Options): void; +export function reset(): void; +export function addFormatters(customFormatters: Formatters): void; +export function addTemplate(fileId: string, data: string | Buffer, callback: VoidCallback): void; +export function removeTemplate(fileId: string, callback: VoidCallback): void; +export function listConversionFormats(documentType: DocumentType): ConversionFormat[]; + +export interface RenderXMLOptions { + complement?: object; + formatters?: Formatters; + lang?: string; + translations?: Translations; + existingVariables?: Variable[]; + extension?: string; +} +export type RenderXMLCallback = (err: NodeJS.ErrnoException | null, xmlResult: string) => void; +export function renderXML(xml: string, data: object, options: RenderXMLOptions, callback: RenderXMLCallback): void; +export function renderXML(xml: string, data: object, callback: RenderXMLCallback): void; + +export interface RenderOptions { + complement?: object; + convertTo?: string | object; + variableStr?: string; + lang?: string; + translations?: Translations; + enum?: Enums; + currencySource?: string; + currencyTarget?: string; + currencyRates?: CurrencyRates; +} +export type RenderCallback = (err: NodeJS.ErrnoException | null, result: Buffer | string, reportName: string) => void; +export function render(templatePath: string, data: object, options: RenderOptions, callback: RenderCallback): void; +export function render(templatePath: string, data: object, callback: RenderCallback): void; + +export type ConvertCallback = (err: NodeJS.ErrnoException | null, result: Buffer) => void; +export function convert(data: Buffer, convertTo: string, options: object, callback: ConvertCallback): void; +export function convert(data: Buffer, convertTo: string, callback: ConvertCallback): void; diff --git a/types/carbone/tsconfig.json b/types/carbone/tsconfig.json new file mode 100644 index 0000000000..ebd65c2f8a --- /dev/null +++ b/types/carbone/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "carbone-tests.ts" + ] +} diff --git a/types/carbone/tslint.json b/types/carbone/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/carbone/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }