chromiumly 4.4.1 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +206 -20
- package/dist/chromium/converters/html.converter.d.ts +1 -1
- package/dist/chromium/converters/html.converter.js +4 -3
- package/dist/chromium/converters/html.converter.js.map +1 -1
- package/dist/chromium/converters/markdown.converter.d.ts +1 -1
- package/dist/chromium/converters/markdown.converter.js +4 -3
- package/dist/chromium/converters/markdown.converter.js.map +1 -1
- package/dist/chromium/converters/url.converter.d.ts +1 -1
- package/dist/chromium/converters/url.converter.js +4 -3
- package/dist/chromium/converters/url.converter.js.map +1 -1
- package/dist/chromium/interfaces/converter.types.d.ts +3 -1
- package/dist/chromium/screenshots/html.screenshot.js +1 -1
- package/dist/chromium/screenshots/html.screenshot.js.map +1 -1
- package/dist/chromium/screenshots/markdown.screenshot.js +1 -1
- package/dist/chromium/screenshots/markdown.screenshot.js.map +1 -1
- package/dist/chromium/screenshots/url.screenshot.js +1 -1
- package/dist/chromium/screenshots/url.screenshot.js.map +1 -1
- package/dist/chromium/utils/converter.utils.js +3 -0
- package/dist/chromium/utils/converter.utils.js.map +1 -1
- package/dist/common/gotenberg.utils.d.ts +5 -5
- package/dist/common/gotenberg.utils.js +9 -6
- package/dist/common/gotenberg.utils.js.map +1 -1
- package/dist/common/index.d.ts +2 -0
- package/dist/common/index.js +3 -1
- package/dist/common/index.js.map +1 -1
- package/dist/common/pdf-engine-rotate.utils.d.ts +5 -0
- package/dist/common/pdf-engine-rotate.utils.js +17 -0
- package/dist/common/pdf-engine-rotate.utils.js.map +1 -0
- package/dist/common/types.d.ts +6 -0
- package/dist/gotenberg.d.ts +5 -0
- package/dist/gotenberg.js +10 -0
- package/dist/gotenberg.js.map +1 -1
- package/dist/libre-office/interfaces/libre-office.types.d.ts +3 -1
- package/dist/libre-office/libre-office.d.ts +2 -1
- package/dist/libre-office/libre-office.js +5 -3
- package/dist/libre-office/libre-office.js.map +1 -1
- package/dist/libre-office/utils/libre-office.utils.js +3 -0
- package/dist/libre-office/utils/libre-office.utils.js.map +1 -1
- package/dist/main.config.d.ts +40 -3
- package/dist/main.config.js +60 -4
- package/dist/main.config.js.map +1 -1
- package/dist/main.d.ts +2 -1
- package/dist/main.js +3 -1
- package/dist/main.js.map +1 -1
- package/dist/pdf-engines/interfaces/pdf-engines.types.d.ts +10 -2
- package/dist/pdf-engines/pdf-engines.d.ts +16 -16
- package/dist/pdf-engines/pdf-engines.js +29 -9
- package/dist/pdf-engines/pdf-engines.js.map +1 -1
- package/dist/templates/generators/generator.d.ts +18 -0
- package/dist/templates/generators/generator.js +25 -0
- package/dist/templates/generators/generator.js.map +1 -0
- package/dist/templates/generators/templates.d.ts +8 -0
- package/dist/templates/generators/templates.js +44 -0
- package/dist/templates/generators/templates.js.map +1 -0
- package/dist/templates/index.d.ts +2 -0
- package/dist/templates/index.js +6 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/interfaces/templates.types.d.ts +46 -0
- package/dist/templates/interfaces/templates.types.js +3 -0
- package/dist/templates/interfaces/templates.types.js.map +1 -0
- package/dist/templates/validators/templates.validators.d.ts +6 -0
- package/dist/templates/validators/templates.validators.js +63 -0
- package/dist/templates/validators/templates.validators.js.map +1 -0
- package/package.json +1 -1
|
@@ -26,7 +26,7 @@ class PDFEngines {
|
|
|
26
26
|
*
|
|
27
27
|
* @returns {Promise<Buffer>} A Promise resolving to the merged PDF content as a buffer
|
|
28
28
|
*/
|
|
29
|
-
static async merge({ files, pdfa, pdfUA, metadata, downloadFrom, flatten, watermark, stamp }) {
|
|
29
|
+
static async merge({ files, pdfa, pdfUA, metadata, downloadFrom, flatten, watermark, stamp, rotate }) {
|
|
30
30
|
const data = new FormData();
|
|
31
31
|
await pdf_engines_utils_1.PDFEnginesUtils.addFiles(files, data);
|
|
32
32
|
await pdf_engines_utils_1.PDFEnginesUtils.customize(data, {
|
|
@@ -39,8 +39,11 @@ class PDFEngines {
|
|
|
39
39
|
if (watermark || stamp) {
|
|
40
40
|
await common_1.PdfEngineWatermarkStampUtils.appendPdfEngineWatermarkStamp(data, { watermark, stamp });
|
|
41
41
|
}
|
|
42
|
+
if (rotate) {
|
|
43
|
+
(0, common_1.appendPdfEngineRotate)(data, rotate);
|
|
44
|
+
}
|
|
42
45
|
const endpoint = `${main_config_1.Chromiumly.getGotenbergEndpoint()}/${main_config_1.Chromiumly.PDF_ENGINES_PATH}/${main_config_1.Chromiumly.PDF_ENGINE_ROUTES.merge}`;
|
|
43
|
-
return common_1.GotenbergUtils.fetch(endpoint, data, main_config_1.Chromiumly.getGotenbergApiBasicAuthUsername(), main_config_1.Chromiumly.getGotenbergApiBasicAuthPassword(), main_config_1.Chromiumly.getCustomHttpHeaders());
|
|
46
|
+
return common_1.GotenbergUtils.fetch(endpoint, data, main_config_1.Chromiumly.getGotenbergApiBasicAuthUsername(), main_config_1.Chromiumly.getGotenbergApiBasicAuthPassword(), main_config_1.Chromiumly.getCustomHttpHeaders(), main_config_1.Chromiumly.getGotenbergApiKey());
|
|
44
47
|
}
|
|
45
48
|
/**
|
|
46
49
|
* Converts various document formats to PDF.
|
|
@@ -61,7 +64,7 @@ class PDFEngines {
|
|
|
61
64
|
downloadFrom
|
|
62
65
|
});
|
|
63
66
|
const endpoint = `${main_config_1.Chromiumly.getGotenbergEndpoint()}/${main_config_1.Chromiumly.PDF_ENGINES_PATH}/${main_config_1.Chromiumly.PDF_ENGINE_ROUTES.convert}`;
|
|
64
|
-
return common_1.GotenbergUtils.fetch(endpoint, data, main_config_1.Chromiumly.getGotenbergApiBasicAuthUsername(), main_config_1.Chromiumly.getGotenbergApiBasicAuthPassword(), main_config_1.Chromiumly.getCustomHttpHeaders());
|
|
67
|
+
return common_1.GotenbergUtils.fetch(endpoint, data, main_config_1.Chromiumly.getGotenbergApiBasicAuthUsername(), main_config_1.Chromiumly.getGotenbergApiBasicAuthPassword(), main_config_1.Chromiumly.getCustomHttpHeaders(), main_config_1.Chromiumly.getGotenbergApiKey());
|
|
65
68
|
}
|
|
66
69
|
/**
|
|
67
70
|
* Splits a PDF file into multiple PDF files.
|
|
@@ -71,7 +74,7 @@ class PDFEngines {
|
|
|
71
74
|
* @param {Split} options.options - Split configuration specifying mode ('pages' or 'intervals'), span, and unify options.
|
|
72
75
|
* @returns {Promise<Buffer>} A Promise resolving to the split PDF content as a buffer
|
|
73
76
|
*/
|
|
74
|
-
static async split({ files, options, watermark, stamp }) {
|
|
77
|
+
static async split({ files, options, watermark, stamp, rotate }) {
|
|
75
78
|
const data = new FormData();
|
|
76
79
|
await pdf_engines_utils_1.PDFEnginesUtils.addFiles(files, data);
|
|
77
80
|
data.append('splitMode', options.mode);
|
|
@@ -86,8 +89,11 @@ class PDFEngines {
|
|
|
86
89
|
if (watermark || stamp) {
|
|
87
90
|
await common_1.PdfEngineWatermarkStampUtils.appendPdfEngineWatermarkStamp(data, { watermark, stamp });
|
|
88
91
|
}
|
|
92
|
+
if (rotate) {
|
|
93
|
+
(0, common_1.appendPdfEngineRotate)(data, rotate);
|
|
94
|
+
}
|
|
89
95
|
const endpoint = `${main_config_1.Chromiumly.getGotenbergEndpoint()}/${main_config_1.Chromiumly.PDF_ENGINES_PATH}/${main_config_1.Chromiumly.PDF_ENGINE_ROUTES.split}`;
|
|
90
|
-
return common_1.GotenbergUtils.fetch(endpoint, data, main_config_1.Chromiumly.getGotenbergApiBasicAuthUsername(), main_config_1.Chromiumly.getGotenbergApiBasicAuthPassword(), main_config_1.Chromiumly.getCustomHttpHeaders());
|
|
96
|
+
return common_1.GotenbergUtils.fetch(endpoint, data, main_config_1.Chromiumly.getGotenbergApiBasicAuthUsername(), main_config_1.Chromiumly.getGotenbergApiBasicAuthPassword(), main_config_1.Chromiumly.getCustomHttpHeaders(), main_config_1.Chromiumly.getGotenbergApiKey());
|
|
91
97
|
}
|
|
92
98
|
/**
|
|
93
99
|
* Flattens a PDF file.
|
|
@@ -99,6 +105,20 @@ class PDFEngines {
|
|
|
99
105
|
const data = new FormData();
|
|
100
106
|
await pdf_engines_utils_1.PDFEnginesUtils.addFiles(files, data);
|
|
101
107
|
const endpoint = `${main_config_1.Chromiumly.getGotenbergEndpoint()}/${main_config_1.Chromiumly.PDF_ENGINES_PATH}/${main_config_1.Chromiumly.PDF_ENGINE_ROUTES.flatten}`;
|
|
108
|
+
return common_1.GotenbergUtils.fetch(endpoint, data, main_config_1.Chromiumly.getGotenbergApiBasicAuthUsername(), main_config_1.Chromiumly.getGotenbergApiBasicAuthPassword(), main_config_1.Chromiumly.getCustomHttpHeaders(), main_config_1.Chromiumly.getGotenbergApiKey());
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Rotates pages of one or more PDF files using the configured PDF engine.
|
|
112
|
+
*
|
|
113
|
+
* @param options.files - PDF files to rotate
|
|
114
|
+
* @param options.angle - Rotation angle in degrees (90, 180, or 270)
|
|
115
|
+
* @param options.pages - Optional page ranges (e.g. '1-3', '5'); omit for all pages
|
|
116
|
+
*/
|
|
117
|
+
static async rotate({ files, angle, pages }) {
|
|
118
|
+
const data = new FormData();
|
|
119
|
+
await pdf_engines_utils_1.PDFEnginesUtils.addFiles(files, data);
|
|
120
|
+
(0, common_1.appendPdfEngineRotate)(data, { angle, pages });
|
|
121
|
+
const endpoint = `${main_config_1.Chromiumly.getGotenbergEndpoint()}/${main_config_1.Chromiumly.PDF_ENGINES_PATH}/${main_config_1.Chromiumly.PDF_ENGINE_ROUTES.rotate}`;
|
|
102
122
|
return common_1.GotenbergUtils.fetch(endpoint, data, main_config_1.Chromiumly.getGotenbergApiBasicAuthUsername(), main_config_1.Chromiumly.getGotenbergApiBasicAuthPassword(), main_config_1.Chromiumly.getCustomHttpHeaders());
|
|
103
123
|
}
|
|
104
124
|
/**
|
|
@@ -111,7 +131,7 @@ class PDFEngines {
|
|
|
111
131
|
const data = new FormData();
|
|
112
132
|
await pdf_engines_utils_1.PDFEnginesUtils.addFiles(files, data);
|
|
113
133
|
const endpoint = `${main_config_1.Chromiumly.getGotenbergEndpoint()}/${main_config_1.Chromiumly.PDF_ENGINES_PATH}/${main_config_1.Chromiumly.PDF_ENGINE_ROUTES.readMetadata}`;
|
|
114
|
-
return common_1.GotenbergUtils.fetch(endpoint, data, main_config_1.Chromiumly.getGotenbergApiBasicAuthUsername(), main_config_1.Chromiumly.getGotenbergApiBasicAuthPassword(), main_config_1.Chromiumly.getCustomHttpHeaders());
|
|
134
|
+
return common_1.GotenbergUtils.fetch(endpoint, data, main_config_1.Chromiumly.getGotenbergApiBasicAuthUsername(), main_config_1.Chromiumly.getGotenbergApiBasicAuthPassword(), main_config_1.Chromiumly.getCustomHttpHeaders(), main_config_1.Chromiumly.getGotenbergApiKey());
|
|
115
135
|
}
|
|
116
136
|
/**
|
|
117
137
|
* Writes metadata to the provided PDF files.
|
|
@@ -125,7 +145,7 @@ class PDFEngines {
|
|
|
125
145
|
data.append('metadata', JSON.stringify(metadata));
|
|
126
146
|
await pdf_engines_utils_1.PDFEnginesUtils.addFiles(files, data);
|
|
127
147
|
const endpoint = `${main_config_1.Chromiumly.getGotenbergEndpoint()}/${main_config_1.Chromiumly.PDF_ENGINES_PATH}/${main_config_1.Chromiumly.PDF_ENGINE_ROUTES.writeMetadata}`;
|
|
128
|
-
return common_1.GotenbergUtils.fetch(endpoint, data, main_config_1.Chromiumly.getGotenbergApiBasicAuthUsername(), main_config_1.Chromiumly.getGotenbergApiBasicAuthPassword(), main_config_1.Chromiumly.getCustomHttpHeaders());
|
|
148
|
+
return common_1.GotenbergUtils.fetch(endpoint, data, main_config_1.Chromiumly.getGotenbergApiBasicAuthUsername(), main_config_1.Chromiumly.getGotenbergApiBasicAuthPassword(), main_config_1.Chromiumly.getCustomHttpHeaders(), main_config_1.Chromiumly.getGotenbergApiKey());
|
|
129
149
|
}
|
|
130
150
|
/**
|
|
131
151
|
* Encrypts a PDF file.
|
|
@@ -143,7 +163,7 @@ class PDFEngines {
|
|
|
143
163
|
data.append('ownerPassword', options.ownerPassword);
|
|
144
164
|
}
|
|
145
165
|
const endpoint = `${main_config_1.Chromiumly.getGotenbergEndpoint()}/${main_config_1.Chromiumly.PDF_ENGINES_PATH}/${main_config_1.Chromiumly.PDF_ENGINE_ROUTES.encrypt}`;
|
|
146
|
-
return common_1.GotenbergUtils.fetch(endpoint, data, main_config_1.Chromiumly.getGotenbergApiBasicAuthUsername(), main_config_1.Chromiumly.getGotenbergApiBasicAuthPassword(), main_config_1.Chromiumly.getCustomHttpHeaders());
|
|
166
|
+
return common_1.GotenbergUtils.fetch(endpoint, data, main_config_1.Chromiumly.getGotenbergApiBasicAuthUsername(), main_config_1.Chromiumly.getGotenbergApiBasicAuthPassword(), main_config_1.Chromiumly.getCustomHttpHeaders(), main_config_1.Chromiumly.getGotenbergApiKey());
|
|
147
167
|
}
|
|
148
168
|
/**
|
|
149
169
|
* Embeds files into PDF files.
|
|
@@ -188,7 +208,7 @@ class PDFEngines {
|
|
|
188
208
|
await pdf_engines_utils_1.PDFEnginesUtils.addFiles(files, data);
|
|
189
209
|
await pdf_engines_utils_1.PDFEnginesUtils.addFilesWithFieldName(embeds, data, 'embeds');
|
|
190
210
|
const endpoint = `${main_config_1.Chromiumly.getGotenbergEndpoint()}/${main_config_1.Chromiumly.PDF_ENGINES_PATH}/${main_config_1.Chromiumly.PDF_ENGINE_ROUTES.embed}`;
|
|
191
|
-
return common_1.GotenbergUtils.fetch(endpoint, data, main_config_1.Chromiumly.getGotenbergApiBasicAuthUsername(), main_config_1.Chromiumly.getGotenbergApiBasicAuthPassword(), main_config_1.Chromiumly.getCustomHttpHeaders());
|
|
211
|
+
return common_1.GotenbergUtils.fetch(endpoint, data, main_config_1.Chromiumly.getGotenbergApiBasicAuthUsername(), main_config_1.Chromiumly.getGotenbergApiBasicAuthPassword(), main_config_1.Chromiumly.getCustomHttpHeaders(), main_config_1.Chromiumly.getGotenbergApiKey());
|
|
192
212
|
}
|
|
193
213
|
/**
|
|
194
214
|
* Generates a PDF file from a buffer and saves it to the "__generated__" directory.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf-engines.js","sourceRoot":"","sources":["../../src/pdf-engines/pdf-engines.ts"],"names":[],"mappings":";;;;;;AAAA,2BAA8B;AAC9B,gDAAwB;AAExB,gDAA4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"pdf-engines.js","sourceRoot":"","sources":["../../src/pdf-engines/pdf-engines.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { TemplatesRoute } from '../../main.config';
|
|
2
|
+
/**
|
|
3
|
+
* Abstract class representing a generic generator.
|
|
4
|
+
* Concrete generator classes should extend this class and implement specific generation logic.
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class Generator {
|
|
7
|
+
/**
|
|
8
|
+
* The endpoint URL for the generator.
|
|
9
|
+
*/
|
|
10
|
+
readonly endpoint: string;
|
|
11
|
+
/**
|
|
12
|
+
* Creates an instance of the Generator class.
|
|
13
|
+
* Initializes the endpoint URL based on the provided TemplatesRoute.
|
|
14
|
+
*
|
|
15
|
+
* @param {TemplatesRoute} route - The TemplatesRoute enum value representing the generation route.
|
|
16
|
+
*/
|
|
17
|
+
constructor(route: TemplatesRoute);
|
|
18
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Generator = void 0;
|
|
4
|
+
const main_config_1 = require("../../main.config");
|
|
5
|
+
/**
|
|
6
|
+
* Abstract class representing a generic generator.
|
|
7
|
+
* Concrete generator classes should extend this class and implement specific generation logic.
|
|
8
|
+
*/
|
|
9
|
+
class Generator {
|
|
10
|
+
/**
|
|
11
|
+
* The endpoint URL for the generator.
|
|
12
|
+
*/
|
|
13
|
+
endpoint;
|
|
14
|
+
/**
|
|
15
|
+
* Creates an instance of the Generator class.
|
|
16
|
+
* Initializes the endpoint URL based on the provided TemplatesRoute.
|
|
17
|
+
*
|
|
18
|
+
* @param {TemplatesRoute} route - The TemplatesRoute enum value representing the generation route.
|
|
19
|
+
*/
|
|
20
|
+
constructor(route) {
|
|
21
|
+
this.endpoint = `${main_config_1.Chromiumly.getGotenbergEndpoint()}/${main_config_1.Chromiumly.TEMPLATES_PATH}/${main_config_1.Chromiumly.TEMPLATES_ROUTES[route]}`;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.Generator = Generator;
|
|
25
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/templates/generators/generator.ts"],"names":[],"mappings":";;;AAAA,mDAA+D;AAE/D;;;GAGG;AACH,MAAsB,SAAS;IAC3B;;OAEG;IACM,QAAQ,CAAS;IAE1B;;;;;OAKG;IACH,YAAY,KAAqB;QAC7B,IAAI,CAAC,QAAQ,GAAG,GAAG,wBAAU,CAAC,oBAAoB,EAAE,IAAI,wBAAU,CAAC,cAAc,IAAI,wBAAU,CAAC,gBAAgB,CAAC,KAAiD,CAAC,EAAE,CAAC;IAC1K,CAAC;CACJ;AAfD,8BAeC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TemplateRequest, TemplateType } from '../interfaces/templates.types';
|
|
2
|
+
import { Generator } from './generator';
|
|
3
|
+
export declare class Templates extends Generator {
|
|
4
|
+
constructor();
|
|
5
|
+
generate<TType extends TemplateType>(request: TemplateRequest<TType>, options?: {
|
|
6
|
+
validate?: boolean;
|
|
7
|
+
}): Promise<Buffer>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Templates = void 0;
|
|
4
|
+
const main_config_1 = require("../../main.config");
|
|
5
|
+
const templates_validators_1 = require("../validators/templates.validators");
|
|
6
|
+
const generator_1 = require("./generator");
|
|
7
|
+
class Templates extends generator_1.Generator {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(main_config_1.TemplatesRoute.GENERATE);
|
|
10
|
+
}
|
|
11
|
+
async generate(request, options) {
|
|
12
|
+
const apiKey = main_config_1.Chromiumly.getGotenbergApiKey();
|
|
13
|
+
if (!apiKey) {
|
|
14
|
+
throw new Error('Templates requires an API key. Please configure it via Chromiumly.configure({ apiKey: "..." }).');
|
|
15
|
+
}
|
|
16
|
+
if (options?.validate) {
|
|
17
|
+
const validator = templates_validators_1.templateValidators[request.type];
|
|
18
|
+
if (validator && !validator(request.data)) {
|
|
19
|
+
throw new Error(`Invalid template data for type "${request.type}". Please ensure it matches the expected structure.`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
const response = await fetch(this.endpoint, {
|
|
23
|
+
method: 'POST',
|
|
24
|
+
headers: {
|
|
25
|
+
'X-Api-Key': apiKey,
|
|
26
|
+
'Content-Type': 'application/json'
|
|
27
|
+
},
|
|
28
|
+
body: JSON.stringify(request)
|
|
29
|
+
});
|
|
30
|
+
if (!response.ok) {
|
|
31
|
+
const body = await response.text();
|
|
32
|
+
const trace = response.headers.get('gotenberg-trace');
|
|
33
|
+
throw new Error(`Gotenberg API Error:\n` +
|
|
34
|
+
`Endpoint: ${this.endpoint}\n` +
|
|
35
|
+
`Status: ${response.status} ${response.statusText}\n` +
|
|
36
|
+
`Trace: ${trace || 'No trace'}\n` +
|
|
37
|
+
`Body: ${body}`);
|
|
38
|
+
}
|
|
39
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
40
|
+
return Buffer.from(arrayBuffer);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.Templates = Templates;
|
|
44
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/templates/generators/templates.ts"],"names":[],"mappings":";;;AAAA,mDAA+D;AAE/D,6EAAwE;AACxE,2CAAwC;AAExC,MAAa,SAAU,SAAQ,qBAAS;IACpC;QACI,KAAK,CAAC,4BAAc,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,QAAQ,CACjB,OAA+B,EAC/B,OAAgC;QAEhC,MAAM,MAAM,GAAG,wBAAU,CAAC,kBAAkB,EAAE,CAAC;QAE/C,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACX,iGAAiG,CACpG,CAAC;QACN,CAAC;QAED,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,yCAAkB,CAAC,OAAO,CAAC,IAAI,CAElC,CAAC;YAEhB,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CACX,mCAAmC,OAAO,CAAC,IAAI,qDAAqD,CACvG,CAAC;YACN,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;YACxC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,WAAW,EAAE,MAAM;gBACnB,cAAc,EAAE,kBAAkB;aACrC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAEtD,MAAM,IAAI,KAAK,CACX,wBAAwB;gBACpB,aAAa,IAAI,CAAC,QAAQ,IAAI;gBAC9B,WAAW,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,IAAI;gBACrD,UAAU,KAAK,IAAI,UAAU,IAAI;gBACjC,SAAS,IAAI,EAAE,CACtB,CAAC;QACN,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;CACJ;AAtDD,8BAsDC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { type Currency, type TemplateType, type TemplateRequest, type InvoiceSaasTemplateData, type InvoiceClassicTemplateData, type TemplateDataByType, type InvoiceItem, type TemplateParty } from './interfaces/templates.types';
|
|
2
|
+
export { Templates } from './generators/templates';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Templates = void 0;
|
|
4
|
+
var templates_1 = require("./generators/templates");
|
|
5
|
+
Object.defineProperty(exports, "Templates", { enumerable: true, get: function () { return templates_1.Templates; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":";;;AAWA,oDAAmD;AAA1C,sGAAA,SAAS,OAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export type Currency = 'USD' | 'EUR' | 'GBP' | 'JPY' | 'CNY' | 'CHF' | 'CAD' | 'AUD' | 'INR' | 'BRL' | 'MXN' | 'SGD' | 'HKD' | 'NOK' | 'SEK' | 'DKK' | 'NZD' | 'ZAR' | 'AED' | 'SAR' | 'KWD' | 'QAR' | 'BHD' | 'OMR' | 'JOD' | 'EGP' | 'MAD' | 'TND' | 'NGN' | 'KES' | 'GHS' | 'TZS' | 'UGX' | 'ETB' | 'XOF' | 'XAF' | 'TRY' | 'RUB' | 'PLN' | 'CZK' | 'HUF' | 'RON' | 'BGN' | 'HRK' | 'RSD' | 'UAH' | 'ILS' | 'PKR' | 'BDT' | 'LKR' | 'NPR' | 'MMK' | 'THB' | 'VND' | 'IDR' | 'MYR' | 'PHP' | 'KRW' | 'TWD' | 'MNT' | 'KZT' | 'UZS' | 'GEL' | 'AMD' | 'AZN' | 'IRR' | 'IQD' | 'CLP' | 'COP' | 'ARS' | 'PEN' | 'UYU' | 'BOB' | 'PYG' | 'VES' | 'CRC' | 'GTQ' | 'HNL' | 'NIO' | 'DOP' | 'CUP' | 'JMD' | 'TTD' | 'BBD' | 'XCD';
|
|
2
|
+
export type TemplateType = 'invoice_freelancer' | 'invoice_saas' | 'invoice_classic' | 'invoice_minimal' | 'invoice_modern';
|
|
3
|
+
export interface TemplateParty {
|
|
4
|
+
name: string;
|
|
5
|
+
addressLine1: string;
|
|
6
|
+
addressLine2?: string;
|
|
7
|
+
tax?: string;
|
|
8
|
+
iban?: string;
|
|
9
|
+
bic?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface InvoiceItem {
|
|
12
|
+
description: string;
|
|
13
|
+
qty: number;
|
|
14
|
+
unitPrice: string;
|
|
15
|
+
amount: string;
|
|
16
|
+
}
|
|
17
|
+
export interface InvoiceSaasTemplateData {
|
|
18
|
+
invoiceNumber: string;
|
|
19
|
+
createdDate: string;
|
|
20
|
+
dueDate: string;
|
|
21
|
+
companyLogo?: string;
|
|
22
|
+
sender: TemplateParty;
|
|
23
|
+
receiver: TemplateParty;
|
|
24
|
+
items: InvoiceItem[];
|
|
25
|
+
currency: Currency;
|
|
26
|
+
subTotal: string;
|
|
27
|
+
taxRate: number;
|
|
28
|
+
taxAmount: string;
|
|
29
|
+
total: string;
|
|
30
|
+
footerNote: string;
|
|
31
|
+
footerDisclaimer?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface InvoiceClassicTemplateData extends Omit<InvoiceSaasTemplateData, 'companyLogo'> {
|
|
34
|
+
companyLogo: string;
|
|
35
|
+
}
|
|
36
|
+
export interface TemplateDataByType {
|
|
37
|
+
invoice_saas: InvoiceSaasTemplateData;
|
|
38
|
+
invoice_freelancer: InvoiceSaasTemplateData;
|
|
39
|
+
invoice_classic: InvoiceClassicTemplateData;
|
|
40
|
+
invoice_minimal: InvoiceSaasTemplateData;
|
|
41
|
+
invoice_modern: InvoiceSaasTemplateData;
|
|
42
|
+
}
|
|
43
|
+
export type TemplateRequest<TType extends TemplateType> = {
|
|
44
|
+
type: TType;
|
|
45
|
+
data: TemplateDataByType[TType];
|
|
46
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.types.js","sourceRoot":"","sources":["../../../src/templates/interfaces/templates.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.templateValidators = void 0;
|
|
4
|
+
const isObject = (value) => typeof value === 'object' && value !== null;
|
|
5
|
+
const hasString = (obj, key) => typeof obj[key] === 'string' && obj[key] !== '';
|
|
6
|
+
const hasNumber = (obj, key) => typeof obj[key] === 'number';
|
|
7
|
+
const isValidUrl = (value) => {
|
|
8
|
+
if (typeof value !== 'string' || value === '')
|
|
9
|
+
return false;
|
|
10
|
+
try {
|
|
11
|
+
new URL(value);
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const validateInvoiceSaas = (data) => {
|
|
19
|
+
if (!isObject(data)) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
if (!hasString(data, 'invoiceNumber') ||
|
|
23
|
+
!hasString(data, 'createdDate') ||
|
|
24
|
+
!hasString(data, 'dueDate') ||
|
|
25
|
+
!hasString(data, 'currency') ||
|
|
26
|
+
!hasString(data, 'subTotal') ||
|
|
27
|
+
!hasNumber(data, 'taxRate') ||
|
|
28
|
+
!hasString(data, 'taxAmount') ||
|
|
29
|
+
!hasString(data, 'total') ||
|
|
30
|
+
!hasString(data, 'footerNote')) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
if (data.companyLogo !== undefined && !isValidUrl(data.companyLogo)) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
if (!Array.isArray(data.items) || data.items.length === 0) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
if (!isObject(data.sender) || !isObject(data.receiver)) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const validateParty = (party) => hasString(party, 'name') && hasString(party, 'addressLine1');
|
|
43
|
+
if (!validateParty(data.sender) ||
|
|
44
|
+
!validateParty(data.receiver)) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
return data.items.every((item) => {
|
|
48
|
+
if (!isObject(item)) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
return (hasString(item, 'description') &&
|
|
52
|
+
hasNumber(item, 'qty') &&
|
|
53
|
+
hasString(item, 'unitPrice') &&
|
|
54
|
+
hasString(item, 'amount'));
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
const validateInvoiceClassic = (data) => validateInvoiceSaas(data) &&
|
|
58
|
+
isValidUrl(data['companyLogo']);
|
|
59
|
+
exports.templateValidators = {
|
|
60
|
+
invoice_saas: validateInvoiceSaas,
|
|
61
|
+
invoice_classic: validateInvoiceClassic
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=templates.validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.validators.js","sourceRoot":"","sources":["../../../src/templates/validators/templates.validators.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chromiumly",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "A lightweight Typescript library that interacts with Gotenberg's different modules to convert a variety of document formats to PDF files.",
|
|
5
5
|
"main": "dist/main.js",
|
|
6
6
|
"types": "dist/main.d.ts",
|