pretext-pdf 0.9.2 → 1.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.
Files changed (105) hide show
  1. package/CHANGELOG.md +126 -110
  2. package/README.md +122 -1
  3. package/dist/allowed-props.d.ts +40 -0
  4. package/dist/allowed-props.d.ts.map +1 -0
  5. package/dist/allowed-props.js +130 -0
  6. package/dist/allowed-props.js.map +1 -0
  7. package/dist/assets.d.ts +4 -2
  8. package/dist/assets.d.ts.map +1 -1
  9. package/dist/assets.js +22 -1
  10. package/dist/assets.js.map +1 -1
  11. package/dist/benchmarks/corpora.d.ts +11 -0
  12. package/dist/benchmarks/corpora.d.ts.map +1 -0
  13. package/dist/benchmarks/corpora.js +228 -0
  14. package/dist/benchmarks/corpora.js.map +1 -0
  15. package/dist/builder.d.ts +10 -2
  16. package/dist/builder.d.ts.map +1 -1
  17. package/dist/builder.js +12 -4
  18. package/dist/builder.js.map +1 -1
  19. package/dist/element-types.d.ts +16 -0
  20. package/dist/element-types.d.ts.map +1 -0
  21. package/dist/element-types.js +16 -0
  22. package/dist/element-types.js.map +1 -0
  23. package/dist/errors.d.ts +8 -1
  24. package/dist/errors.d.ts.map +1 -1
  25. package/dist/errors.js +4 -0
  26. package/dist/errors.js.map +1 -1
  27. package/dist/fonts.d.ts +2 -1
  28. package/dist/fonts.d.ts.map +1 -1
  29. package/dist/fonts.js.map +1 -1
  30. package/dist/index.d.ts +23 -14
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +27 -310
  33. package/dist/index.js.map +1 -1
  34. package/dist/layout-state.d.ts +39 -0
  35. package/dist/layout-state.d.ts.map +1 -0
  36. package/dist/layout-state.js +46 -0
  37. package/dist/layout-state.js.map +1 -0
  38. package/dist/measure-blocks.d.ts +2 -1
  39. package/dist/measure-blocks.d.ts.map +1 -1
  40. package/dist/measure-blocks.js.map +1 -1
  41. package/dist/measure.d.ts +4 -2
  42. package/dist/measure.d.ts.map +1 -1
  43. package/dist/measure.js +15 -5
  44. package/dist/measure.js.map +1 -1
  45. package/dist/page-sizes.d.ts +1 -0
  46. package/dist/page-sizes.d.ts.map +1 -1
  47. package/dist/page-sizes.js.map +1 -1
  48. package/dist/paginate.d.ts +1 -1
  49. package/dist/paginate.d.ts.map +1 -1
  50. package/dist/paginate.js +11 -2
  51. package/dist/paginate.js.map +1 -1
  52. package/dist/pipeline-footnotes.d.ts +18 -0
  53. package/dist/pipeline-footnotes.d.ts.map +1 -0
  54. package/dist/pipeline-footnotes.js +98 -0
  55. package/dist/pipeline-footnotes.js.map +1 -0
  56. package/dist/pipeline-toc.d.ts +11 -0
  57. package/dist/pipeline-toc.d.ts.map +1 -0
  58. package/dist/pipeline-toc.js +28 -0
  59. package/dist/pipeline-toc.js.map +1 -0
  60. package/dist/pipeline.d.ts +24 -0
  61. package/dist/pipeline.d.ts.map +1 -0
  62. package/dist/pipeline.js +116 -0
  63. package/dist/pipeline.js.map +1 -0
  64. package/dist/plugin-registry.d.ts +40 -0
  65. package/dist/plugin-registry.d.ts.map +1 -0
  66. package/dist/plugin-registry.js +104 -0
  67. package/dist/plugin-registry.js.map +1 -0
  68. package/dist/plugin-types.d.ts +185 -0
  69. package/dist/plugin-types.d.ts.map +1 -0
  70. package/dist/plugin-types.js +27 -0
  71. package/dist/plugin-types.js.map +1 -0
  72. package/dist/post-process.d.ts +16 -0
  73. package/dist/post-process.d.ts.map +1 -0
  74. package/dist/post-process.js +80 -0
  75. package/dist/post-process.js.map +1 -0
  76. package/dist/render-blocks.d.ts +2 -1
  77. package/dist/render-blocks.d.ts.map +1 -1
  78. package/dist/render-blocks.js.map +1 -1
  79. package/dist/render-extras.d.ts +2 -2
  80. package/dist/render-extras.d.ts.map +1 -1
  81. package/dist/render-extras.js.map +1 -1
  82. package/dist/render.d.ts +4 -2
  83. package/dist/render.d.ts.map +1 -1
  84. package/dist/render.js +23 -4
  85. package/dist/render.js.map +1 -1
  86. package/dist/types-internal.d.ts +302 -0
  87. package/dist/types-internal.d.ts.map +1 -0
  88. package/dist/types-internal.js +9 -0
  89. package/dist/types-internal.js.map +1 -0
  90. package/dist/types-public.d.ts +1031 -0
  91. package/dist/types-public.d.ts.map +1 -0
  92. package/dist/types-public.js +2 -0
  93. package/dist/types-public.js.map +1 -0
  94. package/dist/types.d.ts +6 -1224
  95. package/dist/types.d.ts.map +1 -1
  96. package/dist/types.js +7 -0
  97. package/dist/types.js.map +1 -1
  98. package/dist/validate.d.ts +6 -2
  99. package/dist/validate.d.ts.map +1 -1
  100. package/dist/validate.js +148 -5
  101. package/dist/validate.js.map +1 -1
  102. package/package.json +31 -23
  103. package/docs/screenshots/showcase-invoice.png +0 -0
  104. package/docs/screenshots/showcase-report.png +0 -0
  105. package/docs/screenshots/showcase-resume.png +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAA"}
