diff --git a/types/convert-excel-to-json/convert-excel-to-json-tests.ts b/types/convert-excel-to-json/convert-excel-to-json-tests.ts new file mode 100644 index 0000000000..bd23d5d7a1 --- /dev/null +++ b/types/convert-excel-to-json/convert-excel-to-json-tests.ts @@ -0,0 +1,71 @@ +import excelToJson = require("convert-excel-to-json"); +import { readFileSync } from "fs"; + +const sourceFile = "test-data.xlsx"; +const sourceBuffer = readFileSync(sourceFile); + +// $ExpectError +excelToJson({ + header: { + rows: 1 + } +}); + +// $ExpectType any +excelToJson({ + sourceFile +}).sheet1[2]; + +// $ExpectType any[] +excelToJson(`{"sourceFile": "${sourceFile}"}`).sheet1; + +// $ExpectType any +excelToJson({ + source: sourceBuffer +}).sheet1[0]; + +// $ExpectType any[] +excelToJson({ + sourceFile, + range: "A2:B3", + sheets: ["sheet1", { + name: "sheet2", + header: { + rows: 1 + }, + columnToKey: { + A: "id", + B: "firstName", + D: "email" + } + }] +}).sheet2; + +// $ExpectType { [key: string]: any[]; } +excelToJson({ + sourceFile, + sheets: [{ + name: "sheet2", + }], + header: { + rows: 1 + }, + columnToKey: { + A: "{{A1}}", + B: "{{B1}}", + D: "{{D1}}" + } +}); + +// $ExpectType any[] +excelToJson({ + sourceFile, + sheets: [{ + name: "sheet3", + }], + header: { + rows: 0 + }, + includeEmptyLines: false, + sheetStubs: true +}).sheet3; diff --git a/types/convert-excel-to-json/index.d.ts b/types/convert-excel-to-json/index.d.ts new file mode 100644 index 0000000000..bd959e0286 --- /dev/null +++ b/types/convert-excel-to-json/index.d.ts @@ -0,0 +1,24 @@ +// Type definitions for convert-excel-to-json 1.7 +// Project: https://github.com/DiegoZoracKy/convert-excel-to-json +// Definitions by: UNIDY2002 +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +interface SheetConfig { + header?: { rows: number }; + range?: string; + columnToKey?: { [key: string]: string }; + includeEmptyLines?: boolean; + sheetStubs?: boolean; +} + +declare function excelToJson( + config: ({ sourceFile: string } | { source: string | Buffer }) // Either sourceFile or source should have a value + & { sheets?: ReadonlyArray<(string | (SheetConfig & { name: string }))> } // Nested SheetConfig should be allowed + & SheetConfig // ... or just a simple config for all + | string, // Input can also be a json-string (for cli) + sourceFile?: string, // For cli +): { [key: string]: any[] }; // Using any to provide more flexibility for downstream usages + +export = excelToJson; diff --git a/types/convert-excel-to-json/tsconfig.json b/types/convert-excel-to-json/tsconfig.json new file mode 100644 index 0000000000..6a6de46a65 --- /dev/null +++ b/types/convert-excel-to-json/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "convert-excel-to-json-tests.ts" + ] +} diff --git a/types/convert-excel-to-json/tslint.json b/types/convert-excel-to-json/tslint.json new file mode 100644 index 0000000000..f93cf8562a --- /dev/null +++ b/types/convert-excel-to-json/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "dtslint/dt.json" +}