diff --git a/package.json b/package.json index 78e355e..8a9feec 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ { "path": "pkg/dist-node/index.js", "webpack": false, - "limit": "3874 B" + "limit": "3916 B" } ], "@pika/pack": { diff --git a/src/internal/source-converters.ts b/src/internal/source-converters.ts index 652f362..339e030 100644 --- a/src/internal/source-converters.ts +++ b/src/internal/source-converters.ts @@ -52,8 +52,11 @@ export const toTuples = (source: Source, recursive = false): TupleSource[] => { } // single tuple like we want to be -> just return it - if (isTuple(source) && isFileName(source[0])) { - return [source] + if (isTuple(source)) { + if (isFileName(source[0])) { + return [source] + } + throw new Error(`Source name "${source[0]}" doesn't look like file name`) } // if object source @@ -61,7 +64,11 @@ export const toTuples = (source: Source, recursive = false): TupleSource[] => { const ret: TupleSource[] = [] for (const key in source) { if (source.hasOwnProperty(key)) { - ret.push([key, source[key]]) + if (isFileName(key)) { + ret.push([key, source[key]]) + } else { + throw new Error(`Source name "${key}" doesn't look like file name`) + } } } return ret diff --git a/test/manual/test_issue_11.ts b/test/manual/test_issue_11.ts new file mode 100644 index 0000000..7e5ac8e --- /dev/null +++ b/test/manual/test_issue_11.ts @@ -0,0 +1,16 @@ +import { createWriteStream, readFileSync } from 'fs' +import { convert, gotenberg, office, pipe, please } from '../../src' + +// need to run Gotenberg like this +// docker run --rm -p 3500:3000 thecodingmachine/gotenberg:6 + +const buffer = readFileSync('document.docx') + +pipe( + gotenberg('http://localhost:3500'), + convert, + office, + please +)(['aaaa', buffer]) + .then(pdf => pdf.pipe(createWriteStream(`${__dirname}/document.pdf`))) + .catch(console.error) diff --git a/test/please.spec.ts b/test/please.spec.ts index bdb5f8b..b427cad 100644 --- a/test/please.spec.ts +++ b/test/please.spec.ts @@ -118,3 +118,40 @@ test('Should throw on wrong source filenames', () => { `looks like you didn't set filename for document` ) }) + +test('Should throw on wrong source filename 2', () => { + const request1: OfficeRequest = { + type: RequestType.Office, + source: ['aaaaa', 'test'], + } as any + + expect(() => please(request1)).toThrow(`Source name "aaaaa" doesn't look like file name`) + + const request2: OfficeRequest = { + type: RequestType.Office, + source: { aaaaa: 'test' }, + } as any + + expect(() => please(request2)).toThrow(`Source name "aaaaa" doesn't look like file name`) + + const request3: OfficeRequest = { + type: RequestType.Office, + source: [['aaaaa', 'test']], + } as any + + expect(() => please(request3)).toThrow(`Source name "aaaaa" doesn't look like file name`) + + const request4: OfficeRequest = { + type: RequestType.Office, + source: [{ aaaaa: 'test' }], + } as any + + expect(() => please(request4)).toThrow(`Source name "aaaaa" doesn't look like file name`) + + const request5: OfficeRequest = { + type: RequestType.Office, + source: [['aaaaa', 'test'], { aaaaa: 'test' }], + } as any + + expect(() => please(request5)).toThrow(`Source name "aaaaa" doesn't look like file name`) +})