package/dist/types.js CHANGED
@@ -1,2 +1,9 @@
1
+ /**
2
+ * pretext-pdf — Public API barrel export
3
+ *
4
+ * This file re-exports all public types from types-public.ts.
5
+ * Internal types are kept separate in types-internal.ts to prevent
6
+ * accidental public API surface expansion.
7
+ */
1
8
  export {};
2
9
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -1,3 +1,7 @@
1
- import type { PdfDocument } from './types.js';
2
- export declare function validate(doc: PdfDocument): void;
1
+ import type { PdfDocument, RenderOptions } from './types.js';
2
+ /**
3
+ * Validate a PdfDocument and throw a {@link PretextPdfError} if any errors are found.
4
+ * @public
5
+ */
6
+ export declare function validate(doc: PdfDocument, options?: RenderOptions): void;
3
7
  //# sourceMappingURL=validate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA4C,MAAM,YAAY,CAAA;AA4EvF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CA6V/C"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA4C,aAAa,EAAE,MAAM,YAAY,CAAA;AA4ItG;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAqXxE"}
package/dist/validate.js CHANGED
@@ -1,5 +1,8 @@
1
1
  import { PretextPdfError } from './errors.js';
2
2
  import { resolvePageDimensions } from './page-sizes.js';
3
+ import { ALLOWED_PROPS, ALLOWED_PROPS_SUB } from './allowed-props.js';
4
+ import { ELEMENT_TYPES } from './element-types.js';
5
+ import { findPlugin, runPluginValidate } from './plugin-registry.js';
3
6
  /**
4
7
  * RTL strong bidi characters — Bidi_Class=R or AL per UAX #9.
5
8
  * Block-level coverage following Unicode DerivedBidiClass defaults.
@@ -39,6 +42,64 @@ const HEX_COLOR_REGEX = /^#[0-9A-Fa-f]{6}$/;
39
42
  const SAFE_URL_SCHEME = /^(https?|mailto|ftp|#)/i;
40
43
  /** BCP47 language tag pattern for hyphenation.language — prevents dynamic-import path injection */
41
44
  const LANGUAGE_TAG_REGEX = /^[a-zA-Z]{2,8}(-[a-zA-Z0-9]{2,8})*$/;
