pretext-pdf 0.5.2 → 0.8.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.
Files changed (57) hide show
  1. package/CHANGELOG.md +462 -351
  2. package/README.md +749 -568
  3. package/dist/assets.d.ts +5 -0
  4. package/dist/assets.d.ts.map +1 -1
  5. package/dist/assets.js +248 -43
  6. package/dist/assets.js.map +1 -1
  7. package/dist/errors.d.ts +1 -1
  8. package/dist/errors.d.ts.map +1 -1
  9. package/dist/errors.js.map +1 -1
  10. package/dist/fonts.d.ts.map +1 -1
  11. package/dist/fonts.js +67 -8
  12. package/dist/fonts.js.map +1 -1
  13. package/dist/index.d.ts +29 -2
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +35 -2
  16. package/dist/index.js.map +1 -1
  17. package/dist/markdown.d.ts +28 -0
  18. package/dist/markdown.d.ts.map +1 -0
  19. package/dist/markdown.js +222 -0
  20. package/dist/markdown.js.map +1 -0
  21. package/dist/measure-blocks.d.ts.map +1 -1
  22. package/dist/measure-blocks.js +347 -62
  23. package/dist/measure-blocks.js.map +1 -1
  24. package/dist/measure-text.d.ts.map +1 -1
  25. package/dist/measure-text.js +1 -8
  26. package/dist/measure-text.js.map +1 -1
  27. package/dist/measure.d.ts.map +1 -1
  28. package/dist/measure.js +13 -21
  29. package/dist/measure.js.map +1 -1
  30. package/dist/render-blocks.d.ts +4 -1
  31. package/dist/render-blocks.d.ts.map +1 -1
  32. package/dist/render-blocks.js +227 -105
  33. package/dist/render-blocks.js.map +1 -1
  34. package/dist/render-extras.d.ts.map +1 -1
  35. package/dist/render-extras.js +72 -71
  36. package/dist/render-extras.js.map +1 -1
  37. package/dist/render-utils.d.ts +9 -2
  38. package/dist/render-utils.d.ts.map +1 -1
  39. package/dist/render-utils.js +24 -13
  40. package/dist/render-utils.js.map +1 -1
  41. package/dist/render.d.ts.map +1 -1
  42. package/dist/render.js +27 -3
  43. package/dist/render.js.map +1 -1
  44. package/dist/rich-text.d.ts +0 -4
  45. package/dist/rich-text.d.ts.map +1 -1
  46. package/dist/rich-text.js +15 -9
  47. package/dist/rich-text.js.map +1 -1
  48. package/dist/templates.d.ts +79 -0
  49. package/dist/templates.d.ts.map +1 -0
  50. package/dist/templates.js +201 -0
  51. package/dist/templates.js.map +1 -0
  52. package/dist/types.d.ts +139 -5
  53. package/dist/types.d.ts.map +1 -1
  54. package/dist/validate.d.ts.map +1 -1
  55. package/dist/validate.js +241 -28
  56. package/dist/validate.js.map +1 -1
  57. package/package.json +175 -130
package/dist/assets.d.ts CHANGED
@@ -1,5 +1,10 @@
1
1
  import { PDFDocument } from '@cantoo/pdf-lib';
2
2
  import type { PdfDocument, ImageMap } from './types.js';
