pretext-pdf 1.1.1 → 1.7.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 (342) hide show
  1. package/CHANGELOG.md +689 -0
  2. package/README.md +82 -7
  3. package/dist/allowed-props.d.ts +76 -0
  4. package/dist/allowed-props.d.ts.map +1 -1
  5. package/dist/allowed-props.js.map +1 -1
  6. package/dist/assets/generators/barcode.d.ts +9 -0
  7. package/dist/assets/generators/barcode.d.ts.map +1 -0
  8. package/dist/assets/generators/barcode.js +24 -0
  9. package/dist/assets/generators/barcode.js.map +1 -0
  10. package/dist/assets/generators/chart.d.ts +13 -0
  11. package/dist/assets/generators/chart.d.ts.map +1 -0
  12. package/dist/assets/generators/chart.js +32 -0
  13. package/dist/assets/generators/chart.js.map +1 -0
  14. package/dist/assets/generators/qr.d.ts +9 -0
  15. package/dist/assets/generators/qr.d.ts.map +1 -0
  16. package/dist/assets/generators/qr.js +25 -0
  17. package/dist/assets/generators/qr.js.map +1 -0
  18. package/dist/assets/index.d.ts +19 -0
  19. package/dist/assets/index.d.ts.map +1 -0
  20. package/dist/assets/index.js +19 -0
  21. package/dist/assets/index.js.map +1 -0
  22. package/dist/assets/loaders/images.d.ts +20 -0
  23. package/dist/assets/loaders/images.d.ts.map +1 -0
  24. package/dist/assets/loaders/images.js +69 -0
  25. package/dist/assets/loaders/images.js.map +1 -0
  26. package/dist/assets/loaders/orchestrator.d.ts +24 -0
  27. package/dist/assets/loaders/orchestrator.d.ts.map +1 -0
  28. package/dist/assets/loaders/orchestrator.js +109 -0
  29. package/dist/assets/loaders/orchestrator.js.map +1 -0
  30. package/dist/assets/loaders/vectors.d.ts +25 -0
  31. package/dist/assets/loaders/vectors.d.ts.map +1 -0
  32. package/dist/assets/loaders/vectors.js +118 -0
  33. package/dist/assets/loaders/vectors.js.map +1 -0
  34. package/dist/assets/loaders/watermark.d.ts +12 -0
  35. package/dist/assets/loaders/watermark.d.ts.map +1 -0
  36. package/dist/assets/loaders/watermark.js +40 -0
  37. package/dist/assets/loaders/watermark.js.map +1 -0
  38. package/dist/assets/security/fetch.d.ts +14 -0
  39. package/dist/assets/security/fetch.d.ts.map +1 -0
  40. package/dist/assets/security/fetch.js +112 -0
  41. package/dist/assets/security/fetch.js.map +1 -0
  42. package/dist/assets/security/ipv4-normalize.d.ts +28 -0
  43. package/dist/assets/security/ipv4-normalize.d.ts.map +1 -0
  44. package/dist/assets/security/ipv4-normalize.js +116 -0
  45. package/dist/assets/security/ipv4-normalize.js.map +1 -0
  46. package/dist/assets/security/path-allowlist.d.ts +12 -0
  47. package/dist/assets/security/path-allowlist.d.ts.map +1 -0
  48. package/dist/assets/security/path-allowlist.js +26 -0
  49. package/dist/assets/security/path-allowlist.js.map +1 -0
  50. package/dist/assets/security/url-validation.d.ts +22 -0
  51. package/dist/assets/security/url-validation.d.ts.map +1 -0
  52. package/dist/assets/security/url-validation.js +164 -0
  53. package/dist/assets/security/url-validation.js.map +1 -0
  54. package/dist/assets/svg/dimensions.d.ts +19 -0
  55. package/dist/assets/svg/dimensions.d.ts.map +1 -0
  56. package/dist/assets/svg/dimensions.js +43 -0
  57. package/dist/assets/svg/dimensions.js.map +1 -0
  58. package/dist/assets/svg/rasterize.d.ts +6 -0
  59. package/dist/assets/svg/rasterize.d.ts.map +1 -0
  60. package/dist/assets/svg/rasterize.js +38 -0
  61. package/dist/assets/svg/rasterize.js.map +1 -0
  62. package/dist/assets/svg/resolve-content.d.ts +16 -0
  63. package/dist/assets/svg/resolve-content.d.ts.map +1 -0
  64. package/dist/assets/svg/resolve-content.js +38 -0
  65. package/dist/assets/svg/resolve-content.js.map +1 -0
  66. package/dist/assets/svg/sanitize.d.ts +22 -0
  67. package/dist/assets/svg/sanitize.d.ts.map +1 -0
  68. package/dist/assets/svg/sanitize.js +46 -0
  69. package/dist/assets/svg/sanitize.js.map +1 -0
  70. package/dist/assets/util/redact-path.d.ts +14 -0
  71. package/dist/assets/util/redact-path.d.ts.map +1 -0
  72. package/dist/assets/util/redact-path.js +16 -0
  73. package/dist/assets/util/redact-path.js.map +1 -0
  74. package/dist/assets.d.ts +10 -27
  75. package/dist/assets.d.ts.map +1 -1
  76. package/dist/assets.js +10 -549
  77. package/dist/assets.js.map +1 -1
  78. package/dist/builder.d.ts.map +1 -1
  79. package/dist/builder.js +2 -1
  80. package/dist/builder.js.map +1 -1
  81. package/dist/cli.js +11 -1
  82. package/dist/cli.js.map +1 -1
  83. package/dist/compat.d.ts +63 -1
  84. package/dist/compat.d.ts.map +1 -1
  85. package/dist/compat.js +42 -5
  86. package/dist/compat.js.map +1 -1
  87. package/dist/errors.d.ts +2 -2
  88. package/dist/errors.d.ts.map +1 -1
  89. package/dist/errors.js +2 -2
  90. package/dist/errors.js.map +1 -1
  91. package/dist/fonts.d.ts.map +1 -1
  92. package/dist/fonts.js +8 -10
  93. package/dist/fonts.js.map +1 -1
  94. package/dist/index.d.ts +1 -1
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +7 -5
  97. package/dist/index.js.map +1 -1
  98. package/dist/layout-state.d.ts +1 -1
  99. package/dist/layout-state.d.ts.map +1 -1
  100. package/dist/layout-state.js +5 -0
  101. package/dist/layout-state.js.map +1 -1
  102. package/dist/measure-blocks/float-group.d.ts +9 -0
  103. package/dist/measure-blocks/float-group.d.ts.map +1 -0
  104. package/dist/measure-blocks/float-group.js +103 -0
  105. package/dist/measure-blocks/float-group.js.map +1 -0
  106. package/dist/measure-blocks/helpers.d.ts +44 -0
  107. package/dist/measure-blocks/helpers.d.ts.map +1 -0
  108. package/dist/measure-blocks/helpers.js +43 -0
  109. package/dist/measure-blocks/helpers.js.map +1 -0
  110. package/dist/measure-blocks/highlight.d.ts +26 -0
  111. package/dist/measure-blocks/highlight.d.ts.map +1 -0
  112. package/dist/measure-blocks/highlight.js +169 -0
  113. package/dist/measure-blocks/highlight.js.map +1 -0
  114. package/dist/measure-blocks/image.d.ts +9 -0
  115. package/dist/measure-blocks/image.d.ts.map +1 -0
  116. package/dist/measure-blocks/image.js +136 -0
  117. package/dist/measure-blocks/image.js.map +1 -0
  118. package/dist/measure-blocks/index.d.ts +24 -0
  119. package/dist/measure-blocks/index.d.ts.map +1 -0
  120. package/dist/measure-blocks/index.js +179 -0
  121. package/dist/measure-blocks/index.js.map +1 -0
  122. package/dist/measure-blocks/list.d.ts +8 -0
  123. package/dist/measure-blocks/list.d.ts.map +1 -0
  124. package/dist/measure-blocks/list.js +108 -0
  125. package/dist/measure-blocks/list.js.map +1 -0
  126. package/dist/measure-blocks/simple-blocks.d.ts +18 -0
  127. package/dist/measure-blocks/simple-blocks.d.ts.map +1 -0
  128. package/dist/measure-blocks/simple-blocks.js +121 -0
  129. package/dist/measure-blocks/simple-blocks.js.map +1 -0
  130. package/dist/measure-blocks/table/columns.d.ts +17 -0
  131. package/dist/measure-blocks/table/columns.d.ts.map +1 -0
  132. package/dist/measure-blocks/table/columns.js +83 -0
  133. package/dist/measure-blocks/table/columns.js.map +1 -0
  134. package/dist/measure-blocks/table/measure.d.ts +8 -0
  135. package/dist/measure-blocks/table/measure.d.ts.map +1 -0
  136. package/dist/measure-blocks/table/measure.js +231 -0
  137. package/dist/measure-blocks/table/measure.js.map +1 -0
  138. package/dist/measure-blocks/table/spans.d.ts +25 -0
  139. package/dist/measure-blocks/table/spans.d.ts.map +1 -0
  140. package/dist/measure-blocks/table/spans.js +55 -0
  141. package/dist/measure-blocks/table/spans.js.map +1 -0
  142. package/dist/measure-blocks/text-blocks.d.ts +17 -0
  143. package/dist/measure-blocks/text-blocks.d.ts.map +1 -0
  144. package/dist/measure-blocks/text-blocks.js +242 -0
  145. package/dist/measure-blocks/text-blocks.js.map +1 -0
  146. package/dist/measure-text.d.ts +21 -3
  147. package/dist/measure-text.d.ts.map +1 -1
  148. package/dist/measure-text.js +87 -36
  149. package/dist/measure-text.js.map +1 -1
  150. package/dist/measure.d.ts +1 -1
  151. package/dist/measure.d.ts.map +1 -1
  152. package/dist/measure.js +8 -6
  153. package/dist/measure.js.map +1 -1
  154. package/dist/node-polyfill.d.ts.map +1 -1
  155. package/dist/node-polyfill.js +9 -0
  156. package/dist/node-polyfill.js.map +1 -1
  157. package/dist/pipeline-footnotes.d.ts +1 -1
  158. package/dist/pipeline-footnotes.d.ts.map +1 -1
  159. package/dist/pipeline-toc.d.ts +1 -1
  160. package/dist/pipeline-toc.d.ts.map +1 -1
  161. package/dist/pipeline.d.ts +3 -3
  162. package/dist/pipeline.d.ts.map +1 -1
  163. package/dist/pipeline.js +4 -5
  164. package/dist/pipeline.js.map +1 -1
  165. package/dist/plugin-types.d.ts +1 -1
  166. package/dist/plugin-types.d.ts.map +1 -1
  167. package/dist/post-process.d.ts +2 -2
  168. package/dist/post-process.d.ts.map +1 -1
  169. package/dist/post-process.js +47 -10
  170. package/dist/post-process.js.map +1 -1
  171. package/dist/render-blocks/blockquote.d.ts +7 -0
  172. package/dist/render-blocks/blockquote.d.ts.map +1 -0
  173. package/dist/render-blocks/blockquote.js +87 -0
  174. package/dist/render-blocks/blockquote.js.map +1 -0
  175. package/dist/render-blocks/callout.d.ts +7 -0
  176. package/dist/render-blocks/callout.d.ts.map +1 -0
  177. package/dist/render-blocks/callout.js +84 -0
  178. package/dist/render-blocks/callout.js.map +1 -0
  179. package/dist/render-blocks/code.d.ts +7 -0
  180. package/dist/render-blocks/code.d.ts.map +1 -0
  181. package/dist/render-blocks/code.js +84 -0
  182. package/dist/render-blocks/code.js.map +1 -0
  183. package/dist/render-blocks/footnote.d.ts +11 -0
  184. package/dist/render-blocks/footnote.d.ts.map +1 -0
  185. package/dist/render-blocks/footnote.js +45 -0
  186. package/dist/render-blocks/footnote.js.map +1 -0
  187. package/dist/render-blocks/header-footer.d.ts +11 -0
  188. package/dist/render-blocks/header-footer.d.ts.map +1 -0
  189. package/dist/render-blocks/header-footer.js +56 -0
  190. package/dist/render-blocks/header-footer.js.map +1 -0
  191. package/dist/render-blocks/hr.d.ts +7 -0
  192. package/dist/render-blocks/hr.d.ts.map +1 -0
  193. package/dist/render-blocks/hr.js +24 -0
  194. package/dist/render-blocks/hr.js.map +1 -0
  195. package/dist/render-blocks/image.d.ts +9 -0
  196. package/dist/render-blocks/image.d.ts.map +1 -0
  197. package/dist/render-blocks/image.js +135 -0
  198. package/dist/render-blocks/image.js.map +1 -0
  199. package/dist/render-blocks/index.d.ts +17 -0
  200. package/dist/render-blocks/index.d.ts.map +1 -0
  201. package/dist/render-blocks/index.js +17 -0
  202. package/dist/render-blocks/index.js.map +1 -0
  203. package/dist/render-blocks/list-item.d.ts +7 -0
  204. package/dist/render-blocks/list-item.d.ts.map +1 -0
  205. package/dist/render-blocks/list-item.js +80 -0
  206. package/dist/render-blocks/list-item.js.map +1 -0
  207. package/dist/render-blocks/rich.d.ts +7 -0
  208. package/dist/render-blocks/rich.d.ts.map +1 -0
  209. package/dist/render-blocks/rich.js +160 -0
  210. package/dist/render-blocks/rich.js.map +1 -0
  211. package/dist/render-blocks/table.d.ts +7 -0
  212. package/dist/render-blocks/table.d.ts.map +1 -0
  213. package/dist/render-blocks/table.js +139 -0
  214. package/dist/render-blocks/table.js.map +1 -0
  215. package/dist/render-blocks/text.d.ts +7 -0
  216. package/dist/render-blocks/text.d.ts.map +1 -0
  217. package/dist/render-blocks/text.js +183 -0
  218. package/dist/render-blocks/text.js.map +1 -0
  219. package/dist/render-blocks/watermark.d.ts +8 -0
  220. package/dist/render-blocks/watermark.d.ts.map +1 -0
  221. package/dist/render-blocks/watermark.js +52 -0
  222. package/dist/render-blocks/watermark.js.map +1 -0
  223. package/dist/render-extras.d.ts.map +1 -1
  224. package/dist/render-extras.js +1 -2
  225. package/dist/render-extras.js.map +1 -1
  226. package/dist/render-utils.d.ts.map +1 -1
  227. package/dist/render-utils.js +10 -6
  228. package/dist/render-utils.js.map +1 -1
  229. package/dist/render.d.ts.map +1 -1
  230. package/dist/render.js +9 -3
  231. package/dist/render.js.map +1 -1
  232. package/dist/rich-text.d.ts +2 -1
  233. package/dist/rich-text.d.ts.map +1 -1
  234. package/dist/rich-text.js +0 -1
  235. package/dist/rich-text.js.map +1 -1
  236. package/dist/types-internal.d.ts +19 -3
  237. package/dist/types-internal.d.ts.map +1 -1
  238. package/dist/types-public/document.d.ts +261 -0
  239. package/dist/types-public/document.d.ts.map +1 -0
  240. package/dist/types-public/document.js +2 -0
  241. package/dist/types-public/document.js.map +1 -0
  242. package/dist/types-public/elements-block.d.ts +246 -0
  243. package/dist/types-public/elements-block.d.ts.map +1 -0
  244. package/dist/types-public/elements-block.js +8 -0
  245. package/dist/types-public/elements-block.js.map +1 -0
  246. package/dist/types-public/elements-media.d.ts +199 -0
  247. package/dist/types-public/elements-media.d.ts.map +1 -0
  248. package/dist/types-public/elements-media.js +2 -0
  249. package/dist/types-public/elements-media.js.map +1 -0
  250. package/dist/types-public/elements-text.d.ts +327 -0
  251. package/dist/types-public/elements-text.d.ts.map +1 -0
  252. package/dist/types-public/elements-text.js +2 -0
  253. package/dist/types-public/elements-text.js.map +1 -0
  254. package/dist/types-public/index.d.ts +14 -0
  255. package/dist/types-public/index.d.ts.map +1 -0
  256. package/dist/types-public/index.js +2 -0
  257. package/dist/types-public/index.js.map +1 -0
  258. package/dist/types-public/render-options.d.ts +38 -0
  259. package/dist/types-public/render-options.d.ts.map +1 -0
  260. package/dist/types-public/render-options.js +2 -0
  261. package/dist/types-public/render-options.js.map +1 -0
  262. package/dist/types-public/union.d.ts +13 -0
  263. package/dist/types-public/union.d.ts.map +1 -0
  264. package/dist/types-public/union.js +2 -0
  265. package/dist/types-public/union.js.map +1 -0
  266. package/dist/types-public/validation.d.ts +64 -0
  267. package/dist/types-public/validation.d.ts.map +1 -0
  268. package/dist/types-public/validation.js +2 -0
  269. package/dist/types-public/validation.js.map +1 -0
  270. package/dist/types-public.d.ts +5 -1081
  271. package/dist/types-public.d.ts.map +1 -1
  272. package/dist/types.d.ts +1 -1
  273. package/dist/types.d.ts.map +1 -1
  274. package/dist/validate/document.d.ts +28 -0
  275. package/dist/validate/document.d.ts.map +1 -0
  276. package/dist/validate/document.js +295 -0
  277. package/dist/validate/document.js.map +1 -0
  278. package/dist/validate/elements/forms-floats.d.ts +19 -0
  279. package/dist/validate/elements/forms-floats.d.ts.map +1 -0
  280. package/dist/validate/elements/forms-floats.js +96 -0
  281. package/dist/validate/elements/forms-floats.js.map +1 -0
  282. package/dist/validate/elements/list.d.ts +10 -0
  283. package/dist/validate/elements/list.d.ts.map +1 -0
  284. package/dist/validate/elements/list.js +66 -0
  285. package/dist/validate/elements/list.js.map +1 -0
  286. package/dist/validate/elements/media.d.ts +23 -0
  287. package/dist/validate/elements/media.d.ts.map +1 -0
  288. package/dist/validate/elements/media.js +179 -0
  289. package/dist/validate/elements/media.js.map +1 -0
  290. package/dist/validate/elements/structural-simple.d.ts +21 -0
  291. package/dist/validate/elements/structural-simple.d.ts.map +1 -0
  292. package/dist/validate/elements/structural-simple.js +63 -0
  293. package/dist/validate/elements/structural-simple.js.map +1 -0
  294. package/dist/validate/elements/structural.d.ts +12 -0
  295. package/dist/validate/elements/structural.d.ts.map +1 -0
  296. package/dist/validate/elements/structural.js +12 -0
  297. package/dist/validate/elements/structural.js.map +1 -0
  298. package/dist/validate/elements/table.d.ts +10 -0
  299. package/dist/validate/elements/table.d.ts.map +1 -0
  300. package/dist/validate/elements/table.js +165 -0
  301. package/dist/validate/elements/table.js.map +1 -0
  302. package/dist/validate/elements/text.d.ts +26 -0
  303. package/dist/validate/elements/text.d.ts.map +1 -0
  304. package/dist/validate/elements/text.js +331 -0
  305. package/dist/validate/elements/text.js.map +1 -0
  306. package/dist/validate/errors.d.ts +9 -0
  307. package/dist/validate/errors.d.ts.map +1 -0
  308. package/dist/validate/errors.js +43 -0
  309. package/dist/validate/errors.js.map +1 -0
  310. package/dist/validate/fonts.d.ts +11 -0
  311. package/dist/validate/fonts.d.ts.map +1 -0
  312. package/dist/validate/fonts.js +118 -0
  313. package/dist/validate/fonts.js.map +1 -0
  314. package/dist/validate/helpers.d.ts +76 -0
  315. package/dist/validate/helpers.d.ts.map +1 -0
  316. package/dist/validate/helpers.js +169 -0
  317. package/dist/validate/helpers.js.map +1 -0
  318. package/dist/validate/index.d.ts +37 -0
  319. package/dist/validate/index.d.ts.map +1 -0
  320. package/dist/validate/index.js +279 -0
  321. package/dist/validate/index.js.map +1 -0
  322. package/dist/validate.d.ts +6 -18
  323. package/dist/validate.d.ts.map +1 -1
  324. package/dist/validate.js +6 -1585
  325. package/dist/validate.js.map +1 -1
  326. package/dist/vendor/pretext/VERSION.d.ts +3 -0
  327. package/dist/vendor/pretext/VERSION.d.ts.map +1 -0
  328. package/dist/vendor/pretext/VERSION.js +12 -0
  329. package/dist/vendor/pretext/VERSION.js.map +1 -0
  330. package/dist/version-check.d.ts +47 -0
  331. package/dist/version-check.d.ts.map +1 -0
  332. package/dist/version-check.js +75 -0
  333. package/dist/version-check.js.map +1 -0
  334. package/package.json +30 -7
  335. package/dist/measure-blocks.d.ts +0 -26
  336. package/dist/measure-blocks.d.ts.map +0 -1
  337. package/dist/measure-blocks.js +0 -1317
  338. package/dist/measure-blocks.js.map +0 -1
  339. package/dist/render-blocks.d.ts +0 -28
  340. package/dist/render-blocks.d.ts.map +0 -1
  341. package/dist/render-blocks.js +0 -1059
  342. package/dist/render-blocks.js.map +0 -1
