pretext-pdf 2.0.2 → 2.0.13

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 (100) hide show
  1. package/CHANGELOG.md +227 -0
  2. package/dist/assets/loaders/images.d.ts.map +1 -1
  3. package/dist/assets/loaders/images.js +4 -1
  4. package/dist/assets/loaders/images.js.map +1 -1
  5. package/dist/assets/security/path-allowlist.d.ts.map +1 -1
  6. package/dist/assets/security/path-allowlist.js +10 -1
  7. package/dist/assets/security/path-allowlist.js.map +1 -1
  8. package/dist/assets/svg/resolve-content.d.ts.map +1 -1
  9. package/dist/assets/svg/resolve-content.js +4 -1
  10. package/dist/assets/svg/resolve-content.js.map +1 -1
  11. package/dist/builder.js +1 -1
  12. package/dist/builder.js.map +1 -1
  13. package/dist/compat/normalize.d.ts +13 -0
  14. package/dist/compat/normalize.d.ts.map +1 -0
  15. package/dist/compat/normalize.js +146 -0
  16. package/dist/compat/normalize.js.map +1 -0
  17. package/dist/compat/pdfmake-types.d.ts +91 -0
  18. package/dist/compat/pdfmake-types.d.ts.map +1 -0
  19. package/dist/compat/pdfmake-types.js +8 -0
  20. package/dist/compat/pdfmake-types.js.map +1 -0
  21. package/dist/compat/translate.d.ts +7 -0
  22. package/dist/compat/translate.d.ts.map +1 -0
  23. package/dist/compat/translate.js +205 -0
  24. package/dist/compat/translate.js.map +1 -0
  25. package/dist/compat.d.ts +6 -161
  26. package/dist/compat.d.ts.map +1 -1
  27. package/dist/compat.js +13 -404
  28. package/dist/compat.js.map +1 -1
  29. package/dist/fonts/bundled-paths.d.ts +13 -0
  30. package/dist/fonts/bundled-paths.d.ts.map +1 -0
  31. package/dist/fonts/bundled-paths.js +43 -0
  32. package/dist/fonts/bundled-paths.js.map +1 -0
  33. package/dist/fonts/collect-needed.d.ts +10 -0
  34. package/dist/fonts/collect-needed.d.ts.map +1 -0
  35. package/dist/fonts/collect-needed.js +85 -0
  36. package/dist/fonts/collect-needed.js.map +1 -0
  37. package/dist/fonts/collect-text.d.ts +9 -0
  38. package/dist/fonts/collect-text.d.ts.map +1 -0
  39. package/dist/fonts/collect-text.js +162 -0
  40. package/dist/fonts/collect-text.js.map +1 -0
  41. package/dist/fonts/load-bytes.d.ts +10 -0
  42. package/dist/fonts/load-bytes.d.ts.map +1 -0
  43. package/dist/fonts/load-bytes.js +56 -0
  44. package/dist/fonts/load-bytes.js.map +1 -0
  45. package/dist/fonts.d.ts +11 -10
  46. package/dist/fonts.d.ts.map +1 -1
  47. package/dist/fonts.js +17 -421
  48. package/dist/fonts.js.map +1 -1
  49. package/dist/pipeline-footnotes.d.ts +2 -2
  50. package/dist/pipeline-footnotes.d.ts.map +1 -1
  51. package/dist/pipeline-footnotes.js +5 -2
  52. package/dist/pipeline-footnotes.js.map +1 -1
  53. package/dist/pipeline.d.ts.map +1 -1
  54. package/dist/pipeline.js +9 -5
  55. package/dist/pipeline.js.map +1 -1
  56. package/dist/render-utils.d.ts +1 -7
  57. package/dist/render-utils.d.ts.map +1 -1
  58. package/dist/render-utils.js +9 -30
  59. package/dist/render-utils.js.map +1 -1
  60. package/dist/schema/document.d.ts +2115 -0
  61. package/dist/schema/document.d.ts.map +1 -0
  62. package/dist/schema/document.js +275 -0
  63. package/dist/schema/document.js.map +1 -0
  64. package/dist/schema/elements-block.d.ts +481 -0
  65. package/dist/schema/elements-block.d.ts.map +1 -0
  66. package/dist/schema/elements-block.js +155 -0
  67. package/dist/schema/elements-block.js.map +1 -0
  68. package/dist/schema/elements-media.d.ts +282 -0
  69. package/dist/schema/elements-media.d.ts.map +1 -0
  70. package/dist/schema/elements-media.js +83 -0
  71. package/dist/schema/elements-media.js.map +1 -0
  72. package/dist/schema/elements-table.d.ts +134 -0
  73. package/dist/schema/elements-table.d.ts.map +1 -0
  74. package/dist/schema/elements-table.js +60 -0
  75. package/dist/schema/elements-table.js.map +1 -0
  76. package/dist/schema/elements-text.d.ts +782 -0
  77. package/dist/schema/elements-text.d.ts.map +1 -0
  78. package/dist/schema/elements-text.js +260 -0
  79. package/dist/schema/elements-text.js.map +1 -0
  80. package/dist/schema/shared.d.ts +84 -0
  81. package/dist/schema/shared.d.ts.map +1 -0
  82. package/dist/schema/shared.js +29 -0
  83. package/dist/schema/shared.js.map +1 -0
  84. package/dist/schema.d.ts +10 -2116
  85. package/dist/schema.d.ts.map +1 -1
  86. package/dist/schema.js +10 -852
  87. package/dist/schema.js.map +1 -1
  88. package/dist/types-public/document.d.ts +99 -101
  89. package/dist/types-public/document.d.ts.map +1 -1
  90. package/dist/validate/document.d.ts.map +1 -1
  91. package/dist/validate/document.js +5 -1
  92. package/dist/validate/document.js.map +1 -1
  93. package/dist/validate/elements/media.d.ts.map +1 -1
  94. package/dist/validate/elements/media.js +14 -0
  95. package/dist/validate/elements/media.js.map +1 -1
  96. package/dist/validate/helpers.d.ts +6 -6
  97. package/dist/validate/helpers.d.ts.map +1 -1
  98. package/dist/validate/helpers.js +7 -7
  99. package/dist/validate/helpers.js.map +1 -1
  100. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,6 +7,233 @@ Format: [Keep a Changelog 1.1.0](https://keepachangelog.com/en/1.1.0/)
7
7
 
8
8
  ---
9
9
 
10
+ ## [2.0.13] — 2026-05-29
11
+
12
+ Security hardening and coverage improvements from final review pass.
13
+
14
+ ### Security
15
+
16
+ - **Symlink escape closed in `assertPathAllowed`** — `path-allowlist.ts` now calls `realpathSync` before the prefix comparison, so a symlink placed inside an allowed directory cannot dereference to an arbitrary path outside the allowlist (F-1).
17
+ - **Chart `spec` scanned for prototype-pollution keys** — `validateChart` in `media.ts` now rejects any `spec` object containing `__proto__`, `constructor`, or `prototype` keys at any nesting depth before passing it to the Vega renderer (F-9).
18
+ - **`http://` URLs rejected at loader entry points** — `images.ts` and `resolve-content.ts` now throw immediately on `http://` src values instead of entering the fetch path and relying on the inner SSRF guard (F-4).
19
+
20
+ ### Fixed
21
+
22
+ - **`stageInit` metadata fallback logs message only** — `pipeline.ts` no longer serializes the full error object into `console.warn`; only `err.message` is included, preventing internal API names and stack frames from appearing in library stderr (F-3).
23
+
24
+ ### Tests Added
25
+
26
+ - `test/compat-normalize.test.ts` — 62 tests covering all exported functions in `src/compat/normalize.ts` directly via tsx (previously only reachable through the dist/ barrel).
27
+
28
+ ---
29
+
30
+ ## [2.0.12] — 2026-05-29
31
+
32
+ Multi-perspective review fixes: security, correctness, silent failures, dead code, and test coverage.
33
+
34
+ ### Security
35
+
36
+ - **`allowedFileDirs` array now copied in `fromPdfmake()`** — Previously assigned by reference, allowing the caller to mutate the allowlist after translation and silently expand path-traversal permissions mid-render. Now copied with `[...arr]` (SEC-1).
37
+
38
+ ### Fixed
39
+
40
+ - **`content` field is now `readonly ContentElement[]` on `PdfDocument`** — The last mutable public field. Prevents callers from `.push()`-ing into a document after passing it to `render()`, which could corrupt multi-stage async pipeline results. `builder.toDocument()` now snapshots the content array at call time (H-1).
41
+ - **`buildFootnoteNumbering` and `runFootnoteTwoPass` parameter widened to `readonly ContentElement[]`** — Required by the `content` readonly change; no semantic change.
42
+ - **Footnote sentinel `?? 0` replaced with `PretextPdfError`** — A missing footnote number now throws `PAGINATION_FAILED` with a clear message instead of silently rendering footnote `0` (M-3).
43
+ - **`onUnsupported` default now logs a one-time warning** — The previous default was a silent no-op, contradicting its own JSDoc. Default is now `console.warn('[pretext-pdf/compat] Unsupported pdfmake feature skipped: <feature>')` with per-call deduplication (M-1).
44
+ - **`stageInit` metadata catch block now logs the error** — The fallback path for `getInfoDict()` unavailability no longer silently swallows the root cause (M-2).
45
+ - **`FONT_EMBED_FAILED` error message is user-facing** — Removed "this is a bug" from the message; replaced with actionable guidance (M-5).
46
+ - **Internal exports removed from `translate.ts`** — `translateNodeInner`, `applyStyleToParagraph`, `collectSpans` are no longer exported from the sub-module (M-4).
47
+ - **`_require` unexported from `bundled-paths.ts`** — Was exported with a misleading `_` prefix but only used internally (L-1).
48
+ - **`fonts.ts` header comment includes `collect-text.ts`** — Fourth sub-module was omitted (L-2).
49
+ - **`translate.ts` uses named `ListItem` import** — Replaced inline `import('../types.js').ListItem` expression (L-3).
50
+
51
+ ### Tests Added
52
+
53
+ - `test/compat/normalize.test.ts` — 28 direct unit tests for `mergeStyles`, `normalizePageSize`, `normalizeMargins`, `normalizeHeaderFooter`, `normalizeStyleNames`
54
+ - `test/fonts/collect-text.test.ts` — 9 direct unit tests for `collectTextByFont` across paragraph, heading, rich-paragraph, header/footer, and defaultFont override
55
+ - `test/compat.test.ts` — 3 isolation tests for `allowedFileDirs` array copy (SEC-1)
56
+ - `test/builder.test.ts` — 2 snapshot isolation tests for `toDocument()` content copy (H-1)
57
+
58
+ ### Changed
59
+
60
+ - **`pdfmake-types.ts`: `allowedFileDirs` is now `readonly string[]`** — Type made symmetric with `PdfDocument.allowedFileDirs`
61
+
62
+ ## [2.0.11] — 2026-05-29
63
+
64
+ Phase 6a: `readonly` on all scalar public interface fields (non-breaking).
65
+
66
+ ### Changed
67
+
68
+ - **All scalar fields on public interfaces marked `readonly`** — `PdfDocument`, `DocumentMetadata`,
69
+ `Margins`, `FontSpec`, `HeaderFooterSpec`, `WatermarkBase`/`WatermarkSpec`, `EncryptionSpec`,
70
+ `SignatureSpec`, `BookmarkConfig`, `HyphenationConfig`, `AnnotationSpec`.
71
+
72
+ Array fields (`content`, `fonts`, `keywords`, `sections`, `allowedFileDirs`) are intentionally
73
+ left mutable — marking those `readonly` is a breaking change deferred to v3.
74
+
75
+ This is non-breaking for all callers: TypeScript allows assigning to `readonly` fields in
76
+ object literal initializers, and the runtime behavior is identical.
77
+
78
+ - **`compat.ts`**: Internal construction variables use `Mutable<T>` to allow incremental property
79
+ assignment, cast to the full interface at return. Externally the API is unchanged.
80
+
81
+ ---
82
+
83
+ ## [2.0.10] — 2026-05-29
84
+
85
+ Sprint 5B: Split `compat.ts` (613L) and `fonts.ts` (530L) into focused sub-directories.
86
+
87
+ ### Changed
88
+
89
+ - **`src/compat.ts` split into `src/compat/` (3 files)**
90
+ - `compat/pdfmake-types.ts` (76L) — `PdfmakeDocument`, `PdfmakeObjectNode`, `PdfmakeStyle`, `CompatOptions`, `TranslateCtx`, `DEFAULT_HEADING_MAP`
91
+ - `compat/translate.ts` (155L) — `translateNode`, `translateNodeInner`, `translateTextNode`, `applyStyleToParagraph`, `collectSpans`, `pdfmakeNodeToListItem`
92
+ - `compat/normalize.ts` (115L) — `extractFlatText`, `translateTable`, `mergeStyles`, `normalizeStyleNames`, `pdfmakeAlignToPretext`, `normalizePageSize`, `normalizeMargins`, `normalizeHeaderFooter`
93
+ - `compat.ts` (85L) — `fromPdfmake` (the only public export) + type re-exports
94
+ Circular-dependency between translate↔normalize avoided by moving `extractFlatText` to `normalize.ts`.
95
+
96
+ - **`src/fonts.ts` split into `src/fonts/` (4 files)**
97
+ - `fonts/bundled-paths.ts` (50L) — `IS_NODE`, `resolveInterFile`, all four `BUNDLED_INTER_*_PATHS` arrays
98
+ - `fonts/load-bytes.ts` (80L) — `loadFontBytes` (file / Uint8Array / bundled-Inter async loader)
99
+ - `fonts/collect-needed.ts` (75L) — `collectNeededFonts` (document font-variant scanner)
100
+ - `fonts/collect-text.ts` (120L) — `collectTextByFont` (glyph subsetting text collector)
101
+ - `fonts.ts` (70L) — `loadFonts` + `collectTextByFont` re-export (both public exports intact)
102
+
103
+ The public API is unchanged. All existing test and source imports continue to work.
104
+
105
+ ---
106
+
107
+ ## [2.0.9] — 2026-05-29
108
+
109
+ Sprint 5A: dead-export removal, ts-prune scan.
110
+
111
+ ### Changed
112
+
113
+ - **`addGoToAnnotation` removed from `src/render-utils.ts`** — The function was exported but
114
+ never called anywhere in the codebase. GoTo annotation support (internal document links)
115
+ was prepared prematurely; the implementation is preserved in git history and can be
116
+ restored when anchor-link rendering is actually wired up.
117
+
118
+ - **`RTL_REGEX` removed from `src/validate/helpers.ts`** — Exported constant never imported
119
+ anywhere. The regex pattern is preserved in git history.
120
+
121
+ - **`PDFRef` import removed from `render-utils.ts`** — Only needed for the now-deleted
122
+ `addGoToAnnotation` signature.
123
+
124
+ ---
125
+
126
+ ## [2.0.7] — 2026-05-28
127
+
128
+ Sprint 4: Split `schema.ts` (907 LOC) into focused `src/schema/` modules.
129
+
130
+ ### Changed
131
+
132
+ - **`src/schema.ts` split into `src/schema/` (6 focused files)** — The 907-line monolith is
133
+ replaced by a 19-line barrel re-export and six cohesive sub-files, each under 300 lines:
134
+ - `schema/shared.ts` (30L) — atomic sub-schemas: align, color, fontWeight, dir, space, inlineSpan
135
+ - `schema/elements-text.ts` (270L) — paragraph, heading, blockquote, code, callout, richParagraph, list, toc, footnoteDef
136
+ - `schema/elements-media.ts` (87L) — image, svg, qrCode, barcode, chart
137
+ - `schema/elements-block.ts` (164L) — spacer, hr, pageBreak, comment, formField, floatGroup
138
+ - `schema/elements-table.ts` (60L) — table
139
+ - `schema/document.ts` (293L) — top-level pdfDocumentSchema (assembles all element schemas)
140
+ The public API (`import { pdfDocumentSchema } from 'pretext-pdf/schema'`) is unchanged.
141
+
142
+ ---
143
+
144
+ ## [2.0.6] — 2026-05-28
145
+
146
+ Post-sprint audit fixes: /Lang encoding, BCP47 regex, test correctness.
147
+
148
+ ### Fixed
149
+
150
+ - **`/Lang` catalog entry now uses `PDFString.of()` (correct literal string)** — Previously
151
+ used `PDFHexString.of()` which stored raw ASCII bytes as invalid hex. `/Lang` is a
152
+ PDF text string per spec §14.9.2; `PDFString` (literal string) is correct and matches
153
+ pdf-lib's own `setLanguage()`. BCP47 tags are ASCII-only (validated by regex) so
154
+ literal-string injection risk is zero.
155
+
156
+ - **BCP47 regex widened to accept `i-` and `x-` prefixed tags** — `/^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/`
157
+ now allows the single-char leading subtag required by grandfathered (`i-klingon`) and
158
+ private-use (`x-custom-app`) tags per RFC 5646 §2.2.7. Previously `{2,8}` incorrectly
159
+ rejected valid language codes.
160
+
161
+ ### Tests
162
+
163
+ - **H6 (signerName truncation)** strengthened — replaced the vacuous 5% byte-size ratio with
164
+ a `deepEqual(pdf100, pdf101)` identity check: a 100-char and 101-char signerName must produce
165
+ byte-identical PDFs, directly testing that `slice(0, 100)` is applied.
166
+
167
+ - **M5 (/TU encoding)** — added `FEFF` BOM assertion to the radio and dropdown loop,
168
+ making it consistent with the checkbox/button loop.
169
+
170
+ - **M6 (bookmark Title)** — replaced the `FEFF0043` prefix check (too broad) with the full
171
+ 6-character "Chapte" UTF-16BE hex prefix for an unambiguous unique match.
172
+
173
+ - **M7 (signing field escaping)** — clarified test scope: the visual placeholder path uses
174
+ `drawText()` (CIDFont glyph encoding — no injection risk). The `escapePdfLit` contract is
175
+ tested in `signatures-validation.test.ts` which covers the crypto signing code path.
176
+
177
+ ---
178
+
179
+ ## [2.0.5] — 2026-05-28
180
+
181
+ Sprint 3 audit fixes: annotation array safety, test coverage gaps closed.
182
+
183
+ ### Fixed
184
+
185
+ - **`addStickyNoteAnnotation` now has `instanceof PDFArray` guard** — the last remaining
186
+ `as any` annotation-push in `render-utils.ts`. All three annotation functions
187
+ (`addLinkAnnotation`, `addGoToAnnotation`, `addStickyNoteAnnotation`) now safely fall back
188
+ to creating a new array if the existing `Annots` entry is not a direct `PDFArray`.
189
+
190
+ ### Tests
191
+
192
+ - **H6** (`test/signatures-visual.test.ts`): `signerName` longer than 100 chars renders to
193
+ the same byte-size PDF as a 100-char name — confirms the `slice(0, 100)` truncation is applied.
194
+ - **M5** (`test/forms.test.ts`): `/TU` encoding verified for checkbox, radio, dropdown, and
195
+ button field types — not just `text`.
196
+ - **M6** (`test/bookmarks.test.ts`): Bookmark `Title` with special chars (parentheses) appears
197
+ as UTF-16BE hex in the PDF bytes — raw literal form `(Chapter (1): ...)` does not appear.
198
+ - **M7** (`test/signatures-visual.test.ts`): Backslash and parentheses in `signerName`,
199
+ `reason`, and `location` render without throwing (escaping confirmed).
200
+
201
+ ---
202
+
203
+ ## [2.0.4] — 2026-05-28
204
+
205
+ Sprint 2 audit fixes: type-safety improvements in render-utils.ts and vendor declarations.
206
+
207
+ ### Changed
208
+
209
+ - **`pdf-lib-augment.d.ts` expanded** — Declares `PdfFontEmbedder` interface covering the
210
+ private `embedder.font` (underlinePosition, underlineThickness, xHeight) and `embedder.scale`
211
+ fields accessed for text decoration metrics. The `(pdfFont as any).embedder` cast in
212
+ `render-utils.ts` is now `(pdfFont as unknown as { embedder?: PdfFontEmbedder }).embedder`,
213
+ eliminating untyped `any` propagation into font-metric arithmetic.
214
+
215
+ ---
216
+
217
+ ## [2.0.3] — 2026-05-28
218
+
219
+ Sprint 1 audit fixes: GoTo annotation guard, BCP47 metadata validation, dependency security.
220
+
221
+ ### Fixed
222
+
223
+ - **`addGoToAnnotation` now has `instanceof PDFArray` guard** — the same fix applied to
224
+ `addLinkAnnotation` and `addStickyNoteAnnotation` in v2.0.2 was missed for GoTo annotations.
225
+ Existing `Annots` entries that are not a direct `PDFArray` now fall back to creating a new
226
+ array instead of silently calling `.push()` on an `any`-cast value.
227
+
228
+ - **`metadata.language` validated against `LANGUAGE_TAG_REGEX`** — previously only checked for
229
+ non-empty string and max length. Now enforces the same BCP47 regex (`/^[a-zA-Z]{2,8}(-[a-zA-Z0-9]{2,8})*$/`)
230
+ used for `hyphenation.language`, closing an inconsistency in the validation layer.
231
+
232
+ - **Dependency audit** — `npm audit fix` resolved `fast-uri <=3.1.1` CVE (GHSA-v39h-62p7-jpjc,
233
+ GHSA-q3j6-qgpj-74h6) in the dev dependency chain.
234
+
235
+ ---
236
+
10
237
  ## [2.0.2] — 2026-05-28
11
238
 
12
239
  Second post-release audit patch: PDF injection hardening (metadata, AcroForm names), PDFHexString encoding correctness, signing field escaping, annotation array safety.
@@ -1 +1 @@
1
- {"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../../src/assets/loaders/images.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAMlD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAiBlG;AAED,4DAA4D;AAC5D,wBAAsB,cAAc,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAuD/G"}
1
+ {"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../../src/assets/loaders/images.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAMlD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAiBlG;AAED,4DAA4D;AAC5D,wBAAsB,cAAc,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CA0D/G"}
@@ -33,7 +33,10 @@ export async function loadImageBytes(el, key, allowedDirs) {
33
33
  if (!src || typeof src !== 'string') {
34
34
  throw new PretextPdfError('IMAGE_LOAD_FAILED', `Image "${key}": 'src' must be a non-empty string path, URL, or Uint8Array`);
35
35
  }
36
- if (src.startsWith('https://') || src.startsWith('http://')) {
36
+ if (src.startsWith('http://')) {
37
+ throw new PretextPdfError('IMAGE_LOAD_FAILED', `Image "${key}": HTTP URLs are not allowed — use HTTPS`);
38
+ }
39
+ if (src.startsWith('https://')) {
37
40
  // SSRF validation happens inside fetchWithTimeout — no need to pre-validate
38
41
  let resp;
39
42
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"images.js","sourceRoot":"","sources":["../../../src/assets/loaders/images.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAgB,EAAE,KAAiB,EAAE,GAAW;IACjF,IAAI,EAAE,CAAC,MAAM,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IACrC,IAAI,EAAE,CAAC,MAAM,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IAErC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAClG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAE7E,IAAI,OAAO,EAAE,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAA;QACjD,IAAI,GAAG,KAAK,KAAK;YAAE,OAAO,KAAK,CAAA;QAC/B,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM;YAAE,OAAO,KAAK,CAAA;IACnD,CAAC;IAED,MAAM,IAAI,eAAe,CACvB,uBAAuB,EACvB,UAAU,GAAG,kFAAkF,CAChG,CAAA;AACH,CAAC;AAED,4DAA4D;AAC5D,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EAAgB,EAAE,GAAW,EAAE,WAAsB;IACxF,IAAI,EAAE,CAAC,GAAG,YAAY,UAAU,EAAE,CAAC;QACjC,OAAO,EAAE,CAAC,GAAG,CAAA;IACf,CAAC;IAED,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAA;IAElB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,eAAe,CAAC,mBAAmB,EAAE,UAAU,GAAG,8DAA8D,CAAC,CAAA;IAC7H,CAAC;IAED,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5D,4EAA4E;QAC5E,IAAI,IAAc,CAAA;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,mBAAmB,EAAE,UAAU,GAAG,GAAG,CAAC,CAAA;QAC3E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,eAAe,CACvB,mBAAmB,EACnB,UAAU,GAAG,2BAA2B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC3F,CAAA;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,eAAe,CAAC,mBAAmB,EAAE,UAAU,GAAG,wBAAwB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QACpG,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,eAAe,CACvB,mBAAmB,EACnB,UAAU,GAAG,oCAAoC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACpG,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAA;IAC7B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACrC,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,GAAG,GAAG,CAAC,CAAA;IAE1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,eAAe,CACvB,mBAAmB,EACnB,UAAU,GAAG,wBAAwB,UAAU,CAAC,GAAG,CAAC,uDAAuD,CAC5G,CAAA;IACH,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAA;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,CACvB,mBAAmB,EACnB,UAAU,GAAG,2BAA2B,UAAU,CAAC,GAAG,CAAC,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAChH,CAAA;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"images.js","sourceRoot":"","sources":["../../../src/assets/loaders/images.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"path-allowlist.d.ts","sourceRoot":"","sources":["../../../src/assets/security/path-allowlist.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,EACjC,KAAK,EAAE,MAAM,GACZ,IAAI,CAmBN"}
1
+ {"version":3,"file":"path-allowlist.d.ts","sourceRoot":"","sources":["../../../src/assets/security/path-allowlist.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,EACjC,KAAK,EAAE,MAAM,GACZ,IAAI,CA0BN"}
@@ -1,3 +1,4 @@
1
+ import { realpathSync } from 'node:fs';
1
2
  import { PretextPdfError } from '../../errors.js';
2
3
  /**
3
4
  * Enforce allowedFileDirs: resolved absolute path must start with an allowed dir.
@@ -14,7 +15,15 @@ export function assertPathAllowed(resolvedPath, allowedDirs, label) {
14
15
  throw new PretextPdfError('PATH_TRAVERSAL', `${label} src uses a local file path but doc.allowedFileDirs is not set. ` +
15
16
  `Configure allowedFileDirs to explicitly list the directories from which files may be read.`);
16
17
  }
17
- const norm = resolvedPath.replace(/\\/g, '/');
18
+ // Resolve symlinks so a symlink inside an allowed dir cannot escape to an arbitrary path.
19
+ let canonicalPath = resolvedPath;
20
+ try {
21
+ canonicalPath = realpathSync(resolvedPath);
22
+ }
23
+ catch {
24
+ // File does not exist yet — fall through to prefix check on the raw resolved path.
25
+ }
26
+ const norm = canonicalPath.replace(/\\/g, '/');
18
27
  const allowed = allowedDirs.some((dir) => {
19
28
  const d = dir.replace(/\\/g, '/').replace(/\/$/, '');
20
29
  return norm === d || norm.startsWith(d + '/');
@@ -1 +1 @@
1
- {"version":3,"file":"path-allowlist.js","sourceRoot":"","sources":["../../../src/assets/security/path-allowlist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAC/B,YAAoB,EACpB,WAAiC,EACjC,KAAa;IAEb,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,eAAe,CACvB,gBAAgB,EAChB,GAAG,KAAK,kEAAkE;YACxE,4FAA4F,CAC/F,CAAA;IACH,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QACvC,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACpD,OAAO,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,CACvB,gBAAgB,EAChB,GAAG,KAAK,iGAAiG,CAC1G,CAAA;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"path-allowlist.js","sourceRoot":"","sources":["../../../src/assets/security/path-allowlist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAC/B,YAAoB,EACpB,WAAiC,EACjC,KAAa;IAEb,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,eAAe,CACvB,gBAAgB,EAChB,GAAG,KAAK,kEAAkE;YACxE,4FAA4F,CAC/F,CAAA;IACH,CAAC;IACD,0FAA0F;IAC1F,IAAI,aAAa,GAAG,YAAY,CAAA;IAChC,IAAI,CAAC;QACH,aAAa,GAAG,YAAY,CAAC,YAAY,CAAC,CAAA;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,mFAAmF;IACrF,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QACvC,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACpD,OAAO,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,eAAe,CACvB,gBAAgB,EAChB,GAAG,KAAK,iGAAiG,CAC1G,CAAA;IACH,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-content.d.ts","sourceRoot":"","sources":["../../../src/assets/svg/resolve-content.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAOhD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BnG"}
1
+ {"version":3,"file":"resolve-content.d.ts","sourceRoot":"","sources":["../../../src/assets/svg/resolve-content.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAOhD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA+BnG"}
@@ -13,7 +13,10 @@ export async function resolveSvgContent(el, allowedFileDirs) {
13
13
  if (!el.src) {
14
14
  throw new PretextPdfError('SVG_LOAD_FAILED', "SvgElement requires either 'svg' (inline string) or 'src' (file path or https:// URL)");
15
15
  }
16
- if (el.src.startsWith('https://') || el.src.startsWith('http://')) {
16
+ if (el.src.startsWith('http://')) {
17
+ throw new PretextPdfError('SVG_LOAD_FAILED', 'SVG HTTP URLs are not allowed — use HTTPS');
18
+ }
19
+ if (el.src.startsWith('https://')) {
17
20
  // SSRF validation happens inside fetchWithTimeout — no need to pre-validate
18
21
  let resp;
19
22
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-content.js","sourceRoot":"","sources":["../../../src/assets/svg/resolve-content.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAc,EAAE,eAA0B;IAChF,IAAI,EAAE,CAAC,GAAG;QAAE,OAAO,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IAEtC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;QACZ,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,uFAAuF,CAAC,CAAA;IACvI,CAAC;IAED,IAAI,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAClE,4EAA4E;QAC5E,IAAI,IAAc,CAAA;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAA;QACjE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC3H,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,yBAAyB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QACtF,CAAC;QACD,OAAO,WAAW,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACvE,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACxC,iBAAiB,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC,CAAA;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,wBAAwB,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7F,CAAC;IACD,OAAO,WAAW,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;AACxD,CAAC"}
1
+ {"version":3,"file":"resolve-content.js","sourceRoot":"","sources":["../../../src/assets/svg/resolve-content.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAc,EAAE,eAA0B;IAChF,IAAI,EAAE,CAAC,GAAG;QAAE,OAAO,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IAEtC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;QACZ,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,uFAAuF,CAAC,CAAA;IACvI,CAAC;IAED,IAAI,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,2CAA2C,CAAC,CAAA;IAC3F,CAAC;IACD,IAAI,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,4EAA4E;QAC5E,IAAI,IAAc,CAAA;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAA;QACjE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC3H,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,yBAAyB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QACtF,CAAC;QACD,OAAO,WAAW,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACvE,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACxC,iBAAiB,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,CAAC,CAAA;IACnD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,eAAe,CAAC,iBAAiB,EAAE,wBAAwB,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7F,CAAC;IACD,OAAO,WAAW,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;AACxD,CAAC"}
package/dist/builder.js CHANGED
@@ -158,7 +158,7 @@ export function createPdf(options = {}) {
158
158
  metadata: options.metadata,
159
159
  ...(defaultParagraphStyle !== undefined && { defaultParagraphStyle }),
160
160
  ...(sections.length > 0 && { sections }),
161
- content,
161
+ content: [...content],
162
162
  };
163
163
  return doc;
164
164
  },
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /** Normalizers and structural helpers for pdfmake → pretext-pdf translation. */
2
+ import type { TableElement, HeaderFooterSpec, Margins } from '../types.js';
3
+ import { type PdfmakeNode, type PdfmakeObjectNode, type PdfmakeStyle, type TranslateCtx } from './pdfmake-types.js';
4
+ /** Collect flat text from a pdfmake child-node array, recursing into nested arrays. */
5
+ export declare function extractFlatText(children: PdfmakeNode[], ctx: TranslateCtx): string;
6
+ export declare function translateTable(t: NonNullable<PdfmakeObjectNode['table']>, ctx: TranslateCtx): TableElement;
7
+ export declare function pdfmakeAlignToPretext(a: PdfmakeStyle['alignment']): 'left' | 'center' | 'right' | 'justify' | undefined;
8
+ export declare function normalizeStyleNames(s: string | string[] | undefined): string[];
9
+ export declare function mergeStyles(ctx: TranslateCtx, styleNames: string[], node: PdfmakeObjectNode, parent?: PdfmakeStyle): PdfmakeStyle;
10
+ export declare function normalizePageSize(name: string): import('../page-sizes.js').NamedPageSize | null;
11
+ export declare function normalizeMargins(m: number | [number, number] | [number, number, number, number]): Margins | null;
12
+ export declare function normalizeHeaderFooter(hf: import('./pdfmake-types.js').PdfmakeDocument['header'] | import('./pdfmake-types.js').PdfmakeDocument['footer'], onUnsupported: (f: string) => void, label: 'header' | 'footer'): HeaderFooterSpec | null;
13
+ //# sourceMappingURL=normalize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/compat/normalize.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,KAAK,EACV,YAAY,EAGZ,gBAAgB,EAChB,OAAO,EACR,MAAM,aAAa,CAAA;AAGpB,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEnH,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,CAQlF;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,GAAG,YAAY,CAiC1G;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAGvH;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAG9E;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,MAAM,EAAE,EACpB,IAAI,EAAE,iBAAiB,EACvB,MAAM,CAAC,EAAE,YAAY,GACpB,YAAY,CAad;AAcD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,kBAAkB,EAAE,aAAa,GAAG,IAAI,CAS/F;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,GAAG,IAAI,CAOhH;AAED,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,OAAO,oBAAoB,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,OAAO,oBAAoB,EAAE,eAAe,CAAC,QAAQ,CAAC,EACnH,aAAa,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,EAClC,KAAK,EAAE,QAAQ,GAAG,QAAQ,GACzB,gBAAgB,GAAG,IAAI,CAYzB"}
@@ -0,0 +1,146 @@
1
+ /** Normalizers and structural helpers for pdfmake → pretext-pdf translation. */
2
+ import {} from './pdfmake-types.js';
3
+ /** Collect flat text from a pdfmake child-node array, recursing into nested arrays. */
4
+ export function extractFlatText(children, ctx) {
5
+ const buf = [];
6
+ for (const c of children) {
7
+ if (typeof c === 'string') {
8
+ buf.push(c);
9
+ continue;
10
+ }
11
+ if (typeof c.text === 'string') {
12
+ buf.push(c.text);
13
+ continue;
14
+ }
15
+ if (Array.isArray(c.text))
16
+ buf.push(extractFlatText(c.text, ctx));
17
+ }
18
+ return buf.join('');
19
+ }
20
+ export function translateTable(t, ctx) {
21
+ const colCount = t.body[0]?.length ?? 0;
22
+ const widths = t.widths ?? new Array(colCount).fill('*');
23
+ const columns = widths.map((w) => {
24
+ if (typeof w === 'number')
25
+ return { width: w };
26
+ if (w === '*')
27
+ return { width: '1*' };
28
+ if (w === 'auto')
29
+ return { width: 'auto' };
30
+ if (typeof w === 'string' && /^\d*\.?\d+\*$/.test(w))
31
+ return { width: w };
32
+ return { width: '1*' };
33
+ });
34
+ const headerRows = t.headerRows ?? 0;
35
+ const rows = t.body.map((row, idx) => {
36
+ const isHeader = idx < headerRows;
37
+ const cells = row.map(cell => {
38
+ if (typeof cell === 'string')
39
+ return { text: cell, ...(isHeader ? { fontWeight: 700 } : {}) };
40
+ if (cell && typeof cell === 'object') {
41
+ const styleNames = normalizeStyleNames(cell.style);
42
+ const merged = mergeStyles(ctx, styleNames, cell);
43
+ const text = typeof cell.text === 'string' ? cell.text : (Array.isArray(cell.text) ? extractFlatText(cell.text, ctx) : '');
44
+ const tcell = { text };
45
+ if (merged.bold || isHeader)
46
+ tcell.fontWeight = 700;
47
+ if (merged.color)
48
+ tcell.color = merged.color;
49
+ if (merged.alignment && merged.alignment !== 'justify')
50
+ tcell.align = merged.alignment;
51
+ if (merged.fontSize !== undefined)
52
+ tcell.fontSize = merged.fontSize;
53
+ return tcell;
54
+ }
55
+ return { text: '' };
56
+ });
57
+ return isHeader ? { isHeader: true, cells } : { cells };
58
+ });
59
+ return { type: 'table', columns, rows };
60
+ }
61
+ export function pdfmakeAlignToPretext(a) {
62
+ if (a === 'left' || a === 'center' || a === 'right' || a === 'justify')
63
+ return a;
64
+ return undefined;
65
+ }
66
+ export function normalizeStyleNames(s) {
67
+ if (!s)
68
+ return [];
69
+ return Array.isArray(s) ? s : [s];
70
+ }
71
+ export function mergeStyles(ctx, styleNames, node, parent) {
72
+ const merged = { ...ctx.defaultStyle, ...(parent ?? {}) };
73
+ for (const name of styleNames) {
74
+ const s = ctx.styles[name];
75
+ if (s)
76
+ copySafeStyleProperties(merged, s);
77
+ }
78
+ if (node.bold !== undefined)
79
+ merged.bold = node.bold;
80
+ if (node.italics !== undefined)
81
+ merged.italics = node.italics;
82
+ if (node.color !== undefined)
83
+ merged.color = node.color;
84
+ if (node.fontSize !== undefined)
85
+ merged.fontSize = node.fontSize;
86
+ if (node.alignment !== undefined)
87
+ merged.alignment = node.alignment;
88
+ if (node.font !== undefined)
89
+ merged.font = node.font;
90
+ return merged;
91
+ }
92
+ /** Copy only known-safe style properties, preventing prototype pollution. */
93
+ function copySafeStyleProperties(target, source) {
94
+ if (typeof source !== 'object' || source === null)
95
+ return;
96
+ const src = source;
97
+ const safeKeys = ['fontSize', 'bold', 'italics', 'color', 'alignment', 'font'];
98
+ for (const key of safeKeys) {
99
+ if (Object.hasOwn(src, key) && src[key] !== undefined) {
100
+ target[key] = src[key];
101
+ }
102
+ }
103
+ }
104
+ export function normalizePageSize(name) {
105
+ const n = name.trim();
106
+ const map = {
107
+ A3: 'A3', A4: 'A4', A5: 'A5',
108
+ LETTER: 'Letter', Letter: 'Letter', letter: 'Letter',
109
+ LEGAL: 'Legal', Legal: 'Legal', legal: 'Legal',
110
+ TABLOID: 'Tabloid', Tabloid: 'Tabloid', tabloid: 'Tabloid',
111
+ };
112
+ return map[n] ?? null;
113
+ }
114
+ export function normalizeMargins(m) {
115
+ if (typeof m === 'number')
116
+ return { top: m, bottom: m, left: m, right: m };
117
+ if (Array.isArray(m)) {
118
+ if (m.length === 2)
119
+ return { left: m[0], top: m[1], right: m[0], bottom: m[1] };
120
+ if (m.length === 4)
121
+ return { left: m[0], top: m[1], right: m[2], bottom: m[3] };
122
+ }
123
+ return null;
124
+ }
125
+ export function normalizeHeaderFooter(hf, onUnsupported, label) {
126
+ if (hf === undefined)
127
+ return null;
128
+ if (typeof hf === 'function') {
129
+ onUnsupported(`${label} (function form not supported — pass a string instead)`);
130
+ return null;
131
+ }
132
+ if (typeof hf === 'string')
133
+ return { text: hf };
134
+ if (typeof hf === 'object' && typeof hf.text === 'string') {
135
+ const out = { text: hf.text };
136
+ if (hf.alignment === 'left' || hf.alignment === 'center' || hf.alignment === 'right')
137
+ out.align = hf.alignment;
138
+ if (typeof hf.fontSize === 'number')
139
+ out.fontSize = hf.fontSize;
140
+ if (hf.color)
141
+ out.color = hf.color;
142
+ return out;
143
+ }
144
+ return null;
145
+ }
146
+ //# sourceMappingURL=normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/compat/normalize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /** pdfmake input type definitions and compat configuration. */
2
+ /** A pdfmake-style document descriptor, stripped to the fields this shim handles. */
3
+ export interface PdfmakeDocument {
4
+ content: PdfmakeNode | PdfmakeNode[];
5
+ styles?: Record<string, PdfmakeStyle>;
6
+ defaultStyle?: PdfmakeStyle;
7
+ pageSize?: string | {
8
+ width: number;
9
+ height: number;
10
+ };
11
+ pageOrientation?: 'portrait' | 'landscape';
12
+ pageMargins?: number | [number, number] | [number, number, number, number];
13
+ header?: string | {
14
+ text: string;
15
+ alignment?: PdfmakeStyle['alignment'];
16
+ fontSize?: number;
17
+ color?: string;
18
+ };
19
+ footer?: string | {
20
+ text: string;
21
+ alignment?: PdfmakeStyle['alignment'];
22
+ fontSize?: number;
23
+ color?: string;
24
+ };
25
+ info?: {
26
+ title?: string;
27
+ author?: string;
28
+ subject?: string;
29
+ keywords?: string;
30
+ };
31
+ readonly allowedFileDirs?: readonly string[];
32
+ }
33
+ export type PdfmakeNode = string | PdfmakeObjectNode;
34
+ export interface PdfmakeObjectNode {
35
+ text?: string | PdfmakeNode[];
36
+ style?: string | string[];
37
+ fontSize?: number;
38
+ bold?: boolean;
39
+ italics?: boolean;
40
+ color?: string;
41
+ alignment?: 'left' | 'center' | 'right' | 'justify';
42
+ font?: string;
43
+ ul?: PdfmakeNode[];
44
+ ol?: PdfmakeNode[];
45
+ table?: {
46
+ body: PdfmakeNode[][];
47
+ widths?: (number | string)[];
48
+ headerRows?: number;
49
+ };
50
+ image?: string;
51
+ width?: number;
52
+ height?: number;
53
+ fit?: number | [number, number];
54
+ qr?: string;
55
+ pageBreak?: 'before' | 'after';
56
+ stack?: PdfmakeNode[];
57
+ columns?: PdfmakeNode[];
58
+ canvas?: unknown;
59
+ link?: string;
60
+ }
61
+ export interface PdfmakeStyle {
62
+ fontSize?: number;
63
+ bold?: boolean;
64
+ italics?: boolean;
65
+ color?: string;
66
+ alignment?: 'left' | 'center' | 'right' | 'justify';
67
+ font?: string;
68
+ }
69
+ export interface CompatOptions {
70
+ /**
71
+ * Map of pdfmake style names to pretext-pdf heading levels (1–4).
72
+ * Default: { header: 1, h1: 1, title: 1, subheader: 2, h2: 2, h3: 3, h4: 4 }
73
+ * Pass `{}` to disable heading detection entirely (everything becomes paragraphs).
74
+ */
75
+ headingMap?: Record<string, 1 | 2 | 3 | 4>;
76
+ /**
77
+ * Called when a pdfmake feature is encountered that the shim doesn't translate
78
+ * (canvas, function-style headers, etc.).
79
+ * Default: logs a one-time `console.warn` per feature per `fromPdfmake()` call.
80
+ * Pass `() => {}` to suppress all warnings.
81
+ */
82
+ onUnsupported?: (feature: string) => void;
83
+ }
84
+ export interface TranslateCtx {
85
+ styles: Record<string, PdfmakeStyle>;
86
+ defaultStyle: PdfmakeStyle;
87
+ headingMap: Record<string, 1 | 2 | 3 | 4>;
88
+ onUnsupported: (feature: string) => void;
89
+ }
90
+ export declare const DEFAULT_HEADING_MAP: Record<string, 1 | 2 | 3 | 4>;
91
+ //# sourceMappingURL=pdfmake-types.d.ts.map