Compare commits

...

5 Commits

Author SHA1 Message Date
Victor 6b58a8b64e Merge pull request #63 from dooafus/patch-1
Update README.md
2023-12-19 19:33:42 +03:00
dooafus 7f1513f170 Update README.md
New location of Gotenberg homepage.
2023-12-19 09:57:09 -05:00
Victor Didenko c2c64b0be9 Add manual test for issue #51 2023-06-06 23:29:28 +03:00
Victor Didenko 1cf5c7a8c0 v0.7.4 2023-06-06 23:14:27 +03:00
Victor Didenko d1d7bbb526 Loosen filename test 2023-06-06 23:07:56 +03:00
8 changed files with 46 additions and 12 deletions
+2 -2
View File
@@ -6,8 +6,8 @@
[![NPM](https://img.shields.io/npm/v/gotenberg-js-client)](https://www.npmjs.com/package/gotenberg-js-client)
![Made with Love](https://img.shields.io/badge/made%20with-❤-red.svg)
A simple JS/TS client for interacting with a [Gotenberg](https://thecodingmachine.github.io/gotenberg/) API.<br>
[Gotenberg](https://thecodingmachine.github.io/gotenberg/) is a Docker-powered stateless API for converting HTML, Markdown and Office documents to PDF.
A simple JS/TS client for interacting with a [Gotenberg](https://gotenberg.dev/) API.<br>
[Gotenberg](https://gotenberg.dev/) is a Docker-powered stateless API for converting HTML, Markdown and Office documents to PDF.
- HTML and Markdown conversions using Google Chrome headless
- Office conversions (.txt, .rtf, .docx, .doc, .odt, .pptx, .ppt, .odp and so on) using [unoconv](https://github.com/dagwieers/unoconv)
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "gotenberg-js-client",
"version": "0.7.3",
"version": "0.7.4",
"description": "A simple JS/TS for interacting with a Gotenberg API",
"author": "Victor Didenko <yumaa.verdin@gmail.com> (https://yumaa.name)",
"license": "MIT",
@@ -25,7 +25,7 @@
{
"path": "pkg/dist-node/index.js",
"webpack": false,
"limit": "4244 B"
"limit": "4293 B"
}
],
"@pika/pack": {
+10 -7
View File
@@ -81,14 +81,17 @@ export const isIterable = (
/**
* Check, if given argument is simple string, and presumably is is just file name
* I hope no one will wants to use filename longer than 50 symbols :)
*/
const fileNameRE = /^[\p{L}\w\s\(\).,-]+\.[A-Za-z0-9]+$/u // tslint:disable-line no-empty-character-class
const MIN_FILE_NAME_LENGTH = 3
const MAX_FILE_NAME_LENGTH = 50
const filenameRE = /.+\..+/
const filenameReservedRE = /[<>:"/\\|?*\u0000-\u001F]/g
const windowsReservedNameRE = /^(con|prn|aux|nul|com\d|lpt\d)$/i
const MAX_FILE_NAME_LENGTH = 255
export const isFileName = (x: Source | undefined | null) =>
isString(x) &&
!x.startsWith('file:') && // in ideal world there should be `!isFileUri(x)`, but TypeScript sucks here
x.length >= MIN_FILE_NAME_LENGTH &&
x.length <= MAX_FILE_NAME_LENGTH &&
fileNameRE.test(x)
x !== '.' &&
x !== '..' &&
!x.startsWith('file:') && // in ideal world there should be `!isFileUri(x)`, but TypeScript sucks here
!filenameReservedRE.test(x) &&
!windowsReservedNameRE.test(x) &&
filenameRE.test(x)
+2 -1
View File
@@ -53,7 +53,8 @@ test('Test `isFileName` function', function () {
expect(isFileName('Screenshot 2021-12-24 at 09.16.20.png')).toBe(true) // <-
expect(isFileName('.test.png')).toBe(true) // <-
expect(isFileName('.png')).toBe(false)
expect(isFileName('🙀.png')).toBe(false)
expect(isFileName('🙀.png')).toBe(true) // <-
expect(isFileName('ces La esencia del cristianismo Dios es persona (jóvenes).docx')).toBe(true) // <-
expect(isFileName(url)).toBe(false)
expect(isFileName(array)).toBe(false)
expect(isFileName(map)).toBe(false)
Binary file not shown.
Binary file not shown.
Binary file not shown.
+30
View File
@@ -0,0 +1,30 @@
import fs from 'fs'
import * as got from '../../src'
// need to run Gotenberg like this
// docker run --rm -p 3500:3000 gotenberg/gotenberg:7
got
.pipe(
got.gotenberg(''),
got.merge,
got.adjust({
// manually adjust endpoint, because
// gotenberg:7 has different one
url: 'http://localhost:3500/forms/libreoffice/convert',
// manually adjust for fields
fields: {
merge: true,
// `merge` is not valid field for gotenberg:6
// so we have to cast to any, otherwise typescript will complain
} as any, // if you don't use typescript, just remove `as any` casting
}),
got.please
)({
'in1.docx': `file://${__dirname}/in1.docx`,
'in2.docx': `file://${__dirname}/in2.docx`,
'in3.docx': `file://${__dirname}/in3.docx`,
})
.then((pdf) => pdf.pipe(fs.createWriteStream(`${__dirname}/out1.pdf`)))
.catch(console.error)