pretext-pdf 0.9.3 → 1.0.1

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 (106) hide show
  1. package/CHANGELOG.md +141 -1
  2. package/README.md +874 -795
  3. package/dist/allowed-props.d.ts +1 -0
  4. package/dist/allowed-props.d.ts.map +1 -1
  5. package/dist/allowed-props.js +2 -0
  6. package/dist/allowed-props.js.map +1 -1
  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/cli.js +19 -19
  20. package/dist/element-types.d.ts +16 -0
  21. package/dist/element-types.d.ts.map +1 -0
  22. package/dist/element-types.js +16 -0
  23. package/dist/element-types.js.map +1 -0
  24. package/dist/errors.d.ts +8 -1
  25. package/dist/errors.d.ts.map +1 -1
  26. package/dist/errors.js +4 -0
  27. package/dist/errors.js.map +1 -1
  28. package/dist/fonts.d.ts +2 -1
  29. package/dist/fonts.d.ts.map +1 -1
  30. package/dist/fonts.js.map +1 -1
  31. package/dist/index.d.ts +21 -17
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +25 -309
  34. package/dist/index.js.map +1 -1
  35. package/dist/layout-state.d.ts +39 -0
  36. package/dist/layout-state.d.ts.map +1 -0
  37. package/dist/layout-state.js +46 -0
  38. package/dist/layout-state.js.map +1 -0
  39. package/dist/measure-blocks.d.ts +2 -1
  40. package/dist/measure-blocks.d.ts.map +1 -1
  41. package/dist/measure-blocks.js.map +1 -1
  42. package/dist/measure.d.ts +4 -2
  43. package/dist/measure.d.ts.map +1 -1
  44. package/dist/measure.js +15 -5
  45. package/dist/measure.js.map +1 -1
  46. package/dist/page-sizes.d.ts +1 -0
  47. package/dist/page-sizes.d.ts.map +1 -1
  48. package/dist/page-sizes.js.map +1 -1
  49. package/dist/paginate.d.ts +1 -1
  50. package/dist/paginate.d.ts.map +1 -1
  51. package/dist/paginate.js +11 -2
  52. package/dist/paginate.js.map +1 -1
  53. package/dist/pipeline-footnotes.d.ts +18 -0
  54. package/dist/pipeline-footnotes.d.ts.map +1 -0
  55. package/dist/pipeline-footnotes.js +98 -0
  56. package/dist/pipeline-footnotes.js.map +1 -0
  57. package/dist/pipeline-toc.d.ts +11 -0
  58. package/dist/pipeline-toc.d.ts.map +1 -0
  59. package/dist/pipeline-toc.js +28 -0
  60. package/dist/pipeline-toc.js.map +1 -0
  61. package/dist/pipeline.d.ts +24 -0
  62. package/dist/pipeline.d.ts.map +1 -0
  63. package/dist/pipeline.js +116 -0
  64. package/dist/pipeline.js.map +1 -0
  65. package/dist/plugin-registry.d.ts +40 -0
  66. package/dist/plugin-registry.d.ts.map +1 -0
  67. package/dist/plugin-registry.js +104 -0
  68. package/dist/plugin-registry.js.map +1 -0
  69. package/dist/plugin-types.d.ts +185 -0
  70. package/dist/plugin-types.d.ts.map +1 -0
  71. package/dist/plugin-types.js +27 -0
  72. package/dist/plugin-types.js.map +1 -0
  73. package/dist/post-process.d.ts +16 -0
  74. package/dist/post-process.d.ts.map +1 -0
  75. package/dist/post-process.js +80 -0
  76. package/dist/post-process.js.map +1 -0
  77. package/dist/render-blocks.d.ts +2 -1
  78. package/dist/render-blocks.d.ts.map +1 -1
  79. package/dist/render-blocks.js.map +1 -1
  80. package/dist/render-extras.d.ts +2 -2
  81. package/dist/render-extras.d.ts.map +1 -1
  82. package/dist/render-extras.js.map +1 -1
  83. package/dist/render.d.ts +4 -2
  84. package/dist/render.d.ts.map +1 -1
  85. package/dist/render.js +23 -4
  86. package/dist/render.js.map +1 -1
  87. package/dist/types-internal.d.ts +302 -0
  88. package/dist/types-internal.d.ts.map +1 -0
  89. package/dist/types-internal.js +9 -0
  90. package/dist/types-internal.js.map +1 -0
  91. package/dist/types-public.d.ts +1031 -0
  92. package/dist/types-public.d.ts.map +1 -0
  93. package/dist/types-public.js +2 -0
  94. package/dist/types-public.js.map +1 -0
  95. package/dist/types.d.ts +6 -1224
  96. package/dist/types.d.ts.map +1 -1
  97. package/dist/types.js +7 -0
  98. package/dist/types.js.map +1 -1
  99. package/dist/validate.d.ts +6 -4
  100. package/dist/validate.d.ts.map +1 -1
  101. package/dist/validate.js +50 -17
  102. package/dist/validate.js.map +1 -1
  103. package/package.json +192 -184
  104. package/docs/screenshots/showcase-invoice.png +0 -0
  105. package/docs/screenshots/showcase-report.png +0 -0
  106. package/docs/screenshots/showcase-resume.png +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAIpD,mGAAmG;AACnG,MAAM,WAAW,WAAW;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3C,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1B,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,wFAAwF;IACxF,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAA;IAClB,wFAAwF;IACxF,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,qEAAqE;IACrE,UAAU,CAAC,EAAE,cAAc,CAAA;IAC3B,gEAAgE;IAChE,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,kHAAkH;IAClH,SAAS,CAAC,EAAE,KAAK,GAAG,cAAc,CAAA;IAClC,yHAAyH;IACzH,WAAW,CAAC,EAAE,iBAAiB,CAAA;IAC/B,gEAAgE;IAChE,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAC3B;;;OAGG;IACH,qBAAqB,CAAC,EAAE;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,UAAU,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;QACtB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;QAC/C,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;IACD;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC;QACf,0EAA0E;QAC1E,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,gFAAgF;QAChF,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;QAC9B,MAAM,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;KAC/B,CAAC,CAAA;IACF,yDAAyD;IACzD,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,mGAAmG;IACnG,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,EAAE,KAAK,EAAE,KAAK,KAAK,MAAM,GAAG,OAAO,CAAA;IAC/E;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK,KAAK,MAAM,GAAG,OAAO,CAAA;IACpF;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,mBAAmB;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2GAA2G;IAC3G,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAA;IACd,gCAAgC;IAChC,MAAM,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;IAClB,oCAAoC;IACpC,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC3B,4DAA4D;IAC5D,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAA;IACZ,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IACnC,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gCAAgC;IAChC,UAAU,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;IACtB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;IAC3B,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gCAAgC;IAChC,UAAU,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;IACtB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B;uCACmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;yDACqD;IACrD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;kDAC8C;IAC9C,WAAW,CAAC,EAAE;QACZ,oCAAoC;QACpC,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,iDAAiD;QACjD,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,8CAA8C;QAC9C,SAAS,CAAC,EAAE,OAAO,CAAA;QACnB,gEAAgE;QAChE,UAAU,CAAC,EAAE,OAAO,CAAA;KACrB,CAAA;CACF;AAED,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,4EAA4E;IAC5E,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,4EAA4E;IAC5E,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;IACzB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uGAAuG;IACvG,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACxB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,mGAAmG;IACnG,QAAQ,EAAE,MAAM,CAAA;IAChB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAA;IAChB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2DAA2D;IAC3D,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,CAAA;IACf,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uDAAuD;IACvD,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,GAAG,CAAC,EAAE,WAAW,CAAA;IACjB,iDAAiD;IACjD,GAAG,CAAC,EAAE,UAAU,CAAA;CACjB;AAID,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAA;IAClB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAA;IAChE,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAA;IACZ,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB,kDAAkD;IAClD,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACjD,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2GAA2G;IAC3G,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gEAAgE;IAChE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oEAAoE;IACpE,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,cAAc,GACd,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,UAAU,GACV,aAAa,GACb,cAAc,GACd,YAAY,GACZ,WAAW,GACX,qBAAqB,GACrB,gBAAgB,GAChB,gBAAgB,GAChB,oBAAoB,GACpB,iBAAiB,GACjB,UAAU,GACV,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,cAAc,GACd,kBAAkB,GAClB,iBAAiB,CAAA;AAErB,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,WAAW,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,8HAA8H;IAC9H,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gCAAgC;IAChC,UAAU,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;IACtB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;IAC/C,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mEAAmE;IACnE,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,yDAAyD;IACzD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,6EAA6E;IAC7E,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oGAAoG;IACpG,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,8HAA8H;IAC9H,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;IAC5B,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,yCAAyC;IACzC,UAAU,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;IACtB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;IAC/C,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kEAAkE;IAClE,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,yDAAyD;IACzD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,oGAAoG;IACpG,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,qHAAqH;IACrH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,cAAc,CAAA;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAA;IACd,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,SAAS,EAAE,CAAA;IACpB,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB,6FAA6F;IAC7F,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;IAC5B,wHAAwH;IACxH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,mGAAmG;IACnG,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;CACpC;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,+DAA+D;IAC/D,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;IAC5B,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IACnC,UAAU,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;IACtB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kGAAkG;IAClG,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAA;IACb,+DAA+D;IAC/D,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;IACxB,sFAAsF;IACtF,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;IAC/B,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IACnC,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACxB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yGAAyG;IACzG,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yGAAyG;IACzG,UAAU,CAAC,EAAE,UAAU,EAAE,CAAA;IACzB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAID,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAA;IACnB,wCAAwC;IACxC,KAAK,EAAE;QACL,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;QACxB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;QAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,yFAAyF;IACzF,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;IACvB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mEAAmE;IACnE,OAAO,EAAE,KAAK,CAAC,gBAAgB,GAAG,cAAc,GAAG,oBAAoB,CAAC,CAAA;IACxE,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAID,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,KAAK,CAAA;IACX,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IACnC,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAID,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAA;IACf,wGAAwG;IACxG,IAAI,EAAE,MAAM,CAAA;IACZ,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8CAA8C;IAC9C,oBAAoB,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;IAC5C,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IACnC,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAID,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,CAAA;IACf;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAA;IACZ,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kEAAkE;IAClE,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IACnC,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAA;IACb;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qDAAqD;IACrD,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IACnC,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAID,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,yDAAyD;IACzD,KAAK,EAAE,SAAS,GAAG,WAAW,CAAA;IAC9B,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,UAAU,GAAG,SAAS,CAAA;CAC9C;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,+DAA+D;IAC/D,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;IAC5B,8CAA8C;IAC9C,UAAU,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;IACtB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAA;CACnB;AAID,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,IAAI,CAAA;IACV,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAID,mFAAmF;AACnF,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAA;CACnB;AAID,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAA;IACZ,yFAAyF;IACzF,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;IAC5B;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mEAAmE;IACnE,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,cAAc,CAAC,EAAE;QACf,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,CAAA;CACF;AAID;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAA;IACtB,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,+DAA+D;IAC/D,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;IAC/C,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mEAAmE;IACnE,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,6EAA6E;IAC7E,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;IAC5B,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gCAAgC;IAChC,UAAU,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;IACtB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC/B,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,wHAAwH;IACxH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,sEAAsE;IACtE,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,yGAAyG;IACzG,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,mHAAmH;IACnH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qEAAqE;IACrE,aAAa,CAAC,EAAE,aAAa,GAAG,WAAW,CAAA;IAC3C,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,yFAAyF;AACzF,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,YAAY,EAAE,CAAA;IACzB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,sFAAsF;IACtF,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,yDAAyD;IACzD,CAAC,EAAE,MAAM,CAAA;IACT,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8FAA8F;IAC9F,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uFAAuF;IACvF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qFAAqF;IACrF,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAID,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,YAAY,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,+DAA+D;IAC/D,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;IAC5B,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gCAAgC;IAChC,UAAU,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;IACtB,8FAA8F;IAC9F,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC/B,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mIAAmI;IACnI,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;IAC/C,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mEAAmE;IACnE,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,yDAAyD;IACzD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAID;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,CAAA;IACf,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAA;IACf;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,CAAA;IAC3C,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gCAAgC;IAChC,UAAU,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;IACtB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qEAAqE;IACrE,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,sCAAsC;IACtC,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;CAC7B;AAID;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,cAAc,CAAA;IACpB,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAA;IACV,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAA;IACZ,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,KAAK,CAAA;IACX,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACxB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACxB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAID;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,cAAc,CAAA;IACvB,qGAAqG;IACrG,MAAM,EAAE,MAAM,CAAA;IACd,yFAAyF;IACzF,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAA;IAChB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAA;IAClB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAA;IACf,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAA;IAClB,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAA;IAEnB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,iBAAiB,CAAA;IAC7B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,iBAAiB,CAAA;IAC7B,iEAAiE;IACjE,YAAY,CAAC,EAAE,YAAY,CAAA;IAE3B,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0FAA0F;IAC1F,mBAAmB,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IACnE,kFAAkF;IAClF,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;IAEtB,oFAAoF;IACpF,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,sFAAsF;IACtF,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,qFAAqF;IACrF,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAE9B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;IAEzB,2EAA2E;IAC3E,UAAU,CAAC,EAAE;QACX,WAAW,EAAE,MAAM,CAAA;QACnB,SAAS,EAAE,MAAM,CAAA;QACjB,WAAW,EAAE,MAAM,CAAA;QACnB,cAAc,EAAE,MAAM,CAAA;KACvB,CAAA;IAED,uEAAuE;IACvE,SAAS,CAAC,EAAE;QACV,QAAQ,EAAE,MAAM,CAAA;QAChB,gBAAgB,EAAE,MAAM,CAAA;QACxB,iBAAiB,EAAE,MAAM,CAAA;QACzB,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,EAAE,MAAM,CAAA;QAChB,YAAY,EAAE,MAAM,CAAA;QACpB,SAAS,EAAE,WAAW,EAAE,CAAA;QACxB,sEAAsE;QACtE,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAA;QAC3B,WAAW,EAAE,MAAM,CAAA;QACnB,YAAY,EAAE,MAAM,CAAA;QACpB,cAAc,EAAE,MAAM,CAAA;QACtB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;IAED,kFAAkF;IAClF,cAAc,CAAC,EAAE;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,gBAAgB,EAAE,MAAM,CAAA;QACxB,iBAAiB,EAAE,MAAM,CAAA;QACzB,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,EAAE,MAAM,CAAA;QAChB,YAAY,EAAE,MAAM,CAAA;QACpB,SAAS,EAAE,KAAK,CAAC;YACf,KAAK,EAAE,WAAW,EAAE,CAAA;YACpB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;YACtB,QAAQ,EAAE,MAAM,CAAA;YAChB,UAAU,EAAE,MAAM,CAAA;YAClB,OAAO,EAAE,MAAM,CAAA;YACf,UAAU,EAAE,GAAG,GAAG,GAAG,CAAA;YACrB,UAAU,EAAE,MAAM,CAAA;YAClB,cAAc,EAAE,MAAM,CAAA;SACvB,CAAC,CAAA;QACF,eAAe,EAAE,MAAM,CAAA;KACxB,CAAA;IAED,6GAA6G;IAC7G,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,yFAAyF;IACzF,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,sFAAsF;IACtF,YAAY,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;IAEtE,oEAAoE;IACpE,aAAa,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAA;CAC7D;AAOD,2GAA2G;AAC3G,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IACjD,OAAO,EAAE,cAAc,CAAA;IACvB,WAAW,EAAE,WAAW,CAAA;CACzB,CAAA;AAED,8GAA8G;AAC9G,MAAM,MAAM,uBAAuB,GAAG,aAAa,GAAG;IACpD,OAAO,EAAE,iBAAiB,CAAA;IAC1B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,qBAAqB,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,qDAAqD;AACrD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAED,yCAAyC;AACzC,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,aAAa,CAAA;IAC5B,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAA;IACjB,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAA;IACf,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,kCAAkC;AAClC,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,UAAU,EAAE,CAAA;IACpB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,kBAAkB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClE,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,mCAAmC;AACnC,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,oEAAoE;IACpE,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC1E,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACxC;AAED,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,iDAAiD;AACjD,MAAM,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,iBAAiB,EAAE,OAAO,CAAC,CAAA;AAEpE,mDAAmD;AACnD,MAAM,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,iBAAiB,EAAE,QAAQ,CAAC,CAAA;AAItE,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,iCAAiC;IACjC,IAAI,EAAE,gBAAgB,EAAE,CAAA;IACxB,+CAA+C;IAC/C,cAAc,EAAE,MAAM,CAAA;IACtB,8EAA8E;IAC9E,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,iBAAiB,EAAE,CAAA;IAC1B,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,OAAO,CAAA;IACjB,0HAA0H;IAC1H,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,+GAA+G;IAC/G,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAA;IACf,gGAAgG;IAChG,WAAW,EAAE,MAAM,CAAA;IACnB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wGAAwG;IACxG,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,8DAA8D;IAC9D,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,6DAA6D;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAID,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,gCAAgC;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;CACnC;AAID,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAA;IACd,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAA;IACnB,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAA;IACb,yCAAyC;IACzC,UAAU,EAAE,GAAG,GAAG,GAAG,CAAA;CACtB"}
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,5 +1,7 @@
1
- import type { PdfDocument } from './types.js';
2
- export declare function validate(doc: PdfDocument, options?: {
3
- strict?: boolean;
4
- }): 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;
5
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;AA0IvF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CA2W/E"}
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,CAwXxE"}
package/dist/validate.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import { PretextPdfError } from './errors.js';
2
2
  import { resolvePageDimensions } from './page-sizes.js';