@@ -0,0 +1,66 @@
1
+ import { PretextPdfError } from '../../errors.js';
2
+ import { ALLOWED_PROPS_SUB } from '../../allowed-props.js';
3
+ import { HEX_COLOR_REGEX, assertUnknownProps, withCycleGuard, } from '../helpers.js';
4
+ export function validateList(el, prefix, depth, ctx) {
5
+ if (el.style !== 'ordered' && el.style !== 'unordered') {
6
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): 'style' must be 'ordered' or 'unordered'`);
7
+ }
8
+ if (!Array.isArray(el.items) || el.items.length === 0) {
9
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): 'items' must be a non-empty array`);
10
+ }
11
+ // Wrap list items walk with cycle guard
12
+ withCycleGuard(ctx.seen, el, depth + 1, prefix, () => {
13
+ for (let ii = 0; ii < el.items.length; ii++) {
14
+ const item = el.items[ii];
15
+ // Strict: validate list item properties
16
+ if (ctx.strict) {
17
+ assertUnknownProps(item, ALLOWED_PROPS_SUB['list-item'], `${prefix}.items[${ii}]`, ctx.errors);
18
+ }
19
+ if (typeof item.text !== 'string' || item.text.trim() === '') {
20
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): items[${ii}].text must be a non-empty string`);
21
+ }
22
+ // NEW: Validate dir field
23
+ if (item.dir !== undefined && !['ltr', 'rtl', 'auto'].includes(item.dir)) {
24
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): items[${ii}].dir must be 'ltr', 'rtl', or 'auto'`);
25
+ }
26
+ if (item.fontWeight !== undefined && ![400, 700].includes(item.fontWeight)) {
27
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): items[${ii}].fontWeight must be 400 or 700`);
28
+ }
29
+ // Validate nested items (1 level deep)
30
+ if (item.items) {
31
+ if (!Array.isArray(item.items) || item.items.length === 0) {
32
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): items[${ii}].items must be a non-empty array if provided`);
33
+ }
34
+ for (let ni = 0; ni < item.items.length; ni++) {
35
+ const nested = item.items[ni];
36
+ // Strict: validate nested list item properties
37
+ if (ctx.strict) {
38
+ assertUnknownProps(nested, ALLOWED_PROPS_SUB['list-item'], `${prefix}.items[${ii}].items[${ni}]`, ctx.errors);
39
+ }
40
+ if (typeof nested.text !== 'string' || nested.text.trim() === '') {
41
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): items[${ii}].items[${ni}].text must be a non-empty string`);
42
+ }
43
+ if (nested.items !== undefined) {
44
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): items[${ii}].items[${ni}].items is not allowed — maximum nesting depth is 2 levels`);
45
+ }
46
+ }
47
+ }
48
+ }
49
+ });
50
+ if (el.color !== undefined && !HEX_COLOR_REGEX.test(el.color)) {
51
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): 'color' must be a 6-digit hex string like '#ff0000'. Got: '${el.color}'`);
52
+ }
53
+ if (el.nestedNumberingStyle !== undefined && !['continue', 'restart'].includes(el.nestedNumberingStyle)) {
54
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): 'nestedNumberingStyle' must be 'continue' or 'restart'. Got: '${el.nestedNumberingStyle}'`);
55
+ }
56
+ if (el.indent !== undefined && (typeof el.indent !== 'number' || el.indent < 0)) {
57
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): 'indent' must be a non-negative number`);
58
+ }
59
+ if (el.markerWidth !== undefined && (typeof el.markerWidth !== 'number' || el.markerWidth <= 0)) {
60
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): 'markerWidth' must be a positive number`);
61
+ }
62
+ if (el.marker !== undefined && (typeof el.marker !== 'string' || el.marker.trim() === '')) {
63
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): 'marker' must be a non-empty string`);
64
+ }
65
+ }
66
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/validate/elements/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * validate/elements/media.ts — Media element validators.
3
+ * Covers: image, svg, qr-code, barcode, chart.
4
+ * Extracted from src/validate.ts (#11a).
5
+ */
6
+ import type { ContentElement } from '../../types.js';
7
+ import { type ValidationContext } from '../helpers.js';
8
+ export declare function validateImage(el: Extract<ContentElement, {
9
+ type: 'image';
10
+ }>, prefix: string, _ctx: ValidationContext): void;
11
+ export declare function validateSvg(el: Extract<ContentElement, {
12
+ type: 'svg';
13
+ }>, prefix: string, _ctx: ValidationContext): void;
14
+ export declare function validateQrCode(el: Extract<ContentElement, {
15
+ type: 'qr-code';
16
+ }>, prefix: string, _ctx: ValidationContext): void;
17
+ export declare function validateBarcode(el: Extract<ContentElement, {
18
+ type: 'barcode';
19
+ }>, prefix: string, _ctx: ValidationContext): void;
20
+ export declare function validateChart(el: Extract<ContentElement, {
21
+ type: 'chart';
22
+ }>, prefix: string, _ctx: ValidationContext): void;
23
+ //# sourceMappingURL=media.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/validate/elements/media.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAA8C,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAOlG,wBAAgB,aAAa,CAC3B,EAAE,EAAE,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,EAC9C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,GACtB,IAAI,CA0DN;AAED,wBAAgB,WAAW,CACzB,EAAE,EAAE,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,EAC5C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,GACtB,IAAI,CAkCN;AAED,wBAAgB,cAAc,CAC5B,EAAE,EAAE,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,EAChD,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,GACtB,IAAI,CA+BN;AAED,wBAAgB,eAAe,CAC7B,EAAE,EAAE,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,EAChD,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,GACtB,IAAI,CAsBN;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,EAC9C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,GACtB,IAAI,CAsBN"}
@@ -0,0 +1,179 @@
1
+ import { PretextPdfError } from '../../errors.js';
2
+ import { HEX_COLOR_REGEX, looksLikeUrl, validateUrl } from '../helpers.js';
3
+ // v1.4.1 (M5): pre-flight URL scheme check. Matches the assets.ts runtime
4
+ // SSRF guard's posture so validate-only callers (CLI lint, MCP validate
5
+ // tool) catch unsafe schemes before render time. Helper moved to helpers.ts
6
+ // in v1.5.1 (H1) so the watermark validator can share it.
7
+ export function validateImage(el, prefix, _ctx) {
8
+ if (!el.src || (typeof el.src !== 'string' && !(el.src instanceof Uint8Array))) {
9
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (image): 'src' must be a non-empty string path or Uint8Array`);
10
+ }
11
+ if (typeof el.src === 'string' && (el.src.startsWith('\\\\') || el.src.startsWith('//'))) {
12
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (image): 'src' must not be a UNC/network path`);
13
+ }
14
+ if (typeof el.src === 'string' && looksLikeUrl(el.src)) {
15
+ // validateUrl throws VALIDATION_ERROR for any scheme outside the
16
+ // SAFE_URL_SCHEME allow-list (http, https, mailto, ftp, anchor).
17
+ // data:/javascript:/blob:/file: all fail here, matching the assets.ts
18
+ // BLOCKED_SCHEMES guard.
19
+ validateUrl(el.src, `${prefix} (image): 'src'`);
20
+ }
21
+ const fmt = el.format ?? 'auto';
22
+ if (fmt !== 'png' && fmt !== 'jpg' && fmt !== 'auto') {
23
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (image): 'format' must be 'png', 'jpg', or 'auto'. Got: '${String(el.format)}'`);
24
+ }
25
+ if (el.width !== undefined && (typeof el.width !== 'number' || el.width <= 0 || !isFinite(el.width))) {
26
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (image): 'width' must be a positive finite number`);
27
+ }
28
+ if (el.height !== undefined && (typeof el.height !== 'number' || el.height <= 0 || !isFinite(el.height))) {
29
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (image): 'height' must be a positive finite number`);
30
+ }
31
+ if (el.align !== undefined && !['left', 'center', 'right'].includes(el.align)) {
32
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (image): 'align' must be 'left', 'center', or 'right'`);
33
+ }
34
+ if (el.spaceAfter !== undefined && (typeof el.spaceAfter !== 'number' || el.spaceAfter < 0 || !isFinite(el.spaceAfter))) {
35
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (image): 'spaceAfter' must be a non-negative finite number`);
36
+ }
37
+ if (el.spaceBefore !== undefined && (typeof el.spaceBefore !== 'number' || el.spaceBefore < 0 || !isFinite(el.spaceBefore))) {
38
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (image): 'spaceBefore' must be a non-negative finite number`);
39
+ }
40
+ // Float validation
41
+ if (el.float !== undefined && el.float !== 'left' && el.float !== 'right') {
42
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (image): 'float' must be 'left' or 'right'`);
43
+ }
44
+ if (el.float !== undefined && !el.floatText && !el.floatSpans) {
45
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (image): 'floatText' or 'floatSpans' is required when 'float' is set`);
46
+ }
47
+ if (el.floatText !== undefined && el.floatSpans !== undefined) {
48
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (image): 'floatText' and 'floatSpans' are mutually exclusive — use one or the other`);
49
+ }
50
+ if (el.floatText !== undefined && el.float === undefined) {
51
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (image): 'floatText' has no effect without 'float'`);
52
+ }
53
+ if (el.floatSpans !== undefined && el.float === undefined) {
54
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (image): 'floatSpans' has no effect without 'float'`);
55
+ }
56
+ if (el.floatWidth !== undefined && (typeof el.floatWidth !== 'number' || el.floatWidth <= 0 || !isFinite(el.floatWidth))) {
57
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (image): 'floatWidth' must be a positive finite number`);
58
+ }
59
+ if (el.floatGap !== undefined && (typeof el.floatGap !== 'number' || el.floatGap < 0 || !isFinite(el.floatGap))) {
60
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (image): 'floatGap' must be a non-negative number`);
61
+ }
62
+ if (el.floatFontSize !== undefined && (typeof el.floatFontSize !== 'number' || el.floatFontSize <= 0)) {
63
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (image): 'floatFontSize' must be a positive number`);
64
+ }
65
+ }
66
+ export function validateSvg(el, prefix, _ctx) {
67
+ if (typeof el.svg === 'string' && el.svg.trim().length === 0) {
68
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (svg): 'svg' must not be an empty string`);
69
+ }
70
+ const hasSvg = typeof el.svg === 'string' && el.svg.trim().length > 0;
71
+ const hasSrc = typeof el.src === 'string' && el.src.trim().length > 0;
72
+ if (hasSvg && !el.svg.trim().startsWith('<')) {
73
+ throw new PretextPdfError('SVG_INVALID_MARKUP', `${prefix} (svg): 'svg' must be valid SVG markup (must start with '<')`);
74
+ }
75
+ if (hasSrc) {
76
+ const src = el.src;
77
+ const isUNC = src.startsWith('\\\\') || src.startsWith('//');
78
+ if (isUNC) {
79
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (svg): 'src' must not be a UNC/network path`);
80
+ }
81
+ if (!src.startsWith('/') && !src.startsWith('https://') && !/^[A-Za-z]:[/\\]/.test(src)) {
82
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (svg): 'src' must be an absolute file path or an https:// URL`);
83
+ }
84
+ }
85
+ if (el.width !== undefined && (typeof el.width !== 'number' || el.width <= 0 || !isFinite(el.width))) {
86
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (svg): 'width' must be a positive finite number`);
87
+ }
88
+ if (el.height !== undefined && (typeof el.height !== 'number' || el.height <= 0 || !isFinite(el.height))) {
89
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (svg): 'height' must be a positive finite number`);
90
+ }
91
+ if (el.align !== undefined && !['left', 'center', 'right'].includes(el.align)) {
92
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (svg): 'align' must be 'left', 'center', or 'right'`);
93
+ }
94
+ if (el.spaceAfter !== undefined && (typeof el.spaceAfter !== 'number' || el.spaceAfter < 0 || !isFinite(el.spaceAfter))) {
95
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (svg): 'spaceAfter' must be a non-negative finite number`);
96
+ }
97
+ if (el.spaceBefore !== undefined && (typeof el.spaceBefore !== 'number' || el.spaceBefore < 0 || !isFinite(el.spaceBefore))) {
98
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (svg): 'spaceBefore' must be a non-negative finite number`);
99
+ }
100
+ }
101
+ export function validateQrCode(el, prefix, _ctx) {
102
+ if (typeof el.data !== 'string' || el.data.trim().length === 0) {
103
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (qr-code): 'data' must be a non-empty string`);
104
+ }
105
+ if (el.data.length > 2953) {
106
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (qr-code): 'data' exceeds maximum QR capacity of 2953 characters (got ${el.data.length})`);
107
+ }
108
+ if (el.errorCorrectionLevel !== undefined && !['L', 'M', 'Q', 'H'].includes(el.errorCorrectionLevel)) {
109
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (qr-code): 'errorCorrectionLevel' must be 'L', 'M', 'Q', or 'H'`);
110
+ }
111
+ if (el.size !== undefined && (typeof el.size !== 'number' || el.size <= 0 || !isFinite(el.size))) {
112
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (qr-code): 'size' must be a positive finite number`);
113
+ }
114
+ if (el.foreground !== undefined && !HEX_COLOR_REGEX.test(el.foreground)) {
115
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (qr-code): 'foreground' must be a 6-digit hex string like '#000000'`);
116
+ }
117
+ if (el.background !== undefined && !HEX_COLOR_REGEX.test(el.background)) {
118
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (qr-code): 'background' must be a 6-digit hex string like '#ffffff'`);
119
+ }
120
+ if (el.margin !== undefined && (typeof el.margin !== 'number' || el.margin < 0 || !isFinite(el.margin))) {
121
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (qr-code): 'margin' must be a non-negative finite number`);
122
+ }
123
+ if (el.align !== undefined && !['left', 'center', 'right'].includes(el.align)) {
124
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (qr-code): 'align' must be 'left', 'center', or 'right'`);
125
+ }
126
+ if (el.spaceAfter !== undefined && (typeof el.spaceAfter !== 'number' || el.spaceAfter < 0 || !isFinite(el.spaceAfter))) {
127
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (qr-code): 'spaceAfter' must be a non-negative finite number`);
128
+ }
129
+ if (el.spaceBefore !== undefined && (typeof el.spaceBefore !== 'number' || el.spaceBefore < 0 || !isFinite(el.spaceBefore))) {
130
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (qr-code): 'spaceBefore' must be a non-negative finite number`);
131
+ }
132
+ }
133
+ export function validateBarcode(el, prefix, _ctx) {
134
+ if (typeof el.symbology !== 'string' || el.symbology.trim().length === 0) {
135
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (barcode): 'symbology' must be a non-empty string (e.g. 'ean13', 'code128')`);
136
+ }
137
+ if (typeof el.data !== 'string' || el.data.trim().length === 0) {
138
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (barcode): 'data' must be a non-empty string`);
139
+ }
140
+ if (el.width !== undefined && (typeof el.width !== 'number' || el.width <= 0 || !isFinite(el.width))) {
141
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (barcode): 'width' must be a positive finite number`);
142
+ }
143
+ if (el.height !== undefined && (typeof el.height !== 'number' || el.height <= 0 || !isFinite(el.height))) {
144
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (barcode): 'height' must be a positive finite number`);
145
+ }
146
+ if (el.align !== undefined && !['left', 'center', 'right'].includes(el.align)) {
147
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (barcode): 'align' must be 'left', 'center', or 'right'`);
148
+ }
149
+ if (el.spaceAfter !== undefined && (typeof el.spaceAfter !== 'number' || el.spaceAfter < 0 || !isFinite(el.spaceAfter))) {
150
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (barcode): 'spaceAfter' must be a non-negative finite number`);
151
+ }
152
+ if (el.spaceBefore !== undefined && (typeof el.spaceBefore !== 'number' || el.spaceBefore < 0 || !isFinite(el.spaceBefore))) {
153
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (barcode): 'spaceBefore' must be a non-negative finite number`);
154
+ }
155
+ }
156
+ export function validateChart(el, prefix, _ctx) {
157
+ if (el.spec === null || typeof el.spec !== 'object' || Array.isArray(el.spec)) {
158
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (chart): 'spec' must be a plain vega-lite specification object`);
159
+ }
160
+ if (el.width !== undefined && (typeof el.width !== 'number' || el.width <= 0 || !isFinite(el.width))) {
161
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (chart): 'width' must be a positive finite number`);
162
+ }
163
+ if (el.height !== undefined && (typeof el.height !== 'number' || el.height <= 0 || !isFinite(el.height))) {
164
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (chart): 'height' must be a positive finite number`);
165
+ }
166
+ if (el.caption !== undefined && typeof el.caption !== 'string') {
167
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (chart): 'caption' must be a string`);
168
+ }
169
+ if (el.align !== undefined && !['left', 'center', 'right'].includes(el.align)) {
170
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (chart): 'align' must be 'left', 'center', or 'right'`);
171
+ }
172
+ if (el.spaceAfter !== undefined && (typeof el.spaceAfter !== 'number' || el.spaceAfter < 0 || !isFinite(el.spaceAfter))) {
173
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (chart): 'spaceAfter' must be a non-negative finite number`);
174
+ }
175
+ if (el.spaceBefore !== undefined && (typeof el.spaceBefore !== 'number' || el.spaceBefore < 0 || !isFinite(el.spaceBefore))) {
176
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (chart): 'spaceBefore' must be a non-negative finite number`);
177
+ }
178
+ }
179
+ //# sourceMappingURL=media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/validate/elements/media.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * validate/elements/structural-simple.ts — Light structural element validators.
3
+ * Covers: spacer, hr, toc, toc-entry, comment.
4
+ * Split from structural.ts in v1.5.0 (B): these validators don't recurse into
5
+ * nested ContentElements and don't need withCycleGuard / depth / ctx.strict.
6
+ */
7
+ import type { ContentElement } from '../../types.js';
8
+ import { type ValidationContext } from '../helpers.js';
9
+ export declare function validateSpacer(el: Extract<ContentElement, {
10
+ type: 'spacer';
11
+ }>, prefix: string, _ctx: ValidationContext): void;
12
+ export declare function validateHr(el: Extract<ContentElement, {
13
+ type: 'hr';
14
+ }>, prefix: string, _ctx: ValidationContext): void;
15
+ export declare function validateToc(el: Extract<ContentElement, {
16
+ type: 'toc';
17
+ }>, prefix: string, _ctx: ValidationContext): void;
18
+ export declare function validateComment(el: Extract<ContentElement, {
19
+ type: 'comment';
20
+ }>, prefix: string, _ctx: ValidationContext): void;
21
+ //# sourceMappingURL=structural-simple.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structural-simple.d.ts","sourceRoot":"","sources":["../../../src/validate/elements/structural-simple.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,gBAAgB,CAAA;AAEpE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAA;AAEtB,wBAAgB,cAAc,CAC5B,EAAE,EAAE,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,EAC/C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,GACtB,IAAI,CAIN;AAED,wBAAgB,UAAU,CACxB,EAAE,EAAE,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,EAC3C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,GACtB,IAAI,CAaN;AAED,wBAAgB,WAAW,CACzB,EAAE,EAAE,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,EAC5C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,GACtB,IAAI,CA+BN;AAED,wBAAgB,eAAe,CAC7B,EAAE,EAAE,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,EAChD,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,GACtB,IAAI,CAQN"}
@@ -0,0 +1,63 @@
1
+ import { PretextPdfError } from '../../errors.js';
2
+ import { HEX_COLOR_REGEX, } from '../helpers.js';
3
+ export function validateSpacer(el, prefix, _ctx) {
4
+ if (typeof el.height !== 'number' || el.height < 0 || el.height > 14400 || !isFinite(el.height)) {
5
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (spacer): 'height' must be a non-negative finite number and <= 14400pt (200 inches)`);
6
+ }
7
+ }
8
+ export function validateHr(el, prefix, _ctx) {
9
+ if (el.thickness !== undefined && (typeof el.thickness !== 'number' || el.thickness < 0 || !isFinite(el.thickness))) {
10
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (hr): 'thickness' must be a non-negative finite number`);
11
+ }
12
+ if (el.color !== undefined && !HEX_COLOR_REGEX.test(el.color)) {
13
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (hr): 'color' must be a 6-digit hex string`);
14
+ }
15
+ if (el.spaceAbove !== undefined && (typeof el.spaceAbove !== 'number' || el.spaceAbove < 0)) {
16
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (hr): 'spaceAbove' must be a non-negative number`);
17
+ }
18
+ if (el.spaceBelow !== undefined && (typeof el.spaceBelow !== 'number' || el.spaceBelow < 0)) {
19
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (hr): 'spaceBelow' must be a non-negative number`);
20
+ }
21
+ }
22
+ export function validateToc(el, prefix, _ctx) {
23
+ if (el.minLevel !== undefined && ![1, 2, 3, 4].includes(el.minLevel)) {
24
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (toc): 'minLevel' must be 1, 2, 3, or 4`);
25
+ }
26
+ if (el.maxLevel !== undefined && ![1, 2, 3, 4].includes(el.maxLevel)) {
27
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (toc): 'maxLevel' must be 1, 2, 3, or 4`);
28
+ }
29
+ if (el.minLevel !== undefined && el.maxLevel !== undefined && el.minLevel > el.maxLevel) {
30
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (toc): 'minLevel' cannot exceed 'maxLevel'`);
31
+ }
32
+ if (el.fontSize !== undefined && (typeof el.fontSize !== 'number' || el.fontSize <= 0 || !isFinite(el.fontSize))) {
33
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (toc): 'fontSize' must be a positive finite number`);
34
+ }
35
+ if (el.titleFontSize !== undefined && (typeof el.titleFontSize !== 'number' || el.titleFontSize <= 0 || !isFinite(el.titleFontSize))) {
36
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (toc): 'titleFontSize' must be a positive finite number`);
37
+ }
38
+ if (el.levelIndent !== undefined && (typeof el.levelIndent !== 'number' || el.levelIndent < 0 || !isFinite(el.levelIndent))) {
39
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (toc): 'levelIndent' must be a non-negative finite number`);
40
+ }
41
+ if (el.leader !== undefined && (typeof el.leader !== 'string' || el.leader.length === 0)) {
42
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (toc): 'leader' must be a non-empty string`);
43
+ }
44
+ if (el.entrySpacing !== undefined && (typeof el.entrySpacing !== 'number' || el.entrySpacing < 0 || !isFinite(el.entrySpacing))) {
45
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (toc): 'entrySpacing' must be a non-negative finite number`);
46
+ }
47
+ if (el.spaceBefore !== undefined && (typeof el.spaceBefore !== 'number' || el.spaceBefore < 0 || !isFinite(el.spaceBefore))) {
48
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (toc): 'spaceBefore' must be a non-negative finite number`);
49
+ }
50
+ if (el.spaceAfter !== undefined && (typeof el.spaceAfter !== 'number' || el.spaceAfter < 0 || !isFinite(el.spaceAfter))) {
51
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (toc): 'spaceAfter' must be a non-negative finite number`);
52
+ }
53
+ }
54
+ export function validateComment(el, prefix, _ctx) {
55
+ const commentEl = el;
56
+ if (!commentEl.contents || typeof commentEl.contents !== 'string' || commentEl.contents.trim() === '') {
57
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (comment): 'contents' is required and must be a non-empty string`);
58
+ }
59
+ if (commentEl.color !== undefined && !HEX_COLOR_REGEX.test(commentEl.color)) {
60
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (comment): 'color' must be a valid 6-digit hex color`);
61
+ }
62
+ }
63
+ //# sourceMappingURL=structural-simple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structural-simple.js","sourceRoot":"","sources":["../../../src/validate/elements/structural-simple.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * validate/elements/structural.ts — Re-export shim.
3
+ *
4
+ * The structural validators were split in v1.5.0 (B) into structural-simple.ts
5
+ * (spacer, hr, toc, toc-entry, comment) and forms-floats.ts (form-field,
6
+ * footnote-def, float-group). This file remains briefly as a compatibility
7
+ * shim for any out-of-tree consumer; the in-tree dispatcher imports the new
8
+ * modules directly. To be removed in B step 3.
9
+ */
10
+ export * from './structural-simple.js';
11
+ export * from './forms-floats.js';
12
+ //# sourceMappingURL=structural.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structural.d.ts","sourceRoot":"","sources":["../../../src/validate/elements/structural.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * validate/elements/structural.ts — Re-export shim.
3
+ *
4
+ * The structural validators were split in v1.5.0 (B) into structural-simple.ts
5
+ * (spacer, hr, toc, toc-entry, comment) and forms-floats.ts (form-field,
6
+ * footnote-def, float-group). This file remains briefly as a compatibility
7
+ * shim for any out-of-tree consumer; the in-tree dispatcher imports the new
8
+ * modules directly. To be removed in B step 3.
9
+ */
10
+ export * from './structural-simple.js';
11
+ export * from './forms-floats.js';
12
+ //# sourceMappingURL=structural.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structural.js","sourceRoot":"","sources":["../../../src/validate/elements/structural.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * validate/elements/table.ts — Table element validator.
3
+ * Extracted from src/validate.ts (#11a).
4
+ */
5
+ import type { ContentElement } from '../../types.js';
6
+ import { type ValidationContext } from '../helpers.js';
7
+ export declare function validateTable(el: Extract<ContentElement, {
8
+ type: 'table';
9
+ }>, prefix: string, depth: number, ctx: ValidationContext): void;
10
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/validate/elements/table.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAGpD,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAA;AAEtB,wBAAgB,aAAa,CAC3B,EAAE,EAAE,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,EAC9C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,iBAAiB,GACrB,IAAI,CAsKN"}