@ic-labs/invoice-kit 0.1.8 → 0.1.9
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 +13 -4
- package/dist/renderers/pdf-support.d.ts +32 -0
- package/dist/renderers/pdf-support.d.ts.map +1 -0
- package/dist/renderers/pdf-support.js +197 -0
- package/dist/renderers/pdf-support.js.map +1 -0
- package/dist/renderers/pdf.d.ts.map +1 -1
- package/dist/renderers/pdf.js +55 -164
- package/dist/renderers/pdf.js.map +1 -1
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -16,6 +16,8 @@ It is designed for real business usage, not a demo. The package provides typed d
|
|
|
16
16
|
- Lightweight runtime based on `pdfkit`
|
|
17
17
|
- Clean factories for all document types
|
|
18
18
|
- Automatic subtotal, discount, VAT, taxable base, and total calculations
|
|
19
|
+
- Multi-page item tables for longer documents
|
|
20
|
+
- Automated `node:test` coverage for totals, validation, sparse documents, and pagination
|
|
19
21
|
- Moroccan defaults:
|
|
20
22
|
- currency: `MAD`
|
|
21
23
|
- VAT label: `TVA`
|
|
@@ -414,7 +416,7 @@ const quote = createQuote({
|
|
|
414
416
|
|
|
415
417
|
### Arabic PDF rendering
|
|
416
418
|
|
|
417
|
-
Arabic labels are supported,
|
|
419
|
+
Arabic labels are supported. The renderer first tries your explicit `toPDF({ fonts })` values, then falls back to common system Arabic fonts when available.
|
|
418
420
|
|
|
419
421
|
```ts
|
|
420
422
|
await quote.toPDF({
|
|
@@ -426,7 +428,15 @@ await quote.toPDF({
|
|
|
426
428
|
});
|
|
427
429
|
```
|
|
428
430
|
|
|
429
|
-
|
|
431
|
+
If no compatible system font is installed, provide Arabic-capable font files explicitly.
|
|
432
|
+
|
|
433
|
+
Common fallback families the library tries automatically include Noto Naskh Arabic, Noto Sans Arabic, Amiri, and DejaVu Sans.
|
|
434
|
+
|
|
435
|
+
## Testing
|
|
436
|
+
|
|
437
|
+
- `npm test` builds the library and runs the automated `node:test` suite
|
|
438
|
+
- automated tests cover totals, VAT edge cases, validation, sparse document modules, delivery note normalization, and table pagination
|
|
439
|
+
- `npm run smoke` still generates end-to-end sample PDFs for manual inspection
|
|
430
440
|
|
|
431
441
|
## Remote Logo Support
|
|
432
442
|
|
|
@@ -631,9 +641,8 @@ That means a release requires a version bump before pushing to `main`.
|
|
|
631
641
|
|
|
632
642
|
## Limitations
|
|
633
643
|
|
|
634
|
-
- multi-page table layout is not implemented yet
|
|
635
644
|
- remote logos currently support PNG/JPEG only
|
|
636
|
-
- Arabic PDF output
|
|
645
|
+
- Arabic PDF output still depends on Arabic-capable fonts being installed or provided explicitly
|
|
637
646
|
- delivery notes intentionally do not display financial values
|
|
638
647
|
|
|
639
648
|
## License
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { BankInfo, BusinessDocumentData, DocumentColors, Party, PdfRenderOptions } from "../core/types.js";
|
|
2
|
+
import { getLabels } from "../locales/index.js";
|
|
3
|
+
export declare const PAGE: {
|
|
4
|
+
margin: number;
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
footerOffset: number;
|
|
8
|
+
headerTop: number;
|
|
9
|
+
lineGap: number;
|
|
10
|
+
};
|
|
11
|
+
export declare const DEFAULT_COLORS: Required<DocumentColors>;
|
|
12
|
+
export declare const collectPdf: (doc: PDFKit.PDFDocument) => Promise<Uint8Array>;
|
|
13
|
+
export declare const fetchLogo: (logoUrl: string) => Promise<Buffer>;
|
|
14
|
+
export declare const useFont: (doc: PDFKit.PDFDocument, fontPath: string | undefined, fallback: "Helvetica" | "Helvetica-Bold") => void;
|
|
15
|
+
export declare const resolvePdfFonts: (document: BusinessDocumentData, options?: PdfRenderOptions) => {
|
|
16
|
+
regular?: string;
|
|
17
|
+
bold?: string;
|
|
18
|
+
} | undefined;
|
|
19
|
+
export declare const truncateText: (doc: PDFKit.PDFDocument, value: string, width: number) => string;
|
|
20
|
+
export declare const drawFixedText: (doc: PDFKit.PDFDocument, text: string, x: number, y: number, options: PDFKit.Mixins.TextOptions) => number;
|
|
21
|
+
export declare const normalizeFooterText: (footer: string) => string;
|
|
22
|
+
export declare const ensureSectionSpace: (doc: PDFKit.PDFDocument, y: number, requiredHeight: number) => number;
|
|
23
|
+
export declare const drawLabelValue: (doc: PDFKit.PDFDocument, x: number, y: number, label: string, value: string, width: number, align: "left" | "right", color: string) => number;
|
|
24
|
+
export declare const resolveColors: (colors?: DocumentColors) => Required<DocumentColors>;
|
|
25
|
+
export declare const getMaxRowHeight: (doc: PDFKit.PDFDocument, cells: Array<{
|
|
26
|
+
text: string;
|
|
27
|
+
width: number;
|
|
28
|
+
options: PDFKit.Mixins.TextOptions;
|
|
29
|
+
}>, minHeight: number) => number;
|
|
30
|
+
export declare const buildPartyLines: (party: Party | undefined, labels: ReturnType<typeof getLabels>, includeName?: boolean) => string[];
|
|
31
|
+
export declare const buildBankLines: (bankInfo: BankInfo, labels: ReturnType<typeof getLabels>) => string[];
|
|
32
|
+
//# sourceMappingURL=pdf-support.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-support.d.ts","sourceRoot":"","sources":["../../src/renderers/pdf-support.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAChH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,eAAO,MAAM,IAAI;;;;;;;CAOhB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,cAAc,CAQnD,CAAC;AA2EF,eAAO,MAAM,UAAU,GAAU,KAAK,MAAM,CAAC,WAAW,KAAG,OAAO,CAAC,UAAU,CAazE,CAAC;AAEL,eAAO,MAAM,SAAS,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,CAiB/D,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,CAAC,WAAW,EAAE,UAAU,MAAM,GAAG,SAAS,EAAE,UAAU,WAAW,GAAG,gBAAgB,KAAG,IAOzH,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,UAAU,oBAAoB,EAC9B,UAAU,gBAAgB,KACzB;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAmBxC,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,CAAC,WAAW,EAAE,OAAO,MAAM,EAAE,OAAO,MAAM,KAAG,MAWpF,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,KAAK,MAAM,CAAC,WAAW,EACvB,MAAM,MAAM,EACZ,GAAG,MAAM,EACT,GAAG,MAAM,EACT,SAAS,MAAM,CAAC,MAAM,CAAC,WAAW,KACjC,MAWF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,KAAG,MAItC,CAAC;AAEhB,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,CAAC,WAAW,EAAE,GAAG,MAAM,EAAE,gBAAgB,MAAM,KAAG,MAS/F,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,KAAK,MAAM,CAAC,WAAW,EACvB,GAAG,MAAM,EACT,GAAG,MAAM,EACT,OAAO,MAAM,EACb,OAAO,MAAM,EACb,OAAO,MAAM,EACb,OAAO,MAAM,GAAG,OAAO,EACvB,OAAO,MAAM,KACZ,MAGF,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,SAAS,cAAc,KAAG,QAAQ,CAAC,cAAc,CAG7E,CAAC;AAaH,eAAO,MAAM,eAAe,GAC1B,KAAK,MAAM,CAAC,WAAW,EACvB,OAAO,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAA;CAAE,CAAC,EACjF,WAAW,MAAM,KAChB,MAEU,CAAC;AAEd,eAAO,MAAM,eAAe,GAAI,OAAO,KAAK,GAAG,SAAS,EAAE,QAAQ,UAAU,CAAC,OAAO,SAAS,CAAC,EAAE,qBAAkB,KAAG,MAAM,EAgB1H,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,UAAU,QAAQ,EAAE,QAAQ,UAAU,CAAC,OAAO,SAAS,CAAC,KAAG,MAAM,EAW/F,CAAC"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { getLabels } from "../locales/index.js";
|
|
3
|
+
export const PAGE = {
|
|
4
|
+
margin: 48,
|
|
5
|
+
width: 595.28,
|
|
6
|
+
height: 841.89,
|
|
7
|
+
footerOffset: 64,
|
|
8
|
+
headerTop: 42,
|
|
9
|
+
lineGap: 14
|
|
10
|
+
};
|
|
11
|
+
export const DEFAULT_COLORS = {
|
|
12
|
+
primary: "#173d73",
|
|
13
|
+
onPrimary: "#ffffff",
|
|
14
|
+
text: "#111827",
|
|
15
|
+
metaText: "#4b5563",
|
|
16
|
+
mutedText: "#6b7280",
|
|
17
|
+
border: "#d1d5db",
|
|
18
|
+
footerText: "#9ca3af"
|
|
19
|
+
};
|
|
20
|
+
const COMMON_ARABIC_FONT_SETS = [
|
|
21
|
+
{
|
|
22
|
+
regular: "/usr/share/fonts/truetype/noto/NotoNaskhArabic-Regular.ttf",
|
|
23
|
+
bold: "/usr/share/fonts/truetype/noto/NotoNaskhArabic-Bold.ttf"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
regular: "/usr/share/fonts/opentype/noto/NotoNaskhArabic-Regular.ttf",
|
|
27
|
+
bold: "/usr/share/fonts/opentype/noto/NotoNaskhArabic-Bold.ttf"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
regular: "/usr/share/fonts/truetype/noto/NotoSansArabic-Regular.ttf",
|
|
31
|
+
bold: "/usr/share/fonts/truetype/noto/NotoSansArabic-Bold.ttf"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
regular: "/usr/share/fonts/opentype/noto/NotoSansArabic-Regular.ttf",
|
|
35
|
+
bold: "/usr/share/fonts/opentype/noto/NotoSansArabic-Bold.ttf"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
regular: "/usr/share/fonts/truetype/amiri/Amiri-Regular.ttf",
|
|
39
|
+
bold: "/usr/share/fonts/truetype/amiri/Amiri-Bold.ttf"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
regular: "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf",
|
|
43
|
+
bold: "/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
regular: "/Library/Fonts/Arial Unicode.ttf",
|
|
47
|
+
bold: "/Library/Fonts/Arial Unicode.ttf"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
regular: "/System/Library/Fonts/Supplemental/Arial Unicode.ttf",
|
|
51
|
+
bold: "/System/Library/Fonts/Supplemental/Arial Unicode.ttf"
|
|
52
|
+
}
|
|
53
|
+
];
|
|
54
|
+
const isPngBuffer = (buffer) => buffer.length >= 8
|
|
55
|
+
&& buffer[0] === 0x89
|
|
56
|
+
&& buffer[1] === 0x50
|
|
57
|
+
&& buffer[2] === 0x4e
|
|
58
|
+
&& buffer[3] === 0x47;
|
|
59
|
+
const isJpegBuffer = (buffer) => buffer.length >= 3
|
|
60
|
+
&& buffer[0] === 0xff
|
|
61
|
+
&& buffer[1] === 0xd8
|
|
62
|
+
&& buffer[2] === 0xff;
|
|
63
|
+
const normalizeFontPair = (regular, bold) => {
|
|
64
|
+
if (!regular && !bold) {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
regular: regular ?? bold,
|
|
69
|
+
bold: bold ?? regular
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
const resolveSystemArabicFonts = () => {
|
|
73
|
+
for (const candidate of COMMON_ARABIC_FONT_SETS) {
|
|
74
|
+
if (existsSync(candidate.regular) && existsSync(candidate.bold)) {
|
|
75
|
+
return { regular: candidate.regular, bold: candidate.bold };
|
|
76
|
+
}
|
|
77
|
+
if (existsSync(candidate.regular)) {
|
|
78
|
+
return { regular: candidate.regular, bold: candidate.regular };
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return undefined;
|
|
82
|
+
};
|
|
83
|
+
export const collectPdf = async (doc) => new Promise((resolve, reject) => {
|
|
84
|
+
const chunks = [];
|
|
85
|
+
doc.on("data", (chunk) => {
|
|
86
|
+
chunks.push(chunk);
|
|
87
|
+
});
|
|
88
|
+
doc.on("end", () => {
|
|
89
|
+
resolve(new Uint8Array(Buffer.concat(chunks)));
|
|
90
|
+
});
|
|
91
|
+
doc.on("error", reject);
|
|
92
|
+
});
|
|
93
|
+
export const fetchLogo = async (logoUrl) => {
|
|
94
|
+
const response = await fetch(logoUrl);
|
|
95
|
+
if (!response.ok) {
|
|
96
|
+
throw new Error(`Unable to fetch logo from ${logoUrl}: ${response.status} ${response.statusText}`);
|
|
97
|
+
}
|
|
98
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
99
|
+
const buffer = Buffer.from(arrayBuffer);
|
|
100
|
+
if (isPngBuffer(buffer) || isJpegBuffer(buffer)) {
|
|
101
|
+
return buffer;
|
|
102
|
+
}
|
|
103
|
+
throw new Error(`Unsupported logo format at ${logoUrl}. Remote logos currently support PNG and JPEG only.`);
|
|
104
|
+
};
|
|
105
|
+
export const useFont = (doc, fontPath, fallback) => {
|
|
106
|
+
if (fontPath) {
|
|
107
|
+
doc.font(fontPath);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
doc.font(fallback);
|
|
111
|
+
};
|
|
112
|
+
export const resolvePdfFonts = (document, options) => {
|
|
113
|
+
const explicitFonts = normalizeFontPair(options?.fonts?.regular, options?.fonts?.bold);
|
|
114
|
+
if (document.locale !== "ar-MA") {
|
|
115
|
+
return explicitFonts;
|
|
116
|
+
}
|
|
117
|
+
if (explicitFonts) {
|
|
118
|
+
return explicitFonts;
|
|
119
|
+
}
|
|
120
|
+
const systemFonts = resolveSystemArabicFonts();
|
|
121
|
+
if (systemFonts) {
|
|
122
|
+
return systemFonts;
|
|
123
|
+
}
|
|
124
|
+
throw new Error("Arabic PDF rendering requires Arabic-capable fonts. Provide options.fonts.regular/options.fonts.bold or install a common system font such as Noto Naskh Arabic, Noto Sans Arabic, Amiri, or DejaVu Sans.");
|
|
125
|
+
};
|
|
126
|
+
export const truncateText = (doc, value, width) => {
|
|
127
|
+
if (doc.widthOfString(value) <= width) {
|
|
128
|
+
return value;
|
|
129
|
+
}
|
|
130
|
+
let truncated = value;
|
|
131
|
+
while (truncated.length > 0 && doc.widthOfString(`${truncated}...`) > width) {
|
|
132
|
+
truncated = truncated.slice(0, -1);
|
|
133
|
+
}
|
|
134
|
+
return truncated.length > 0 ? `${truncated}...` : "...";
|
|
135
|
+
};
|
|
136
|
+
export const drawFixedText = (doc, text, x, y, options) => {
|
|
137
|
+
const previousX = doc.x;
|
|
138
|
+
const previousY = doc.y;
|
|
139
|
+
doc.x = x;
|
|
140
|
+
doc.y = y;
|
|
141
|
+
doc.text(text, x, y, options);
|
|
142
|
+
doc.x = previousX;
|
|
143
|
+
doc.y = previousY;
|
|
144
|
+
return y + doc.heightOfString(text, options);
|
|
145
|
+
};
|
|
146
|
+
export const normalizeFooterText = (footer) => footer
|
|
147
|
+
.split(/\r?\n/)
|
|
148
|
+
.map((line) => line.trim())
|
|
149
|
+
.join("\n");
|
|
150
|
+
export const ensureSectionSpace = (doc, y, requiredHeight) => {
|
|
151
|
+
const contentBottom = PAGE.height - PAGE.margin - 8;
|
|
152
|
+
if (y + requiredHeight <= contentBottom) {
|
|
153
|
+
return y;
|
|
154
|
+
}
|
|
155
|
+
doc.addPage();
|
|
156
|
+
return PAGE.margin;
|
|
157
|
+
};
|
|
158
|
+
export const drawLabelValue = (doc, x, y, label, value, width, align, color) => {
|
|
159
|
+
doc.fillColor(color).fontSize(10);
|
|
160
|
+
return drawFixedText(doc, `${label}: ${value}`, x, y, { width, align });
|
|
161
|
+
};
|
|
162
|
+
export const resolveColors = (colors) => ({
|
|
163
|
+
...DEFAULT_COLORS,
|
|
164
|
+
...colors
|
|
165
|
+
});
|
|
166
|
+
const getWrappedRowHeight = (doc, text, width, minHeight, options) => {
|
|
167
|
+
const textHeight = doc.heightOfString(text, { ...options, width });
|
|
168
|
+
return Math.max(minHeight, Math.ceil(textHeight + 12));
|
|
169
|
+
};
|
|
170
|
+
export const getMaxRowHeight = (doc, cells, minHeight) => cells.reduce((maxHeight, cell) => (Math.max(maxHeight, getWrappedRowHeight(doc, cell.text, cell.width, minHeight, cell.options))), minHeight);
|
|
171
|
+
export const buildPartyLines = (party, labels, includeName = true) => {
|
|
172
|
+
if (!party) {
|
|
173
|
+
return [];
|
|
174
|
+
}
|
|
175
|
+
return [
|
|
176
|
+
includeName ? (party.name ?? "") : "",
|
|
177
|
+
...(party.addressLines ?? []),
|
|
178
|
+
[party.city, party.country].filter(Boolean).join(", "),
|
|
179
|
+
party.phone ? `Tel: ${party.phone}` : "",
|
|
180
|
+
party.email ? `Email: ${party.email}` : "",
|
|
181
|
+
party.taxId ? `${labels.if}: ${party.taxId}` : "",
|
|
182
|
+
party.ice ? `${labels.ice}: ${party.ice}` : "",
|
|
183
|
+
party.if ? `${labels.if}: ${party.if}` : "",
|
|
184
|
+
party.rc ? `${labels.rc}: ${party.rc}` : ""
|
|
185
|
+
].filter((line) => line.length > 0);
|
|
186
|
+
};
|
|
187
|
+
export const buildBankLines = (bankInfo, labels) => {
|
|
188
|
+
const baseLines = [
|
|
189
|
+
`${labels.bankName}: ${bankInfo.bankName}`,
|
|
190
|
+
`${labels.holderName}: ${bankInfo.holderName}`
|
|
191
|
+
];
|
|
192
|
+
if (bankInfo.type === "local") {
|
|
193
|
+
return [...baseLines, `${labels.rib}: ${bankInfo.rib}`];
|
|
194
|
+
}
|
|
195
|
+
return [...baseLines, `${labels.swiftCode}: ${bankInfo.swiftCode}`, `${labels.iban}: ${bankInfo.iban}`];
|
|
196
|
+
};
|
|
197
|
+
//# sourceMappingURL=pdf-support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-support.js","sourceRoot":"","sources":["../../src/renderers/pdf-support.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../src/renderers/pdf.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../src/renderers/pdf.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAoB/E,eAAO,MAAM,iBAAiB,GAC5B,UAAU,oBAAoB,EAC9B,UAAU,gBAAgB,KACzB,OAAO,CAAC,UAAU,CA8WpB,CAAC"}
|
package/dist/renderers/pdf.js
CHANGED
|
@@ -1,147 +1,11 @@
|
|
|
1
1
|
import PDFDocument from "pdfkit";
|
|
2
2
|
import { getLabels } from "../locales/index.js";
|
|
3
3
|
import { formatDate, formatMoney } from "../utils/formatting.js";
|
|
4
|
-
|
|
5
|
-
margin: 48,
|
|
6
|
-
width: 595.28,
|
|
7
|
-
height: 841.89,
|
|
8
|
-
footerOffset: 64,
|
|
9
|
-
headerTop: 42,
|
|
10
|
-
lineGap: 14
|
|
11
|
-
};
|
|
12
|
-
const DEFAULT_COLORS = {
|
|
13
|
-
primary: "#173d73",
|
|
14
|
-
onPrimary: "#ffffff",
|
|
15
|
-
text: "#111827",
|
|
16
|
-
metaText: "#4b5563",
|
|
17
|
-
mutedText: "#6b7280",
|
|
18
|
-
border: "#d1d5db",
|
|
19
|
-
footerText: "#9ca3af"
|
|
20
|
-
};
|
|
21
|
-
const collectPdf = async (doc) => new Promise((resolve, reject) => {
|
|
22
|
-
const chunks = [];
|
|
23
|
-
doc.on("data", (chunk) => {
|
|
24
|
-
chunks.push(chunk);
|
|
25
|
-
});
|
|
26
|
-
doc.on("end", () => {
|
|
27
|
-
resolve(new Uint8Array(Buffer.concat(chunks)));
|
|
28
|
-
});
|
|
29
|
-
doc.on("error", reject);
|
|
30
|
-
});
|
|
31
|
-
const isPngBuffer = (buffer) => buffer.length >= 8
|
|
32
|
-
&& buffer[0] === 0x89
|
|
33
|
-
&& buffer[1] === 0x50
|
|
34
|
-
&& buffer[2] === 0x4e
|
|
35
|
-
&& buffer[3] === 0x47;
|
|
36
|
-
const isJpegBuffer = (buffer) => buffer.length >= 3
|
|
37
|
-
&& buffer[0] === 0xff
|
|
38
|
-
&& buffer[1] === 0xd8
|
|
39
|
-
&& buffer[2] === 0xff;
|
|
40
|
-
const fetchLogo = async (logoUrl) => {
|
|
41
|
-
const response = await fetch(logoUrl);
|
|
42
|
-
if (!response.ok) {
|
|
43
|
-
throw new Error(`Unable to fetch logo from ${logoUrl}: ${response.status} ${response.statusText}`);
|
|
44
|
-
}
|
|
45
|
-
const arrayBuffer = await response.arrayBuffer();
|
|
46
|
-
const buffer = Buffer.from(arrayBuffer);
|
|
47
|
-
if (isPngBuffer(buffer) || isJpegBuffer(buffer)) {
|
|
48
|
-
return buffer;
|
|
49
|
-
}
|
|
50
|
-
throw new Error(`Unsupported logo format at ${logoUrl}. Remote logos currently support PNG and JPEG only.`);
|
|
51
|
-
};
|
|
52
|
-
const useFont = (doc, fontPath, fallback) => {
|
|
53
|
-
if (fontPath) {
|
|
54
|
-
doc.font(fontPath);
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
doc.font(fallback);
|
|
58
|
-
};
|
|
59
|
-
const requireArabicFontsIfNeeded = (document, options) => {
|
|
60
|
-
if (document.locale !== "ar-MA") {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
if (!options?.fonts?.regular || !options.fonts.bold) {
|
|
64
|
-
throw new Error("Arabic PDF rendering requires options.fonts.regular and options.fonts.bold pointing to Arabic-capable TTF/OTF font files.");
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
const truncateText = (doc, value, width) => {
|
|
68
|
-
if (doc.widthOfString(value) <= width) {
|
|
69
|
-
return value;
|
|
70
|
-
}
|
|
71
|
-
let truncated = value;
|
|
72
|
-
while (truncated.length > 0 && doc.widthOfString(`${truncated}...`) > width) {
|
|
73
|
-
truncated = truncated.slice(0, -1);
|
|
74
|
-
}
|
|
75
|
-
return truncated.length > 0 ? `${truncated}...` : "...";
|
|
76
|
-
};
|
|
77
|
-
const drawFixedText = (doc, text, x, y, options) => {
|
|
78
|
-
const previousX = doc.x;
|
|
79
|
-
const previousY = doc.y;
|
|
80
|
-
doc.x = x;
|
|
81
|
-
doc.y = y;
|
|
82
|
-
doc.text(text, x, y, options);
|
|
83
|
-
doc.x = previousX;
|
|
84
|
-
doc.y = previousY;
|
|
85
|
-
return y + doc.heightOfString(text, options);
|
|
86
|
-
};
|
|
87
|
-
const normalizeFooterText = (footer) => footer
|
|
88
|
-
.split(/\r?\n/)
|
|
89
|
-
.map((line) => line.trim())
|
|
90
|
-
.join("\n");
|
|
91
|
-
const ensureSectionSpace = (doc, y, requiredHeight) => {
|
|
92
|
-
const contentBottom = PAGE.height - PAGE.margin - 8;
|
|
93
|
-
if (y + requiredHeight <= contentBottom) {
|
|
94
|
-
return y;
|
|
95
|
-
}
|
|
96
|
-
doc.addPage();
|
|
97
|
-
return PAGE.margin;
|
|
98
|
-
};
|
|
99
|
-
const drawLabelValue = (doc, x, y, label, value, width, align, color) => {
|
|
100
|
-
doc.fillColor(color).fontSize(10);
|
|
101
|
-
return drawFixedText(doc, `${label}: ${value}`, x, y, { width, align });
|
|
102
|
-
};
|
|
103
|
-
const resolveColors = (colors) => ({
|
|
104
|
-
...DEFAULT_COLORS,
|
|
105
|
-
...colors
|
|
106
|
-
});
|
|
107
|
-
const getWrappedRowHeight = (doc, text, width, minHeight, options) => {
|
|
108
|
-
const textHeight = doc.heightOfString(text, { ...options, width });
|
|
109
|
-
return Math.max(minHeight, Math.ceil(textHeight + 12));
|
|
110
|
-
};
|
|
111
|
-
const getMaxRowHeight = (doc, cells, minHeight) => {
|
|
112
|
-
const tallestCell = cells.reduce((maxHeight, cell) => (Math.max(maxHeight, getWrappedRowHeight(doc, cell.text, cell.width, minHeight, cell.options))), minHeight);
|
|
113
|
-
return tallestCell;
|
|
114
|
-
};
|
|
115
|
-
const buildPartyLines = (party, labels, includeName = true) => {
|
|
116
|
-
if (!party) {
|
|
117
|
-
return [];
|
|
118
|
-
}
|
|
119
|
-
return [
|
|
120
|
-
includeName ? (party.name ?? "") : "",
|
|
121
|
-
...(party.addressLines ?? []),
|
|
122
|
-
[party.city, party.country].filter(Boolean).join(", "),
|
|
123
|
-
party.phone ? `Tel: ${party.phone}` : "",
|
|
124
|
-
party.email ? `Email: ${party.email}` : "",
|
|
125
|
-
party.taxId ? `${labels.if}: ${party.taxId}` : "",
|
|
126
|
-
party.ice ? `${labels.ice}: ${party.ice}` : "",
|
|
127
|
-
party.if ? `${labels.if}: ${party.if}` : "",
|
|
128
|
-
party.rc ? `${labels.rc}: ${party.rc}` : ""
|
|
129
|
-
].filter((line) => line.length > 0);
|
|
130
|
-
};
|
|
131
|
-
const buildBankLines = (bankInfo, labels) => {
|
|
132
|
-
const baseLines = [
|
|
133
|
-
`${labels.bankName}: ${bankInfo.bankName}`,
|
|
134
|
-
`${labels.holderName}: ${bankInfo.holderName}`
|
|
135
|
-
];
|
|
136
|
-
if (bankInfo.type === "local") {
|
|
137
|
-
return [...baseLines, `${labels.rib}: ${bankInfo.rib}`];
|
|
138
|
-
}
|
|
139
|
-
return [...baseLines, `${labels.swiftCode}: ${bankInfo.swiftCode}`, `${labels.iban}: ${bankInfo.iban}`];
|
|
140
|
-
};
|
|
4
|
+
import { PAGE, buildBankLines, buildPartyLines, collectPdf, drawFixedText, drawLabelValue, ensureSectionSpace, fetchLogo, getMaxRowHeight, normalizeFooterText, resolveColors, resolvePdfFonts, truncateText, useFont } from "./pdf-support.js";
|
|
141
5
|
export const renderDocumentPdf = async (document, options) => {
|
|
142
|
-
requireArabicFontsIfNeeded(document, options);
|
|
143
6
|
const labels = getLabels(document.locale);
|
|
144
7
|
const colors = resolveColors(document.colors);
|
|
8
|
+
const fonts = resolvePdfFonts(document, options);
|
|
145
9
|
const isArabic = document.locale === "ar-MA";
|
|
146
10
|
const isDeliveryNote = document.type === "deliveryNote";
|
|
147
11
|
const align = isArabic ? "right" : "left";
|
|
@@ -165,6 +29,7 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
165
29
|
const trailingSectionGapY = 14;
|
|
166
30
|
const notesBodyOffsetY = 14;
|
|
167
31
|
const trailingBottomGapY = 10;
|
|
32
|
+
const contentBottomY = PAGE.height - PAGE.margin - 8;
|
|
168
33
|
// pdfkit is chosen because it stays lightweight while supporting custom TTF/OTF fonts,
|
|
169
34
|
// which is necessary for Arabic-capable PDF output in a Node-only library.
|
|
170
35
|
const doc = new PDFDocument({
|
|
@@ -181,6 +46,14 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
181
46
|
const logoBuffer = document.issuer?.logo ? await fetchLogo(document.issuer.logo) : null;
|
|
182
47
|
const issuerTextX = leftColumnX + (logoBuffer ? 92 : 0);
|
|
183
48
|
const issuerTextWidth = logoBuffer ? 148 : 240;
|
|
49
|
+
const ensureTableRowSpace = (currentY, rowHeight, drawHeader) => {
|
|
50
|
+
if (currentY + rowHeight <= contentBottomY) {
|
|
51
|
+
return currentY;
|
|
52
|
+
}
|
|
53
|
+
doc.addPage();
|
|
54
|
+
drawHeader(PAGE.margin);
|
|
55
|
+
return PAGE.margin + 24;
|
|
56
|
+
};
|
|
184
57
|
if (logoBuffer) {
|
|
185
58
|
doc.image(logoBuffer, leftColumnX, PAGE.headerTop, {
|
|
186
59
|
fit: logoFit
|
|
@@ -190,7 +63,7 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
190
63
|
const issuerName = document.issuer?.name;
|
|
191
64
|
const issuerLines = buildPartyLines(document.issuer, labels, false);
|
|
192
65
|
if (issuerName) {
|
|
193
|
-
useFont(doc,
|
|
66
|
+
useFont(doc, fonts?.bold, "Helvetica-Bold");
|
|
194
67
|
doc.fillColor(colors.primary).fontSize(17);
|
|
195
68
|
drawFixedText(doc, issuerName, issuerTextX, PAGE.headerTop + issuerNameOffsetY, {
|
|
196
69
|
width: issuerTextWidth,
|
|
@@ -199,7 +72,7 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
199
72
|
issuerHeaderBottomY = PAGE.headerTop + issuerDetailsOffsetY - 2;
|
|
200
73
|
}
|
|
201
74
|
if (issuerLines.length > 0) {
|
|
202
|
-
useFont(doc,
|
|
75
|
+
useFont(doc, fonts?.regular, "Helvetica");
|
|
203
76
|
doc.fillColor(colors.text).fontSize(9);
|
|
204
77
|
issuerHeaderBottomY = drawFixedText(doc, issuerLines.join("\n"), issuerTextX, PAGE.headerTop + (issuerName ? issuerDetailsOffsetY : 0), {
|
|
205
78
|
width: issuerTextWidth,
|
|
@@ -212,7 +85,7 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
212
85
|
const bankLines = !isDeliveryNote && document.bankInfo ? buildBankLines(document.bankInfo, labels) : null;
|
|
213
86
|
let titleBottomY = PAGE.headerTop;
|
|
214
87
|
if (document.title) {
|
|
215
|
-
useFont(doc,
|
|
88
|
+
useFont(doc, fonts?.bold, "Helvetica-Bold");
|
|
216
89
|
doc.fillColor(colors.text).fontSize(20);
|
|
217
90
|
titleBottomY = drawFixedText(doc, document.title, rightColumnX, PAGE.headerTop, {
|
|
218
91
|
width: columnWidth,
|
|
@@ -222,7 +95,7 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
222
95
|
}
|
|
223
96
|
let metaBottomY = titleBottomY;
|
|
224
97
|
if (document.number) {
|
|
225
|
-
useFont(doc,
|
|
98
|
+
useFont(doc, fonts?.regular, "Helvetica");
|
|
226
99
|
doc.fillColor(colors.metaText).fontSize(9);
|
|
227
100
|
metaBottomY = drawFixedText(doc, `${labels.number}: ${document.number}`, rightColumnX, titleBottomY + titleMetaGapY, {
|
|
228
101
|
width: columnWidth,
|
|
@@ -243,7 +116,7 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
243
116
|
let y = headerBottomY + tableTopGapY;
|
|
244
117
|
if (sellerLines.length > 0 || clientLines.length > 0 || bankLines) {
|
|
245
118
|
const sectionsTopY = headerBottomY + sectionGapY;
|
|
246
|
-
useFont(doc,
|
|
119
|
+
useFont(doc, fonts?.bold, "Helvetica-Bold");
|
|
247
120
|
doc.fillColor(colors.mutedText).fontSize(10);
|
|
248
121
|
if (sellerLines.length > 0) {
|
|
249
122
|
drawFixedText(doc, labels.seller, leftColumnX, sectionsTopY, { width: columnWidth, align });
|
|
@@ -251,7 +124,7 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
251
124
|
if (clientLines.length > 0) {
|
|
252
125
|
drawFixedText(doc, labels.client, rightColumnX, sectionsTopY, { width: columnWidth, align });
|
|
253
126
|
}
|
|
254
|
-
useFont(doc,
|
|
127
|
+
useFont(doc, fonts?.regular, "Helvetica");
|
|
255
128
|
doc.fillColor(colors.text).fontSize(9);
|
|
256
129
|
let leftSectionBottomY = sectionsTopY;
|
|
257
130
|
if (sellerLines.length > 0) {
|
|
@@ -262,10 +135,10 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
262
135
|
});
|
|
263
136
|
}
|
|
264
137
|
if (bankLines) {
|
|
265
|
-
useFont(doc,
|
|
138
|
+
useFont(doc, fonts?.bold, "Helvetica-Bold");
|
|
266
139
|
doc.fillColor(colors.mutedText).fontSize(9);
|
|
267
140
|
drawFixedText(doc, labels.bankDetails, leftColumnX, leftSectionBottomY + bankSectionGapY, { width: columnWidth, align });
|
|
268
|
-
useFont(doc,
|
|
141
|
+
useFont(doc, fonts?.regular, "Helvetica");
|
|
269
142
|
doc.fillColor(colors.text).fontSize(9);
|
|
270
143
|
leftSectionBottomY = drawFixedText(doc, bankLines.join("\n"), leftColumnX, leftSectionBottomY + bankSectionBodyOffsetY, {
|
|
271
144
|
width: 270,
|
|
@@ -286,8 +159,6 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
286
159
|
const items = document.items ?? [];
|
|
287
160
|
const hasItems = items.length > 0;
|
|
288
161
|
if (hasItems) {
|
|
289
|
-
doc.fillColor(colors.primary).rect(tableX, y, tableWidth, 24).fill();
|
|
290
|
-
useFont(doc, options?.fonts?.bold, "Helvetica-Bold");
|
|
291
162
|
if (isDeliveryNote) {
|
|
292
163
|
const columns = {
|
|
293
164
|
itemX: tableX + 12,
|
|
@@ -295,11 +166,20 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
295
166
|
quantityX: tableX + 400,
|
|
296
167
|
quantityWidth: 50
|
|
297
168
|
};
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
169
|
+
const drawHeader = (headerY) => {
|
|
170
|
+
doc.fillColor(colors.primary).rect(tableX, headerY, tableWidth, 24).fill();
|
|
171
|
+
useFont(doc, fonts?.bold, "Helvetica-Bold");
|
|
172
|
+
doc.fillColor(colors.onPrimary).fontSize(10);
|
|
173
|
+
drawFixedText(doc, labels.item, columns.itemX, headerY + 7, { width: columns.itemWidth, align });
|
|
174
|
+
drawFixedText(doc, labels.quantity, columns.quantityX, headerY + 7, { width: columns.quantityWidth, align: "right" });
|
|
175
|
+
};
|
|
176
|
+
if (y + 24 > contentBottomY) {
|
|
177
|
+
doc.addPage();
|
|
178
|
+
y = PAGE.margin;
|
|
179
|
+
}
|
|
180
|
+
drawHeader(y);
|
|
301
181
|
y += 24;
|
|
302
|
-
useFont(doc,
|
|
182
|
+
useFont(doc, fonts?.regular, "Helvetica");
|
|
303
183
|
for (const item of items) {
|
|
304
184
|
const itemLabel = item.description ? `${item.name} - ${item.description}` : item.name;
|
|
305
185
|
const quantityLabel = `${item.quantity}${item.unit ? ` ${item.unit}` : ""}`;
|
|
@@ -307,6 +187,7 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
307
187
|
{ text: itemLabel, width: columns.itemWidth, options: { align, lineGap: 1 } },
|
|
308
188
|
{ text: quantityLabel, width: columns.quantityWidth, options: { align: "right", lineGap: 1 } }
|
|
309
189
|
], 24);
|
|
190
|
+
y = ensureTableRowSpace(y, rowHeight, drawHeader);
|
|
310
191
|
doc.strokeColor(colors.border).lineWidth(1).rect(tableX, y, tableWidth, rowHeight).stroke();
|
|
311
192
|
doc.fillColor(colors.text).fontSize(10);
|
|
312
193
|
drawFixedText(doc, truncateText(doc, itemLabel, columns.itemWidth), columns.itemX, y + 8, {
|
|
@@ -332,13 +213,22 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
332
213
|
amountX: tableX + 392,
|
|
333
214
|
amountWidth: 95
|
|
334
215
|
};
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
216
|
+
const drawHeader = (headerY) => {
|
|
217
|
+
doc.fillColor(colors.primary).rect(tableX, headerY, tableWidth, 24).fill();
|
|
218
|
+
useFont(doc, fonts?.bold, "Helvetica-Bold");
|
|
219
|
+
doc.fillColor(colors.onPrimary).fontSize(10);
|
|
220
|
+
drawFixedText(doc, labels.item, columns.itemX, headerY + 7, { width: columns.itemWidth, align });
|
|
221
|
+
drawFixedText(doc, labels.quantity, columns.quantityX, headerY + 7, { width: columns.quantityWidth, align: "right" });
|
|
222
|
+
drawFixedText(doc, labels.unitPrice, columns.unitPriceX, headerY + 7, { width: columns.unitPriceWidth, align: "right" });
|
|
223
|
+
drawFixedText(doc, labels.amount, columns.amountX, headerY + 7, { width: columns.amountWidth, align: "right" });
|
|
224
|
+
};
|
|
225
|
+
if (y + 24 > contentBottomY) {
|
|
226
|
+
doc.addPage();
|
|
227
|
+
y = PAGE.margin;
|
|
228
|
+
}
|
|
229
|
+
drawHeader(y);
|
|
340
230
|
y += 24;
|
|
341
|
-
useFont(doc,
|
|
231
|
+
useFont(doc, fonts?.regular, "Helvetica");
|
|
342
232
|
for (const item of items) {
|
|
343
233
|
const itemLabel = item.description ? `${item.name} - ${item.description}` : item.name;
|
|
344
234
|
const quantityLabel = `${item.quantity}${item.unit ? ` ${item.unit}` : ""}`;
|
|
@@ -346,6 +236,7 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
346
236
|
{ text: itemLabel, width: columns.itemWidth, options: { align, lineGap: 1 } },
|
|
347
237
|
{ text: quantityLabel, width: columns.quantityWidth, options: { align: "right", lineGap: 1 } }
|
|
348
238
|
], 24);
|
|
239
|
+
y = ensureTableRowSpace(y, rowHeight, drawHeader);
|
|
349
240
|
doc.strokeColor(colors.border).lineWidth(1).rect(tableX, y, tableWidth, rowHeight).stroke();
|
|
350
241
|
doc.fillColor(colors.text).fontSize(10);
|
|
351
242
|
drawFixedText(doc, itemLabel, columns.itemX, y + 8, {
|
|
@@ -398,10 +289,10 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
398
289
|
y += trailingSectionGapY;
|
|
399
290
|
let trailingBottomY = y;
|
|
400
291
|
if (notes.length > 0) {
|
|
401
|
-
useFont(doc,
|
|
292
|
+
useFont(doc, fonts?.bold, "Helvetica-Bold");
|
|
402
293
|
doc.fillColor(colors.mutedText).fontSize(10);
|
|
403
294
|
drawFixedText(doc, labels.notes, PAGE.margin, y, { width: notesWidth, align });
|
|
404
|
-
useFont(doc,
|
|
295
|
+
useFont(doc, fonts?.regular, "Helvetica");
|
|
405
296
|
doc.fillColor(colors.text).fontSize(9);
|
|
406
297
|
trailingBottomY = drawFixedText(doc, notes.join("\n"), PAGE.margin, y + notesBodyOffsetY, {
|
|
407
298
|
width: notesWidth,
|
|
@@ -413,7 +304,7 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
413
304
|
const isTotal = index === totals.length - 1;
|
|
414
305
|
doc.fillColor(isTotal ? colors.primary : "white").rect(totalsX, y, 220, 24).fill();
|
|
415
306
|
doc.strokeColor(colors.border).lineWidth(1).rect(totalsX, y, 220, 24).stroke();
|
|
416
|
-
useFont(doc, isTotal ?
|
|
307
|
+
useFont(doc, isTotal ? fonts?.bold : fonts?.regular, isTotal ? "Helvetica-Bold" : "Helvetica");
|
|
417
308
|
doc.fillColor(isTotal ? colors.onPrimary : colors.text).fontSize(10);
|
|
418
309
|
drawFixedText(doc, label, totalsX + 10, y + 7, { width: 105, align: "left" });
|
|
419
310
|
drawFixedText(doc, truncateText(doc, value, 85), totalsX + 125, y + 7, { width: 85, align: "right" });
|
|
@@ -425,14 +316,14 @@ export const renderDocumentPdf = async (document, options) => {
|
|
|
425
316
|
const notesHeight = 12 + 12 + doc.heightOfString(notes.join("\n"), { width: tableWidth, align, lineGap: 1 }) + 8;
|
|
426
317
|
y = ensureSectionSpace(doc, y + trailingSectionGapY, notesHeight) - trailingSectionGapY;
|
|
427
318
|
y += trailingSectionGapY;
|
|
428
|
-
useFont(doc,
|
|
319
|
+
useFont(doc, fonts?.bold, "Helvetica-Bold");
|
|
429
320
|
doc.fillColor(colors.mutedText).fontSize(10);
|
|
430
321
|
drawFixedText(doc, labels.notes, PAGE.margin, y, { width: tableWidth, align });
|
|
431
|
-
useFont(doc,
|
|
322
|
+
useFont(doc, fonts?.regular, "Helvetica");
|
|
432
323
|
doc.fillColor(colors.text).fontSize(9);
|
|
433
324
|
drawFixedText(doc, notes.join("\n"), PAGE.margin, y + notesBodyOffsetY, { width: tableWidth, align, lineGap: 1 });
|
|
434
325
|
}
|
|
435
|
-
useFont(doc,
|
|
326
|
+
useFont(doc, fonts?.regular, "Helvetica");
|
|
436
327
|
const actualPageHeight = doc.page.height ?? 841.89;
|
|
437
328
|
const fallbackFooter = [document.title, document.number].filter(Boolean).join(" ");
|
|
438
329
|
const footerText = normalizeFooterText(document.footer ?? fallbackFooter);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/renderers/pdf.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/renderers/pdf.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ic-labs/invoice-kit",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "Lightweight TypeScript library for generating Moroccan business documents as PDFs.",
|
|
5
5
|
"author": "Itri Cloud Labs",
|
|
6
6
|
"license": "MIT",
|
|
@@ -34,6 +34,8 @@
|
|
|
34
34
|
"scripts": {
|
|
35
35
|
"clean": "node -e \"import('node:fs/promises').then((fs) => fs.rm('dist', { recursive: true, force: true }))\"",
|
|
36
36
|
"build": "npm run clean && tsc -p tsconfig.json",
|
|
37
|
+
"test": "npm run build && npm run test:unit",
|
|
38
|
+
"test:unit": "node --test tests/*.test.mjs",
|
|
37
39
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
38
40
|
"smoke": "node smoke-test.mjs",
|
|
39
41
|
"prepublishOnly": "npm run typecheck && npm run build"
|