@laminapdf/sdk 0.2.0-alpha.2 → 0.2.0-alpha.3

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 (401) hide show
  1. package/README.md +42 -7
  2. package/dist/api.d.ts +5 -2
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +3 -2
  5. package/dist/api.js.map +1 -1
  6. package/dist/builder.d.ts +35 -19
  7. package/dist/builder.d.ts.map +1 -1
  8. package/dist/builder.js +114 -80
  9. package/dist/builder.js.map +1 -1
  10. package/dist/document.d.ts +47 -21
  11. package/dist/document.d.ts.map +1 -1
  12. package/dist/document.js +112 -67
  13. package/dist/document.js.map +1 -1
  14. package/dist/errors.d.ts +5 -5
  15. package/dist/errors.d.ts.map +1 -1
  16. package/dist/errors.js +10 -16
  17. package/dist/errors.js.map +1 -1
  18. package/dist/extract.d.ts +57 -0
  19. package/dist/extract.d.ts.map +1 -0
  20. package/dist/extract.js +5 -0
  21. package/dist/extract.js.map +1 -0
  22. package/dist/font.d.ts +13 -6
  23. package/dist/font.d.ts.map +1 -1
  24. package/dist/font.js +50 -20
  25. package/dist/font.js.map +1 -1
  26. package/dist/generated/codes.d.ts +18 -6
  27. package/dist/generated/codes.d.ts.map +1 -1
  28. package/dist/generated/codes.js +59 -4
  29. package/dist/generated/codes.js.map +1 -1
  30. package/dist/generated/explain.d.ts.map +1 -1
  31. package/dist/generated/explain.js +27 -10
  32. package/dist/generated/explain.js.map +1 -1
  33. package/dist/generated/extract.d.ts +235 -0
  34. package/dist/generated/extract.d.ts.map +1 -0
  35. package/dist/generated/extract.js +4 -0
  36. package/dist/generated/extract.js.map +1 -0
  37. package/dist/init.d.ts +13 -5
  38. package/dist/init.d.ts.map +1 -1
  39. package/dist/init.js +23 -11
  40. package/dist/init.js.map +1 -1
  41. package/dist/internal/handle.d.ts +58 -0
  42. package/dist/internal/handle.d.ts.map +1 -0
  43. package/dist/internal/handle.js +113 -0
  44. package/dist/internal/handle.js.map +1 -0
  45. package/dist/internal/instance.d.ts +56 -0
  46. package/dist/internal/instance.d.ts.map +1 -0
  47. package/dist/internal/instance.js +125 -0
  48. package/dist/internal/instance.js.map +1 -0
  49. package/dist/source/http.js +1 -1
  50. package/dist/source/http.js.map +1 -1
  51. package/dist/source/range.d.ts +6 -1
  52. package/dist/source/range.d.ts.map +1 -1
  53. package/dist/source/range.js +10 -6
  54. package/dist/source/range.js.map +1 -1
  55. package/dist/text.d.ts +3 -3
  56. package/dist/text.d.ts.map +1 -1
  57. package/dist/text.js +3 -3
  58. package/dist/text.js.map +1 -1
  59. package/dist/version.d.ts +1 -1
  60. package/dist/version.js +2 -2
  61. package/dist/version.js.map +1 -1
  62. package/dist/worker/client.d.ts +3 -2
  63. package/dist/worker/client.d.ts.map +1 -1
  64. package/dist/worker/client.js +6 -4
  65. package/dist/worker/client.js.map +1 -1
  66. package/dist/worker/entry.js +1 -1
  67. package/dist/worker/entry.js.map +1 -1
  68. package/dist/worker/server.d.ts.map +1 -1
  69. package/dist/worker/server.js +42 -9
  70. package/dist/worker/server.js.map +1 -1
  71. package/dist/worker/support.d.ts +6 -2
  72. package/dist/worker/support.d.ts.map +1 -1
  73. package/dist/worker/support.js +1 -0
  74. package/dist/worker/support.js.map +1 -1
  75. package/dist/worker/types.d.ts +8 -1
  76. package/dist/worker/types.d.ts.map +1 -1
  77. package/docs/AGENTS.md +14 -0
  78. package/docs/api/README.md +147 -0
  79. package/docs/api/classes/Builder.md +467 -0
  80. package/docs/api/classes/Document.md +742 -0
  81. package/docs/api/classes/Font.md +74 -0
  82. package/docs/api/classes/Image.md +140 -0
  83. package/docs/api/classes/LaminaPdfError.md +189 -0
  84. package/docs/api/classes/Page.md +178 -0
  85. package/docs/api/classes/PageRef.md +253 -0
  86. package/docs/api/classes/PageText.md +129 -0
  87. package/docs/api/classes/PageTextRun.md +167 -0
  88. package/docs/api/classes/PendingPath.md +97 -0
  89. package/docs/api/classes/SaveJob.md +205 -0
  90. package/docs/api/classes/Surface.md +326 -0
  91. package/docs/api/classes/Transaction.md +111 -0
  92. package/docs/api/functions/callbackSource.md +33 -0
  93. package/docs/api/functions/httpRangeSource.md +48 -0
  94. package/docs/api/functions/init.md +36 -0
  95. package/docs/api/functions/isExtractLoaded.md +21 -0
  96. package/docs/api/functions/isInitialized.md +19 -0
  97. package/docs/api/functions/isLaminaPdfError.md +41 -0
  98. package/docs/api/functions/isTextLoaded.md +19 -0
  99. package/docs/api/functions/loadExtract.md +28 -0
  100. package/docs/api/functions/loadText.md +28 -0
  101. package/docs/api/functions/onLeak.md +29 -0
  102. package/docs/api/functions/reset.md +22 -0
  103. package/docs/api/functions/wasmMemory.md +22 -0
  104. package/docs/api/interfaces/BuilderOptions.md +108 -0
  105. package/docs/api/interfaces/ByteRange.md +29 -0
  106. package/docs/api/interfaces/ChunkOptions.md +37 -0
  107. package/docs/api/interfaces/Diagnostic.md +67 -0
  108. package/docs/api/interfaces/ExtractOptions.md +92 -0
  109. package/docs/api/interfaces/ExtractResult.md +37 -0
  110. package/docs/api/interfaces/FontInfo.md +37 -0
  111. package/docs/api/interfaces/HttpRangeOptions.md +78 -0
  112. package/docs/api/interfaces/InitOptions.md +40 -0
  113. package/docs/api/interfaces/Leak.md +21 -0
  114. package/docs/api/interfaces/Location.md +53 -0
  115. package/docs/api/interfaces/OpLog.md +25 -0
  116. package/docs/api/interfaces/OpenOptions.md +37 -0
  117. package/docs/api/interfaces/PageTextOptions.md +21 -0
  118. package/docs/api/interfaces/PathBuilder.md +195 -0
  119. package/docs/api/interfaces/QuadPoint.md +25 -0
  120. package/docs/api/interfaces/RangeOptions.md +54 -0
  121. package/docs/api/interfaces/RangeSource.md +59 -0
  122. package/docs/api/interfaces/StrokeStyle.md +61 -0
  123. package/docs/api/interfaces/TagSpec.md +69 -0
  124. package/docs/api/interfaces/TextBoxOptions.md +93 -0
  125. package/docs/api/interfaces/TextGlyph.md +29 -0
  126. package/docs/api/interfaces/TextOptions.md +101 -0
  127. package/docs/api/interfaces/WasmMemory.md +37 -0
  128. package/docs/api/type-aliases/AfRelationship.md +15 -0
  129. package/docs/api/type-aliases/Align.md +15 -0
  130. package/docs/api/type-aliases/ArtifactKind.md +15 -0
  131. package/docs/api/type-aliases/AttachmentOptions.md +15 -0
  132. package/docs/api/type-aliases/BlendMode.md +15 -0
  133. package/docs/api/type-aliases/BoxRect.md +15 -0
  134. package/docs/api/type-aliases/BuildOptions.md +15 -0
  135. package/docs/api/type-aliases/Cell.md +71 -0
  136. package/docs/api/type-aliases/Chunk.md +79 -0
  137. package/docs/api/type-aliases/Color.md +16 -0
  138. package/docs/api/type-aliases/Coordinates.md +55 -0
  139. package/docs/api/type-aliases/Direction.md +15 -0
  140. package/docs/api/type-aliases/DocumentInfo.md +15 -0
  141. package/docs/api/type-aliases/DropReason.md +15 -0
  142. package/docs/api/type-aliases/Dropped.md +59 -0
  143. package/docs/api/type-aliases/Edited.md +15 -0
  144. package/docs/api/type-aliases/ErrorCode.md +15 -0
  145. package/docs/api/type-aliases/ErrorKind.md +15 -0
  146. package/docs/api/type-aliases/ExtractFormat.md +15 -0
  147. package/docs/api/type-aliases/ExtractedBlock.md +82 -0
  148. package/docs/api/type-aliases/ExtractedPage.md +65 -0
  149. package/docs/api/type-aliases/ExtractedSource.md +48 -0
  150. package/docs/api/type-aliases/Extraction.md +22 -0
  151. package/docs/api/type-aliases/FillRule.md +15 -0
  152. package/docs/api/type-aliases/Fit.md +15 -0
  153. package/docs/api/type-aliases/Flags.md +15 -0
  154. package/docs/api/type-aliases/Generator.md +41 -0
  155. package/docs/api/type-aliases/GlyphQuad.md +15 -0
  156. package/docs/api/type-aliases/InfoPatch.md +15 -0
  157. package/docs/api/type-aliases/LaminaPdfWarning.md +16 -0
  158. package/docs/api/type-aliases/LimitName.md +15 -0
  159. package/docs/api/type-aliases/Limits.md +15 -0
  160. package/docs/api/type-aliases/LineBox.md +15 -0
  161. package/docs/api/type-aliases/LineCap.md +15 -0
  162. package/docs/api/type-aliases/LineJoin.md +15 -0
  163. package/docs/api/type-aliases/LinkTarget.md +15 -0
  164. package/docs/api/type-aliases/Metadata.md +15 -0
  165. package/docs/api/type-aliases/Op.md +15 -0
  166. package/docs/api/type-aliases/OutlineEntry.md +15 -0
  167. package/docs/api/type-aliases/Overflow.md +15 -0
  168. package/docs/api/type-aliases/PageInfo.md +15 -0
  169. package/docs/api/type-aliases/PageLabel.md +15 -0
  170. package/docs/api/type-aliases/PageSizeName.md +15 -0
  171. package/docs/api/type-aliases/Point.md +15 -0
  172. package/docs/api/type-aliases/Profile.md +15 -0
  173. package/docs/api/type-aliases/Progress.md +15 -0
  174. package/docs/api/type-aliases/ReadingOrder.md +15 -0
  175. package/docs/api/type-aliases/Rect.md +15 -0
  176. package/docs/api/type-aliases/Region.md +31 -0
  177. package/docs/api/type-aliases/RenderMode.md +15 -0
  178. package/docs/api/type-aliases/Rotation.md +15 -0
  179. package/docs/api/type-aliases/SaveOptions.md +15 -0
  180. package/docs/api/type-aliases/SaveReport.md +15 -0
  181. package/docs/api/type-aliases/Span.md +63 -0
  182. package/docs/api/type-aliases/SplitOn.md +15 -0
  183. package/docs/api/type-aliases/Standard14.md +15 -0
  184. package/docs/api/type-aliases/StructRef.md +41 -0
  185. package/docs/api/type-aliases/StructSource.md +17 -0
  186. package/docs/api/type-aliases/TableDetector.md +15 -0
  187. package/docs/api/type-aliases/TableMode.md +15 -0
  188. package/docs/api/type-aliases/TableScope.md +15 -0
  189. package/docs/api/type-aliases/Tag.md +15 -0
  190. package/docs/api/type-aliases/TagName.md +15 -0
  191. package/docs/api/type-aliases/TextLayout.md +15 -0
  192. package/docs/api/type-aliases/TextRange.md +33 -0
  193. package/docs/api/type-aliases/TextRunInfo.md +15 -0
  194. package/docs/api/type-aliases/Transform.md +15 -0
  195. package/docs/api/type-aliases/UndoOutcome.md +15 -0
  196. package/docs/api/type-aliases/ViewerPreferences.md +15 -0
  197. package/docs/api/type-aliases/WarningCode.md +15 -0
  198. package/docs/api/type-aliases/WasmSource.md +16 -0
  199. package/docs/api/variables/Matrix.md +99 -0
  200. package/docs/api/variables/PAGE_SIZES.md +15 -0
  201. package/docs/api/variables/TAG_NAMES.md +15 -0
  202. package/docs/errors/README.md +156 -0
  203. package/docs/errors/aes-padding-invalid.md +34 -0
  204. package/docs/errors/already-initialized.md +34 -0
  205. package/docs/errors/binary-output-to-terminal.md +35 -0
  206. package/docs/errors/builder-finished.md +35 -0
  207. package/docs/errors/cancelled.md +35 -0
  208. package/docs/errors/cmap-invalid.md +42 -0
  209. package/docs/errors/collection-index.md +33 -0
  210. package/docs/errors/color-components.md +33 -0
  211. package/docs/errors/content-bad-operands.md +36 -0
  212. package/docs/errors/content-path-unpainted.md +36 -0
  213. package/docs/errors/content-resource-missing.md +37 -0
  214. package/docs/errors/content-syntax.md +36 -0
  215. package/docs/errors/content-unbalanced-bt.md +36 -0
  216. package/docs/errors/content-unbalanced-marked.md +36 -0
  217. package/docs/errors/content-unbalanced-q.md +36 -0
  218. package/docs/errors/content-unknown-operator.md +37 -0
  219. package/docs/errors/data-pending.md +34 -0
  220. package/docs/errors/decompress.md +34 -0
  221. package/docs/errors/device-color-without-output-intent.md +33 -0
  222. package/docs/errors/direct-page.md +34 -0
  223. package/docs/errors/disposed.md +34 -0
  224. package/docs/errors/document-changed.md +34 -0
  225. package/docs/errors/embedded-file-forbidden.md +35 -0
  226. package/docs/errors/embedded-file-without-mime-type.md +36 -0
  227. package/docs/errors/encoding-full.md +34 -0
  228. package/docs/errors/encrypted-base.md +33 -0
  229. package/docs/errors/extract-limit-blocks.md +35 -0
  230. package/docs/errors/extract-module-not-loaded.md +37 -0
  231. package/docs/errors/extract-reading-order-ambiguous.md +32 -0
  232. package/docs/errors/extract-struct-tree-ignored.md +32 -0
  233. package/docs/errors/extract-table-ambiguous.md +32 -0
  234. package/docs/errors/extract-table-limit.md +35 -0
  235. package/docs/errors/extract-untagged-content.md +32 -0
  236. package/docs/errors/fetch-failed.md +34 -0
  237. package/docs/errors/flate-truncated.md +34 -0
  238. package/docs/errors/font-invalid.md +36 -0
  239. package/docs/errors/font-mismatch.md +34 -0
  240. package/docs/errors/font-not-embeddable.md +34 -0
  241. package/docs/errors/font-not-embedded.md +35 -0
  242. package/docs/errors/font-not-shapable.md +33 -0
  243. package/docs/errors/glyph-out-of-range.md +34 -0
  244. package/docs/errors/glyph-without-unicode.md +35 -0
  245. package/docs/errors/heading-level-skipped.md +36 -0
  246. package/docs/errors/image-data-length.md +33 -0
  247. package/docs/errors/image-too-large.md +32 -0
  248. package/docs/errors/inline-image-unterminated.md +36 -0
  249. package/docs/errors/input-unreadable.md +37 -0
  250. package/docs/errors/instance-reset.md +34 -0
  251. package/docs/errors/invalid-argument.md +33 -0
  252. package/docs/errors/invalid-axis-value.md +32 -0
  253. package/docs/errors/invalid-box.md +34 -0
  254. package/docs/errors/invalid-color.md +32 -0
  255. package/docs/errors/invalid-command-line.md +44 -0
  256. package/docs/errors/invalid-date.md +34 -0
  257. package/docs/errors/invalid-entry.md +34 -0
  258. package/docs/errors/invalid-feature.md +32 -0
  259. package/docs/errors/invalid-font.md +32 -0
  260. package/docs/errors/invalid-geometry.md +32 -0
  261. package/docs/errors/invalid-icc-profile.md +32 -0
  262. package/docs/errors/invalid-image.md +33 -0
  263. package/docs/errors/invalid-op-log.md +33 -0
  264. package/docs/errors/invalid-page-label.md +34 -0
  265. package/docs/errors/invalid-page-labels.md +32 -0
  266. package/docs/errors/invalid-page-range.md +37 -0
  267. package/docs/errors/invalid-rotate.md +34 -0
  268. package/docs/errors/invalid-structure-nesting.md +38 -0
  269. package/docs/errors/invalid-structure.md +34 -0
  270. package/docs/errors/invalid-text-range.md +33 -0
  271. package/docs/errors/job-finished.md +34 -0
  272. package/docs/errors/limit-exceeded.md +38 -0
  273. package/docs/errors/link-without-contents.md +33 -0
  274. package/docs/errors/link-without-structure.md +37 -0
  275. package/docs/errors/missing-alt-text.md +33 -0
  276. package/docs/errors/missing-glyph.md +33 -0
  277. package/docs/errors/missing-header.md +37 -0
  278. package/docs/errors/missing-lang.md +32 -0
  279. package/docs/errors/missing-root.md +34 -0
  280. package/docs/errors/missing-title.md +32 -0
  281. package/docs/errors/name-tree-node-skipped.md +34 -0
  282. package/docs/errors/nested-transaction.md +34 -0
  283. package/docs/errors/no-pending-save.md +32 -0
  284. package/docs/errors/no-transaction.md +33 -0
  285. package/docs/errors/not-initialized.md +35 -0
  286. package/docs/errors/not-pdf.md +33 -0
  287. package/docs/errors/not-rebased.md +35 -0
  288. package/docs/errors/object-number-out-of-range.md +38 -0
  289. package/docs/errors/objstm-index-mismatch.md +36 -0
  290. package/docs/errors/out-of-memory.md +38 -0
  291. package/docs/errors/outline-cycle.md +34 -0
  292. package/docs/errors/outline-item-skipped.md +34 -0
  293. package/docs/errors/output-unwritable.md +37 -0
  294. package/docs/errors/overwrite-refused.md +36 -0
  295. package/docs/errors/page-count-mismatch.md +34 -0
  296. package/docs/errors/page-index-out-of-range.md +34 -0
  297. package/docs/errors/page-tree-node-skipped.md +35 -0
  298. package/docs/errors/password-required.md +36 -0
  299. package/docs/errors/path-outside-roots.md +32 -0
  300. package/docs/errors/perms-mismatch.md +34 -0
  301. package/docs/errors/profile-version-conflict.md +35 -0
  302. package/docs/errors/reference-cycle.md +35 -0
  303. package/docs/errors/render-backend-unavailable.md +32 -0
  304. package/docs/errors/render-failed.md +33 -0
  305. package/docs/errors/render-too-large.md +36 -0
  306. package/docs/errors/repaired-base.md +34 -0
  307. package/docs/errors/requires-rewrite.md +38 -0
  308. package/docs/errors/saved-not-rebased.md +34 -0
  309. package/docs/errors/sink-not-empty.md +33 -0
  310. package/docs/errors/sink.md +31 -0
  311. package/docs/errors/source-budget-exceeded.md +34 -0
  312. package/docs/errors/source-changed.md +33 -0
  313. package/docs/errors/source.md +30 -0
  314. package/docs/errors/stale-generation.md +34 -0
  315. package/docs/errors/stream-length-recovered.md +37 -0
  316. package/docs/errors/strict.md +34 -0
  317. package/docs/errors/subset-failed.md +31 -0
  318. package/docs/errors/syntax.md +34 -0
  319. package/docs/errors/text-module-not-loaded.md +36 -0
  320. package/docs/errors/text-overflow.md +34 -0
  321. package/docs/errors/tounicode-conflict.md +32 -0
  322. package/docs/errors/type.md +34 -0
  323. package/docs/errors/unexpected-eof.md +34 -0
  324. package/docs/errors/unknown-axis.md +33 -0
  325. package/docs/errors/unknown-code.md +36 -0
  326. package/docs/errors/unknown-destination.md +33 -0
  327. package/docs/errors/unknown-font.md +33 -0
  328. package/docs/errors/unknown-option.md +33 -0
  329. package/docs/errors/unknown-page.md +34 -0
  330. package/docs/errors/unmapped-glyph.md +36 -0
  331. package/docs/errors/unnumbered-heading-misused.md +34 -0
  332. package/docs/errors/unset-object.md +30 -0
  333. package/docs/errors/unsupported-filter.md +34 -0
  334. package/docs/errors/unsupported-image.md +33 -0
  335. package/docs/errors/unsupported-layout-option.md +33 -0
  336. package/docs/errors/unsupported-security-handler.md +34 -0
  337. package/docs/errors/unsupported-version.md +32 -0
  338. package/docs/errors/untagged-content.md +35 -0
  339. package/docs/errors/warnings-truncated.md +35 -0
  340. package/docs/errors/wasm-trap.md +37 -0
  341. package/docs/errors/whole-font-rebuilt.md +30 -0
  342. package/docs/errors/worker-crashed.md +33 -0
  343. package/docs/errors/worker-failed.md +32 -0
  344. package/docs/errors/worker-version-mismatch.md +34 -0
  345. package/docs/errors/would-invalidate-signatures.md +38 -0
  346. package/docs/errors/wrong-document.md +33 -0
  347. package/docs/errors/wrong-password.md +34 -0
  348. package/docs/errors/xobject-cycle.md +36 -0
  349. package/docs/errors/xref-repaired.md +36 -0
  350. package/docs/errors/xrefstm-ignored.md +34 -0
  351. package/docs/llms.txt +88 -0
  352. package/docs/pages/concepts/dependencies.md +44 -0
  353. package/docs/pages/concepts/errors-and-warnings.md +64 -0
  354. package/docs/pages/concepts/how-lamina-thinks.md +86 -0
  355. package/docs/pages/concepts/pages-and-coordinates.md +67 -0
  356. package/docs/pages/guides/accessible-pdfs.md +260 -0
  357. package/docs/pages/guides/archival-pdfs.md +429 -0
  358. package/docs/pages/guides/edit-a-pdf.md +137 -0
  359. package/docs/pages/guides/fonts-and-text.md +202 -0
  360. package/docs/pages/guides/images-and-vectors.md +219 -0
  361. package/docs/pages/guides/keep-the-page-responsive.md +81 -0
  362. package/docs/pages/guides/links-outlines-and-metadata.md +222 -0
  363. package/docs/pages/guides/password-protected-files.md +70 -0
  364. package/docs/pages/guides/save-a-pdf.md +144 -0
  365. package/docs/pages/guides/untrusted-files.md +80 -0
  366. package/docs/pages/index.md +33 -0
  367. package/docs/pages/install.md +75 -0
  368. package/docs/pages/quick-start/browser.md +67 -0
  369. package/docs/pages/quick-start/bun.md +60 -0
  370. package/docs/pages/quick-start/deno.md +58 -0
  371. package/docs/pages/quick-start/node.md +61 -0
  372. package/docs/pages/quick-start/rust.md +58 -0
  373. package/docs/pages/quick-start/workers.md +139 -0
  374. package/docs/pages/recipes/cloudflare-worker.md +115 -0
  375. package/docs/pages/recipes/extract-markdown.md +114 -0
  376. package/docs/pages/recipes/generate-then-edit.md +135 -0
  377. package/docs/pages/recipes/hello.md +94 -0
  378. package/docs/pages/recipes/images-and-vectors.md +209 -0
  379. package/docs/pages/recipes/invoice.md +226 -0
  380. package/docs/pages/recipes/links-and-outlines.md +215 -0
  381. package/docs/pages/recipes/multilingual.md +189 -0
  382. package/docs/pages/recipes/open-untrusted.md +65 -0
  383. package/docs/pages/recipes/pdf-a-archive.md +205 -0
  384. package/docs/pages/recipes/pdf-a3-invoice-with-xml.md +222 -0
  385. package/docs/pages/recipes/pdf-ua-report.md +237 -0
  386. package/docs/pages/recipes/report.md +125 -0
  387. package/docs/pages/recipes/web-worker-client.md +64 -0
  388. package/docs/pages/recipes.md +47 -0
  389. package/docs/pages/reference/changelog.md +86 -0
  390. package/docs/pages/reference/codes.md +14 -0
  391. package/docs/pages/reference/glossary.md +108 -0
  392. package/docs/pages/reference/rust.md +36 -0
  393. package/docs/pages/reference/stability.md +59 -0
  394. package/docs/pages/start/coding-agents.md +45 -0
  395. package/docs/pages/start/first-pdf.md +77 -0
  396. package/docs/pages/troubleshooting.md +74 -0
  397. package/docs/renames.json +86 -0
  398. package/docs/schemas/error.schema.json +305 -0
  399. package/docs/schemas/renames.schema.json +29 -0
  400. package/package.json +5 -3
  401. package/schemas/error.schema.json +19 -2