3
+ /**
4
+ * Enforce allowedFileDirs: resolved absolute path must start with an allowed dir.
5
+ * No-op when allowedFileDirs is unset (backwards-compatible default).
6
+ */
7
+ export declare function assertPathAllowed(resolvedPath: string, allowedDirs: string[] | undefined, label: string): void;
3
8
  /**
4
9
  * Stage 2b: Load and embed all images into pdfDoc.
5
10
  * Runs after loadFonts(), receives the same pdfDoc.
@@ -1 +1 @@
1
- {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,WAAW,EAA4B,QAAQ,EAAE,MAAM,YAAY,CAAA;AAqHjF;;;;;;;;;;;;GAYG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmG/G"}
1
+ {"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAyE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAK9H;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAa9G;AAySD;;;;;;;;;;;;GAYG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAwI/G"}
package/dist/assets.js CHANGED
@@ -1,9 +1,93 @@
1
1
  import { PretextPdfError } from './errors.js';
2
+ // ─── Security helpers ─────────────────────────────────────────────────────────
3
+ /**
4
+ * Enforce allowedFileDirs: resolved absolute path must start with an allowed dir.
5
+ * No-op when allowedFileDirs is unset (backwards-compatible default).
6
+ */
7
+ export function assertPathAllowed(resolvedPath, allowedDirs, label) {
8
+ if (!allowedDirs || allowedDirs.length === 0)
9
+ return;
10
+ const norm = resolvedPath.replace(/\\/g, '/');
11
+ const allowed = allowedDirs.some(dir => {
12
+ const d = dir.replace(/\\/g, '/').replace(/\/$/, '');
13
+ return norm === d || norm.startsWith(d + '/');
14
+ });
15
+ if (!allowed) {
16
+ throw new PretextPdfError('PATH_TRAVERSAL', `${label} src is outside allowedFileDirs. Configure doc.allowedFileDirs to include the file's directory.`);
17
+ }
18
+ }
19
+ /**
20
+ * Validate a remote URL before fetching:
21
+ * - Rejects http:// (plaintext only)
22
+ * - Rejects private/internal IP ranges (SSRF prevention)
23
+ * Throws IMAGE_LOAD_FAILED or SVG_LOAD_FAILED on violations.
24
+ */
25
+ function assertSafeUrl(url, errorCode, label) {
26
+ let parsed;
27
+ try {
28
+ parsed = new URL(url);
29
+ }
30
+ catch {
31
+ throw new PretextPdfError(errorCode, `${label}: invalid URL`);
32
+ }
33
+ if (parsed.protocol === 'http:') {
34
+ throw new PretextPdfError(errorCode, `${label}: HTTP URLs are not allowed — use HTTPS`);
35
+ }
36
+ const h = parsed.hostname.toLowerCase().replace(/^\[|\]$/g, ''); // strip IPv6 brackets
37
+ const isPrivate = h === 'localhost' ||
38
+ h === '0.0.0.0' ||
39
+ h === '::1' ||
40
+ /^127\./.test(h) ||
41
+ /^10\./.test(h) ||
42
+ /^192\.168\./.test(h) ||
43
+ /^172\.(1[6-9]|2\d|3[01])\./.test(h) ||
44
+ /^169\.254\./.test(h) || // link-local / AWS IMDS
45
+ /^100\.(6[4-9]|[7-9]\d|1[01]\d|12[0-7])\./.test(h) || // CGNAT RFC 6598
46
+ h.startsWith('fc') || h.startsWith('fd') || // IPv6 ULA fc00::/7
47
+ /^fe[89ab]/i.test(h); // IPv6 link-local fe80::/10
48
+ if (isPrivate) {
49
+ throw new PretextPdfError(errorCode, `${label}: connections to private or internal addresses are not allowed`);
50
+ }
51
+ }
52
+ /** Fetch with a hard 10-second timeout */
53
+ async function fetchWithTimeout(url) {
54
+ const controller = new AbortController();
55
+ const timer = setTimeout(() => controller.abort(), 10_000);
56
+ try {
57
+ return await fetch(url, { signal: controller.signal });
58
+ }
59
+ finally {
60
+ clearTimeout(timer);
61
+ }
62
+ }
63
+ /**
64
+ * Strip dangerous content from SVG before rasterization:
65
+ * - <script> blocks
66
+ * - on* event handler attributes
67
+ * - <image>/<use> with file://, data:, or javascript: hrefs (local-file and injection vectors)
68
+ */
69
+ function sanitizeSvg(svg) {
70
+ // Skip regex passes on oversized strings — canvas will reject them anyway
71
+ if (svg.length > SVG_MAX_BYTES)
72
+ return svg;
73
+ // Remove self-closing <script/> then paired <script>...</script> blocks
74
+ let s = svg.replace(/<script\b[^>]*\/>/gi, '');
75
+ s = s.replace(/<script[\s\S]*?<\/script>/gi, '');
76
+ // Remove event handler attributes (onload, onclick, onerror, etc.)
77
+ s = s.replace(/\bon\w+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]*)/gi, '');
78
+ // Remove <image> and <use> hrefs pointing to unsafe schemes
79
+ s = s.replace(/(<(?:image|use)\b[^>]*?)\s+(?:xlink:)?href\s*=\s*["'](?:file|data|javascript):[^"']*["']/gi, '$1');
80
+ return s;
81
+ }
82
+ /** Return just the filename from a path — used in error messages to avoid leaking directory structure */
83
+ function redactPath(src) {
84
+ return src.replace(/\\/g, '/').split('/').pop() ?? '(file)';
85
+ }
2
86
  // ─── SVG helpers ──────────────────────────────────────────────────────────────
3
87
  const SVG_MAX_BYTES = 5 * 1024 * 1024; // 5 MB — prevent ReDoS on giant SVG strings
