@poe-platform/safe-bash 0.1.812 → 0.1.813

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 (329) hide show
  1. package/dist/audio-ast/id3-source.d.ts +27 -0
  2. package/dist/audio-ast/index.d.ts +4 -0
  3. package/dist/audio-ast/index.js +996 -596
  4. package/dist/audio-ast/mp3-source.d.ts +18 -0
  5. package/dist/audio-ast/ogg-source.d.ts +25 -0
  6. package/dist/audio-ast/ogg-stream-source.d.ts +22 -0
  7. package/dist/image-ast/index.js +139 -9
  8. package/dist/mp4-ast/containers/adapters.d.ts +7 -0
  9. package/dist/office-xml/retained-xml-document.d.ts +8 -0
  10. package/dist/pdf-ast/ast.d.ts +2 -0
  11. package/dist/pdf-ast/content/dictionary-cursor.d.ts +15 -0
  12. package/dist/pdf-ast/content/range-operator-parser.d.ts +4 -0
  13. package/dist/pdf-ast/content/stored-dictionary.d.ts +10 -0
  14. package/dist/pdf-ast/cos/lexer.d.ts +8 -5
  15. package/dist/pdf-ast/cos/object-reader.d.ts +4 -3
  16. package/dist/pdf-ast/cos/range-parser.d.ts +4 -0
  17. package/dist/pdf-ast/cos/retained-objects.d.ts +1 -0
  18. package/dist/pdf-ast/cos/retained-writer.d.ts +1 -0
  19. package/dist/pdf-ast/cos/value-parser.d.ts +9 -0
  20. package/dist/pdf-ast/edit/retained-append-attachments.d.ts +13 -0
  21. package/dist/pdf-ast/edit/retained-bookmarks.d.ts +13 -0
  22. package/dist/pdf-ast/edit/retained-graph.d.ts +6 -0
  23. package/dist/pdf-ast/edit/retained-save.d.ts +2 -0
  24. package/dist/pdf-ast/edit/retained-stamps.d.ts +9 -0
  25. package/dist/pdf-ast/fonts/resolve.d.ts +3 -1
  26. package/dist/pdf-ast/index.d.ts +3 -1
  27. package/dist/pdf-ast/index.js +1557 -770
  28. package/dist/safe-bash/audio-ast.browser.js +6 -1
  29. package/dist/safe-bash/chunks/{chunk-HHSOUC3Z.js → chunk-HPQE675Q.js} +1 -1
  30. package/dist/safe-bash/chunks/{chunk-BUYRKFW2.js → chunk-I6ECNJMR.js} +1 -1
  31. package/dist/safe-bash/chunks/{pdftk-WRYEP3CA.js → pdftk-Y2TX74LY.js} +2 -1
  32. package/dist/safe-bash/command-chunks/biff-4ALVARRF-7SRX6R6N.js +5192 -0
  33. package/dist/safe-bash/command-chunks/{chunk-EHSM5ZQS.js → chunk-2DGJOOXM.js} +8 -8
  34. package/dist/safe-bash/command-chunks/{chunk-Q6S57NOQ.js → chunk-2E2H7MBH.js} +7 -7
  35. package/dist/safe-bash/command-chunks/{chunk-MMBZTYXO.js → chunk-2PQRZDNR.js} +221 -0
  36. package/dist/safe-bash/command-chunks/{chunk-NARD63DY.js → chunk-2V6FOLXV.js} +22 -66
  37. package/dist/safe-bash/command-chunks/{chunk-56NYSX65.js → chunk-2Z3WRRFT.js} +9 -9
  38. package/dist/safe-bash/command-chunks/chunk-3D24WDND.js +63 -0
  39. package/dist/safe-bash/command-chunks/{chunk-47NEG4UO.js → chunk-3JST2Q7G.js} +219 -43
  40. package/dist/safe-bash/command-chunks/{chunk-WGG6G2KG.js → chunk-3LJAXFH5.js} +7 -7
  41. package/dist/safe-bash/command-chunks/{chunk-AHA6IWAJ.js → chunk-3TYDSGAH.js} +6 -6
  42. package/dist/safe-bash/command-chunks/{chunk-YSMNXMAO.js → chunk-3Y4XZB24.js} +4 -4
  43. package/dist/safe-bash/command-chunks/{chunk-ZIIO6GRY.js → chunk-4PBNMKAT.js} +7 -7
  44. package/dist/safe-bash/command-chunks/{chunk-JFYWVQ4V.js → chunk-4Z6W5EOC.js} +8 -8
  45. package/dist/safe-bash/command-chunks/{chunk-GEM47B2P.js → chunk-57DDYKE5.js} +7 -7
  46. package/dist/safe-bash/command-chunks/{chunk-4CKFNXRN.js → chunk-5IFRAI7Y.js} +1 -1
  47. package/dist/safe-bash/command-chunks/{chunk-RHYJVTJO.js → chunk-5KGEZ3RW.js} +2 -2
  48. package/dist/safe-bash/command-chunks/{chunk-A5FZBR7X.js → chunk-5MFDRSGG.js} +4 -4
  49. package/dist/safe-bash/command-chunks/{chunk-7GKKMNL6.js → chunk-5P6I2T63.js} +8 -8
  50. package/dist/safe-bash/command-chunks/{chunk-6M6TM5Z5.js → chunk-5VQVZPP3.js} +3 -3
  51. package/dist/safe-bash/command-chunks/{chunk-MIRL7HTF.js → chunk-6244HYJY.js} +1 -1
  52. package/dist/safe-bash/command-chunks/chunk-63EMPQ7Z.js +115 -0
  53. package/dist/safe-bash/command-chunks/{chunk-XRVKWGVQ.js → chunk-6CY5BHBS.js} +6 -6
  54. package/dist/safe-bash/command-chunks/{chunk-XVP6V5K3.js → chunk-6IWE7PTK.js} +6 -6
  55. package/dist/safe-bash/command-chunks/{chunk-6QBMND4A.js → chunk-6SRHWVEB.js} +1 -1
  56. package/dist/safe-bash/command-chunks/chunk-6ZHQB453.js +35 -0
  57. package/dist/safe-bash/command-chunks/chunk-73NYFNAS.js +173 -0
  58. package/dist/safe-bash/command-chunks/{chunk-2JSDKQ4J.js → chunk-7NXTEWPR.js} +119 -44
  59. package/dist/safe-bash/command-chunks/{chunk-554Z6IKP.js → chunk-7PRL6RJ6.js} +2 -2
  60. package/dist/safe-bash/command-chunks/{chunk-SDTPO2VV.js → chunk-7PZHWMK6.js} +7 -7
  61. package/dist/safe-bash/command-chunks/{chunk-XZ2FWFNV.js → chunk-7QZ2HP2F.js} +6 -6
  62. package/dist/safe-bash/command-chunks/{chunk-OEJM666F.js → chunk-7UC2Q6Z6.js} +5 -5
  63. package/dist/safe-bash/command-chunks/{chunk-COKYZUBW.js → chunk-AJI55RS7.js} +1 -1
  64. package/dist/safe-bash/command-chunks/{chunk-WXRYDALR.js → chunk-BBAB7LC4.js} +4 -4
  65. package/dist/safe-bash/command-chunks/{chunk-QYMEASQ6.js → chunk-BEHUSUOY.js} +4 -4
  66. package/dist/safe-bash/command-chunks/{chunk-Z2JW6M2D.js → chunk-BK7ISUJL.js} +3 -3
  67. package/dist/safe-bash/command-chunks/{chunk-33YCKZZX.js → chunk-C5KLFZGT.js} +6 -6
  68. package/dist/safe-bash/command-chunks/{chunk-TVH4JORU.js → chunk-C5QDEB3I.js} +3 -3
  69. package/dist/safe-bash/command-chunks/{chunk-N4R2SHSS.js → chunk-CCZZVCHX.js} +2 -2
  70. package/dist/safe-bash/command-chunks/{chunk-2VLAXKTS.js → chunk-CTDC4LJT.js} +121 -85
  71. package/dist/safe-bash/command-chunks/{chunk-S6R3IB36.js → chunk-D55REQA3.js} +1 -1
  72. package/dist/safe-bash/command-chunks/{chunk-Y4EYCZFT.js → chunk-D6WJY6QO.js} +10 -10
  73. package/dist/safe-bash/command-chunks/{chunk-2CORNDGF.js → chunk-DBLHCJJU.js} +2 -2
  74. package/dist/safe-bash/command-chunks/{chunk-SPW4GW4Z.js → chunk-DFI7QF3M.js} +2 -2
  75. package/dist/safe-bash/command-chunks/{chunk-456PHA3L.js → chunk-DMCI6T6N.js} +1 -1
  76. package/dist/safe-bash/command-chunks/{chunk-TW73OXPR.js → chunk-EJTNVXWF.js} +6 -6
  77. package/dist/safe-bash/command-chunks/{chunk-QD7ZRDUN.js → chunk-ET2VPDUA.js} +1 -1
  78. package/dist/safe-bash/command-chunks/{chunk-CJQSAATC.js → chunk-EXOQGXEU.js} +26 -26
  79. package/dist/safe-bash/command-chunks/{chunk-CRV2Q3PB.js → chunk-EZ4NQIPL.js} +1 -1
  80. package/dist/safe-bash/command-chunks/chunk-FWKLBDMK.js +0 -0
  81. package/dist/safe-bash/command-chunks/{chunk-22MOB45U.js → chunk-FWPVQGYK.js} +6 -6
  82. package/dist/safe-bash/command-chunks/{chunk-QC5RMGSA.js → chunk-G3RUXKVY.js} +3 -3
  83. package/dist/safe-bash/command-chunks/{chunk-JYUJAF4L.js → chunk-G7NENPYV.js} +4 -0
  84. package/dist/safe-bash/command-chunks/{chunk-KCOJA7EM.js → chunk-GKILM4HZ.js} +7 -7
  85. package/dist/safe-bash/command-chunks/{chunk-HTVIYLVB.js → chunk-GNXTMSYN.js} +4 -4
  86. package/dist/safe-bash/command-chunks/{chunk-D2ASPM7R.js → chunk-GOBUDKZ3.js} +3 -3
  87. package/dist/safe-bash/command-chunks/{chunk-RNSKXOG3.js → chunk-GVWVRPG6.js} +6 -6
  88. package/dist/safe-bash/command-chunks/{chunk-FDCIPJBQ.js → chunk-HCKYUQ3L.js} +7 -7
  89. package/dist/safe-bash/command-chunks/{chunk-AGLK7OJR.js → chunk-HDSIIQBS.js} +1 -1
  90. package/dist/safe-bash/command-chunks/{chunk-DM2CPMB4.js → chunk-HKOMXGJS.js} +2 -2
  91. package/dist/safe-bash/command-chunks/{chunk-IT7TAC3F.js → chunk-HVW53ARH.js} +16 -16
  92. package/dist/safe-bash/command-chunks/{chunk-M7QE2MN7.js → chunk-I4GMCWAT.js} +6 -6
  93. package/dist/safe-bash/command-chunks/{chunk-HWQ2UHMT.js → chunk-IHSOOSNC.js} +9 -9
  94. package/dist/safe-bash/command-chunks/{chunk-LCZDBW55.js → chunk-JAHJWVGF.js} +5 -5
  95. package/dist/safe-bash/command-chunks/{chunk-MOZD7RUY.js → chunk-JORIVUPM.js} +27 -11
  96. package/dist/safe-bash/command-chunks/{chunk-PMAM4N33.js → chunk-JUJHYPYL.js} +9 -9
  97. package/dist/safe-bash/command-chunks/{chunk-ENT3IV2G.js → chunk-KBUBSMCQ.js} +12 -12
  98. package/dist/safe-bash/command-chunks/{chunk-ZXR6LXV5.js → chunk-KCE5D4Z4.js} +48 -4
  99. package/dist/safe-bash/command-chunks/{chunk-FIIAYCWS.js → chunk-KZ5ODST6.js} +2 -2
  100. package/dist/safe-bash/command-chunks/{chunk-PNGDJA6M.js → chunk-LD7BONZY.js} +2 -2
  101. package/dist/safe-bash/command-chunks/{chunk-KJ4XXZIL.js → chunk-M3Z5PU2M.js} +582 -59
  102. package/dist/safe-bash/command-chunks/{chunk-LXLLA4PM.js → chunk-MKX4JAZ6.js} +17 -17
  103. package/dist/safe-bash/command-chunks/{chunk-RQIQ75W5.js → chunk-MNHBQBF6.js} +5 -5
  104. package/dist/safe-bash/command-chunks/{chunk-A2CLZMQZ.js → chunk-MPKY37QR.js} +1 -1
  105. package/dist/safe-bash/command-chunks/{chunk-K5GB2YMN.js → chunk-MUUWBZIC.js} +10 -10
  106. package/dist/safe-bash/command-chunks/{chunk-JOCFI7TG.js → chunk-N32GSM3J.js} +1 -1
  107. package/dist/safe-bash/command-chunks/{chunk-EUT24Y5Z.js → chunk-NKTULXVD.js} +8 -8
  108. package/dist/safe-bash/command-chunks/{chunk-5HPU7D36.js → chunk-NMPED6L5.js} +4 -4
  109. package/dist/safe-bash/command-chunks/{chunk-QZZ73J2O.js → chunk-NPFHUS4X.js} +6 -6
  110. package/dist/safe-bash/command-chunks/{chunk-X7FA7ZD5.js → chunk-O675URF4.js} +8 -8
  111. package/dist/safe-bash/command-chunks/{chunk-R6EGGK5M.js → chunk-P7EL2FWW.js} +7 -7
  112. package/dist/safe-bash/command-chunks/{chunk-YS25EI54.js → chunk-PCCFLPUQ.js} +2 -2
  113. package/dist/safe-bash/command-chunks/{chunk-RRL3Y562.js → chunk-PI6MOMHA.js} +11 -11
  114. package/dist/safe-bash/command-chunks/{chunk-26VCZHLJ.js → chunk-PIOQBOEK.js} +1 -1
  115. package/dist/safe-bash/command-chunks/chunk-PK36TVXB.js +175 -0
  116. package/dist/safe-bash/command-chunks/{chunk-3Q247UDJ.js → chunk-PKLJRB7W.js} +264 -129
  117. package/dist/safe-bash/command-chunks/{chunk-6CCQI6XZ.js → chunk-PSCOXGCA.js} +12 -12
  118. package/dist/safe-bash/command-chunks/{chunk-XPD636C4.js → chunk-PVGZMLC6.js} +3 -3
  119. package/dist/safe-bash/command-chunks/{chunk-JQVHUSDD.js → chunk-PXWS3Q7L.js} +5 -5
  120. package/dist/safe-bash/command-chunks/{chunk-HDJVJTCK.js → chunk-QFF5KBOM.js} +9 -9
  121. package/dist/safe-bash/command-chunks/{chunk-MPUHH2KR.js → chunk-QM2HZJSJ.js} +3 -3
  122. package/dist/safe-bash/command-chunks/{chunk-UAXSE3XE.js → chunk-R2BMZAHG.js} +5 -5
  123. package/dist/safe-bash/command-chunks/{chunk-KB7DUBVL.js → chunk-RGOQKIG6.js} +5 -5
  124. package/dist/safe-bash/command-chunks/{chunk-D2KZ66W4.js → chunk-RLCQ7BN3.js} +187 -39
  125. package/dist/safe-bash/command-chunks/{chunk-B5LDP7AA.js → chunk-S2N2V5U4.js} +2 -2
  126. package/dist/safe-bash/command-chunks/{chunk-OA75SGN2.js → chunk-SGPCXAG7.js} +7 -7
  127. package/dist/safe-bash/command-chunks/{chunk-QUM3SYAJ.js → chunk-SYSX46IV.js} +3 -3
  128. package/dist/safe-bash/command-chunks/chunk-T3E5RV3U.js +737 -0
  129. package/dist/safe-bash/command-chunks/{chunk-YORJDX4V.js → chunk-T5ERNELL.js} +4 -4
  130. package/dist/safe-bash/command-chunks/{chunk-ZEX53S5I.js → chunk-T6C5QP7T.js} +6368 -6230
  131. package/dist/safe-bash/command-chunks/{chunk-ATTWQVR2.js → chunk-TKRLZIFI.js} +17 -17
  132. package/dist/safe-bash/command-chunks/{chunk-ZMHEGDU2.js → chunk-TODWFDYB.js} +2 -2
  133. package/dist/safe-bash/command-chunks/{chunk-XVLWZTPY.js → chunk-TQEB4DH4.js} +543 -144
  134. package/dist/safe-bash/command-chunks/{chunk-36XGIPOG.js → chunk-U5TWQFZY.js} +1 -1
  135. package/dist/safe-bash/command-chunks/{chunk-APEWTWCC.js → chunk-UAF4IX5H.js} +6 -6
  136. package/dist/safe-bash/command-chunks/{chunk-6VPQ3CDZ.js → chunk-V37D6AHO.js} +5 -5
  137. package/dist/safe-bash/command-chunks/{chunk-RID6VYS3.js → chunk-V6XBEYPC.js} +8 -8
  138. package/dist/safe-bash/command-chunks/{chunk-WJCN2IXI.js → chunk-VQOINPVF.js} +2 -2
  139. package/dist/safe-bash/command-chunks/{chunk-W5YSINXC.js → chunk-VVWXY6IA.js} +6 -6
  140. package/dist/safe-bash/command-chunks/{chunk-HKATEVAP.js → chunk-WPVBUVFK.js} +6 -6
  141. package/dist/safe-bash/command-chunks/{chunk-UYWSIIUX.js → chunk-X53AEG36.js} +7 -7
  142. package/dist/safe-bash/command-chunks/{chunk-L5MCW6CM.js → chunk-X64XGIXZ.js} +9 -155
  143. package/dist/safe-bash/command-chunks/{chunk-Q73EMLLZ.js → chunk-X6RHJ6YN.js} +84 -5
  144. package/dist/safe-bash/command-chunks/{chunk-7PVHO47B.js → chunk-XG6UWQV5.js} +6 -6
  145. package/dist/safe-bash/command-chunks/{chunk-NQDIT667.js → chunk-XIDGHIGB.js} +5 -5
  146. package/dist/safe-bash/command-chunks/{chunk-CV7M2QJU.js → chunk-XLYIVBAR.js} +7 -7
  147. package/dist/safe-bash/command-chunks/{chunk-WVMHRNXZ.js → chunk-YUXTK3XA.js} +3 -3
  148. package/dist/safe-bash/command-chunks/{chunk-SPLOIABU.js → chunk-YXD6VGVG.js} +3 -3
  149. package/dist/safe-bash/command-chunks/{chunk-2ZFLMWOX.js → chunk-Z5BIM5B7.js} +1 -1
  150. package/dist/safe-bash/command-chunks/chunk-ZYLGNIGA.js +156 -0
  151. package/dist/safe-bash/command-chunks/{command-engine-BCUQGJJ4.js → command-engine-X3OLN7N6.js} +150 -67
  152. package/dist/safe-bash/command-chunks/{engine-LAUEWYSQ-DQCEI5HE.js → engine-XUCIFZ7V-LJFGZM6O.js} +1 -1
  153. package/dist/safe-bash/command-chunks/paradox-4FCZE53D-LQPGVMEL.js +365 -0
  154. package/dist/safe-bash/commands/pandoc/index.browser.js +1 -1
  155. package/dist/safe-bash/full-core.browser.js +2 -2
  156. package/dist/safe-bash/plugins/index.browser.js +2 -2
  157. package/dist/safe-bash-command-diff/diff.js +1 -1
  158. package/dist/safe-bash-command-diff/index.js +1 -1
  159. package/dist/safe-bash-command-ffmpeg/index.js +1 -1
  160. package/dist/safe-bash-command-ffprobe/index.js +2 -2
  161. package/dist/safe-bash-command-ffprobe/media.d.ts +3 -1
  162. package/dist/safe-bash-command-ffprobe/media.js +2 -2
  163. package/dist/safe-bash-command-html-to-markdown/budget.js +2 -1
  164. package/dist/safe-bash-command-html-to-markdown/entities.js +4 -3
  165. package/dist/safe-bash-command-html-to-markdown/index.js +564 -110
  166. package/dist/safe-bash-command-html-to-markdown/input.js +6 -5
  167. package/dist/safe-bash-command-html-to-markdown/options.js +2 -1
  168. package/dist/safe-bash-command-html-to-markdown/parser.js +5 -4
  169. package/dist/safe-bash-command-html-to-markdown/render.js +6 -5
  170. package/dist/safe-bash-command-html-to-markdown/text.js +3 -2
  171. package/dist/safe-bash-command-htmlq/index.js +361 -37
  172. package/dist/safe-bash-command-htmlq/tree.d.ts +3 -2
  173. package/dist/safe-bash-command-pandoc/command.js +7 -7
  174. package/dist/safe-bash-command-pandoc/index.js +55 -55
  175. package/dist/safe-bash-command-patch/index.js +6 -6
  176. package/dist/safe-bash-command-patch/patch-envelope.js +53 -3
  177. package/dist/safe-bash-command-patch/patch-formats.d.ts +2 -2
  178. package/dist/safe-bash-command-patch/patch-formats.js +2 -2
  179. package/dist/safe-bash-command-patch/patch-gnu-reject.d.ts +2 -1
  180. package/dist/safe-bash-command-patch/patch-gnu-reject.js +4 -3
  181. package/dist/safe-bash-command-patch/patch-publication.js +2 -1
  182. package/dist/safe-bash-command-patch/patch.js +6 -6
  183. package/dist/safe-bash-command-patch/unified.d.ts +10 -2
  184. package/dist/safe-bash-command-patch/unified.js +1 -1
  185. package/dist/safe-bash-command-pdftk/index.d.ts +6 -2
  186. package/dist/safe-bash-command-pdftk/index.js +830 -271
  187. package/dist/safe-bash-command-pptx/command-engine.d.ts +3 -0
  188. package/dist/safe-bash-command-pptx/engine.js +1 -1
  189. package/dist/safe-bash-command-pptx/index.js +9 -2
  190. package/dist/safe-bash-command-soffice/index.js +1 -1
  191. package/dist/safe-bash-command-ssconvert/index.js +2 -2
  192. package/dist/safe-bash-command-xmllint/index.js +22 -31
  193. package/dist/safe-bash-presentation-engine/accessibility.js +31 -30
  194. package/dist/safe-bash-presentation-engine/animation-editing.js +16 -15
  195. package/dist/safe-bash-presentation-engine/animations.js +16 -15
  196. package/dist/safe-bash-presentation-engine/backgrounds.js +17 -16
  197. package/dist/safe-bash-presentation-engine/bytes.js +3 -3
  198. package/dist/safe-bash-presentation-engine/chart-editing.js +34 -33
  199. package/dist/safe-bash-presentation-engine/chart-object-operations.js +25 -24
  200. package/dist/safe-bash-presentation-engine/charts.js +31 -30
  201. package/dist/safe-bash-presentation-engine/command-placeholder.js +59 -56
  202. package/dist/safe-bash-presentation-engine/comments.js +17 -16
  203. package/dist/safe-bash-presentation-engine/connector-operations.js +32 -31
  204. package/dist/safe-bash-presentation-engine/connectors.js +29 -28
  205. package/dist/safe-bash-presentation-engine/content-types.js +4 -4
  206. package/dist/safe-bash-presentation-engine/creation.js +6 -6
  207. package/dist/safe-bash-presentation-engine/diff.js +32 -31
  208. package/dist/safe-bash-presentation-engine/drawing-enums.d.ts +10 -10
  209. package/dist/safe-bash-presentation-engine/drawing-format.js +20 -19
  210. package/dist/safe-bash-presentation-engine/drawing-operations.js +31 -30
  211. package/dist/safe-bash-presentation-engine/drawing-schema.js +21 -20
  212. package/dist/safe-bash-presentation-engine/equations.js +17 -16
  213. package/dist/safe-bash-presentation-engine/errors.js +2 -2
  214. package/dist/safe-bash-presentation-engine/fields.js +17 -16
  215. package/dist/safe-bash-presentation-engine/font-metrics.js +3 -3
  216. package/dist/safe-bash-presentation-engine/image-extraction.js +20 -19
  217. package/dist/safe-bash-presentation-engine/image-formatting.js +32 -31
  218. package/dist/safe-bash-presentation-engine/image-insertion.js +18 -17
  219. package/dist/safe-bash-presentation-engine/image-replacement.js +21 -20
  220. package/dist/safe-bash-presentation-engine/image-value.js +4 -4
  221. package/dist/safe-bash-presentation-engine/images.js +19 -18
  222. package/dist/safe-bash-presentation-engine/index.d.ts +5 -1
  223. package/dist/safe-bash-presentation-engine/index.js +109 -96
  224. package/dist/safe-bash-presentation-engine/layouts.js +16 -15
  225. package/dist/safe-bash-presentation-engine/length.js +3 -3
  226. package/dist/safe-bash-presentation-engine/links.js +16 -15
  227. package/dist/safe-bash-presentation-engine/masters.js +15 -14
  228. package/dist/safe-bash-presentation-engine/media-editing.js +24 -23
  229. package/dist/safe-bash-presentation-engine/media-extraction.js +17 -16
  230. package/dist/safe-bash-presentation-engine/media.js +16 -15
  231. package/dist/safe-bash-presentation-engine/memberships.js +15 -14
  232. package/dist/safe-bash-presentation-engine/notes.js +16 -15
  233. package/dist/safe-bash-presentation-engine/ole-enum.js +4 -4
  234. package/dist/safe-bash-presentation-engine/ole-insertion.js +20 -19
  235. package/dist/safe-bash-presentation-engine/opaque-objects.js +9 -9
  236. package/dist/safe-bash-presentation-engine/package-reader.js +5 -5
  237. package/dist/safe-bash-presentation-engine/package-tools.d.ts +3 -0
  238. package/dist/safe-bash-presentation-engine/package-tools.js +27 -17
  239. package/dist/safe-bash-presentation-engine/package-uri.js +3 -3
  240. package/dist/safe-bash-presentation-engine/package-writer.js +4 -4
  241. package/dist/safe-bash-presentation-engine/presentation-model.js +58 -55
  242. package/dist/safe-bash-presentation-engine/presentation-settings.js +14 -13
  243. package/dist/safe-bash-presentation-engine/properties.js +16 -15
  244. package/dist/safe-bash-presentation-engine/relationships.js +4 -4
  245. package/dist/safe-bash-presentation-engine/resource-limits.js +1 -1
  246. package/dist/safe-bash-presentation-engine/retained-archive-staging.d.ts +19 -0
  247. package/dist/safe-bash-presentation-engine/retained-extraction-output.d.ts +18 -0
  248. package/dist/safe-bash-presentation-engine/retained-inspection.js +14 -12
  249. package/dist/safe-bash-presentation-engine/retained-package-extraction.d.ts +22 -0
  250. package/dist/safe-bash-presentation-engine/retained-package-packing.d.ts +19 -0
  251. package/dist/safe-bash-presentation-engine/retained-package.d.ts +2 -0
  252. package/dist/safe-bash-presentation-engine/retained-package.js +6 -4
  253. package/dist/safe-bash-presentation-engine/retained-text.js +19 -17
  254. package/dist/safe-bash-presentation-engine/retained-xml-parts.d.ts +5 -1
  255. package/dist/safe-bash-presentation-engine/retained-xml-publication.d.ts +18 -0
  256. package/dist/safe-bash-presentation-engine/retained-xml-replacement.d.ts +13 -0
  257. package/dist/safe-bash-presentation-engine/sanitize.js +17 -16
  258. package/dist/safe-bash-presentation-engine/selectors.js +10 -10
  259. package/dist/safe-bash-presentation-engine/shape-groups.js +31 -30
  260. package/dist/safe-bash-presentation-engine/shape-operations.js +30 -29
  261. package/dist/safe-bash-presentation-engine/shape-path-operations.js +32 -31
  262. package/dist/safe-bash-presentation-engine/shape-paths.js +16 -15
  263. package/dist/safe-bash-presentation-engine/shape-presets.js +3 -3
  264. package/dist/safe-bash-presentation-engine/shape-selection.js +31 -30
  265. package/dist/safe-bash-presentation-engine/shape-transforms.js +18 -17
  266. package/dist/safe-bash-presentation-engine/shapes.d.ts +1 -1
  267. package/dist/safe-bash-presentation-engine/shapes.js +27 -26
  268. package/dist/safe-bash-presentation-engine/slide-copy.js +17 -16
  269. package/dist/safe-bash-presentation-engine/slide-import.js +18 -17
  270. package/dist/safe-bash-presentation-engine/slide-merge-split.js +20 -19
  271. package/dist/safe-bash-presentation-engine/slide-model.js +43 -42
  272. package/dist/safe-bash-presentation-engine/slide-removal.js +18 -17
  273. package/dist/safe-bash-presentation-engine/slide-transfer-budget.js +9 -9
  274. package/dist/safe-bash-presentation-engine/slides.js +19 -16
  275. package/dist/safe-bash-presentation-engine/table-operations.js +33 -32
  276. package/dist/safe-bash-presentation-engine/table-spans.js +32 -31
  277. package/dist/safe-bash-presentation-engine/tables.js +31 -30
  278. package/dist/safe-bash-presentation-engine/tags.js +16 -15
  279. package/dist/safe-bash-presentation-engine/template-bindings.js +33 -32
  280. package/dist/safe-bash-presentation-engine/template-repeat.js +40 -39
  281. package/dist/safe-bash-presentation-engine/text-fitting.js +27 -26
  282. package/dist/safe-bash-presentation-engine/text-frames.js +27 -26
  283. package/dist/safe-bash-presentation-engine/text-paragraphs.js +27 -26
  284. package/dist/safe-bash-presentation-engine/text-reading.js +11 -11
  285. package/dist/safe-bash-presentation-engine/text-replacement.js +17 -16
  286. package/dist/safe-bash-presentation-engine/text-runs.js +20 -19
  287. package/dist/safe-bash-presentation-engine/themes.js +16 -15
  288. package/dist/safe-bash-presentation-engine/transitions.js +16 -15
  289. package/dist/safe-bash-presentation-engine/validation.js +10 -9
  290. package/dist/safe-bash-presentation-engine/xml-parts.d.ts +2 -0
  291. package/dist/safe-bash-presentation-engine/xml-parts.js +23 -15
  292. package/dist/safe-bash-presentation-engine/xml-view.js +3 -3
  293. package/dist/safe-bash-presentation-engine/xml.js +3 -3
  294. package/dist/safe-bash-regex-engine/index.js +1 -1
  295. package/dist/safe-bash-regex-engine/python-glob.js +1 -1
  296. package/dist/safe-bash-regex-engine/text/regex.d.ts +19 -0
  297. package/dist/safe-bash-regex-engine/text/regex.js +1 -1
  298. package/dist/safe-bash-xml-engine/document.js +3 -3
  299. package/dist/safe-bash-xml-engine/evaluate.js +1 -1
  300. package/dist/safe-bash-xml-engine/index.d.ts +1 -0
  301. package/dist/safe-bash-xml-engine/index.js +8 -4
  302. package/dist/safe-bash-xml-engine/query.js +2 -2
  303. package/dist/safe-bash-xml-engine/recovery.d.ts +10 -0
  304. package/dist/safe-bash-xml-engine/stored-document.d.ts +1 -1
  305. package/dist/safe-bash-xml-engine/stored-document.js +1 -1
  306. package/dist/safe-bash-xml-engine/stored-evaluate.js +1 -1
  307. package/dist/spreadsheet-engine/formulas/functions/python-printf.js +56 -33
  308. package/dist/spreadsheet-format-xls/biff-encrypted-properties.d.ts +1 -1
  309. package/dist/spreadsheet-format-xls/biff-encrypted-properties.js +47 -18
  310. package/dist/spreadsheet-format-xls/biff-properties-merge.d.ts +6 -2
  311. package/dist/spreadsheet-format-xls/biff-properties-merge.js +413 -296
  312. package/dist/spreadsheet-format-xls/biff-properties-write.js +40 -23
  313. package/dist/spreadsheet-format-xls/biff-properties.js +3 -68
  314. package/dist/spreadsheet-format-xls/biff-property-index.d.ts +23 -0
  315. package/dist/spreadsheet-format-xls/biff-property-index.js +93 -0
  316. package/dist/spreadsheet-format-xls/biff-property-name.d.ts +4 -0
  317. package/dist/spreadsheet-format-xls/biff-property-name.js +114 -0
  318. package/dist/spreadsheet-format-xls/biff-property-text.d.ts +6 -0
  319. package/dist/spreadsheet-format-xls/biff-property-text.js +68 -0
  320. package/dist/spreadsheet-format-xls/biff-property-transcode.d.ts +5 -0
  321. package/dist/spreadsheet-format-xls/biff-property-transcode.js +45 -0
  322. package/package.json +6 -3
  323. package/dist/safe-bash/command-chunks/biff-YKPDH35C-MVQIWNKV.js +0 -4974
  324. package/dist/safe-bash/command-chunks/chunk-5Q22ZLNC.js +0 -127
  325. package/dist/safe-bash/command-chunks/chunk-JKLOBSMP.js +0 -56
  326. package/dist/safe-bash/command-chunks/chunk-JYTESTBS.js +0 -99
  327. package/dist/safe-bash/command-chunks/chunk-ZEGNRZV2.js +0 -333
  328. package/dist/safe-bash/command-chunks/paradox-ZWWXYY4J-JYOSWSBL.js +0 -362
  329. package/dist/spreadsheet-format-xls/biff-properties-layout.js +0 -56