package/dist/init.js CHANGED
@@ -1,10 +1,12 @@
1
1
  // Loading the WebAssembly modules (ADR 0016 §2, §3): `init()` compiles and instantiates the base
2
2
  // module once; the text module is loaded by `init({ text: true })` or `loadText()`, the extract
3
- // module (base + text extraction, B9c) by `init({ extract: true })` or `loadExtract()`. After
4
- // that, every call is synchronous. Each export condition supplies its own `Locate` (src/loader/), so
3
+ // module (base + text extraction) by `init({ extract: true })` or `loadExtract()`. After
4
+ // that, every call is synchronous. `reset()` replaces each loaded module's instance
5
+ // (internal/instance.ts). Each export condition supplies its own `Locate` (src/loader/), so
5
6
  // this file has no environment detection and no runtime-specific API.
6
7
  import * as baseGlue from "@laminapdf/wasm/base";
7
8
  import { packageError } from "./errors.js";
9
+ import { Instance } from "./internal/instance.js";
8
10
  const base = {};
9
11
  const text = {};
10
12
  const extract = {};
@@ -30,7 +32,7 @@ function load(slot, name, glue, locate, source) {
30
32
  const g = await glue();
31
33
  const from = source ?? (await locate(name));
32
34
  const exports = (await g.default(from === undefined ? undefined : { module_or_path: from }));
33
- slot.loaded = { glue: g, exports };
35
+ slot.loaded = new Instance(name, g, exports);
34
36
  })().catch((e) => {
35
37
  slot.pending = undefined;
36
38
  slot.requested = undefined;
@@ -70,12 +72,12 @@ export async function initWith(locate, input) {
70
72
  }
71
73
  await Promise.all(loads);
72
74
  }
73
- /** The base module's glue. @throws {@link LaminaPdfError} `not-initialized` before `init()`. */
75
+ /** The base module. @throws {@link LaminaPdfError} `not-initialized` before `init()`. */
74
76
  export function baseModule() {
75
77
  if (base.loaded === undefined) {
76
78
  throw packageError("not-initialized", "init() has not finished loading the WebAssembly module");
77
79
  }
78
- return base.loaded.glue;
80
+ return base.loaded;
79
81
  }
80
82
  /**
81
83
  * The module documents are opened in: the text module when loaded, else the extract module, else
@@ -84,7 +86,7 @@ export function baseModule() {
84
86
  */
85
87
  export function readingModule() {
86
88
  const base = baseModule();
87
- return (text.loaded?.glue ?? extract.loaded?.glue ?? base);
89
+ return (text.loaded ?? extract.loaded ?? base);
88
90
  }
89
91
  /**
90
92
  * Whether documents opened or built from now on can extract text: the extract or the text module
@@ -99,9 +101,9 @@ export function extractsText(doc) {
99
101
  return ((text.loaded !== undefined && doc instanceof text.loaded.glue.WasmDocument) ||
100
102
  (extract.loaded !== undefined && doc instanceof extract.loaded.glue.WasmDocument));
101
103
  }
102
- /** The text module's glue, when loaded. */
104
+ /** The text module, when loaded. */
103
105
  export function textModule() {
104
- return text.loaded?.glue;
106
+ return text.loaded;
105
107
  }
106
108
  /** Whether `init()` has finished. */
107
109
  export function isInitialized() {
@@ -119,9 +121,19 @@ export function isTextLoaded() {
119
121
  */
120
122
  export function wasmMemory() {
121
123
  return {
122
- ...(base.loaded === undefined ? {} : { base: base.loaded.exports.memory.buffer.byteLength }),
123
- ...(text.loaded === undefined ? {} : { text: text.loaded.exports.memory.buffer.byteLength }),
124
- ...(extract.loaded === undefined ? {} : { extract: extract.loaded.exports.memory.buffer.byteLength }),
124
+ ...(base.loaded === undefined ? {} : { base: base.loaded.memoryBytes }),
125
+ ...(text.loaded === undefined ? {} : { text: text.loaded.memoryBytes }),
126
+ ...(extract.loaded === undefined ? {} : { extract: extract.loaded.memoryBytes }),
125
127
  };
126
128
  }
129
+ /**
130
+ * Replaces each loaded module's instance with a fresh one, so its memory returns to the size it
131
+ * had after `init()`: WebAssembly memory grows and never shrinks, and this gives it back. Every
132
+ * document, page, builder and save job made before throws `instance-reset` afterwards, so call it
133
+ * while none is in use, such as between jobs on a server. Images and fonts keep working.
134
+ */
135
+ export function reset() {
136
+ for (const slot of [base, text, extract])
137
+ slot.loaded?.replace();
138
+ }
127
139
  //# sourceMappingURL=init.js.map
package/dist/init.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type { Glue, Instance } from "./instance.js";
2
+ /** A handle the garbage collector reclaimed without a `free()`. */
3
+ export interface Leak {
4
+ /** The handle's class: `Document`, `Builder` or `Image`. */
5
+ readonly handle: string;
6
+ }
7
+ /**
8
+ * Reports every document, builder and image created from now on that the garbage collector
9
+ * reclaims without a `free()` or `using`: a debugging aid for code that should free what it
10
+ * makes. Reclaimed handles are freed anyway, only later. `onLeak()` turns the reports off.
11
+ *
12
+ * @param hook - called once per leaked handle, some time after the collection.
13
+ */
14
+ export declare function onLeak(hook?: (leak: Leak) => void): void;
15
+ /** Watches `handle` for a leak while a hook is set; {@link forget} once it is freed. */
16
+ export declare function watch(handle: object, name: string): void;
17
+ /** Stops watching `handle`. */
18
+ export declare function forget(handle: object): void;
19
+ /** A handle on memory in one WebAssembly instance. */
20
+ export declare abstract class Handle<G extends Glue = Glue> {
21
+ #private;
22
+ /**
23
+ * @param name - the class, as messages name it.
24
+ * @param instance - the instance the handle's memory lives in.
25
+ * @param parent - the handle it is freed with, if any.
26
+ */
27
+ protected constructor(name: string, instance: Instance<G>, parent?: Handle);
28
+ /** The instance this handle lives in (for the handles it makes). */
29
+ protected get instance(): Instance<G>;
30
+ /** Whether the handle's raw objects can be freed: its instance is current and hasn't trapped. */
31
+ protected get owned(): boolean;
32
+ /** Whether `free()` ran on this handle or its parent. */
33
+ protected get isFreed(): boolean;
34
+ /**
35
+ * @throws {@link LaminaPdfError} `disposed` after `free()` (here or on the parent);
36
+ * `instance-reset` when the instance was replaced (a trapped one is replaced first).
37
+ */
38
+ protected assertLive(): void;
39
+ /** Runs `f` (calls into the glue) on this live handle; see {@link Instance.call}. */
40
+ protected call<T>(f: (glue: G) => T): T;
41
+ /** Frees the WebAssembly side; called at most once, and only while {@link owned}. */
42
+ protected abstract release(): void;
43
+ /**
44
+ * Frees the handle's memory now; without it, the garbage collector frees it later. A second
45
+ * call does nothing, and any other call afterwards throws `disposed`. Prefer `using`, which
46
+ * calls this at the end of the block.
47
+ */
48
+ free(): void;
49
+ /** Frees the handle at the end of a `using` block (an alias of `free()`). */
50
+ [Symbol.dispose](): void;
51
+ }
52
+ /** Gives `target`'s prototype the dispose method under {@link DISPOSE} where it isn't `Symbol.dispose`. */
53
+ export declare function disposable(target: {
54
+ readonly prototype: {
55
+ free(): void;
56
+ };
57
+ }): void;
58
+ //# sourceMappingURL=handle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../src/internal/handle.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAQpD,mEAAmE;AACnE,MAAM,WAAW,IAAI;IACnB,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAQD;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI,CAExD;AAED,wFAAwF;AACxF,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAExD;AAED,+BAA+B;AAC/B,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,sDAAsD;AACtD,8BAAsB,MAAM,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI;;IAQhD;;;;OAIG;IACH,SAAS,aAAa,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,EAKzE;IAED,oEAAoE;IACpE,SAAS,KAAK,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAEpC;IAED,iGAAiG;IACjG,SAAS,KAAK,KAAK,IAAI,OAAO,CAE7B;IAED,yDAAyD;IACzD,SAAS,KAAK,OAAO,IAAI,OAAO,CAE/B;IAED;;;OAGG;IACH,SAAS,CAAC,UAAU,IAAI,IAAI,CAK3B;IAED,qFAAqF;IACrF,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAGtC;IAED,qFAAqF;IACrF,SAAS,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC;IAEnC;;;;OAIG;IACH,IAAI,IAAI,IAAI,CAMX;IAED,6EAA6E;IAC7E,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAEvB;CACF;AAED,2GAA2G;AAC3G,wBAAgB,UAAU,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,SAAS,EAAE;QAAE,IAAI,IAAI,IAAI,CAAA;KAAE,CAAA;CAAE,GAAG,IAAI,CASjF"}
@@ -0,0 +1,113 @@
1
+ // The base of every handle that owns memory in a WebAssembly instance: `free()` and
2
+ // `Symbol.dispose` (the same thing; a second call does nothing), `disposed` for any call after it,
3
+ // `instance-reset` for a handle whose instance was replaced, and a parent that frees it too (a
4
+ // page with its document or builder). A handle the garbage collector reclaims is still freed, by
5
+ // wasm-bindgen's own finalizer; `onLeak` reports those.
6
+ import { packageError } from "../errors.js";
7
+ /**
8
+ * `Symbol.dispose`, or, where a runtime lacks it (Safari), `Symbol.for("Symbol.dispose")`: the key
9
+ * the `using` helpers of esbuild and Babel fall back to.
10
+ */
11
+ const DISPOSE = typeof Symbol.dispose === "symbol" ? Symbol.dispose : Symbol.for("Symbol.dispose");
12
+ let leakHook;
13
+ const leaks = typeof FinalizationRegistry === "function"
14
+ ? new FinalizationRegistry((handle) => leakHook?.({ handle }))
15
+ : undefined;
16
+ /**
17
+ * Reports every document, builder and image created from now on that the garbage collector
18
+ * reclaims without a `free()` or `using`: a debugging aid for code that should free what it
19
+ * makes. Reclaimed handles are freed anyway, only later. `onLeak()` turns the reports off.
20
+ *
21
+ * @param hook - called once per leaked handle, some time after the collection.
22
+ */
23
+ export function onLeak(hook) {
24
+ leakHook = hook;
25
+ }
26
+ /** Watches `handle` for a leak while a hook is set; {@link forget} once it is freed. */
27
+ export function watch(handle, name) {
28
+ if (leakHook !== undefined)
29
+ leaks?.register(handle, name, handle);
30
+ }
31
+ /** Stops watching `handle`. */
32
+ export function forget(handle) {
33
+ leaks?.unregister(handle);
34
+ }
35
+ /** A handle on memory in one WebAssembly instance. */
36
+ export class Handle {
37
+ /** The class, for messages (minifiers rename classes). */
38
+ #name;
39
+ #instance;
40
+ #generation;
41
+ #parent;
42
+ #freed = false;
43
+ /**
44
+ * @param name - the class, as messages name it.
45
+ * @param instance - the instance the handle's memory lives in.
46
+ * @param parent - the handle it is freed with, if any.
47
+ */
48
+ constructor(name, instance, parent) {
49
+ this.#name = name;
50
+ this.#instance = instance;
51
+ this.#generation = instance.generation;
52
+ this.#parent = parent;
53
+ }
54
+ /** The instance this handle lives in (for the handles it makes). */
55
+ get instance() {
56
+ return this.#instance;
57
+ }
58
+ /** Whether the handle's raw objects can be freed: its instance is current and hasn't trapped. */
59
+ get owned() {
60
+ return this.#instance.owns(this.#generation);
61
+ }
62
+ /** Whether `free()` ran on this handle or its parent. */
63
+ get isFreed() {
64
+ return this.#freed || this.#parent?.isFreed === true;
65
+ }
66
+ /**
67
+ * @throws {@link LaminaPdfError} `disposed` after `free()` (here or on the parent);
68
+ * `instance-reset` when the instance was replaced (a trapped one is replaced first).
69
+ */
70
+ assertLive() {
71
+ if (this.isFreed) {
72
+ throw packageError("disposed", `the ${this.#name} was used after free() or its using block`);
73
+ }
74
+ this.#instance.check(this.#generation, this.#name);
75
+ }
76
+ /** Runs `f` (calls into the glue) on this live handle; see {@link Instance.call}. */
77
+ call(f) {
78
+ this.assertLive();
79
+ return this.#instance.call(f);
80
+ }
81
+ /**
82
+ * Frees the handle's memory now; without it, the garbage collector frees it later. A second
83
+ * call does nothing, and any other call afterwards throws `disposed`. Prefer `using`, which
84
+ * calls this at the end of the block.
85
+ */
86
+ free() {
87
+ if (this.#freed)
88
+ return;
89
+ this.#freed = true;
90
+ forget(this);
91
+ // A replaced instance's memory is gone already, and its objects must not reach the new one.
92
+ if (this.owned)
93
+ this.release();
94
+ }
95
+ /** Frees the handle at the end of a `using` block (an alias of `free()`). */
96
+ [Symbol.dispose]() {
97
+ this.free();
98
+ }
99
+ }
100
+ /** Gives `target`'s prototype the dispose method under {@link DISPOSE} where it isn't `Symbol.dispose`. */
101
+ export function disposable(target) {
102
+ if (DISPOSE === Symbol.dispose)
103
+ return;
104
+ Object.defineProperty(target.prototype, DISPOSE, {
105
+ value() {
106
+ this.free();
107
+ },
108
+ configurable: true,
109
+ writable: true,
110
+ });
111
+ }
112
+ disposable(Handle);
113
+ //# sourceMappingURL=handle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle.js","sourceRoot":"","sources":["../../src/internal/handle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Whether `e` is a trap: as {@link Instance.call} reports one (`wasm-trap`, `out-of-memory`), or
3
+ * raw from a module the package doesn't guard (an extension's PDFium).
4
+ */
5
+ export declare function isTrap(e: unknown): boolean;
6
+ /** The modules of `@laminapdf/wasm` that `@laminapdf/sdk` loads. */
7
+ export type ModuleName = "base" | "text" | "extract";
8
+ /** The exports every wasm-bindgen module has. */
9
+ interface Exports {
10
+ readonly memory: WebAssembly.Memory;
11
+ }
12
+ /** What `@laminapdf/sdk` needs from a module's glue besides its classes. */
13
+ export interface Glue {
14
+ /** Replaces the instance with a fresh one of the same compiled module. */
15
+ __wbg_reset_state(): void;
16
+ /** Whether an allocation failed in the current instance. */
17
+ allocationFailed(): boolean;
18
+ /** Once the module is loaded: the current instance's exports. */
19
+ initSync(module: never): Exports;
20
+ }
21
+ /** One loaded module: its glue, and which of its instances is current. */
22
+ export declare class Instance<G extends Glue = Glue> {
23
+ #private;
24
+ readonly name: ModuleName;
25
+ readonly glue: G;
26
+ constructor(name: ModuleName, glue: G, exports: Exports);
27
+ /** Which instance is current; a handle keeps the one it was made in. */
28
+ get generation(): number;
29
+ /** The size of the current instance's memory, in bytes. */
30
+ get memoryBytes(): number;
31
+ /**
32
+ * Whether objects made in `generation` can still be freed: it is current, and hasn't trapped
33
+ * (a trapped instance is about to be replaced, and freeing into it could trap again).
34
+ */
35
+ owns(generation: number): boolean;
36
+ /**
37
+ * Throws `instance-reset` unless objects made in `generation` belong to the current instance,
38
+ * after replacing an instance that trapped (so a trap's survivors never reach the fresh one).
39
+ *
40
+ * @param name - what holds the objects, for the message.
41
+ */
42
+ check(generation: number, name: string): void;
43
+ /** The glue, after replacing an instance that trapped. */
44
+ live(): G;
45
+ /** Replaces the instance with a fresh one: memory back to its initial size, every handle gone. */
46
+ replace(): void;
47
+ /**
48
+ * Runs one call into the glue, after replacing an instance that trapped.
49
+ *
50
+ * @throws {@link LaminaPdfError} for the §1 object the module throws; `wasm-trap` or
51
+ * `out-of-memory` when it traps or overflows the stack (the next call gets a fresh instance).
52
+ */
53
+ call<T>(f: (glue: G) => T): T;
54
+ }
55
+ export {};
56
+ //# sourceMappingURL=instance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../../src/internal/instance.ts"],"names":[],"mappings":"AAsBA;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAE1C;AAED,oEAAoE;AACpE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAErD,iDAAiD;AACjD,UAAU,OAAO;IACf,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;CACrC;AAED,4EAA4E;AAC5E,MAAM,WAAW,IAAI;IACnB,0EAA0E;IAC1E,iBAAiB,IAAI,IAAI,CAAC;IAC1B,4DAA4D;IAC5D,gBAAgB,IAAI,OAAO,CAAC;IAC5B,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC;CAClC;AAED,0EAA0E;AAC1E,qBAAa,QAAQ,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI;;IACzC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAMjB,YAAY,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAItD;IAED,wEAAwE;IACxE,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,2DAA2D;IAC3D,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;;OAGG;IACH,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEhC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAQ5C;IAED,0DAA0D;IAC1D,IAAI,IAAI,CAAC,CAGR;IAED,kGAAkG;IAClG,OAAO,IAAI,IAAI,CAMd;IAED;;;;;OAKG;IACH,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAO5B;CA2BF"}
@@ -0,0 +1,125 @@
1
+ // The WebAssembly instances behind every handle. A trap (a bug, or growth past the memory maximum
2
+ // set when the modules are built) can leave an instance's memory half-written, so the call that
3
+ // trapped throws `wasm-trap` or `out-of-memory`, and the next call first replaces the instance with
4
+ // a fresh one of the same compiled module (wasm-bindgen's `__wbg_reset_state`); `reset()` replaces
5
+ // every one. Each replacement starts a new generation: a handle made in an older one throws
6
+ // `instance-reset` rather than reach into the new instance's memory.
7
+ import { isDiagnostic, isLaminaPdfError, LaminaPdfError, packageError } from "../errors.js";
8
+ /**
9
+ * Whether `e` stopped WebAssembly code mid-call: a trap (`RuntimeError`), or the engine's stack
10
+ * overflowing inside it (V8 and JavaScriptCore throw a `RangeError`, Firefox an `InternalError`).
11
+ * Either leaves the instance's memory half-written.
12
+ */
13
+ function stoppedMidCall(e) {
14
+ if (e instanceof WebAssembly.RuntimeError)
15
+ return true;
16
+ if (!(e instanceof Error))
17
+ return false;
18
+ return ((e instanceof RangeError && /call stack/i.test(e.message)) ||
19
+ (e.name === "InternalError" && /recursion/i.test(e.message)));
20
+ }
21
+ /**
22
+ * Whether `e` is a trap: as {@link Instance.call} reports one (`wasm-trap`, `out-of-memory`), or
23
+ * raw from a module the package doesn't guard (an extension's PDFium).
24
+ */
25
+ export function isTrap(e) {
26
+ return stoppedMidCall(e) || isLaminaPdfError(e, "wasm-trap") || isLaminaPdfError(e, "out-of-memory");
27
+ }
28
+ /** One loaded module: its glue, and which of its instances is current. */
29
+ export class Instance {
30
+ name;
31
+ glue;
32
+ #memory;
33
+ #generation = 0;
34
+ /** Set by a trap: the next call replaces the instance first. */
35
+ #poisoned = false;
36
+ constructor(name, glue, exports) {
37
+ this.name = name;
38
+ this.glue = glue;
39
+ this.#memory = exports.memory;
40
+ }
41
+ /** Which instance is current; a handle keeps the one it was made in. */
42
+ get generation() {
43
+ return this.#generation;
44
+ }
45
+ /** The size of the current instance's memory, in bytes. */
46
+ get memoryBytes() {
47
+ return this.#memory.buffer.byteLength;
48
+ }
49
+ /**
50
+ * Whether objects made in `generation` can still be freed: it is current, and hasn't trapped
51
+ * (a trapped instance is about to be replaced, and freeing into it could trap again).
52
+ */
53
+ owns(generation) {
54
+ return generation === this.#generation && !this.#poisoned;
55
+ }
56
+ /**
57
+ * Throws `instance-reset` unless objects made in `generation` belong to the current instance,
58
+ * after replacing an instance that trapped (so a trap's survivors never reach the fresh one).
59
+ *
60
+ * @param name - what holds the objects, for the message.
61
+ */
62
+ check(generation, name) {
63
+ this.live();
64
+ if (generation !== this.#generation) {
65
+ throw packageError("instance-reset", `the ${name} belongs to a WebAssembly instance that reset() or a trap replaced`);
66
+ }
67
+ }
68
+ /** The glue, after replacing an instance that trapped. */
69
+ live() {
70
+ if (this.#poisoned)
71
+ this.replace();
72
+ return this.glue;
73
+ }
74
+ /** Replaces the instance with a fresh one: memory back to its initial size, every handle gone. */
75
+ replace() {
76
+ this.glue.__wbg_reset_state();
77
+ // The glue's `initSync` returns early with the current exports once the module is loaded.
78
+ this.#memory = this.glue.initSync(undefined).memory;
79
+ this.#generation++;
80
+ this.#poisoned = false;
81
+ }
82
+ /**
83
+ * Runs one call into the glue, after replacing an instance that trapped.
84
+ *
85
+ * @throws {@link LaminaPdfError} for the §1 object the module throws; `wasm-trap` or
86
+ * `out-of-memory` when it traps or overflows the stack (the next call gets a fresh instance).
87
+ */
88
+ call(f) {
89
+ const glue = this.live();
90
+ try {
91
+ return f(glue);
92
+ }
93
+ catch (e) {
94
+ throw this.#wrap(e);
95
+ }
96
+ }
97
+ #wrap(e) {
98
+ if (isDiagnostic(e))
99
+ return new LaminaPdfError(e);
100
+ if (!stoppedMidCall(e))
101
+ return e;
102
+ this.#poisoned = true;
103
+ const module = this.name;
104
+ if (this.#allocationFailed()) {
105
+ return packageError("out-of-memory", `the ${module} module ran out of memory; the next call starts afresh`, {
106
+ data: { module, memoryBytes: this.memoryBytes },
107
+ cause: e,
108
+ });
109
+ }
110
+ return packageError("wasm-trap", `the ${module} module trapped; the next call starts afresh`, {
111
+ data: { module },
112
+ cause: e,
113
+ });
114
+ }
115
+ /** Whether the trapped instance ran out of memory. Reading its flag is safe: a trap leaves memory as it was. */
116
+ #allocationFailed() {
117
+ try {
118
+ return this.glue.allocationFailed();
119
+ }
120
+ catch {
121
+ return false;
122
+ }
123
+ }
124
+ }
125
+ //# sourceMappingURL=instance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance.js","sourceRoot":"","sources":["../../src/internal/instance.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- // httpRangeSource (L2c): a remote PDF read with HTTP Range requests. Errors never carry the URL
1
+ // httpRangeSource: a remote PDF read with HTTP Range requests. Errors never carry the URL
2
2
  // (ADR 0026 §4): it may hold tokens.
3
3
  import { packageError } from "../errors.js";
4
4
  import { WHOLE } from "./range.js";
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/source/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/source/http.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import type { WasmSparseSource } from "@laminapdf/wasm/base";
2
+ import type { BaseGlue } from "../init.js";
3
+ import type { Instance } from "../internal/instance.js";
2
4
  /** A byte range of the input. */
3
5
  export interface ByteRange {
4
6
  /** First byte. */
@@ -8,7 +10,7 @@ export interface ByteRange {
8
10
  }
9
11
  /**
10
12
  * Random access to a file whose bytes are fetched on demand (a remote file, a `Blob`, a file
11
- * handle). Matches the viewer's source interface (C3a).
13
+ * handle). `@laminapdf/viewer`'s document worker reads a `Blob` through it too.
12
14
  */
13
15
  export interface RangeSource {
14
16
  /** The file's size in bytes. */
@@ -50,6 +52,9 @@ export declare const WHOLE: unique symbol;
50
52
  export declare function wholeBytes(source: RangeSource): Uint8Array | undefined;
51
53
  /** @internal What a range document keeps to fetch more: never the password or a signal. */
52
54
  export interface RangeState {
55
+ /** The instance the sparse source lives in, and its generation then. */
56
+ readonly instance: Instance<BaseGlue>;
57
+ readonly generation: number;
53
58
  readonly sparse: WasmSparseSource;
54
59
  readonly source: RangeSource;
55
60
  readonly blockSize: number;
@@ -1 +1 @@
1
- {"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../../src/source/range.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,iCAAiC;AACjC,MAAM,WAAW,SAAS;IACxB,kBAAkB;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,uBAAuB;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACvG,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,oCAAoC;AACpC,MAAM,WAAW,YAAY;IAC3B;2CACuC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,iGAAiG;IACjG,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,wDAAwD;IACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,+FAA+F;IAC/F,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,kGAAkG;IAClG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,GAClF,WAAW,CAEb;AAOD,wGAAwG;AACxG,eAAO,MAAM,KAAK,EAAE,OAAO,MAAoC,CAAC;AAEhE,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,CAGtE;AAED,2FAA2F;AAC3F,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,wBAAsB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAqB/G"}
1
+ {"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../../src/source/range.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,iCAAiC;AACjC,MAAM,WAAW,SAAS;IACxB,kBAAkB;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,uBAAuB;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACvG,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,oCAAoC;AACpC,MAAM,WAAW,YAAY;IAC3B;2CACuC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,iGAAiG;IACjG,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,wDAAwD;IACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,+FAA+F;IAC/F,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,kGAAkG;IAClG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,GAClF,WAAW,CAEb;AAOD,wGAAwG;AACxG,eAAO,MAAM,KAAK,EAAE,OAAO,MAAoC,CAAC;AAEhE,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,CAGtE;AAED,2FAA2F;AAC3F,MAAM,WAAW,UAAU;IACzB,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,wBAAsB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAuB/G"}
@@ -1,4 +1,4 @@
1
- import { guard, isLaminaPdfError, packageError } from "../errors.js";
1
+ import { isLaminaPdfError, packageError } from "../errors.js";
2
2
  /**
3
3
  * A {@link RangeSource} over a caller's read function (a `Blob.slice`, a file handle, an IPC call).
4
4
  *
@@ -30,7 +30,7 @@ export function wholeBytes(source) {
30
30
  * @internal
31
31
  */
32
32
  export async function settle(state, call, signal) {
33
- const { sparse, blockSize, readahead, maxRounds } = state;
33
+ const { instance, generation, sparse, blockSize, readahead, maxRounds } = state;
34
34
  let previous;
35
35
  for (let round = 0;; round++) {
36
36
  let error;
@@ -46,7 +46,9 @@ export async function settle(state, call, signal) {
46
46
  const key = JSON.stringify(asked);
47
47
  const flat = new Float64Array(asked.flatMap((r) => [r.offset, r.offset + r.length]));
48
48
  // The planning is laminapdf-source's (`SparseSource::to_fetch`), shared with the Rust loop.
49
- const todo = guard(() => sparse.toFetch(flat, blockSize, readahead));
49
+ // The fetches await: a reset() or a trap may have replaced the sparse source's instance.
50
+ instance.check(generation, "Document");
51
+ const todo = instance.call(() => sparse.toFetch(flat, blockSize, readahead));
50
52
  if (round >= maxRounds || todo.length === 0 || key === previous)
51
53
  throw error;
52
54
  signal?.throwIfAborted();
@@ -56,7 +58,7 @@ export async function settle(state, call, signal) {
56
58
  }
57
59
  /** Fetches and supplies the flat `[start, end, …]` ranges of one round. */
58
60
  async function fetchRound(state, todo, signal) {
59
- const { sparse, source } = state;
61
+ const { instance, generation, sparse, source } = state;
60
62
  const controller = new AbortController();
61
63
  const onAbort = () => controller.abort(signal?.reason);
62
64
  signal?.addEventListener("abort", onAbort, { once: true });
@@ -73,8 +75,10 @@ async function fetchRound(state, todo, signal) {
73
75
  data: { reason: "length", expected: end - start, got: bytes.length },
74
76
  });
75
77
  }
76
- if (!controller.signal.aborted)
77
- guard(() => sparse.supply(start, bytes));
78
+ if (controller.signal.aborted)
79
+ return;
80
+ instance.check(generation, "Document");
81
+ instance.call(() => sparse.supply(start, bytes));
78
82
  })
79
83
  .catch((e) => {
80
84
  // The first failure wins; the aborts it causes in the other fetches don't replace it.
@@ -1 +1 @@
1
- {"version":3,"file":"range.js","sourceRoot":"","sources":["../../src/source/range.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"range.js","sourceRoot":"","sources":["../../src/source/range.ts"],"names":[],"mappings":"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"}