45
+ /** Levenshtein distance with early exit at distance > 2 */
46
+ function levenshteinDist(a, b) {
47
+ if (a === b)
48
+ return 0;
49
+ if (Math.abs(a.length - b.length) > 2)
50
+ return 999;
51
+ const m = a.length;
52
+ const n = b.length;
53
+ const prev = Array(n + 1)
54
+ .fill(0)
55
+ .map((_, j) => j);
56
+ const curr = Array(n + 1).fill(0);
57
+ for (let i = 1; i <= m; i++) {
58
+ curr[0] = i;
59
+ for (let j = 1; j <= n; j++) {
60
+ const cost = a[i - 1] === b[j - 1] ? 0 : 1;
61
+ curr[j] = Math.min(prev[j] + 1, curr[j - 1] + 1, prev[j - 1] + cost);
62
+ if (curr[j] > 2)
63
+ return 999;
64
+ }
65
+ for (let j = 0; j <= n; j++)
66
+ prev[j] = curr[j];
67
+ }
68
+ return prev[n];
69
+ }
70
+ /** Find closest match with edit distance <= 2 */
71
+ function closestMatch(prop, allowed) {
72
+ let best = null;
73
+ let bestDist = 999;
74
+ for (const candidate of allowed) {
75
+ const d = levenshteinDist(prop, candidate);
76
+ if (d > 0 && d <= 2 && d < bestDist) {
77
+ best = candidate;
78
+ bestDist = d;
79
+ }
80
+ }
81
+ return best;
82
+ }
83
+ /** Accumulate unknown property errors for an object */
84
+ function assertUnknownProps(obj, allowed, path, errors) {
85
+ if (!obj || typeof obj !== 'object' || Array.isArray(obj))
86
+ return;
87
+ for (const key of Object.keys(obj)) {
88
+ if (!allowed.has(key)) {
89
+ const suggestion = closestMatch(key, allowed);
90
+ const hint = suggestion ? ` Did you mean '${suggestion}'?` : '';
91
+ errors.push(`${path}.${key}: unknown property.${hint}`);
92
+ }
93
+ }
94
+ }
95
+ /** Format accumulated errors into a single message (cap at 20 errors) */
96
+ function formatErrors(errors) {
97
+ if (errors.length === 0)
98
+ return '';
99
+ const msgs = errors.slice(0, 20);
100
+ const suffix = errors.length > 20 ? `\n... and ${errors.length - 20} more error(s)` : '';
101
+ return msgs.join('\n') + suffix;
102
+ }
42
103
  /** Validate a hyperlink URL — throws VALIDATION_ERROR for unsafe schemes */