3
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';
4
6
  /**
5
7
  * RTL strong bidi characters — Bidi_Class=R or AL per UAX #9.
6
8
  * Block-level coverage following Unicode DerivedBidiClass defaults.
@@ -40,7 +42,7 @@ const HEX_COLOR_REGEX = /^#[0-9A-Fa-f]{6}$/;
40
42
  const SAFE_URL_SCHEME = /^(https?|mailto|ftp|#)/i;
41
43
  /** BCP47 language tag pattern for hyphenation.language — prevents dynamic-import path injection */
42
44
  const LANGUAGE_TAG_REGEX = /^[a-zA-Z]{2,8}(-[a-zA-Z0-9]{2,8})*$/;
43
- /** Levenshtein distance with early exit at distance > 2 */
45
+ /** Levenshtein distance, returns 999 if result would exceed 2 */
44
46
  function levenshteinDist(a, b) {
45
47
  if (a === b)
46
48
  return 0;
@@ -57,13 +59,11 @@ function levenshteinDist(a, b) {
57
59
  for (let j = 1; j <= n; j++) {
58
60
  const cost = a[i - 1] === b[j - 1] ? 0 : 1;
59
61
  curr[j] = Math.min(prev[j] + 1, curr[j - 1] + 1, prev[j - 1] + cost);
60
- if (curr[j] > 2)
61
- return 999;
62
62
  }
63
63
  for (let j = 0; j <= n; j++)
64
64
  prev[j] = curr[j];
65
65
  }
66
- return prev[n];
66
+ return prev[n] > 2 ? 999 : prev[n];
67
67
  }