@@ -0,0 +1,18 @@
1
+ import { type Id3TextSpan } from "./id3-source.js";
2
+ import type { AudioAst } from "./types.js";
3
+ import type { AudioProbeSource } from "./wav-source.js";
4
+ /** ID3v1 fields are bounded literals; ID3v2 values remain replayable source spans. */
5
+ export type Mp3Tag = Id3TextSpan | {
6
+ readonly key: string;
7
+ readonly value: string;
8
+ };
9
+ /** Strict MPEG/ID3 validation with bounded reads and no encoded sample or picture payloads.
10
+ * One bounded first-frame descriptor preserves declared VBR byte rates for probe writers.
11
+ * onTag preserves ID3v1 insertion order and subsequent ID3v2 replacement. It may run
12
+ * before later validation fails; keep the caller-owned source alive and publish only on success.
13
+ */
14
+ export declare function probeMp3Source(source: AudioProbeSource, options?: {
15
+ signal?: AbortSignal;
16
+ checkpoint?: () => Promise<void>;
17
+ onTag?: (tag: Mp3Tag) => Promise<void>;
18
+ }): Promise<Omit<AudioAst, "data" | "pictures">>;
@@ -0,0 +1,25 @@
1
+ import type { AudioProbeSource } from "./wav-source.js";
2
+ /** A checksum-verified physical page. Payload stays in the caller's source. */
3
+ export interface OggPageSpan {
4
+ readonly offset: number;
5
+ readonly size: number;
6
+ readonly payloadOffset: number;
7
+ readonly flags: number;
8
+ readonly granule: bigint;
9
+ readonly serial: number;
10
+ readonly sequence: number;
11
+ readonly checksum: number;
12
+ /** Owned segment lengths, at most 255 bytes; 255 continues the packet. */
13
+ readonly lacing: Uint8Array;
14
+ }
15
+ /**
16
+ * Scan physical pages without retaining payloads, packet lists or logical-stream
17
+ * state. The consumer owns packet/codec validation and any backing indexes.
18
+ * Ranges and owned byte buffers are at most 16 KiB. A retained source stays open;
19
+ * a sequential iterator is retired on failure or early return. Earlier pages may
20
+ * precede a later error, so publish only after consuming the complete iterator.
21
+ */
22
+ export declare function scanOggPages(source: AudioProbeSource | AsyncIterable<Uint8Array>, options?: {
23
+ signal?: AbortSignal;
24
+ checkpoint?: () => void | Promise<void>;
25
+ }): AsyncGenerator<OggPageSpan, void>;
@@ -0,0 +1,22 @@
1
+ import type { AudioProbeSource } from "./wav-source.js";
2
+ import type { AudioStream } from "./types.js";
3
+ /** Raw UTF-8 comment within the logical comment packet, including its field name. */
4
+ export interface OggCommentSpan {
5
+ readonly offset: number;
6
+ readonly length: number;
7
+ }
8
+ /**
9
+ * Inspect one already-indexed Opus/Vorbis logical stream. Physical Ogg validation,
10
+ * stream ordering, aggregate tags/pictures and source lifetime belong to callers.
11
+ * onComment avoids materializing comments; without it, raw stream tags are collected.
12
+ */
13
+ export declare function probeOggStreamSource(input: {
14
+ readonly head: AudioProbeSource;
15
+ readonly comments?: AudioProbeSource | undefined;
16
+ readonly granule: bigint;
17
+ readonly size: number;
18
+ }, options?: {
19
+ signal?: AbortSignal;
20
+ checkpoint?: () => void | Promise<void>;
21
+ onComment?: (span: OggCommentSpan) => void | Promise<void>;
22
+ }): Promise<AudioStream>;
@@ -158,6 +158,134 @@ async function rejectUnknownImage(source, signal) {
158
158
  throw new UnsupportedImageFormat();
159
159
  }