4
88
  function parseSvgViewBox(svg) {
5
89
  if (svg.length > SVG_MAX_BYTES)
6
- return null; // too large to scan safely
90
+ return null;
7
91
  const match = svg.match(/viewBox=["']([^"']+)["']/);
8
92
  if (!match)
9
93
  return null;
@@ -15,7 +99,7 @@ function parseSvgViewBox(svg) {
15
99
  }
16
100
  function parseSvgAttributes(svg) {
17
101
  if (svg.length > SVG_MAX_BYTES)
18
- return null; // too large to scan safely
102
+ return null;
19
103
  const wMatch = svg.match(/<svg[^>]*\swidth=["'](\d+(?:\.\d+)?)["']/);
20
104
  const hMatch = svg.match(/<svg[^>]*\sheight=["'](\d+(?:\.\d+)?)["']/);
21
105
  if (!wMatch || !hMatch)
@@ -38,8 +122,7 @@ function resolveSvgDimensions(el, contentWidth) {
38
122
  if (el.height !== undefined) {
39
123
  return { widthPt: aspectRatio !== null ? el.height / aspectRatio : el.height, heightPt: el.height };
40
124
  }
41
- // No dimensions specified: use full contentWidth, clamped to available space
42
- const widthPt = Math.min(contentWidth, contentWidth); // Already at contentWidth, but explicit for clarity
125
+ const widthPt = contentWidth;
43
126
  const heightPt = aspectRatio !== null ? widthPt * aspectRatio : 200;
44
127
  return { widthPt, heightPt };
45
128
  }
@@ -47,34 +130,113 @@ function resolveSvgDimensions(el, contentWidth) {
47
130
  * Resolve SVG content string from either an inline `svg` field or a `src` file/URL.
48
131
  * Throws PretextPdfError if neither is provided or the source cannot be loaded.
49
132
  */
50
- async function resolveSvgContent(el) {
133
+ async function resolveSvgContent(el, allowedFileDirs) {
51
134
  if (el.svg)
52
- return el.svg;
135
+ return sanitizeSvg(el.svg);
53
136
  if (!el.src) {
54
137
  throw new PretextPdfError('SVG_LOAD_FAILED', "SvgElement requires either 'svg' (inline string) or 'src' (file path or https:// URL)");
55
138
  }
56
- // HTTPS URL
57
139
  if (el.src.startsWith('https://') || el.src.startsWith('http://')) {
140
+ assertSafeUrl(el.src, 'SVG_LOAD_FAILED', 'SVG');
58
141
  let resp;
59
142
  try {
60
- resp = await fetch(el.src);
143
+ resp = await fetchWithTimeout(el.src);
61
144
  }
62
145
  catch (err) {
63
- throw new PretextPdfError('SVG_LOAD_FAILED', `SVG URL fetch failed for "${el.src}": ${err instanceof Error ? err.message : String(err)}`);
146
+ throw new PretextPdfError('SVG_LOAD_FAILED', `SVG URL fetch failed: ${err instanceof Error ? err.message : String(err)}`);
64
147
  }
65
148
  if (!resp.ok) {
66
- throw new PretextPdfError('SVG_LOAD_FAILED', `SVG URL returned HTTP ${resp.status}: "${el.src}"`);
149
+ throw new PretextPdfError('SVG_LOAD_FAILED', `SVG URL returned HTTP ${resp.status}`);
67
150
  }
68
- return resp.text();
151
+ return sanitizeSvg(await resp.text());
69
152
  }
70
- // File path
71
153
  const [fs, pathMod] = await Promise.all([import('fs'), import('path')]);
72
- const filePath = pathMod.normalize(el.src);
154
+ const filePath = pathMod.resolve(el.src);
155
+ assertPathAllowed(filePath, allowedFileDirs, 'SVG');
73
156
  if (!fs.existsSync(filePath)) {
74
- throw new PretextPdfError('SVG_LOAD_FAILED', `SVG file not found: "${filePath}"`);
157
+ throw new PretextPdfError('SVG_LOAD_FAILED', `SVG file not found: "${redactPath(el.src)}"`);
75
158
  }
76
- return fs.readFileSync(filePath, 'utf-8');
159
+ return sanitizeSvg(fs.readFileSync(filePath, 'utf-8'));
77
160
  }
161
+ // ─── QR Code generator ────────────────────────────────────────────────────────
162
+ async function generateQrSvg(el) {
163
+ let qrLib;
164
+ try {
165
+ qrLib = await import('qrcode');
166
+ }
167
+ catch {
168
+ throw new PretextPdfError('QR_DEP_MISSING', 'qr-code elements require the qrcode package. Install it: npm install qrcode');
169
+ }
170
+ try {
171
+ return await qrLib.toString(el.data, {
172
+ type: 'svg',
173
+ errorCorrectionLevel: el.errorCorrectionLevel ?? 'M',
174
+ margin: el.margin ?? 4,
175
+ color: {
176
+ dark: el.foreground ?? '#000000',
177
+ light: el.background ?? '#ffffff',
178
+ },
179
+ });
180
+ }
181
+ catch (err) {
182
+ throw new PretextPdfError('QR_GENERATE_FAILED', `QR code generation failed: ${err instanceof Error ? err.message : String(err)}`);
183
+ }
184
+ }
185
+ // ─── Barcode generator ────────────────────────────────────────────────────────
186
+ async function generateBarcodeSvg(el) {
187
+ let bwip;
188
+ try {
189
+ bwip = await import('bwip-js');
190
+ }
191
+ catch {
192
+ throw new PretextPdfError('BARCODE_DEP_MISSING', 'barcode elements require the bwip-js package. Install it: npm install bwip-js');
193
+ }
194
+ try {
195
+ return bwip.toSVG({
196
+ bcid: el.symbology,
197
+ text: el.data,
198
+ scale: 3,
199
+ includetext: el.includeText !== false,
200
+ });
201
+ }
202
+ catch (err) {
203
+ const msg = err instanceof Error ? err.message : String(err);
204
+ const isSymbology = msg.toLowerCase().includes('unknown') || msg.toLowerCase().includes('bcid');
205
+ throw new PretextPdfError(isSymbology ? 'BARCODE_SYMBOLOGY_INVALID' : 'BARCODE_GENERATE_FAILED', `Barcode generation failed (symbology: '${el.symbology}'): ${msg}`);
206
+ }
207
+ }
208
+ // ─── Chart generator (vega-lite, optional) ────────────────────────────────────
209
+ async function generateChartSvg(el, contentWidth) {
210
+ let vegaLite;
211
+ let vega;
212
+ try {
213
+ vegaLite = await import('vega-lite');
214
+ vega = await import('vega');
215
+ }
216
+ catch {
217
+ throw new PretextPdfError('CHART_DEP_MISSING', 'chart elements require vega and vega-lite packages. Install them: npm install vega vega-lite');
218
+ }
219
+ let vegaSpec;
220
+ try {
221
+ const specWithSize = { ...el.spec, width: el.width ?? contentWidth, height: el.height ?? 300 };
222
+ vegaSpec = vegaLite.compile(specWithSize).spec;
223
+ }
224
+ catch (err) {
225
+ throw new PretextPdfError('CHART_SPEC_INVALID', `vega-lite spec compilation failed: ${err instanceof Error ? err.message : String(err)}`);
226
+ }
227
+ try {
228
+ // Block all remote data loading to prevent SSRF — vega's default loader
229
+ // follows any data.url in the spec, which could reach internal services
230
+ const blockedLoader = vega.loader();
231
+ blockedLoader.load = (_uri) => Promise.reject(new Error('Remote data loading is disabled in pretext-pdf'));
232
+ const view = new vega.View(vega.parse(vegaSpec), { renderer: 'none', loader: blockedLoader });
233
+ return await view.toSVG();
234
+ }
235
+ catch (err) {
236
+ throw new PretextPdfError('CHART_RENDER_FAILED', `Chart SVG rendering failed: ${err instanceof Error ? err.message : String(err)}`);
237
+ }
238
+ }
239
+ // ─── SVG → PDF image ──────────────────────────────────────────────────────────
78
240
  async function loadSvgAsImage(svg, widthPt, heightPt, pdfDoc) {
79
241
  let canvasLib;
80
242
  try {
@@ -83,7 +245,7 @@ async function loadSvgAsImage(svg, widthPt, heightPt, pdfDoc) {
83
245
  catch {
84
246
  throw new PretextPdfError('SVG_RENDER_FAILED', 'SVG rendering requires the optional dependency @napi-rs/canvas. Install it with: pnpm add @napi-rs/canvas');
85
247
  }
86
- const scale = 2; // 2x for retina quality
248
+ const scale = 2;
87
249
  const widthPx = Math.round(widthPt * scale);
88
250
  const heightPx = Math.round(heightPt * scale);
89
251
  try {
@@ -114,6 +276,7 @@ async function loadSvgAsImage(svg, widthPt, heightPt, pdfDoc) {
114
276
  */
115
277
  export async function loadImages(doc, pdfDoc, contentWidth) {
116
278
  const imageMap = new Map();
279
+ const allowedDirs = doc.allowedFileDirs;
117
280
  // Collect all ImageElement entries with their content index for stable keys
118
281
  const imageEntries = [];
119
282
  for (let i = 0; i < doc.content.length; i++) {
@@ -122,7 +285,6 @@ export async function loadImages(doc, pdfDoc, contentWidth) {
122
285
  imageEntries.push({ el, key: `img-${i}` });
123
286
  }
124
287
  else if (el.type === 'float-group') {
125
- // Convert float-group image to ImageElement for loading
126
288
  const fgImage = {
127
289
  type: 'image',
128
290
  src: el.image.src,
@@ -138,7 +300,7 @@ export async function loadImages(doc, pdfDoc, contentWidth) {
138
300
  // Load all image bytes in parallel; capture both successes and failures
139
301
  const loadResults = imageEntries.length > 0
140
302
  ? await Promise.allSettled(imageEntries.map(async ({ el, key }) => {
141
- const bytes = await loadImageBytes(el, key);
303
+ const bytes = await loadImageBytes(el, key, allowedDirs);
142
304
  return { el, key, bytes };
143
305
  }))
144
306
  : [];
@@ -167,7 +329,7 @@ export async function loadImages(doc, pdfDoc, contentWidth) {
167
329
  const action = doc.onImageLoadError ? doc.onImageLoadError(entry.el.src, error) : 'skip';
168
330
  if (action === 'throw')
169
331
  throw error;
170
- console.warn(`[pretext-pdf] Image embed failed: Image key "${key}" (format: '${resolvedFormat}'): ${error.message}`);
332
+ console.warn(`[pretext-pdf] Image embed failed: key "${key}" (format: '${resolvedFormat}')`);
171
333
  // Continue without this image rather than crashing
172
334
  }
173
335
  }
@@ -176,11 +338,55 @@ export async function loadImages(doc, pdfDoc, contentWidth) {
176
338
  const el = doc.content[i];
177
339
  if (el.type === 'svg') {
178
340
  const key = `svg-${i}`;
179
- const svgContent = await resolveSvgContent(el);
341
+ const svgContent = await resolveSvgContent(el, allowedDirs);
180
342
  const { widthPt, heightPt } = resolveSvgDimensions({ ...el, svg: svgContent }, contentWidth);
181
343
  const pdfImage = await loadSvgAsImage(svgContent, widthPt, heightPt, pdfDoc);
182
344
  imageMap.set(key, pdfImage);
183
345
  }
346
+ else if (el.type === 'qr-code') {
347
+ const key = `qr-${i}`;
348
+ try {
349
+ const svgString = await generateQrSvg(el);
350
+ const sizePt = el.size ?? 80;
351
+ const pdfImage = await loadSvgAsImage(svgString, sizePt, sizePt, pdfDoc);
352
+ imageMap.set(key, pdfImage);
353
+ }
354
+ catch (err) {
355
+ if (err instanceof PretextPdfError)
356
+ throw err;
357
+ console.warn(`[pretext-pdf] QR code skipped at index ${i}: ${err instanceof Error ? err.message : String(err)}`);
358
+ }
359
+ }
360
+ else if (el.type === 'barcode') {
361
+ const key = `barcode-${i}`;
362
+ try {
363
+ const svgString = await generateBarcodeSvg(el);
364
+ const widthPt = el.width ?? 200;
365
+ const heightPt = el.height ?? 60;
366
+ const pdfImage = await loadSvgAsImage(svgString, widthPt, heightPt, pdfDoc);
367
+ imageMap.set(key, pdfImage);
368
+ }
369
+ catch (err) {
370
+ if (err instanceof PretextPdfError)
371
+ throw err;
372
+ console.warn(`[pretext-pdf] Barcode skipped at index ${i}: ${err instanceof Error ? err.message : String(err)}`);
373
+ }
374
+ }
375
+ else if (el.type === 'chart') {
376
+ const key = `chart-${i}`;
377
+ try {
378
+ const svgString = await generateChartSvg(el, contentWidth);
379
+ const widthPt = el.width ?? contentWidth;
380
+ const heightPt = el.height ?? 300;
381
+ const pdfImage = await loadSvgAsImage(svgString, widthPt, heightPt, pdfDoc);
382
+ imageMap.set(key, pdfImage);
383
+ }
384
+ catch (err) {
385
+ if (err instanceof PretextPdfError)
386
+ throw err;
387
+ console.warn(`[pretext-pdf] Chart skipped at index ${i}: ${err instanceof Error ? err.message : String(err)}`);
388
+ }
389
+ }
184
390
  }
185
391
  // Load watermark image if provided
186
392
  if (doc.watermark?.image) {
@@ -192,9 +398,10 @@ export async function loadImages(doc, pdfDoc, contentWidth) {
192
398
  }
193
399
  else {
194
400
  const [fs, pathMod] = await Promise.all([import('fs'), import('path')]);
195
- const filePath = pathMod.normalize(src);
401
+ const filePath = pathMod.resolve(src);
402
+ assertPathAllowed(filePath, allowedDirs, 'watermark image');
196
403
  if (!fs.existsSync(filePath))
197
- throw new Error(`Watermark image not found: "${filePath}"`);
404
+ throw new Error(`Watermark image not found`);
198
405
  bytes = new Uint8Array(fs.readFileSync(filePath));
199
406
  }
200
407
  const isPng = bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4E && bytes[3] === 0x47;
@@ -203,8 +410,10 @@ export async function loadImages(doc, pdfDoc, contentWidth) {
203
410
  : await pdfDoc.embedJpg(bytes);
204
411
  imageMap.set('watermark', pdfImage);
205
412
  }
206
- catch {
207
- // Watermark image load failure is non-fatal — watermark simply won't be rendered
413
+ catch (err) {
414
+ if (err instanceof PretextPdfError && err.code === 'PATH_TRAVERSAL')
415
+ throw err;
416
+ console.warn(`[pretext-pdf] Watermark image skipped: ${err instanceof Error ? err.message : String(err)}`);
208
417
  }
209
418
  }
210
419
  return imageMap;
@@ -214,17 +423,14 @@ export async function loadImages(doc, pdfDoc, contentWidth) {
214
423
  * Priority: explicit 'png'/'jpg' → magic bytes → file extension → error.
215
424
  */
216
425
  function resolveImageFormat(el, bytes, key) {
217
- // Explicit format — trust the user
218
426
  if (el.format === 'png')
219
427
  return 'png';
220
428
  if (el.format === 'jpg')
221
429
  return 'jpg';
222
- // Auto-detect from magic bytes (most reliable)
223
430
  if (bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4E && bytes[3] === 0x47)
224
431
  return 'png';
225
432
  if (bytes[0] === 0xFF && bytes[1] === 0xD8 && bytes[2] === 0xFF)
226
433
  return 'jpg';
227
- // Fallback: file extension
228
434
  if (typeof el.src === 'string') {
229
435
  const ext = el.src.toLowerCase().split('.').pop();
230
436
  if (ext === 'png')
@@ -232,11 +438,10 @@ function resolveImageFormat(el, bytes, key) {
232
438
  if (ext === 'jpg' || ext === 'jpeg')
233
439
  return 'jpg';
234
440
  }
235
- throw new PretextPdfError('IMAGE_FORMAT_MISMATCH', `Image "${key}": format could not be auto-detected. Bytes start with [0x${bytes[0]?.toString(16) ?? '?'}, 0x${bytes[1]?.toString(16) ?? '?'}]. Specify format: 'png' or 'jpg' explicitly.`);
441
+ throw new PretextPdfError('IMAGE_FORMAT_MISMATCH', `Image "${key}": format could not be auto-detected. Specify format: 'png' or 'jpg' explicitly.`);
236
442
  }
237
443
  /** Load image bytes from a URL, file path, or Uint8Array */
238
- async function loadImageBytes(el, key) {
239
- // Already have bytes — use directly
444
+ async function loadImageBytes(el, key, allowedDirs) {
240
445
  if (el.src instanceof Uint8Array) {
241
446
  return el.src;
242
447
  }
@@ -244,37 +449,37 @@ async function loadImageBytes(el, key) {
244
449
  if (!src || typeof src !== 'string') {
245
450
  throw new PretextPdfError('IMAGE_LOAD_FAILED', `Image "${key}": 'src' must be a non-empty string path, URL, or Uint8Array`);
246
451
  }
247
- // HTTPS/HTTP URL — fetch it
248
452
  if (src.startsWith('https://') || src.startsWith('http://')) {
453
+ assertSafeUrl(src, 'IMAGE_LOAD_FAILED', `Image "${key}"`);
249
454
  let resp;
250
455
  try {
251
- resp = await fetch(src);
456
+ resp = await fetchWithTimeout(src);
252
457
  }
253
458
  catch (err) {
254
- throw new PretextPdfError('IMAGE_LOAD_FAILED', `Image "${key}": failed to fetch URL "${src}": ${err instanceof Error ? err.message : String(err)}`);
459
+ throw new PretextPdfError('IMAGE_LOAD_FAILED', `Image "${key}": failed to fetch URL: ${err instanceof Error ? err.message : String(err)}`);
255
460
  }
256
461
  if (!resp.ok) {
257
- throw new PretextPdfError('IMAGE_LOAD_FAILED', `Image "${key}": URL returned HTTP ${resp.status}: "${src}"`);
462
+ throw new PretextPdfError('IMAGE_LOAD_FAILED', `Image "${key}": URL returned HTTP ${resp.status}`);
258
463
  }
259
464
  try {
260
- const buf = await resp.arrayBuffer();
261
- return new Uint8Array(buf);
465
+ return new Uint8Array(await resp.arrayBuffer());
262
466
  }
263
467
  catch (err) {
264
- throw new PretextPdfError('IMAGE_LOAD_FAILED', `Image "${key}": failed to read response body from "${src}": ${err instanceof Error ? err.message : String(err)}`);
468
+ throw new PretextPdfError('IMAGE_LOAD_FAILED', `Image "${key}": failed to read response body: ${err instanceof Error ? err.message : String(err)}`);
265
469
  }
266
470
  }
267
- // File path — load from filesystem
268
471
  const fs = await import('fs');
269
- if (!fs.existsSync(src)) {
270
- throw new PretextPdfError('IMAGE_LOAD_FAILED', `Image "${key}": file not found at "${src}". Check the path in the image element's 'src' field.`);
472
+ const pathMod = await import('path');
473
+ const filePath = pathMod.resolve(src);
474
+ assertPathAllowed(filePath, allowedDirs, `Image "${key}"`);
475
+ if (!fs.existsSync(filePath)) {
476
+ throw new PretextPdfError('IMAGE_LOAD_FAILED', `Image "${key}": file not found — "${redactPath(src)}". Check the path in the image element's 'src' field.`);
271
477
  }
272
478
  try {
273
- const buffer = fs.readFileSync(src);
274
- return new Uint8Array(buffer);
479
+ return new Uint8Array(fs.readFileSync(filePath));
275
480
  }
276
481
  catch (err) {
277
- throw new PretextPdfError('IMAGE_LOAD_FAILED', `Image "${key}": failed to read file "${src}": ${err instanceof Error ? err.message : String(err)}`);
482
+ throw new PretextPdfError('IMAGE_LOAD_FAILED', `Image "${key}": failed to read file "${redactPath(src)}": ${err instanceof Error ? err.message : String(err)}`);
278
483
  }
279
484
  }
280
485
  //# sourceMappingURL=assets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../src/assets.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** Error codes for PretextPdfError */
2
- export type ErrorCode = 'VALIDATION_ERROR' | 'FONT_LOAD_FAILED' | 'FONT_EMBED_FAILED' | 'PAGE_TOO_SMALL' | 'CANVAS_UNAVAILABLE' | 'PAGE_LIMIT_EXCEEDED' | 'IMAGE_LOAD_FAILED' | 'IMAGE_FORMAT_MISMATCH' | 'IMAGE_TOO_TALL' | 'TABLE_COLUMN_OVERFLOW' | 'TABLE_COLUMN_TOO_NARROW' | 'MONOSPACE_FONT_REQUIRED' | 'ITALIC_FONT_NOT_LOADED' | 'FONT_NOT_LOADED' | 'COLUMN_WIDTH_TOO_NARROW' | 'COLSPAN_OVERFLOW' | 'UNSUPPORTED_LANGUAGE' | 'SVG_LOAD_FAILED' | 'SVG_RENDER_FAILED' | 'WATERMARK_ROTATION_OUT_OF_RANGE' | 'SVG_INVALID_MARKUP' | 'ASSEMBLY_EMPTY' | 'ASSEMBLY_FAILED' | 'FORM_FIELD_NAME_DUPLICATE' | 'FORM_FLATTEN_FAILED' | 'SIGNATURE_DEP_MISSING' | 'SIGNATURE_P12_LOAD_FAILED' | 'SIGNATURE_FAILED' | 'SIGNATURE_CERT_AND_ENCRYPTION' | 'FOOTNOTE_REF_ORPHANED' | 'FOOTNOTE_DEF_ORPHANED' | 'FOOTNOTE_DEF_DUPLICATE' | 'PAGINATION_FAILED' | 'RENDER_FAILED';
2
+ export type ErrorCode = 'VALIDATION_ERROR' | 'FONT_LOAD_FAILED' | 'FONT_EMBED_FAILED' | 'PAGE_TOO_SMALL' | 'CANVAS_UNAVAILABLE' | 'PAGE_LIMIT_EXCEEDED' | 'IMAGE_LOAD_FAILED' | 'IMAGE_FORMAT_MISMATCH' | 'IMAGE_TOO_TALL' | 'TABLE_COLUMN_OVERFLOW' | 'TABLE_COLUMN_TOO_NARROW' | 'MONOSPACE_FONT_REQUIRED' | 'ITALIC_FONT_NOT_LOADED' | 'FONT_NOT_LOADED' | 'COLUMN_WIDTH_TOO_NARROW' | 'COLSPAN_OVERFLOW' | 'UNSUPPORTED_LANGUAGE' | 'SVG_LOAD_FAILED' | 'SVG_RENDER_FAILED' | 'WATERMARK_ROTATION_OUT_OF_RANGE' | 'SVG_INVALID_MARKUP' | 'ASSEMBLY_EMPTY' | 'ASSEMBLY_FAILED' | 'FORM_FIELD_NAME_DUPLICATE' | 'FORM_FLATTEN_FAILED' | 'SIGNATURE_DEP_MISSING' | 'SIGNATURE_P12_LOAD_FAILED' | 'SIGNATURE_FAILED' | 'SIGNATURE_CERT_AND_ENCRYPTION' | 'FOOTNOTE_REF_ORPHANED' | 'FOOTNOTE_DEF_ORPHANED' | 'FOOTNOTE_DEF_DUPLICATE' | 'PAGINATION_FAILED' | 'RENDER_FAILED' | 'PATH_TRAVERSAL' | 'QR_DEP_MISSING' | 'QR_GENERATE_FAILED' | 'BARCODE_DEP_MISSING' | 'BARCODE_GENERATE_FAILED' | 'BARCODE_SYMBOLOGY_INVALID' | 'CHART_DEP_MISSING' | 'CHART_SPEC_INVALID' | 'CHART_RENDER_FAILED' | 'MARKDOWN_DEP_MISSING';
3
3
  export declare class PretextPdfError extends Error {
4
4
  readonly code: ErrorCode;
5
5
  constructor(code: ErrorCode, message: string);
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,MAAM,MAAM,SAAS,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GACnB,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,mBAAmB,GACnB,uBAAuB,GACvB,gBAAgB,GAChB,uBAAuB,GACvB,yBAAyB,GACzB,yBAAyB,GACzB,wBAAwB,GACxB,iBAAiB,GACjB,yBAAyB,GACzB,kBAAkB,GAClB,sBAAsB,GACtB,iBAAiB,GACjB,mBAAmB,GACnB,iCAAiC,GACjC,oBAAoB,GACpB,gBAAgB,GAChB,iBAAiB,GACjB,2BAA2B,GAC3B,qBAAqB,GACrB,uBAAuB,GACvB,2BAA2B,GAC3B,kBAAkB,GAClB,+BAA+B,GAC/B,uBAAuB,GACvB,uBAAuB,GACvB,wBAAwB,GACxB,mBAAmB,GACnB,eAAe,CAAA;AAEnB,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;gBAEZ,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM;CAS7C"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,MAAM,MAAM,SAAS,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GACnB,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,mBAAmB,GACnB,uBAAuB,GACvB,gBAAgB,GAChB,uBAAuB,GACvB,yBAAyB,GACzB,yBAAyB,GACzB,wBAAwB,GACxB,iBAAiB,GACjB,yBAAyB,GACzB,kBAAkB,GAClB,sBAAsB,GACtB,iBAAiB,GACjB,mBAAmB,GACnB,iCAAiC,GACjC,oBAAoB,GACpB,gBAAgB,GAChB,iBAAiB,GACjB,2BAA2B,GAC3B,qBAAqB,GACrB,uBAAuB,GACvB,2BAA2B,GAC3B,kBAAkB,GAClB,+BAA+B,GAC/B,uBAAuB,GACvB,uBAAuB,GACvB,wBAAwB,GACxB,mBAAmB,GACnB,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,yBAAyB,GACzB,2BAA2B,GAC3B,mBAAmB,GACnB,oBAAoB,GACpB,qBAAqB,GACrB,sBAAsB,CAAA;AAE1B,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;gBAEZ,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM;CAS7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAqCA,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,IAAI,CAAW;IAExB,YAAY,IAAe,EAAE,OAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,qCAAqC;QACrC,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAA;QAChD,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AA+CA,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,IAAI,CAAW;IAExB,YAAY,IAAe,EAAE,OAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,qCAAqC;QACrC,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAA;QAChD,CAAC;IACH,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../src/fonts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAM7C,OAAO,KAAK,EAAE,WAAW,EAAY,OAAO,EAAE,MAAM,YAAY,CAAA;AA2ChE;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAC7B,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CAwElB;AAkKD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,WAAW,GACf,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAsHrB"}
1
+ {"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../src/fonts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAM7C,OAAO,KAAK,EAAE,WAAW,EAAY,OAAO,EAAE,MAAM,YAAY,CAAA;AA4ChE;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAC7B,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CAwElB;AAwKD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,WAAW,GACf,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAsKrB"}