43
104
  function validateUrl(url, prefix) {
44
105
  if (!SAFE_URL_SCHEME.test(url)) {
@@ -60,7 +121,26 @@ const STAR_WIDTH_REGEX = /^(\d*\.?\d+)?\*$/;
60
121
  const BUNDLED_FAMILIES = new Set(['Inter']);
61
122
  /** Font variants (family-weight-style) always available without explicit doc.fonts entry */
62
123
  const BUNDLED_VARIANTS = new Set(['Inter-400-normal', 'Inter-700-normal']);
63
- export function validate(doc) {
124
+ /**
125
+ * Validate a PdfDocument and throw a {@link PretextPdfError} if any errors are found.
126
+ * @public
127
+ */
128
+ export function validate(doc, options) {
129
+ const strict = options?.strict ?? false;
130
+ const errors = [];
131
+ // Plugin pre-flight: enforce type string safety and no collision with built-ins
132
+ for (const plugin of options?.plugins ?? []) {
133
+ if (!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(plugin.type)) {
134
+ throw new PretextPdfError('VALIDATION_ERROR', `Plugin type '${plugin.type}' is invalid. Must start with a letter and contain only letters, digits, hyphens, or underscores.`);
135
+ }
136
+ if (ELEMENT_TYPES.includes(plugin.type)) {
137
+ throw new PretextPdfError('VALIDATION_ERROR', `Plugin type '${plugin.type}' collides with a built-in element type. Choose a different type string.`);
138
+ }
139
+ }
140
+ // Strict: check doc-level properties
141
+ if (strict) {
142
+ assertUnknownProps(doc, ALLOWED_PROPS_SUB['document'], 'document', errors);
143
+ }
64
144
  // content must be a non-empty array
65
145
  if (!Array.isArray(doc.content) || doc.content.length === 0) {
66
146
  throw new PretextPdfError('VALIDATION_ERROR', 'document.content must be a non-empty array');
@@ -273,7 +353,7 @@ export function validate(doc) {
273
353
  throw new PretextPdfError('VALIDATION_ERROR', 'signature.invisible must be a boolean');
274
354
  }
275
355
  if (sig.p12 !== undefined && doc.encryption !== undefined) {
276
- throw new PretextPdfError('VALIDATION_ERROR', 'Cannot use both signature.p12 (cryptographic signing) and encryption together — the encryption step would invalidate the cryptographic signature.');
356
+ throw new PretextPdfError('SIGNATURE_CERT_AND_ENCRYPTION', 'Cannot use both signature.p12 (cryptographic signing) and encryption together — the encryption step would invalidate the cryptographic signature.');
277
357
  }
278
358
  }
279
359
  // bookmarks
@@ -342,7 +422,7 @@ export function validate(doc) {
342
422
  }
343
423
  }
344
424
  for (let i = 0; i < doc.content.length; i++) {
345
- validateElement(doc.content[i], i, loadedFamilies);
425
+ validateElement(doc.content[i], i, loadedFamilies, strict, errors, options);
346
426
  }
347
427
  // ── Footnote ref/def cross-validation ─────────────────────────────────────
348
428
  const footnoteDefIds = new Map(); // id → content index
@@ -381,6 +461,11 @@ export function validate(doc) {
381
461
  }
382
462
  // validate all font references are loadable
383
463
  validateFontReferences(doc, loadedFamilies);
464
+ // Throw collected strict validation errors
465
+ if (errors.length > 0) {
466
+ const msg = formatErrors(errors);
467
+ throw new PretextPdfError('VALIDATION_ERROR', msg);
468
+ }
384
469
  }
385
470
  /**
386
471
  * Validate that every font family referenced anywhere in the document
@@ -502,11 +587,18 @@ function validateFontReferences(doc, loadedFamilies) {
502
587
  // code.fontFamily already validated against loadedFamilies in validateElement
503
588
  }
504
589
  }
505
- function validateElement(el, index, loadedFamilies) {
590
+ function validateElement(el, index, loadedFamilies, strict, errors, options) {
506
591
  const prefix = `content[${index}]`;
507
592
  if (!el || typeof el !== 'object' || !('type' in el)) {
508
593
  throw new PretextPdfError('VALIDATION_ERROR', `${prefix}: each element must have a 'type' field`);
509
594
  }
595
+ // Strict: check element properties match allowed set for type
596
+ if (strict) {
597
+ const allowed = ALLOWED_PROPS[el.type];
598
+ if (allowed) {
599
+ assertUnknownProps(el, allowed, prefix, errors);
600
+ }
601
+ }
510
602
  switch (el.type) {
511
603
  case 'paragraph': {
512
604
  if (typeof el.text !== 'string') {
@@ -559,6 +651,10 @@ function validateElement(el, index, loadedFamilies) {
559
651
  throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (paragraph): 'letterSpacing' must be a non-negative finite number and <= 200`);
560
652
  }
561
653
  if (el.annotation) {
654
+ // Strict: validate annotation properties
655
+ if (strict) {
656
+ assertUnknownProps(el.annotation, ALLOWED_PROPS_SUB['annotation'], `${prefix} (paragraph).annotation`, errors);
657
+ }
562
658
  if (!el.annotation.contents || el.annotation.contents.trim() === '') {
563
659
  throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (paragraph): annotation.contents is required and must be non-empty`);
564
660
  }
@@ -657,6 +753,10 @@ function validateElement(el, index, loadedFamilies) {
657
753
  const colCount = el.columns.length;
658
754
  for (let ci = 0; ci < el.columns.length; ci++) {
659
755
  const col = el.columns[ci];
756
+ // Strict: validate column def properties
757
+ if (strict) {
758
+ assertUnknownProps(col, ALLOWED_PROPS_SUB['column-def'], `${prefix} (table).columns[${ci}]`, errors);
759
+ }
660
760
  if (typeof col.width === 'number') {
661
761
  if (col.width <= 0 || !isFinite(col.width)) {
662
762
  throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (table): columns[${ci}].width must be a positive number. Got: ${col.width}`);
@@ -733,8 +833,16 @@ function validateElement(el, index, loadedFamilies) {
733
833
  if (colspanSum !== colCount - occupiedCols) {
734
834
  throw new PretextPdfError('COLSPAN_OVERFLOW', `${prefix} (table): rows[${ri}] colspan sum is ${colspanSum} but expected ${colCount - occupiedCols} (${colCount} columns minus ${occupiedCols} occupied by rowspan). Sum of explicit cell colspans must cover only unoccupied columns.`);
735
835
  }
836
+ // Strict: validate row and column defs
837
+ if (strict) {
838
+ assertUnknownProps(row, ALLOWED_PROPS_SUB['table-row'], `${prefix} (table).rows[${ri}]`, errors);
839
+ }
736
840
  for (let cellI = 0; cellI < row.cells.length; cellI++) {
737
841
  const cell = row.cells[cellI];
842
+ // Strict: validate cell properties
843
+ if (strict) {
844
+ assertUnknownProps(cell, ALLOWED_PROPS_SUB['table-cell'], `${prefix} (table).rows[${ri}].cells[${cellI}]`, errors);
845
+ }
738
846
  if (typeof cell.text !== 'string') {
739
847
  throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (table): rows[${ri}].cells[${cellI}].text must be a string`);
740
848
  }
@@ -969,6 +1077,10 @@ function validateElement(el, index, loadedFamilies) {
969
1077
  }
970
1078
  for (let ii = 0; ii < el.items.length; ii++) {
971
1079
  const item = el.items[ii];
1080
+ // Strict: validate list item properties
1081
+ if (strict) {
1082
+ assertUnknownProps(item, ALLOWED_PROPS_SUB['list-item'], `${prefix} (list).items[${ii}]`, errors);
1083
+ }
972
1084
  if (typeof item.text !== 'string' || item.text.trim() === '') {
973
1085
  throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): items[${ii}].text must be a non-empty string`);
974
1086
  }
@@ -986,6 +1098,10 @@ function validateElement(el, index, loadedFamilies) {
986
1098
  }
987
1099
  for (let ni = 0; ni < item.items.length; ni++) {
988
1100
  const nested = item.items[ni];
1101
+ // Strict: validate nested list item properties
1102
+ if (strict) {
1103
+ assertUnknownProps(nested, ALLOWED_PROPS_SUB['list-item'], `${prefix} (list).items[${ii}].items[${ni}]`, errors);
1104
+ }
989
1105
  if (typeof nested.text !== 'string' || nested.text.trim() === '') {
990
1106
  throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): items[${ii}].items[${ni}].text must be a non-empty string`);
991
1107
  }
@@ -1037,6 +1153,10 @@ function validateElement(el, index, loadedFamilies) {
1037
1153
  }
1038
1154
  for (let si = 0; si < el.spans.length; si++) {
1039
1155
  const span = el.spans[si];
1156
+ // Strict: validate span properties
1157
+ if (strict) {
1158
+ assertUnknownProps(span, ALLOWED_PROPS_SUB['inline-span'], `${prefix} (rich-paragraph).spans[${si}]`, errors);
1159
+ }
1040
1160
  if (typeof span.text !== 'string') {
1041
1161
  throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (rich-paragraph): spans[${si}].text must be a string`);
1042
1162
  }
@@ -1348,6 +1468,13 @@ function validateElement(el, index, loadedFamilies) {
1348
1468
  if (!['paragraph', 'heading', 'rich-paragraph'].includes(item.type)) {
1349
1469
  throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (float-group).content[${i}]: only 'paragraph', 'heading', and 'rich-paragraph' elements are allowed in float groups`);
1350
1470
  }
1471
+ // Strict: validate nested content element properties
1472
+ if (strict) {
1473
+ const allowed = ALLOWED_PROPS[item.type];
1474
+ if (allowed) {
1475
+ assertUnknownProps(item, allowed, `${prefix} (float-group).content[${i}]`, errors);
1476
+ }
1477
+ }
1351
1478
  }
1352
1479
  // Validate spacing
1353
1480
  if (fg.spaceBefore !== undefined && (typeof fg.spaceBefore !== 'number' || fg.spaceBefore < 0)) {
@@ -1360,7 +1487,23 @@ function validateElement(el, index, loadedFamilies) {
1360
1487
  }
1361
1488
  default: {
1362
1489
  const type = el.type;
1363
- throw new PretextPdfError('VALIDATION_ERROR', `${prefix}: unknown element type '${String(type)}'. Valid types: 'paragraph', 'heading', 'spacer', 'table', 'image', 'svg', 'list', 'hr', 'page-break', 'code', 'rich-paragraph', 'blockquote', 'callout', 'toc', 'comment', 'form-field', 'footnote-def', 'float-group'`);
1490
+ const plugins = options?.plugins ?? [];
1491
+ const plugin = findPlugin(plugins, String(type));
1492
+ if (plugin) {
1493
+ let rejection;
1494
+ try {
1495
+ rejection = runPluginValidate(plugin, el);
1496
+ }
1497
+ catch (err) {
1498
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (${String(type)}): plugin validate hook threw: ${err instanceof Error ? err.message : String(err)}`);
1499
+ }
1500
+ if (rejection) {
1501
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (${String(type)}): ${rejection}`);
1502
+ }
1503
+ break;
1504
+ }
1505
+ const validList = ELEMENT_TYPES.map(t => `'${t}'`).join(', ');
1506
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix}: unknown element type '${String(type)}'. Valid types: ${validList}`);
1364
1507
  }
1365
1508
  }
1366
1509
  }