160
160
 
161
+ // src/pdf-value-storage.ts
162
+ import { PdfFileSource } from "../pdf-ast/index.js";
163
+ var pageBytes = 16384, recordBytes = pageBytes + 8;
164
+ async function pageNumber(source, index, signal) {
165
+ let bytes = await source.read(index * recordBytes, 8, signal);
166
+ return new DataView(bytes.buffer, bytes.byteOffset, 8).getFloat64(0);
167
+ }
168
+ var PdfValueStorage = class {
169
+ constructor(fs, directory, signal) {
170
+ this.fs = fs;
171
+ this.directory = directory;
172
+ this.signal = signal;
173
+ }
174
+ fs;
175
+ directory;
176
+ signal;
177
+ pages = /* @__PURE__ */ new Map();
178
+ runs = [];
179
+ owned = /* @__PURE__ */ new Set();
180
+ end = 8;
181
+ active = Promise.resolve();
182
+ closing;
183
+ allocate(length) {
184
+ if (this.signal.throwIfAborted(), this.closing) throw new Error("PDF value storage is closed");
185
+ if (!Number.isSafeInteger(length) || length < 0 || length > Number.MAX_SAFE_INTEGER - this.end) throw new RangeError("Invalid PDF backing allocation");
186
+ let position = this.end;
187
+ return this.end += length, position;
188
+ }
189
+ operation(position, length, signal, action) {
190
+ let combined = signal ? AbortSignal.any([signal, this.signal]) : this.signal;
191
+ if (combined.throwIfAborted(), this.closing) throw new Error("PDF value storage is closed");
192
+ if (!Number.isSafeInteger(position) || position < 0 || !Number.isSafeInteger(length) || length < 0 || length > this.end - position) throw new RangeError("Invalid PDF backing range");
193
+ let work = this.active.then(() => (combined.throwIfAborted(), action(combined)));
194
+ return this.active = work.then(() => {
195
+ }, () => {
196
+ }), work;
197
+ }
198
+ read(position, length, options) {
199
+ return this.operation(position, length, options?.signal, async (signal) => {
200
+ let result = new Uint8Array(length);
201
+ for (let offset = 0, turns = 0; offset < length; ) {
202
+ ++turns % 64 === 0 && await new Promise((resolve) => setTimeout(resolve, 0)), signal.throwIfAborted();
203
+ let at = position + offset, page = await this.page(Math.floor(at / pageBytes), signal), start = at % pageBytes, count = Math.min(length - offset, pageBytes - start);
204
+ result.set(page.bytes.subarray(start, start + count), offset), offset += count;
205
+ }
206
+ return signal.throwIfAborted(), result;
207
+ });
208
+ }
209
+ write(position, bytes, options) {
210
+ return this.operation(position, bytes.length, options?.signal, async (signal) => {
211
+ for (let offset = 0, turns = 0; offset < bytes.length; ) {
212
+ ++turns % 64 === 0 && await new Promise((resolve) => setTimeout(resolve, 0)), signal.throwIfAborted();
213
+ let at = position + offset, page = await this.page(Math.floor(at / pageBytes), signal), start = at % pageBytes, count = Math.min(bytes.length - offset, pageBytes - start);
214
+ page.bytes.set(bytes.subarray(offset, offset + count), start), page.dirty = !0, offset += count;
215
+ }
216
+ signal.throwIfAborted();
217
+ });
218
+ }
219
+ async page(number, signal) {
220
+ let cached = this.pages.get(number);
221
+ if (cached)
222
+ return this.pages.delete(number), this.pages.set(number, cached), cached;
223
+ this.pages.size === 4 && (await this.flush(signal), this.pages.delete(this.pages.keys().next().value));
224
+ let bytes;
225
+ for (let run of this.runs)
226
+ if (run)
227
+ try {
228
+ let low = 0, high = run.size / recordBytes;
229
+ for (; low < high; ) {
230
+ let middle = Math.floor((low + high) / 2);
231
+ await pageNumber(run, middle, signal) < number ? low = middle + 1 : high = middle;
232
+ }
233
+ if (low < run.size / recordBytes && await pageNumber(run, low, signal) === number) {
234
+ bytes = await run.read(low * recordBytes + 8, pageBytes, signal);
235
+ break;
236
+ }
237
+ } finally {
238
+ await run.releaseCache();
239
+ }
240
+ signal.throwIfAborted();
241
+ let page = { bytes: bytes ?? new Uint8Array(pageBytes), dirty: !1 };
242
+ return this.pages.set(number, page), page;
243
+ }
244
+ async stage(chunks2, signal) {
245
+ let source = await PdfFileSource.fromStream(this.fs, this.directory, chunks2, { signal, chunkBytes: pageBytes, cacheBytes: pageBytes });
246
+ return this.owned.add(source), source;
247
+ }
248
+ async flush(signal) {
249
+ let dirty = [...this.pages].filter(([, page]) => page.dirty).sort(([a], [b]) => a - b);
250
+ if (!dirty.length) return;
251
+ function* records() {
252
+ for (let [number, page] of dirty) {
253
+ let header = new Uint8Array(8);
254
+ new DataView(header.buffer).setFloat64(0, number), yield header, yield page.bytes;
255
+ }
256
+ }
257
+ let current = await this.stage(records(), signal), level = 0;
258
+ for (; this.runs[level]; ) {
259
+ let older = this.runs[level];
260
+ async function* merge() {
261
+ let a = 0, b = 0, turns = 0;
262
+ for (; a < current.size / recordBytes || b < older.size / recordBytes; ) {
263
+ ++turns % 64 === 0 && await new Promise((resolve) => setTimeout(resolve, 0)), signal.throwIfAborted();
264
+ let left = a < current.size / recordBytes ? await pageNumber(current, a, signal) : 1 / 0, right = b < older.size / recordBytes ? await pageNumber(older, b, signal) : 1 / 0, source = left <= right ? current : older, index = left <= right ? a : b;
265
+ yield await source.read(index * recordBytes, 8, signal), yield await source.read(index * recordBytes + 8, pageBytes, signal), left <= right && a++, right <= left && b++;
266
+ }
267
+ }
268
+ let merged = await this.stage(merge(), signal);
269
+ await current.close(), this.owned.delete(current), await older.close(), this.owned.delete(older), this.runs[level] = void 0, current = merged, level++;
270
+ }
271
+ this.runs[level] = current;
272
+ for (let [, page] of dirty) page.dirty = !1;
273
+ }
274
+ close() {
275
+ return this.closing ??= (async () => {
276
+ await this.active, this.pages.clear();
277
+ let failure;
278
+ for (let source of this.owned)
279
+ try {
280
+ await source.close();
281
+ } catch (error) {
282
+ failure ??= { error };
283
+ }
284
+ if (this.owned.clear(), this.runs.length = 0, failure) throw failure.error;
285
+ })();
286
+ }
287
+ };
288
+
161
289
  // src/image-pdf.ts