68
68
  /** Find closest match with edit distance <= 2 */
69
69
  function closestMatch(prop, allowed) {
@@ -85,7 +85,7 @@ function assertUnknownProps(obj, allowed, path, errors) {
85
85
  for (const key of Object.keys(obj)) {
86
86
  if (!allowed.has(key)) {
87
87
  const suggestion = closestMatch(key, allowed);
88
- const hint = suggestion ? ` Did you mean '${suggestion}'?` : '';
88
+ const hint = suggestion ? ` did you mean "${suggestion}"` : '';
89
89
  errors.push(`${path}.${key}: unknown property.${hint}`);
90
90
  }
91
91
  }
@@ -94,9 +94,10 @@ function assertUnknownProps(obj, allowed, path, errors) {
94
94
  function formatErrors(errors) {
95
95
  if (errors.length === 0)
96
96
  return '';
97
+ const header = `Strict validation failed (${errors.length} issue${errors.length === 1 ? '' : 's'}):\n`;
97
98
  const msgs = errors.slice(0, 20);
98
99
  const suffix = errors.length > 20 ? `\n... and ${errors.length - 20} more error(s)` : '';
99
- return msgs.join('\n') + suffix;
100
+ return header + msgs.join('\n') + suffix;
100
101
  }
101
102
  /** Validate a hyperlink URL — throws VALIDATION_ERROR for unsafe schemes */
102
103
  function validateUrl(url, prefix) {
@@ -119,12 +120,25 @@ const STAR_WIDTH_REGEX = /^(\d*\.?\d+)?\*$/;
119
120
  const BUNDLED_FAMILIES = new Set(['Inter']);
120
121
  /** Font variants (family-weight-style) always available without explicit doc.fonts entry */
121
122
  const BUNDLED_VARIANTS = new Set(['Inter-400-normal', 'Inter-700-normal']);
123
+ /**
124
+ * Validate a PdfDocument and throw a {@link PretextPdfError} if any errors are found.
125
+ * @public
126
+ */
122
127
  export function validate(doc, options) {
123
128
  const strict = options?.strict ?? false;
124
129
  const errors = [];
130
+ // Plugin pre-flight: enforce type string safety and no collision with built-ins
131
+ for (const plugin of options?.plugins ?? []) {
132
+ if (!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(plugin.type)) {
133
+ throw new PretextPdfError('VALIDATION_ERROR', `Plugin type '${plugin.type}' is invalid. Must start with a letter and contain only letters, digits, hyphens, or underscores.`);
134
+ }
135
+ if (ELEMENT_TYPES.includes(plugin.type)) {
136
+ throw new PretextPdfError('VALIDATION_ERROR', `Plugin type '${plugin.type}' collides with a built-in element type. Choose a different type string.`);
137
+ }
138
+ }
125
139
  // Strict: check doc-level properties
126
140
  if (strict) {
127
- assertUnknownProps(doc, ALLOWED_PROPS_SUB['document'], 'document', errors);
141
+ assertUnknownProps(doc, ALLOWED_PROPS_SUB['document'], 'doc', errors);
128
142
  }
129
143
  // content must be a non-empty array
130
144
  if (!Array.isArray(doc.content) || doc.content.length === 0) {
@@ -288,6 +302,9 @@ export function validate(doc, options) {
288
302
  // encryption
289
303
  if (doc.encryption) {
290
304
  const enc = doc.encryption;
305
+ if (strict) {
306
+ assertUnknownProps(enc, ALLOWED_PROPS_SUB['encryption'], 'doc.encryption', errors);
307
+ }
291
308
  if (enc.userPassword !== undefined && typeof enc.userPassword !== 'string') {
292
309
  throw new PretextPdfError('VALIDATION_ERROR', 'doc.encryption.userPassword must be a string if provided');
293
310
  }
@@ -338,7 +355,7 @@ export function validate(doc, options) {
338
355
  throw new PretextPdfError('VALIDATION_ERROR', 'signature.invisible must be a boolean');
339
356
  }
340
357
  if (sig.p12 !== undefined && doc.encryption !== undefined) {
341
- throw new PretextPdfError('VALIDATION_ERROR', 'Cannot use both signature.p12 (cryptographic signing) and encryption together — the encryption step would invalidate the cryptographic signature.');
358
+ 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.');
342
359
  }
343
360
  }
344
361
  // bookmarks
@@ -407,7 +424,7 @@ export function validate(doc, options) {
407
424
  }
408
425
  }
409
426
  for (let i = 0; i < doc.content.length; i++) {
410
- validateElement(doc.content[i], i, loadedFamilies, strict, errors);
427
+ validateElement(doc.content[i], i, loadedFamilies, strict, errors, options);
411
428
  }
412
429
  // ── Footnote ref/def cross-validation ─────────────────────────────────────
413
430
  const footnoteDefIds = new Map(); // id → content index
@@ -572,7 +589,7 @@ function validateFontReferences(doc, loadedFamilies) {
572
589
  // code.fontFamily already validated against loadedFamilies in validateElement
573
590
  }
574
591
  }
575
- function validateElement(el, index, loadedFamilies, strict, errors) {
592
+ function validateElement(el, index, loadedFamilies, strict, errors, options) {
576
593
  const prefix = `content[${index}]`;
577
594
  if (!el || typeof el !== 'object' || !('type' in el)) {
578
595
  throw new PretextPdfError('VALIDATION_ERROR', `${prefix}: each element must have a 'type' field`);
@@ -638,7 +655,7 @@ function validateElement(el, index, loadedFamilies, strict, errors) {
638
655
  if (el.annotation) {
639
656
  // Strict: validate annotation properties
640
657
  if (strict) {
641
- assertUnknownProps(el.annotation, ALLOWED_PROPS_SUB['annotation'], `${prefix} (paragraph).annotation`, errors);
658
+ assertUnknownProps(el.annotation, ALLOWED_PROPS_SUB['annotation'], `${prefix}.annotation`, errors);
642
659
  }
643
660
  if (!el.annotation.contents || el.annotation.contents.trim() === '') {
644
661
  throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (paragraph): annotation.contents is required and must be non-empty`);
@@ -820,13 +837,13 @@ function validateElement(el, index, loadedFamilies, strict, errors) {
820
837
  }
821
838
  // Strict: validate row and column defs
822
839
  if (strict) {
823
- assertUnknownProps(row, ALLOWED_PROPS_SUB['table-row'], `${prefix} (table).rows[${ri}]`, errors);
840
+ assertUnknownProps(row, ALLOWED_PROPS_SUB['table-row'], `${prefix}.rows[${ri}]`, errors);
824
841
  }
825
842
  for (let cellI = 0; cellI < row.cells.length; cellI++) {
826
843
  const cell = row.cells[cellI];
827
844
  // Strict: validate cell properties
828
845
  if (strict) {
829
- assertUnknownProps(cell, ALLOWED_PROPS_SUB['table-cell'], `${prefix} (table).rows[${ri}].cells[${cellI}]`, errors);
846
+ assertUnknownProps(cell, ALLOWED_PROPS_SUB['table-cell'], `${prefix}.rows[${ri}].cells[${cellI}]`, errors);
830
847
  }
831
848
  if (typeof cell.text !== 'string') {
832
849
  throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (table): rows[${ri}].cells[${cellI}].text must be a string`);
@@ -1064,7 +1081,7 @@ function validateElement(el, index, loadedFamilies, strict, errors) {
1064
1081
  const item = el.items[ii];
1065
1082
  // Strict: validate list item properties
1066
1083
  if (strict) {
1067
- assertUnknownProps(item, ALLOWED_PROPS_SUB['list-item'], `${prefix} (list).items[${ii}]`, errors);
1084
+ assertUnknownProps(item, ALLOWED_PROPS_SUB['list-item'], `${prefix}.items[${ii}]`, errors);
1068
1085
  }
1069
1086
  if (typeof item.text !== 'string' || item.text.trim() === '') {
1070
1087
  throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): items[${ii}].text must be a non-empty string`);
@@ -1085,7 +1102,7 @@ function validateElement(el, index, loadedFamilies, strict, errors) {
1085
1102
  const nested = item.items[ni];
1086
1103
  // Strict: validate nested list item properties
1087
1104
  if (strict) {
1088
- assertUnknownProps(nested, ALLOWED_PROPS_SUB['list-item'], `${prefix} (list).items[${ii}].items[${ni}]`, errors);
1105
+ assertUnknownProps(nested, ALLOWED_PROPS_SUB['list-item'], `${prefix}.items[${ii}].items[${ni}]`, errors);
1089
1106
  }
1090
1107
  if (typeof nested.text !== 'string' || nested.text.trim() === '') {
1091
1108
  throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (list): items[${ii}].items[${ni}].text must be a non-empty string`);
@@ -1140,7 +1157,7 @@ function validateElement(el, index, loadedFamilies, strict, errors) {
1140
1157
  const span = el.spans[si];
1141
1158
  // Strict: validate span properties
1142
1159
  if (strict) {
1143
- assertUnknownProps(span, ALLOWED_PROPS_SUB['inline-span'], `${prefix} (rich-paragraph).spans[${si}]`, errors);
1160
+ assertUnknownProps(span, ALLOWED_PROPS_SUB['inline-span'], `${prefix}.spans[${si}]`, errors);
1144
1161
  }
1145
1162
  if (typeof span.text !== 'string') {
1146
1163
  throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (rich-paragraph): spans[${si}].text must be a string`);
@@ -1472,7 +1489,23 @@ function validateElement(el, index, loadedFamilies, strict, errors) {
1472
1489
  }
1473
1490
  default: {
1474
1491
  const type = el.type;
1475
- 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'`);
1492
+ const plugins = options?.plugins ?? [];
1493
+ const plugin = findPlugin(plugins, String(type));
1494
+ if (plugin) {
1495
+ let rejection;
1496
+ try {
1497
+ rejection = runPluginValidate(plugin, el);
1498
+ }
1499
+ catch (err) {
1500
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (${String(type)}): plugin validate hook threw: ${err instanceof Error ? err.message : String(err)}`);
1501
+ }
1502
+ if (rejection) {
1503
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix} (${String(type)}): ${rejection}`);
1504
+ }
1505
+ break;
1506
+ }
1507
+ const validList = ELEMENT_TYPES.map(t => `'${t}'`).join(', ');
1508
+ throw new PretextPdfError('VALIDATION_ERROR', `${prefix}: unknown element type '${String(type)}'. Valid types: ${validList}`);
1476
1509
  }
1477
1510
  }
1478
1511
  }