162
290
  import { PagedStorage } from "@poe-platform/safe-fs/storage";
163
291
 
@@ -169,7 +297,7 @@ function checkLimitInputPixels(width, height, options) {
169
297
  }
170
298
 
171
299
  // src/image-pdf.ts
172
- import { PdfFileSource, PdfRetainedDocument, PdfError, renderRetainedPagePixels } from "../pdf-ast/index.js";
300
+ import { PdfFileSource as PdfFileSource2, PdfRetainedDocument, PdfError, renderRetainedPagePixels } from "../pdf-ast/index.js";
173
301
  import { normalizePath } from "@poe-platform/safe-fs/contracts";
174
302
 
175
303
  // src/codecs/svg-transform.ts
@@ -1742,7 +1870,7 @@ async function openPdfImage(source, fs, directory, signal, options, storage) {
1742
1870
  if (signal.throwIfAborted(), !(bytes instanceof Uint8Array) || bytes.length !== length2) throw new Error("Truncated PDF image source");
1743
1871
  yield bytes;
1744
1872
  }
1745
- })(), retained = await PdfFileSource.fromStream(fs, directory, chunks2, { signal, chunkBytes: 16384, cacheBytes: 65536 }), document, owned = storage ? void 0 : new PagedStorage({ fs, cwd: directory, env: {}, signal }, 4), values = storage ?? owned, cleanup = async () => {
1873
+ })(), retained = await PdfFileSource2.fromStream(fs, directory, chunks2, { signal, chunkBytes: 16384, cacheBytes: 65536 }), document, owned = storage ? void 0 : capabilities.open !== !1 && capabilities.randomAccessWrite !== !1 && fs.open && fs.removeFileConditional ? new PagedStorage({ fs, cwd: directory, env: {}, signal }, 4) : new PdfValueStorage(fs, directory, signal), values = storage ?? owned, cleanup = async () => {
1746
1874
  let failure;
1747
1875
  try {
1748
1876
  await document?.close();
@@ -1762,7 +1890,7 @@ async function openPdfImage(source, fs, directory, signal, options, storage) {
1762
1890
  if (failure) throw failure.error;
1763
1891
  };
1764
1892
  try {
1765
- document = await PdfRetainedDocument.open(retained, { fs, directory }, { signal, recovery: "repair", chunkBytes: 16384, maxNodes: 1 / 0, maxTokenBytes: 1 / 0, maxRecursionDepth: 1 / 0, maxPageTreeDepth: 1 / 0, xref: { arrayStorage: values, storedArrayKeys: ["Index"] }, valueArrays: { containerStorage: values, stringStorage: values, storedStringKeys: ["ActualText"], arrayStorage: values, storedArrayKeys: ["Contents", "Annots", "Kids", "Widths", "W", "Differences", "ON", "OFF", "OCGs"], storedArrayPaths: [["ExtGState", "*", "D"]] } });
1893
+ document = await PdfRetainedDocument.open(retained, { fs, directory }, { signal, recovery: "repair", compactNumbers: !0, compactKeywords: !0, chunkBytes: 16384, maxNodes: 1 / 0, maxTokenBytes: 1 / 0, maxRecursionDepth: 1 / 0, maxPageTreeDepth: 1 / 0, xref: { arrayStorage: values, storedArrayKeys: ["Index"] }, valueArrays: { dictionaryStorage: values, storedDictionaryKeys: ["Font"], containerStorage: values, stringStorage: values, storedStringKeys: ["ActualText"], arrayStorage: values, storedArrayKeys: ["Contents", "Annots", "Kids", "Widths", "W", "Differences", "ON", "OFF", "OCGs"], storedArrayPaths: [["ExtGState", "*", "D"]] } });
1766
1894
  let pages = 0, selected;
1767
1895
  for await (let page of document.pages())
1768
1896
  pages++, page.index <= Math.max(0, settings.page ?? 0) && (selected = page);
@@ -1784,7 +1912,7 @@ async function tryPdfDecode(source, storage, fs, directory, signal, options = {}
1784
1912
  if (!owner) return;
1785
1913
  let failed = !1;
1786
1914
  try {
1787
- let rendered = await renderRetainedPagePixels(owner.page, { fs, directory }, { signal, scale: (settings.density ?? 72) / 72, imageStorage: storage, retainActualText: !0, chunkBytes: 4096, tileSize: 64 }), { width, height } = rendered, length = width * height * 4;
1915
+ let rendered = await renderRetainedPagePixels(owner.page, { fs, directory }, { signal, scale: (settings.density ?? 72) / 72, imageStorage: storage, retainActualText: !0, compactNumbers: !0, compactKeywords: !0, chunkBytes: 4096, tileSize: 64 }), { width, height } = rendered, length = width * height * 4;
1788
1916
  checkLimitInputPixels(width, height, settings);
1789
1917
  let position = storage.allocate(length);
1790
1918
  if (!Number.isSafeInteger(position) || position < 0 || !Number.isSafeInteger(position + length)) throw new RangeError("Invalid PDF image backing allocation");
@@ -7557,7 +7685,7 @@ function* resampleRawBitmapSteps(src, srcW, srcH, dstW, dstH, kernel = "lanczos3
7557
7685
  function* resizeImageSteps(img, spec, postScaleTransform) {
7558
7686
  let work = 0;
7559
7687
  if (img.pages && img.pages > 1 && img.pageHeight && img.height === img.pages * img.pageHeight) {
7560
- let pages = img.pages, pageH = img.pageHeight, pageBytes = img.width * pageH * 4, resizedPages = [];
7688
+ let pages = img.pages, pageH = img.pageHeight, pageBytes2 = img.width * pageH * 4, resizedPages = [];
7561
7689
  for (let p = 0; p < pages; p++) {
7562
7690
  ++work % 16384 === 0 && (yield);
7563
7691
  let singlePage = {
@@ -7565,7 +7693,7 @@ function* resizeImageSteps(img, spec, postScaleTransform) {
7565
7693
  height: pageH,
7566
7694
  pages: 1,
7567
7695
  pageHeight: pageH,
7568
- data: img.data.subarray(p * pageBytes, (p + 1) * pageBytes)
7696
+ data: img.data.subarray(p * pageBytes2, (p + 1) * pageBytes2)
7569
7697
  };
7570
7698
  resizedPages.push(yield* resizeImageSteps(singlePage, spec, postScaleTransform));
7571
7699
  }
@@ -8120,11 +8248,11 @@ function* trimImageSteps(img, options) {
8120
8248
  function* extendImageSteps(img, spec) {
8121
8249
  let work = 0;
8122
8250
  if (img.pages && img.pages > 1 && img.pageHeight && img.height === img.pages * img.pageHeight) {
8123
- let pages = img.pages, pageH = img.pageHeight, pageBytes = img.width * pageH * 4, extendedPages = [];
8251
+ let pages = img.pages, pageH = img.pageHeight, pageBytes2 = img.width * pageH * 4, extendedPages = [];
8124
8252
  for (let p = 0; p < pages; p++)
8125
8253
  ++work % 16384 === 0 && (yield), extendedPages.push(
8126
8254
  yield* extendImageSteps(
8127
- { ...img, height: pageH, pages: 1, pageHeight: pageH, data: img.data.subarray(p * pageBytes, (p + 1) * pageBytes) },
8255
+ { ...img, height: pageH, pages: 1, pageHeight: pageH, data: img.data.subarray(p * pageBytes2, (p + 1) * pageBytes2) },
8128
8256
  spec
8129
8257
  )
8130
8258
  );
@@ -11441,7 +11569,9 @@ async function tryInspectImageMetadata(input, options, operations, encoding, loa
11441
11569
  let supplied = options.filesystem;
11442
11570
  if (!supplied?.capabilities || typeof input == "string" && !supplied.openReadFile) return;
11443
11571
  if (!joined && (options.text || options.create) && !operations.length) return { value: await consume(readImageMetadata(void 0, options)) };
11444
- let storage = supplied.open && supplied.removeFileConditional && supplied.stat ? new PagedStorage5({ fs: supplied, cwd: options.workingDirectory ?? (typeof input == "string" ? dirname4(input) : "."), env: {}, signal }) : void 0, failure, result, consumed = !1;
11572
+ let directory = options.workingDirectory ?? (typeof input == "string" ? dirname4(input) : "."), capabilities = await supplied.capabilitiesFor?.(directory, { signal, create: !0 }) ?? supplied.capabilities;
11573
+ signal.throwIfAborted();
11574
+ let storage = capabilities.open !== !1 && capabilities.randomAccessWrite !== !1 && supplied.open && supplied.removeFileConditional && supplied.stat ? new PagedStorage5({ fs: supplied, cwd: directory, env: {}, signal }) : void 0, failure, result, consumed = !1;
11445
11575
  try {
11446
11576
  let inspect = async (source) => {
11447
11577
  let generated = options.text || options.create;
@@ -1,3 +1,4 @@
1
+ import { type AudioStream } from "../../audio-ast/index.js";
1
2
  import { type MediaAstPlugin, type MediaDocument, type MediaProbeResult, type MediaProbeRecords, type MediaSourceProbeOptions, type MediaProbeSource, type ParseMediaOptions } from "../types.js";
2
3
  export declare function isY4mSignature(bytes: Uint8Array): boolean;
3
4
  export declare function parseY4m(bytes: Uint8Array): MediaDocument;
@@ -26,6 +27,12 @@ export declare function wavAst(): MediaAstPlugin;
26
27
  export declare function isMp3Signature(bytes: Uint8Array): boolean;
27
28
  export declare function mp3Ast(): MediaAstPlugin;
28
29
  export declare function flacAst(): MediaAstPlugin;
30
+ /** Format a validated Ogg audio stream without materializing its sample payload. */
31
+ export declare function probeOggStreamMetadata(stream: AudioStream, size: number, options?: MediaSourceProbeOptions): MediaProbeRecords;
32
+ /** Bounded FLAC-mapped Ogg probe; undefined admits the other Ogg codecs. */
33
+ export declare function probeOggFlacSource(source: MediaProbeSource, options?: MediaSourceProbeOptions & {
34
+ checkpoint?: () => void | Promise<void>;
35
+ }): Promise<MediaProbeRecords | undefined>;
29
36
  export declare function oggAst(): MediaAstPlugin;
30
37
  export declare function isGifSignature(bytes: Uint8Array): boolean;
31
38
  export declare function isPngSignature(bytes: Uint8Array): boolean;
@@ -16,6 +16,14 @@ export interface RetainedXmlDocument {
16
16
  resolveNamespace(node: RetainedXmlNode, prefix: () => ByteSource): Promise<ByteSource | undefined>;
17
17
  children(node: RetainedXmlNode): AsyncGenerator<RetainedXmlNode>;
18
18
  attributes(node: RetainedXmlNode): AsyncGenerator<RetainedXmlNode>;
19
+ /** Local xmlns attributes, in source order. */
20
+ declarations(node: RetainedXmlNode): AsyncGenerator<RetainedXmlNode>;
21
+ /** Element-only document order, including the selected root, without a heap stack. */
22
+ elements(node: RetainedXmlNode): AsyncGenerator<RetainedXmlNode>;
23
+ /** Exact decoded UTF-8 source markup; neither standalone namespace injection nor normalization. */
24
+ markup(node: RetainedXmlNode): ByteSource;
25
+ /** Source markup with direct element children removed; retains text, comments and instructions. */
26
+ shell(node: RetainedXmlNode): ByteSource;
19
27
  namespace(node: RetainedXmlNode): ByteSource;
20
28
  text(node: RetainedXmlNode): ByteSource;
21
29
  raw(range: XmlRange): ByteSource;
@@ -46,6 +46,8 @@ export interface PdfDictEntry {
46
46
  readonly value: PdfCosNode;
47
47
  }
48
48
  export interface PdfCosDict {
49
+ /** Caller-backed ordered entries; entries is empty when this descriptor is present. */
50
+ readonly storedEntries?: PdfStoredItems;
49
51
  readonly kind: "dict";
50
52
  readonly entries: PdfDictEntry[];
51
53
  readonly span?: ByteSpan | undefined;
@@ -0,0 +1,15 @@
1
+ import type { PdfCosDict, PdfDictEntry, PdfStoredItems } from "../ast.js";
2
+ export interface PdfDictionaryEntryRequest {
3
+ readonly kind: "dictionary-entry";
4
+ readonly entries: PdfStoredItems;
5
+ readonly position: number;
6
+ }
7
+ /** Pull one entry through a driver's I/O boundary, retaining source order. */
8
+ export declare class PdfDictionaryCursor {
9
+ private readonly dict;
10
+ private index;
11
+ private position;
12
+ private readonly length;
13
+ constructor(dict: PdfCosDict);
14
+ next(): Generator<PdfDictionaryEntryRequest, IteratorResult<PdfDictEntry, void>, unknown>;
15
+ }
@@ -2,6 +2,10 @@ import type { PdfIndexStorage } from "../cos/object-index.js";
2
2
  import type { PdfFileSource } from "../source.js";
3
3
  import { type PdfContentOperator } from "./operator-parser.js";
4
4
  export interface ParseContentRangeOptions {
5
+ /** Bound ignored keyword spellings while preserving command recovery. */
6
+ readonly compactKeywords?: boolean;
7
+ /** Bound numeric token spelling without changing operand values. */
8
+ readonly compactNumbers?: boolean;
5
9
  /** Preserve inline ActualText bytes on pathStorage for retained consumers. */
6
10
  readonly retainActualText?: boolean;
7
11
  readonly pathStorage?: import("../ast.js").PdfPixelStorage;
@@ -0,0 +1,10 @@
1
+ import { type PdfIndexStorage } from "../cos/object-index.js";
2
+ import type { PdfCosDict, PdfCosNode, PdfDictEntry } from "../ast.js";
3
+ /** Preserve source order and duplicates while keeping only one entry resident. */
4
+ export declare function readPdfDictionaryEntries(dict: PdfCosDict, signal?: AbortSignal): AsyncGenerator<PdfDictEntry, void>;
5
+ /** Same last-key-wins semantics as dictGet, without collecting a retained map. */
6
+ export declare function readPdfDictionaryValue(dict: PdfCosDict, key: string, signal?: AbortSignal): Promise<PdfCosNode | undefined>;
7
+ /** Clone a resource map and fill missing keys from an appearance. Destination
8
+ * duplicates keep their first insertion order and last value; source keys keep
9
+ * their first value. External indexes replace an unbounded resident name map. */
10
+ export declare function mergePdfResourceDictionaries(destination: PdfCosDict, source: PdfCosDict | undefined, indexStorage: PdfIndexStorage, signal?: AbortSignal): Promise<PdfCosDict>;
@@ -1,7 +1,3 @@
1
- /*! Numeric recovery and malformed-command handling adapted from Mozilla PDF.js.
2
- * Copyright 2017 Mozilla Foundation. Licensed under Apache-2.0.
3
- * See licenses/PDFJS-APACHE-2.0.txt and THIRD_PARTY_NOTICES.md.
4
- */
5
1
  import { type ByteSpan, type PdfPixelStorage, type PdfStoredBytes } from "../ast.js";
6
2
  import type { PdfFileSource } from "../source.js";
7
3
  export type CosToken = {
@@ -49,6 +45,7 @@ export type CosToken = {
49
45
  } | {
50
46
  readonly kind: "keyword";
51
47
  readonly value: string;
48
+ readonly truncated?: true;
52
49
  readonly span: ByteSpan;
53
50
  };
54
51
  export declare function isPdfWhitespace(byte: number): boolean;
@@ -61,12 +58,14 @@ declare class CosLexerState {
61
58
  readonly knownCommands?: ReadonlySet<string> | undefined;
62
59
  private readonly onTokenAllocation?;
63
60
  stringMode: StringMode;
61
+ private readonly compactNumbers;
64
62
  private window;
65
63
  private windowStart;
66
64
  pos: number;
67
65
  readonly end: number;
68
66
  readonly maxTokenBytes: number;
69
- constructor(bytes: Uint8Array, start?: number, end?: number, maxTokenBytes?: number, knownCommands?: ReadonlySet<string> | undefined, onTokenAllocation?: ((bytes: number) => void) | undefined, stringMode?: StringMode);
67
+ private readonly keywordLimit;
68
+ constructor(bytes: Uint8Array, start?: number, end?: number, maxTokenBytes?: number, knownCommands?: ReadonlySet<string> | undefined, onTokenAllocation?: ((bytes: number) => void) | undefined, stringMode?: StringMode, compactNumbers?: boolean, compactKeywords?: boolean);
70
69
  private byte;
71
70
  private spanBytes;
72
71
  get offset(): number;
@@ -86,6 +85,10 @@ export declare class CosByteLexer extends CosLexerState {
86
85
  skipWhitespaceAndComments(): void;
87
86
  }
88
87
  export interface CosRangeLexerOptions {
88
+ /** Retain only a prefix of unknown keywords, marking them truncated. */
89
+ readonly compactKeywords?: boolean;
90
+ /** Canonicalize number spellings longer than 2048 characters with bounded scratch. */
91
+ readonly compactNumbers?: boolean;
89
92
  readonly onBackingError?: (error: unknown) => void;
90
93
  /** Decoded string payloads use caller-owned backing instead of token arrays. */
91
94
  readonly stringStorage?: PdfPixelStorage;
@@ -5,9 +5,9 @@ import { type PdfStreamDecodeOptions } from "./filter-stream.js";
5
5
  import { type PdfCrossReference, type PdfCrossReferenceOptions } from "./cross-reference.js";
6
6
  import { PdfObjectIndex, type PdfIndexStorage } from "./object-index.js";
7
7
  import { type ParseCosRangeOptions, type PdfRangeObject } from "./range-parser.js";
8
- export interface PdfObjectReaderOptions extends Omit<ParseCosRangeOptions, "resolveLength" | keyof ValueArrayStorage | "onBackingError">, PdfStreamDecodeOptions {
9
- /** Default backing for selected structural arrays in explicit object lookups.
10
- * Cross-reference bootstrap and stream filter dictionaries remain independent. */
8
+ export interface PdfObjectReaderOptions extends Omit<ParseCosRangeOptions, "resolveLength" | keyof ValueArrayStorage>, PdfStreamDecodeOptions {
9
+ /** Default backing for selected values in object and stream dictionary lookups.
10
+ * Cross-reference bootstrap remains independently configured. */
11
11
  readonly valueArrays?: ValueArrayStorage;
12
12
  readonly cacheBytes?: number;
13
13
  readonly encryption?: PdfEncryptionState;
@@ -28,6 +28,7 @@ export declare class PdfObjectReader {
28
28
  private readonly index;
29
29
  private readonly storage;
30
30
  private readonly streams;
31
+ private readonly backingFailures;
31
32
  private readonly repairedOffsets;
32
33
  private readonly options;
33
34
  private readonly capacity;
@@ -2,6 +2,10 @@ import { type ByteSpan, type PdfCosNode, type PdfCosRef } from "../ast.js";
2
2
  import type { PdfFileSource } from "../source.js";
3
3
  import { type ValueArrayStorage } from "./value-parser.js";
4
4
  export interface ParseCosRangeOptions extends ValueArrayStorage {
5
+ /** Bound unknown keyword spellings without changing recognition or source spans. */
6
+ readonly compactKeywords?: boolean;
7
+ /** Bound numeric spelling scratch; long raw spellings become equivalent canonical numbers. */
8
+ readonly compactNumbers?: boolean;
5
9
  /** @internal Distinguish caller storage failures from recoverable PDF syntax. */
6
10
  readonly onBackingError?: (error: unknown) => void;
7
11
  /** Exclusive direct-value boundary, used for object-stream members. */
@@ -3,6 +3,7 @@ import type { PdfIndexStorage } from "./object-index.js";
3
3
  import type { PdfRetainedOutputObject } from "./retained-writer.js";
4
4
  export interface PdfRetainedObjectsOptions {
5
5
  readonly normalizeContent?: boolean;
6
+ readonly streamMode?: "preserve" | "compress" | "uncompress";
6
7
  /** Number of live indirect objects admitted before parsing their values. */
7
8
  readonly maxObjects?: number;
8
9
  /** Encoded output payload bytes per stream, after decryption. */
@@ -25,6 +25,7 @@ export interface PdfSerializedOutputObject {
25
25
  }
26
26
  export declare function pdfOutputStreamDictionary(value: PdfCosNode, length: number): {
27
27
  entries: import("../ast.js").PdfDictEntry[];
28
+ storedEntries?: import("../ast.js").PdfStoredItems;
28
29
  kind: "dict";
29
30
  span?: import("../ast.js").ByteSpan | undefined;
30
31
  };
@@ -1,6 +1,9 @@
1
1
  import type { PdfCosNode, PdfCosDict, PdfDictEntry, PdfPixelStorage, PdfStoredItems } from "../ast.js";
2
2
  import type { CosToken } from "./lexer.js";
3
3
  export interface ValueArrayStorage {
4
+ readonly dictionaryStorage?: PdfPixelStorage;
5
+ readonly storedDictionaryKeys?: readonly string[];
6
+ readonly storeRootDictionary?: boolean;
4
7
  readonly arrayStorage?: PdfPixelStorage;
5
8
  /** Back suspended parser containers; selected descriptors must share this storage. */
6
9
  readonly containerStorage?: PdfPixelStorage;
@@ -26,11 +29,17 @@ export type ValueContainer = ({
26
29
  kind: "dict";
27
30
  start: number;
28
31
  entries: PdfDictEntry[];
32
+ storedEntries?: PdfStoredItems;
33
+ tail: number;
29
34
  key?: PdfDictEntry["key"];
30
35
  }) & {
31
36
  path: readonly (string | null)[];
32
37
  };
33
38
  export type ValueWork<T> = Generator<void | "token" | PdfCosDict | {
39
+ kind: "dictionary-append";
40
+ entry: PdfDictEntry;
41
+ previous: number;
42
+ } | {
34
43
  kind: "array-append";
35
44
  node: PdfCosNode;
36
45
  previous: number;
@@ -0,0 +1,13 @@
1
+ import { PdfMutableObjectStore } from "../cos/mutable-object-store.js";
2
+ import type { PdfIndexStorage } from "../cos/object-index.js";
3
+ import type { PdfRetainedDocument } from "../retained-document.js";
4
+ export interface RetainedAppendAttachment {
5
+ readonly filename: string;
6
+ readonly chunks: AsyncIterable<Uint8Array>;
7
+ }
8
+ /** Append compressed attachments, preserving existing name-tree structure and
9
+ * duplicate names. Optionally add PushPin annotations to a zero-based page. */
10
+ export declare function appendRetainedAttachments(document: PdfRetainedDocument, target: PdfMutableObjectStore, storage: PdfIndexStorage, attachments: AsyncIterable<RetainedAppendAttachment>, options?: {
11
+ pageIndex?: number;
12
+ signal?: AbortSignal;
13
+ }): Promise<void>;
@@ -0,0 +1,13 @@
1
+ import { type PdfCosRef } from "../ast.js";
2
+ import type { PdfMutableObjectStore } from "../cos/mutable-object-store.js";
3
+ import type { PdfIndexStorage } from "../cos/object-index.js";
4
+ export interface RetainedBookmark {
5
+ readonly title: string;
6
+ /** One-based hierarchy depth; jumps descend through the last child only. */
7
+ readonly level: number;
8
+ /** One-based destination, clamped to the document's page range. */
9
+ readonly pageNumber: number;
10
+ }
11
+ /** Replace outlines in producer order. Parent frames live in caller storage,
12
+ * including their last sibling and immediate child count. */
13
+ export declare function setRetainedBookmarks(store: PdfMutableObjectStore, storage: PdfIndexStorage, root: PdfCosRef, pageCount: number, pageReference: (index: number) => Promise<PdfCosRef>, bookmarks: Iterable<RetainedBookmark> | AsyncIterable<RetainedBookmark>, signal: AbortSignal, maxDepth?: number): Promise<void>;
@@ -1,3 +1,6 @@
1
+ import { type RetainedBookmark } from "./retained-bookmarks.js";
2
+ export type { RetainedBookmark } from "./retained-bookmarks.js";
3
+ import { type RetainedAppendAttachment } from "./retained-append-attachments.js";
1
4
  import { type RetainedStampInput } from "./retained-stamps.js";
2
5
  export type { RetainedStampInput } from "./retained-stamps.js";
3
6
  import { type RetainedInlineImageOptions } from "./retained-inline-images.js";
@@ -10,6 +13,9 @@ import type { PdfIndexStorage } from "../cos/object-index.js";
10
13
  import { PdfRetainedDocument, PdfRetainedPage } from "../retained-document.js";
11
14
  import type { SaveRetainedDocumentOptions } from "./retained-save.js";
12
15
  export type EditRetainedDocumentOptions = Pick<SaveRetainedDocumentOptions, "linearize" | "rotations" | "removeInfo" | "removeMetadata" | "removeStructure" | "removeAcroform" | "removePageLabels" | "maxObjects" | "maxPages" | "maxRecursionDepth" | "signal"> & {
16
+ readonly bookmarks?: Iterable<RetainedBookmark> | AsyncIterable<RetainedBookmark>;
17
+ readonly appendAttachments?: AsyncIterable<RetainedAppendAttachment>;
18
+ readonly attachmentPageIndex?: number;
13
19
  readonly stamps?: Iterable<RetainedStampInput> | AsyncIterable<RetainedStampInput>;
14
20
  readonly generateAppearances?: boolean;
15
21
  readonly flattenAnnotations?: "all" | "print" | "screen";
@@ -11,6 +11,8 @@ export interface SaveRetainedDocumentOptions {
11
11
  readonly linearize?: boolean;
12
12
  /** Retained snapshots keep their encoded streams; normalization prevents packing. */
13
13
  readonly normalizeContent?: boolean;
14
+ /** Decode and rewrite every stream using caller-backed staging. */
15
+ readonly streamMode?: "preserve" | "compress" | "uncompress";
14
16
  readonly objectStreams?: "generate" | "disable" | "preserve";
15
17
  /** Ordered edits; duplicate page selections apply cumulatively. */
16
18
  readonly rotations?: Iterable<RetainedPageRotation> | AsyncIterable<RetainedPageRotation>;
@@ -4,6 +4,8 @@ import type { PdfRetainedDocument, PdfRetainedPage } from "../retained-document.
4
4
  export interface RetainedStampInput {
5
5
  readonly source: PdfRetainedDocument;
6
6
  readonly mode: "overlay" | "underlay";
7
+ /** Preserve encoded content streams and apply collision renames simultaneously. */
8
+ readonly preserveStreams?: boolean;
7
9
  /** Zero-based page pairs, consumed in order; duplicates are applied repeatedly. */
8
10
  readonly pages: Iterable<{
9
11
  sourceIndex: number;
@@ -15,3 +17,10 @@ export interface RetainedStampInput {
15
17
  }
16
18
  /** Stamp one page at a time; content, clone identities and page indexes use caller backing. */
17
19
  export declare function stampRetainedPages(document: PdfRetainedDocument, store: PdfMutableObjectStore, storage: PdfIndexStorage, getPage: (index: number) => Promise<PdfRetainedPage>, stamps: Iterable<RetainedStampInput> | AsyncIterable<RetainedStampInput>, signal: AbortSignal): Promise<void>;
20
+ export declare function retainedStampTransform(dstAttributes: {
21
+ mediaBox: readonly [number, number, number, number];
22
+ rotation: number;
23
+ }, srcAttributes: {
24
+ mediaBox: readonly [number, number, number, number];
25
+ rotation: number;
26
+ }): string;
@@ -1,3 +1,4 @@
1
+ import { type PdfDictionaryEntryRequest } from "../content/dictionary-cursor.js";
1
2
  import type { StoredFontEncoding } from "./stored-encoding.js";
2
3
  import { StoredFontWidths } from "./stored-widths.js";
3
4
  import type { StoredCffFont } from "./stored-cff.js";
@@ -13,7 +14,7 @@ import type { ParsedCosDocument } from "../cos/parser.js";
13
14
  import { type ParsedToUnicodeCMap } from "./cmap.js";
14
15
  import { type ParsedTrueTypeFont } from "./truetype.js";
15
16
  type Matrix6 = [number, number, number, number, number, number];
16
- export type FontResolutionRequest = {
17
+ export type FontResolutionRequest = PdfDictionaryEntryRequest | {
17
18
  kind: "font-encoding";
18
19
  array: PdfCosArray;
19
20
  } | {
@@ -39,6 +40,7 @@ export type FontResolutionRequest = {
39
40
  kind: "resolve";
40
41
  node: PdfCosNode | undefined;
41
42
  storeRootArray?: boolean;
43
+ storeRootDictionary?: boolean;
42
44
  } | {
43
45
  kind: "decode";
44
46
  stream: PdfCosStream;
@@ -25,6 +25,7 @@ export { parseContentOperators, type PdfContentOperator } from "./content/operat
25
25
  export * from "./content/range-operator-parser.js";
26
26
  export * from "./content/range-events.js";
27
27
  export { readStoredItems } from "./content/stored-record.js";
28
+ export { readPdfDictionaryEntries, readPdfDictionaryValue } from "./content/stored-dictionary.js";
28
29
  export * from "./content/serializer.js";
29
30
  export * from "./content/evaluator.js";
30
31
  export * from "./content/retained-evaluator.js";
@@ -70,10 +71,11 @@ export { createRetainedPageCopy, type PdfRetainedPageCopy, copyRetainedPageChunk
70
71
  export { PdfRawTextIndex, type PdfRawTextGlyph, type PdfRawTextIndexOptions, type PdfStoredTextWord, type PdfStoredTextLine, type PdfStoredTextBlock } from "./extract/raw-text-index.js";
71
72
  export { retainedCosObjects, type PdfRetainedObjectsOptions } from "./cos/retained-objects.js";
72
73
  export { saveRetainedDocumentChunks, type SaveRetainedDocumentOptions, type RetainedPageRotation } from "./edit/retained-save.js";
73
- export { editRetainedDocument, PdfDuplicateAttachment, type RetainedAttachmentInput, type EditRetainedDocumentOptions, type RetainedStampInput, type RetainedPageLabel } from "./edit/retained-graph.js";
74
+ export { editRetainedDocument, PdfDuplicateAttachment, type RetainedAttachmentInput, type EditRetainedDocumentOptions, type RetainedBookmark, type RetainedStampInput, type RetainedPageLabel } from "./edit/retained-graph.js";
74
75
  export { copyRetainedAttachments } from "./edit/retained-attachment-copies.js";
75
76
  export { retainedObjectOrder } from "./cos/retained-object-order.js";
76
77
  export { encryptRetainedPdfChunks } from "./cos/retained-encryption.js";
77
78
  export { replaceRetainedPdfName } from "./edit/retained-name-replacement.js";
78
79
  export { QpdfJsonValues } from "./cos/qpdf-json-values.js";
79
80
  export { QpdfJsonDocument, type ApplyQpdfJsonOptions } from "./cos/qpdf-json-document.js";
81
+ export type { RetainedAppendAttachment } from "./edit/retained-append-attachments.js";