web-doc 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. package/LICENSE-APACHE +201 -0
  2. package/LICENSE-MIT +21 -0
  3. package/README.md +148 -0
  4. package/THIRD_PARTY_NOTICES.md +20 -0
  5. package/bin/copy-assets.mjs +27 -0
  6. package/dist/abort.d.ts +1 -0
  7. package/dist/abort.js +18 -0
  8. package/dist/adapters/bitmap.d.ts +9 -0
  9. package/dist/adapters/bitmap.js +63 -0
  10. package/dist/adapters/csv-parser.d.ts +7 -0
  11. package/dist/adapters/csv-parser.js +124 -0
  12. package/dist/adapters/csv.d.ts +26 -0
  13. package/dist/adapters/csv.js +231 -0
  14. package/dist/adapters/image.d.ts +41 -0
  15. package/dist/adapters/image.js +198 -0
  16. package/dist/adapters/office.d.ts +211 -0
  17. package/dist/adapters/office.js +672 -0
  18. package/dist/adapters/pdf.d.ts +32 -0
  19. package/dist/adapters/pdf.js +429 -0
  20. package/dist/adapters/svg.d.ts +17 -0
  21. package/dist/adapters/svg.js +123 -0
  22. package/dist/assets/image/index.d.ts +75 -0
  23. package/dist/assets/image/index.js +289 -0
  24. package/dist/assets/image/index_bg.wasm +0 -0
  25. package/dist/assets/image/index_bg.wasm.d.ts +12 -0
  26. package/dist/assets/legacy/index.d.ts +54 -0
  27. package/dist/assets/legacy/index.js +306 -0
  28. package/dist/assets/legacy/index_bg.wasm +0 -0
  29. package/dist/assets/legacy/index_bg.wasm.d.ts +9 -0
  30. package/dist/assets/pdfjs/cmaps/78-EUC-H.bcmap +0 -0
  31. package/dist/assets/pdfjs/cmaps/78-EUC-V.bcmap +0 -0
  32. package/dist/assets/pdfjs/cmaps/78-H.bcmap +0 -0
  33. package/dist/assets/pdfjs/cmaps/78-RKSJ-H.bcmap +0 -0
  34. package/dist/assets/pdfjs/cmaps/78-RKSJ-V.bcmap +0 -0
  35. package/dist/assets/pdfjs/cmaps/78-V.bcmap +0 -0
  36. package/dist/assets/pdfjs/cmaps/78ms-RKSJ-H.bcmap +0 -0
  37. package/dist/assets/pdfjs/cmaps/78ms-RKSJ-V.bcmap +0 -0
  38. package/dist/assets/pdfjs/cmaps/83pv-RKSJ-H.bcmap +0 -0
  39. package/dist/assets/pdfjs/cmaps/90ms-RKSJ-H.bcmap +0 -0
  40. package/dist/assets/pdfjs/cmaps/90ms-RKSJ-V.bcmap +0 -0
  41. package/dist/assets/pdfjs/cmaps/90msp-RKSJ-H.bcmap +0 -0
  42. package/dist/assets/pdfjs/cmaps/90msp-RKSJ-V.bcmap +0 -0
  43. package/dist/assets/pdfjs/cmaps/90pv-RKSJ-H.bcmap +0 -0
  44. package/dist/assets/pdfjs/cmaps/90pv-RKSJ-V.bcmap +0 -0
  45. package/dist/assets/pdfjs/cmaps/Add-H.bcmap +0 -0
  46. package/dist/assets/pdfjs/cmaps/Add-RKSJ-H.bcmap +0 -0
  47. package/dist/assets/pdfjs/cmaps/Add-RKSJ-V.bcmap +0 -0
  48. package/dist/assets/pdfjs/cmaps/Add-V.bcmap +0 -0
  49. package/dist/assets/pdfjs/cmaps/Adobe-CNS1-0.bcmap +0 -0
  50. package/dist/assets/pdfjs/cmaps/Adobe-CNS1-1.bcmap +0 -0
  51. package/dist/assets/pdfjs/cmaps/Adobe-CNS1-2.bcmap +0 -0
  52. package/dist/assets/pdfjs/cmaps/Adobe-CNS1-3.bcmap +0 -0
  53. package/dist/assets/pdfjs/cmaps/Adobe-CNS1-4.bcmap +0 -0
  54. package/dist/assets/pdfjs/cmaps/Adobe-CNS1-5.bcmap +0 -0
  55. package/dist/assets/pdfjs/cmaps/Adobe-CNS1-6.bcmap +0 -0
  56. package/dist/assets/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
  57. package/dist/assets/pdfjs/cmaps/Adobe-GB1-0.bcmap +0 -0
  58. package/dist/assets/pdfjs/cmaps/Adobe-GB1-1.bcmap +0 -0
  59. package/dist/assets/pdfjs/cmaps/Adobe-GB1-2.bcmap +0 -0
  60. package/dist/assets/pdfjs/cmaps/Adobe-GB1-3.bcmap +0 -0
  61. package/dist/assets/pdfjs/cmaps/Adobe-GB1-4.bcmap +0 -0
  62. package/dist/assets/pdfjs/cmaps/Adobe-GB1-5.bcmap +0 -0
  63. package/dist/assets/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
  64. package/dist/assets/pdfjs/cmaps/Adobe-Japan1-0.bcmap +0 -0
  65. package/dist/assets/pdfjs/cmaps/Adobe-Japan1-1.bcmap +0 -0
  66. package/dist/assets/pdfjs/cmaps/Adobe-Japan1-2.bcmap +0 -0
  67. package/dist/assets/pdfjs/cmaps/Adobe-Japan1-3.bcmap +0 -0
  68. package/dist/assets/pdfjs/cmaps/Adobe-Japan1-4.bcmap +0 -0
  69. package/dist/assets/pdfjs/cmaps/Adobe-Japan1-5.bcmap +0 -0
  70. package/dist/assets/pdfjs/cmaps/Adobe-Japan1-6.bcmap +0 -0
  71. package/dist/assets/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
  72. package/dist/assets/pdfjs/cmaps/Adobe-Korea1-0.bcmap +0 -0
  73. package/dist/assets/pdfjs/cmaps/Adobe-Korea1-1.bcmap +0 -0
  74. package/dist/assets/pdfjs/cmaps/Adobe-Korea1-2.bcmap +0 -0
  75. package/dist/assets/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
  76. package/dist/assets/pdfjs/cmaps/B5-H.bcmap +0 -0
  77. package/dist/assets/pdfjs/cmaps/B5-V.bcmap +0 -0
  78. package/dist/assets/pdfjs/cmaps/B5pc-H.bcmap +0 -0
  79. package/dist/assets/pdfjs/cmaps/B5pc-V.bcmap +0 -0
  80. package/dist/assets/pdfjs/cmaps/CNS-EUC-H.bcmap +0 -0
  81. package/dist/assets/pdfjs/cmaps/CNS-EUC-V.bcmap +0 -0
  82. package/dist/assets/pdfjs/cmaps/CNS1-H.bcmap +0 -0
  83. package/dist/assets/pdfjs/cmaps/CNS1-V.bcmap +0 -0
  84. package/dist/assets/pdfjs/cmaps/CNS2-H.bcmap +0 -0
  85. package/dist/assets/pdfjs/cmaps/CNS2-V.bcmap +3 -0
  86. package/dist/assets/pdfjs/cmaps/ETHK-B5-H.bcmap +0 -0
  87. package/dist/assets/pdfjs/cmaps/ETHK-B5-V.bcmap +0 -0
  88. package/dist/assets/pdfjs/cmaps/ETen-B5-H.bcmap +0 -0
  89. package/dist/assets/pdfjs/cmaps/ETen-B5-V.bcmap +0 -0
  90. package/dist/assets/pdfjs/cmaps/ETenms-B5-H.bcmap +3 -0
  91. package/dist/assets/pdfjs/cmaps/ETenms-B5-V.bcmap +0 -0
  92. package/dist/assets/pdfjs/cmaps/EUC-H.bcmap +0 -0
  93. package/dist/assets/pdfjs/cmaps/EUC-V.bcmap +0 -0
  94. package/dist/assets/pdfjs/cmaps/Ext-H.bcmap +0 -0
  95. package/dist/assets/pdfjs/cmaps/Ext-RKSJ-H.bcmap +0 -0
  96. package/dist/assets/pdfjs/cmaps/Ext-RKSJ-V.bcmap +0 -0
  97. package/dist/assets/pdfjs/cmaps/Ext-V.bcmap +0 -0
  98. package/dist/assets/pdfjs/cmaps/GB-EUC-H.bcmap +0 -0
  99. package/dist/assets/pdfjs/cmaps/GB-EUC-V.bcmap +0 -0
  100. package/dist/assets/pdfjs/cmaps/GB-H.bcmap +4 -0
  101. package/dist/assets/pdfjs/cmaps/GB-V.bcmap +0 -0
  102. package/dist/assets/pdfjs/cmaps/GBK-EUC-H.bcmap +0 -0
  103. package/dist/assets/pdfjs/cmaps/GBK-EUC-V.bcmap +0 -0
  104. package/dist/assets/pdfjs/cmaps/GBK2K-H.bcmap +0 -0
  105. package/dist/assets/pdfjs/cmaps/GBK2K-V.bcmap +0 -0
  106. package/dist/assets/pdfjs/cmaps/GBKp-EUC-H.bcmap +0 -0
  107. package/dist/assets/pdfjs/cmaps/GBKp-EUC-V.bcmap +0 -0
  108. package/dist/assets/pdfjs/cmaps/GBT-EUC-H.bcmap +0 -0
  109. package/dist/assets/pdfjs/cmaps/GBT-EUC-V.bcmap +0 -0
  110. package/dist/assets/pdfjs/cmaps/GBT-H.bcmap +0 -0
  111. package/dist/assets/pdfjs/cmaps/GBT-V.bcmap +0 -0
  112. package/dist/assets/pdfjs/cmaps/GBTpc-EUC-H.bcmap +0 -0
  113. package/dist/assets/pdfjs/cmaps/GBTpc-EUC-V.bcmap +0 -0
  114. package/dist/assets/pdfjs/cmaps/GBpc-EUC-H.bcmap +0 -0
  115. package/dist/assets/pdfjs/cmaps/GBpc-EUC-V.bcmap +0 -0
  116. package/dist/assets/pdfjs/cmaps/H.bcmap +0 -0
  117. package/dist/assets/pdfjs/cmaps/HKdla-B5-H.bcmap +0 -0
  118. package/dist/assets/pdfjs/cmaps/HKdla-B5-V.bcmap +0 -0
  119. package/dist/assets/pdfjs/cmaps/HKdlb-B5-H.bcmap +0 -0
  120. package/dist/assets/pdfjs/cmaps/HKdlb-B5-V.bcmap +0 -0
  121. package/dist/assets/pdfjs/cmaps/HKgccs-B5-H.bcmap +0 -0
  122. package/dist/assets/pdfjs/cmaps/HKgccs-B5-V.bcmap +0 -0
  123. package/dist/assets/pdfjs/cmaps/HKm314-B5-H.bcmap +0 -0
  124. package/dist/assets/pdfjs/cmaps/HKm314-B5-V.bcmap +0 -0
  125. package/dist/assets/pdfjs/cmaps/HKm471-B5-H.bcmap +0 -0
  126. package/dist/assets/pdfjs/cmaps/HKm471-B5-V.bcmap +0 -0
  127. package/dist/assets/pdfjs/cmaps/HKscs-B5-H.bcmap +0 -0
  128. package/dist/assets/pdfjs/cmaps/HKscs-B5-V.bcmap +0 -0
  129. package/dist/assets/pdfjs/cmaps/Hankaku.bcmap +0 -0
  130. package/dist/assets/pdfjs/cmaps/Hiragana.bcmap +0 -0
  131. package/dist/assets/pdfjs/cmaps/KSC-EUC-H.bcmap +0 -0
  132. package/dist/assets/pdfjs/cmaps/KSC-EUC-V.bcmap +0 -0
  133. package/dist/assets/pdfjs/cmaps/KSC-H.bcmap +0 -0
  134. package/dist/assets/pdfjs/cmaps/KSC-Johab-H.bcmap +0 -0
  135. package/dist/assets/pdfjs/cmaps/KSC-Johab-V.bcmap +0 -0
  136. package/dist/assets/pdfjs/cmaps/KSC-V.bcmap +0 -0
  137. package/dist/assets/pdfjs/cmaps/KSCms-UHC-H.bcmap +0 -0
  138. package/dist/assets/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
  139. package/dist/assets/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
  140. package/dist/assets/pdfjs/cmaps/KSCms-UHC-V.bcmap +0 -0
  141. package/dist/assets/pdfjs/cmaps/KSCpc-EUC-H.bcmap +0 -0
  142. package/dist/assets/pdfjs/cmaps/KSCpc-EUC-V.bcmap +0 -0
  143. package/dist/assets/pdfjs/cmaps/Katakana.bcmap +0 -0
  144. package/dist/assets/pdfjs/cmaps/LICENSE +36 -0
  145. package/dist/assets/pdfjs/cmaps/NWP-H.bcmap +0 -0
  146. package/dist/assets/pdfjs/cmaps/NWP-V.bcmap +0 -0
  147. package/dist/assets/pdfjs/cmaps/RKSJ-H.bcmap +0 -0
  148. package/dist/assets/pdfjs/cmaps/RKSJ-V.bcmap +0 -0
  149. package/dist/assets/pdfjs/cmaps/Roman.bcmap +0 -0
  150. package/dist/assets/pdfjs/cmaps/UniCNS-UCS2-H.bcmap +0 -0
  151. package/dist/assets/pdfjs/cmaps/UniCNS-UCS2-V.bcmap +0 -0
  152. package/dist/assets/pdfjs/cmaps/UniCNS-UTF16-H.bcmap +0 -0
  153. package/dist/assets/pdfjs/cmaps/UniCNS-UTF16-V.bcmap +0 -0
  154. package/dist/assets/pdfjs/cmaps/UniCNS-UTF32-H.bcmap +0 -0
  155. package/dist/assets/pdfjs/cmaps/UniCNS-UTF32-V.bcmap +0 -0
  156. package/dist/assets/pdfjs/cmaps/UniCNS-UTF8-H.bcmap +0 -0
  157. package/dist/assets/pdfjs/cmaps/UniCNS-UTF8-V.bcmap +0 -0
  158. package/dist/assets/pdfjs/cmaps/UniGB-UCS2-H.bcmap +0 -0
  159. package/dist/assets/pdfjs/cmaps/UniGB-UCS2-V.bcmap +0 -0
  160. package/dist/assets/pdfjs/cmaps/UniGB-UTF16-H.bcmap +0 -0
  161. package/dist/assets/pdfjs/cmaps/UniGB-UTF16-V.bcmap +0 -0
  162. package/dist/assets/pdfjs/cmaps/UniGB-UTF32-H.bcmap +0 -0
  163. package/dist/assets/pdfjs/cmaps/UniGB-UTF32-V.bcmap +0 -0
  164. package/dist/assets/pdfjs/cmaps/UniGB-UTF8-H.bcmap +0 -0
  165. package/dist/assets/pdfjs/cmaps/UniGB-UTF8-V.bcmap +0 -0
  166. package/dist/assets/pdfjs/cmaps/UniJIS-UCS2-H.bcmap +0 -0
  167. package/dist/assets/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
  168. package/dist/assets/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
  169. package/dist/assets/pdfjs/cmaps/UniJIS-UCS2-V.bcmap +0 -0
  170. package/dist/assets/pdfjs/cmaps/UniJIS-UTF16-H.bcmap +0 -0
  171. package/dist/assets/pdfjs/cmaps/UniJIS-UTF16-V.bcmap +0 -0
  172. package/dist/assets/pdfjs/cmaps/UniJIS-UTF32-H.bcmap +0 -0
  173. package/dist/assets/pdfjs/cmaps/UniJIS-UTF32-V.bcmap +0 -0
  174. package/dist/assets/pdfjs/cmaps/UniJIS-UTF8-H.bcmap +0 -0
  175. package/dist/assets/pdfjs/cmaps/UniJIS-UTF8-V.bcmap +0 -0
  176. package/dist/assets/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
  177. package/dist/assets/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
  178. package/dist/assets/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
  179. package/dist/assets/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
  180. package/dist/assets/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
  181. package/dist/assets/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
  182. package/dist/assets/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
  183. package/dist/assets/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
  184. package/dist/assets/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
  185. package/dist/assets/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
  186. package/dist/assets/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
  187. package/dist/assets/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
  188. package/dist/assets/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
  189. package/dist/assets/pdfjs/cmaps/UniKS-UCS2-H.bcmap +0 -0
  190. package/dist/assets/pdfjs/cmaps/UniKS-UCS2-V.bcmap +0 -0
  191. package/dist/assets/pdfjs/cmaps/UniKS-UTF16-H.bcmap +0 -0
  192. package/dist/assets/pdfjs/cmaps/UniKS-UTF16-V.bcmap +0 -0
  193. package/dist/assets/pdfjs/cmaps/UniKS-UTF32-H.bcmap +0 -0
  194. package/dist/assets/pdfjs/cmaps/UniKS-UTF32-V.bcmap +0 -0
  195. package/dist/assets/pdfjs/cmaps/UniKS-UTF8-H.bcmap +0 -0
  196. package/dist/assets/pdfjs/cmaps/UniKS-UTF8-V.bcmap +0 -0
  197. package/dist/assets/pdfjs/cmaps/V.bcmap +0 -0
  198. package/dist/assets/pdfjs/cmaps/WP-Symbol.bcmap +0 -0
  199. package/dist/assets/pdfjs/iccs/CGATS001Compat-v2-micro.icc +0 -0
  200. package/dist/assets/pdfjs/iccs/LICENSE +116 -0
  201. package/dist/assets/pdfjs/standard_fonts/FoxitDingbats.pfb +0 -0
  202. package/dist/assets/pdfjs/standard_fonts/FoxitFixed.pfb +0 -0
  203. package/dist/assets/pdfjs/standard_fonts/FoxitFixedBold.pfb +0 -0
  204. package/dist/assets/pdfjs/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
  205. package/dist/assets/pdfjs/standard_fonts/FoxitFixedItalic.pfb +0 -0
  206. package/dist/assets/pdfjs/standard_fonts/FoxitSerif.pfb +0 -0
  207. package/dist/assets/pdfjs/standard_fonts/FoxitSerifBold.pfb +0 -0
  208. package/dist/assets/pdfjs/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
  209. package/dist/assets/pdfjs/standard_fonts/FoxitSerifItalic.pfb +0 -0
  210. package/dist/assets/pdfjs/standard_fonts/FoxitSymbol.pfb +0 -0
  211. package/dist/assets/pdfjs/standard_fonts/LICENSE_FOXIT +27 -0
  212. package/dist/assets/pdfjs/standard_fonts/LICENSE_LIBERATION +102 -0
  213. package/dist/assets/pdfjs/standard_fonts/LiberationSans-Bold.ttf +0 -0
  214. package/dist/assets/pdfjs/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
  215. package/dist/assets/pdfjs/standard_fonts/LiberationSans-Italic.ttf +0 -0
  216. package/dist/assets/pdfjs/standard_fonts/LiberationSans-Regular.ttf +0 -0
  217. package/dist/assets/pdfjs/wasm/LICENSE_JBIG2 +196 -0
  218. package/dist/assets/pdfjs/wasm/LICENSE_OPENJPEG +39 -0
  219. package/dist/assets/pdfjs/wasm/LICENSE_PDFJS_JBIG2 +13 -0
  220. package/dist/assets/pdfjs/wasm/LICENSE_PDFJS_OPENJPEG +22 -0
  221. package/dist/assets/pdfjs/wasm/LICENSE_PDFJS_QCMS +22 -0
  222. package/dist/assets/pdfjs/wasm/LICENSE_QCMS +21 -0
  223. package/dist/assets/pdfjs/wasm/jbig2.wasm +0 -0
  224. package/dist/assets/pdfjs/wasm/jbig2_nowasm_fallback.js +15 -0
  225. package/dist/assets/pdfjs/wasm/openjpeg.wasm +0 -0
  226. package/dist/assets/pdfjs/wasm/openjpeg_nowasm_fallback.js +17 -0
  227. package/dist/assets/pdfjs/wasm/qcms_bg.wasm +0 -0
  228. package/dist/assets/pdfjs/wasm/quickjs-eval.js +16 -0
  229. package/dist/assets/pdfjs/wasm/quickjs-eval.wasm +0 -0
  230. package/dist/client.d.ts +20 -0
  231. package/dist/client.js +82 -0
  232. package/dist/contracts.d.ts +379 -0
  233. package/dist/contracts.js +22 -0
  234. package/dist/csv-worker.d.ts +1 -0
  235. package/dist/csv-worker.js +17 -0
  236. package/dist/detect.d.ts +15 -0
  237. package/dist/detect.js +290 -0
  238. package/dist/errors.d.ts +14 -0
  239. package/dist/errors.js +40 -0
  240. package/dist/font-manifest.d.ts +11 -0
  241. package/dist/font-manifest.js +31 -0
  242. package/dist/fonts/OFL-1.1.txt +88 -0
  243. package/dist/fonts/THIRD_PARTY_NOTICES.md +10 -0
  244. package/dist/fonts/manifest.json +83 -0
  245. package/dist/fonts/noto-sans-arabic.woff2 +0 -0
  246. package/dist/fonts/noto-sans-bengali.woff2 +0 -0
  247. package/dist/fonts/noto-sans-cjk.woff2 +0 -0
  248. package/dist/fonts/noto-sans-devanagari.woff2 +0 -0
  249. package/dist/fonts/noto-sans-gujarati.woff2 +0 -0
  250. package/dist/fonts/noto-sans-gurmukhi.woff2 +0 -0
  251. package/dist/fonts/noto-sans-japanese.woff2 +0 -0
  252. package/dist/fonts/noto-sans-kannada.woff2 +0 -0
  253. package/dist/fonts/noto-sans-korean.woff2 +0 -0
  254. package/dist/fonts/noto-sans-latin-cyrillic.woff2 +0 -0
  255. package/dist/fonts/noto-sans-malayalam.woff2 +0 -0
  256. package/dist/fonts/noto-sans-odia.woff2 +0 -0
  257. package/dist/fonts/noto-sans-tamil.woff2 +0 -0
  258. package/dist/fonts/noto-sans-telugu.woff2 +0 -0
  259. package/dist/fonts.d.ts +20 -0
  260. package/dist/fonts.js +238 -0
  261. package/dist/format.d.ts +1 -0
  262. package/dist/format.js +1 -0
  263. package/dist/headless.d.ts +18 -0
  264. package/dist/headless.js +18 -0
  265. package/dist/i18n.d.ts +4 -0
  266. package/dist/i18n.js +55 -0
  267. package/dist/image-worker.d.ts +1 -0
  268. package/dist/image-worker.js +41 -0
  269. package/dist/index.d.ts +27 -0
  270. package/dist/index.js +29 -0
  271. package/dist/interaction.d.ts +24 -0
  272. package/dist/interaction.js +183 -0
  273. package/dist/legacy-converter-worker.d.ts +1 -0
  274. package/dist/legacy-converter-worker.js +19 -0
  275. package/dist/limits.d.ts +4 -0
  276. package/dist/limits.js +162 -0
  277. package/dist/registry.d.ts +8 -0
  278. package/dist/registry.js +35 -0
  279. package/dist/render-scheduler.d.ts +8 -0
  280. package/dist/render-scheduler.js +63 -0
  281. package/dist/source.d.ts +14 -0
  282. package/dist/source.js +116 -0
  283. package/dist/spreadsheet-viewport.d.ts +34 -0
  284. package/dist/spreadsheet-viewport.js +1035 -0
  285. package/dist/styles.css +137 -0
  286. package/dist/ui-styles.d.ts +1 -0
  287. package/dist/ui-styles.js +139 -0
  288. package/dist/ui.d.ts +8 -0
  289. package/dist/ui.js +390 -0
  290. package/dist/viewer.d.ts +52 -0
  291. package/dist/viewer.js +901 -0
  292. package/dist/viewport.d.ts +54 -0
  293. package/dist/viewport.js +907 -0
  294. package/dist/worker-adapter.d.ts +24 -0
  295. package/dist/worker-adapter.js +97 -0
  296. package/dist/worker-client.d.ts +23 -0
  297. package/dist/worker-client.js +105 -0
  298. package/dist/worker-endpoint.d.ts +13 -0
  299. package/dist/worker-endpoint.js +57 -0
  300. package/dist/worker-protocol.d.ts +48 -0
  301. package/dist/worker-protocol.js +14 -0
  302. package/dist/worker.d.ts +4 -0
  303. package/dist/worker.js +4 -0
  304. package/dist/workers/csv-worker.js +160 -0
  305. package/dist/workers/image-worker.js +41 -0
  306. package/dist/workers/legacy-converter-worker.js +19 -0
  307. package/dist/workers/pdf.worker.min.mjs +28 -0
  308. package/package.json +74 -0
@@ -0,0 +1,24 @@
1
+ import type { AdapterOpenContext, DocumentAdapter, DocumentFormat, DocumentInfo, RenderViewport, TextRun } from "./contracts.js";
2
+ import { WorkerRpcClient, type WorkerLike } from "./worker-client.js";
3
+ interface WorkerHandle {
4
+ readonly rpc: WorkerRpcClient;
5
+ readonly timeoutMs: number;
6
+ }
7
+ export interface WorkerDocumentAdapterOptions {
8
+ readonly id: string;
9
+ readonly formats: readonly DocumentFormat[];
10
+ readonly createWorker: () => WorkerLike;
11
+ }
12
+ export declare class WorkerDocumentAdapter implements DocumentAdapter<WorkerHandle> {
13
+ #private;
14
+ readonly id: string;
15
+ readonly formats: readonly DocumentFormat[];
16
+ constructor(options: WorkerDocumentAdapterOptions);
17
+ open(data: Uint8Array, context: AdapterOpenContext): Promise<WorkerHandle>;
18
+ getInfo(handle: WorkerHandle): Promise<DocumentInfo>;
19
+ render(handle: WorkerHandle, target: HTMLCanvasElement | OffscreenCanvas, viewport: RenderViewport, signal?: AbortSignal): Promise<void>;
20
+ getTextMap(handle: WorkerHandle, pageIndex: number, signal?: AbortSignal): Promise<readonly TextRun[]>;
21
+ close(handle: WorkerHandle): Promise<void>;
22
+ destroy(): Promise<void>;
23
+ }
24
+ export {};
@@ -0,0 +1,97 @@
1
+ import { ViewerError } from "./errors.js";
2
+ import { WorkerRpcClient } from "./worker-client.js";
3
+ export class WorkerDocumentAdapter {
4
+ id;
5
+ formats;
6
+ #createWorker;
7
+ #handles = new Set();
8
+ constructor(options) {
9
+ this.id = options.id;
10
+ this.formats = options.formats;
11
+ this.#createWorker = options.createWorker;
12
+ }
13
+ async open(data, context) {
14
+ const rpc = new WorkerRpcClient(this.#createWorker());
15
+ const handle = { rpc, timeoutMs: context.limits.maxOperationMs };
16
+ const transferable = data.slice().buffer;
17
+ const payload = {
18
+ data: transferable,
19
+ format: context.format,
20
+ limits: context.limits,
21
+ ...(context.fileName ? { fileName: context.fileName } : {}),
22
+ ...(context.contentType ? { contentType: context.contentType } : {}),
23
+ };
24
+ try {
25
+ await rpc.request("init", undefined, {
26
+ signal: context.signal,
27
+ timeoutMs: context.limits.maxOperationMs,
28
+ });
29
+ await rpc.request("open", payload, {
30
+ signal: context.signal,
31
+ transfer: [transferable],
32
+ onProgress: context.reportProgress,
33
+ onWarning: context.reportWarning,
34
+ timeoutMs: context.limits.maxOperationMs,
35
+ });
36
+ this.#handles.add(handle);
37
+ return handle;
38
+ }
39
+ catch (error) {
40
+ rpc.destroy();
41
+ throw error;
42
+ }
43
+ }
44
+ getInfo(handle) {
45
+ return handle.rpc.request("get-info", undefined, {
46
+ timeoutMs: handle.timeoutMs,
47
+ });
48
+ }
49
+ async render(handle, target, viewport, signal) {
50
+ const payload = viewport;
51
+ const bitmap = await handle.rpc.request("render", payload, {
52
+ ...(signal ? { signal } : {}),
53
+ timeoutMs: handle.timeoutMs,
54
+ });
55
+ const bitmapContext = target.getContext("bitmaprenderer");
56
+ if (bitmapContext) {
57
+ bitmapContext.transferFromImageBitmap(bitmap);
58
+ return;
59
+ }
60
+ const context = target.getContext("2d");
61
+ if (!context) {
62
+ bitmap.close();
63
+ throw new ViewerError("render-failed", "Canvas has no 2D or bitmaprenderer context");
64
+ }
65
+ context.drawImage(bitmap, 0, 0);
66
+ bitmap.close();
67
+ }
68
+ getTextMap(handle, pageIndex, signal) {
69
+ return handle.rpc.request("get-text-map", { pageIndex }, { ...(signal ? { signal } : {}), timeoutMs: handle.timeoutMs });
70
+ }
71
+ async close(handle) {
72
+ if (!this.#handles.delete(handle))
73
+ return;
74
+ try {
75
+ await handle.rpc.request("close", undefined, {
76
+ timeoutMs: handle.timeoutMs,
77
+ });
78
+ }
79
+ finally {
80
+ handle.rpc.destroy();
81
+ }
82
+ }
83
+ async destroy() {
84
+ const handles = [...this.#handles];
85
+ this.#handles.clear();
86
+ await Promise.all(handles.map(async (handle) => {
87
+ try {
88
+ await handle.rpc.request("destroy", undefined, {
89
+ timeoutMs: handle.timeoutMs,
90
+ });
91
+ }
92
+ finally {
93
+ handle.rpc.destroy();
94
+ }
95
+ }));
96
+ }
97
+ }
@@ -0,0 +1,23 @@
1
+ import type { ViewerProgress, ViewerWarning } from "./contracts.js";
2
+ import type { WorkerInboundMessage, WorkerOperation, WorkerOutboundMessage } from "./worker-protocol.js";
3
+ export interface WorkerLike {
4
+ postMessage(message: WorkerInboundMessage, transfer?: Transferable[]): void;
5
+ addEventListener(type: "message", listener: (event: MessageEvent<WorkerOutboundMessage>) => void): void;
6
+ addEventListener(type: "error" | "messageerror", listener: (event: Event) => void): void;
7
+ removeEventListener(type: "message", listener: (event: MessageEvent<WorkerOutboundMessage>) => void): void;
8
+ removeEventListener(type: "error" | "messageerror", listener: (event: Event) => void): void;
9
+ terminate(): void;
10
+ }
11
+ export interface WorkerRequestOptions {
12
+ readonly signal?: AbortSignal;
13
+ readonly onProgress?: (progress: ViewerProgress) => void;
14
+ readonly onWarning?: (warning: ViewerWarning) => void;
15
+ readonly transfer?: Transferable[];
16
+ readonly timeoutMs?: number;
17
+ }
18
+ export declare class WorkerRpcClient {
19
+ #private;
20
+ constructor(worker: WorkerLike);
21
+ request<T>(operation: WorkerOperation, payload?: unknown, options?: WorkerRequestOptions): Promise<T>;
22
+ destroy(): void;
23
+ }
@@ -0,0 +1,105 @@
1
+ import { abortError, errorFromData, ViewerError } from "./errors.js";
2
+ import { transferablesFor } from "./worker-protocol.js";
3
+ export class WorkerRpcClient {
4
+ #worker;
5
+ #pending = new Map();
6
+ #nextId = 1;
7
+ #destroyed = false;
8
+ constructor(worker) {
9
+ this.#worker = worker;
10
+ worker.addEventListener("message", this.#onMessage);
11
+ worker.addEventListener("error", this.#onCrash);
12
+ worker.addEventListener("messageerror", this.#onCrash);
13
+ }
14
+ request(operation, payload, options = {}) {
15
+ if (this.#destroyed)
16
+ return Promise.reject(new ViewerError("lifecycle-error", "Worker client is destroyed"));
17
+ if (options.signal?.aborted)
18
+ return Promise.reject(abortError());
19
+ const id = this.#nextId++;
20
+ const message = {
21
+ kind: "request",
22
+ id,
23
+ operation,
24
+ ...(payload === undefined ? {} : { payload }),
25
+ };
26
+ return new Promise((resolve, reject) => {
27
+ const abort = options.signal
28
+ ? () => {
29
+ this.#worker.postMessage({ kind: "cancel", id });
30
+ this.#finish(id, abortError());
31
+ }
32
+ : undefined;
33
+ const pending = {
34
+ resolve: resolve,
35
+ reject,
36
+ ...(options.onProgress ? { onProgress: options.onProgress } : {}),
37
+ ...(options.onWarning ? { onWarning: options.onWarning } : {}),
38
+ ...(options.signal ? { signal: options.signal } : {}),
39
+ ...(abort ? { abort } : {}),
40
+ ...(options.timeoutMs
41
+ ? {
42
+ timeout: setTimeout(() => {
43
+ const error = operationTimeout(operation, options.timeoutMs);
44
+ this.#worker.postMessage({ kind: "cancel", id });
45
+ this.#terminate(error);
46
+ }, options.timeoutMs),
47
+ }
48
+ : {}),
49
+ };
50
+ this.#pending.set(id, pending);
51
+ options.signal?.addEventListener("abort", abort, { once: true });
52
+ this.#worker.postMessage(message, options.transfer ?? transferablesFor(payload));
53
+ });
54
+ }
55
+ destroy() {
56
+ this.#terminate(new ViewerError("worker-crashed", "Worker terminated"));
57
+ }
58
+ #terminate(error) {
59
+ if (this.#destroyed)
60
+ return;
61
+ this.#destroyed = true;
62
+ this.#worker.removeEventListener("message", this.#onMessage);
63
+ this.#worker.removeEventListener("error", this.#onCrash);
64
+ this.#worker.removeEventListener("messageerror", this.#onCrash);
65
+ this.#worker.terminate();
66
+ for (const id of this.#pending.keys())
67
+ this.#finish(id, error);
68
+ }
69
+ #onMessage = (event) => {
70
+ const message = event.data;
71
+ const pending = this.#pending.get(message.id);
72
+ if (!pending)
73
+ return;
74
+ if (message.kind === "progress")
75
+ pending.onProgress?.(message.progress);
76
+ else if (message.kind === "warning")
77
+ pending.onWarning?.(message.warning);
78
+ else if (message.kind === "success")
79
+ this.#finish(message.id, undefined, message.result);
80
+ else
81
+ this.#finish(message.id, errorFromData(message.error));
82
+ };
83
+ #onCrash = () => {
84
+ const error = new ViewerError("worker-crashed", "Document worker crashed");
85
+ for (const id of this.#pending.keys())
86
+ this.#finish(id, error);
87
+ };
88
+ #finish(id, error, value) {
89
+ const pending = this.#pending.get(id);
90
+ if (!pending)
91
+ return;
92
+ this.#pending.delete(id);
93
+ if (pending.abort && pending.signal)
94
+ pending.signal.removeEventListener("abort", pending.abort);
95
+ if (pending.timeout)
96
+ clearTimeout(pending.timeout);
97
+ if (error)
98
+ pending.reject(error);
99
+ else
100
+ pending.resolve(value);
101
+ }
102
+ }
103
+ function operationTimeout(operation, timeoutMs) {
104
+ return new ViewerError("resource-limit", `Worker operation ${operation} exceeded maxOperationMs`, { details: { operation, timeoutMs } });
105
+ }
@@ -0,0 +1,13 @@
1
+ import type { ViewerProgress, ViewerWarning } from "./contracts.js";
2
+ import type { WorkerInboundMessage, WorkerOperation, WorkerOutboundMessage } from "./worker-protocol.js";
3
+ export interface WorkerScopeLike {
4
+ postMessage(message: WorkerOutboundMessage, transfer?: Transferable[]): void;
5
+ addEventListener(type: "message", listener: (event: MessageEvent<WorkerInboundMessage>) => void): void;
6
+ removeEventListener(type: "message", listener: (event: MessageEvent<WorkerInboundMessage>) => void): void;
7
+ }
8
+ export type WorkerOperationHandler = (operation: WorkerOperation, payload: unknown, context: {
9
+ signal: AbortSignal;
10
+ reportProgress: (progress: ViewerProgress) => void;
11
+ reportWarning: (warning: ViewerWarning) => void;
12
+ }) => Promise<unknown>;
13
+ export declare function attachWorkerEndpoint(scope: WorkerScopeLike, handler: WorkerOperationHandler): () => void;
@@ -0,0 +1,57 @@
1
+ import { normalizeError } from "./errors.js";
2
+ import { transferablesFor } from "./worker-protocol.js";
3
+ export function attachWorkerEndpoint(scope, handler) {
4
+ const operations = new Map();
5
+ const onMessage = (event) => {
6
+ const message = event.data;
7
+ if (message.kind === "cancel") {
8
+ cancel(operations, message);
9
+ return;
10
+ }
11
+ void run(scope, handler, operations, message);
12
+ };
13
+ scope.addEventListener("message", onMessage);
14
+ return () => {
15
+ scope.removeEventListener("message", onMessage);
16
+ for (const controller of operations.values())
17
+ controller.abort();
18
+ operations.clear();
19
+ };
20
+ }
21
+ async function run(scope, handler, operations, request) {
22
+ const controller = new AbortController();
23
+ operations.set(request.id, controller);
24
+ try {
25
+ const result = await handler(request.operation, request.payload, {
26
+ signal: controller.signal,
27
+ reportProgress: (progress) => scope.postMessage({
28
+ kind: "progress",
29
+ id: request.id,
30
+ progress,
31
+ }),
32
+ reportWarning: (warning) => scope.postMessage({
33
+ kind: "warning",
34
+ id: request.id,
35
+ warning,
36
+ }),
37
+ });
38
+ scope.postMessage({
39
+ kind: "success",
40
+ id: request.id,
41
+ ...(result === undefined ? {} : { result }),
42
+ }, transferablesFor(result));
43
+ }
44
+ catch (error) {
45
+ scope.postMessage({
46
+ kind: "failure",
47
+ id: request.id,
48
+ error: normalizeError(error).toJSON(),
49
+ });
50
+ }
51
+ finally {
52
+ operations.delete(request.id);
53
+ }
54
+ }
55
+ function cancel(operations, message) {
56
+ operations.get(message.id)?.abort();
57
+ }
@@ -0,0 +1,48 @@
1
+ import type { DocumentFormat, DocumentInfo, ResourceLimits, TextRun, ViewerErrorData, ViewerProgress, ViewerWarning } from "./contracts.js";
2
+ export type WorkerOperation = "init" | "open" | "get-info" | "render" | "get-text-map" | "close" | "destroy";
3
+ export interface WorkerRequest {
4
+ readonly kind: "request";
5
+ readonly id: number;
6
+ readonly operation: WorkerOperation;
7
+ readonly payload?: unknown;
8
+ }
9
+ export interface WorkerCancel {
10
+ readonly kind: "cancel";
11
+ readonly id: number;
12
+ }
13
+ export interface WorkerSuccess {
14
+ readonly kind: "success";
15
+ readonly id: number;
16
+ readonly result?: unknown;
17
+ }
18
+ export interface WorkerFailure {
19
+ readonly kind: "failure";
20
+ readonly id: number;
21
+ readonly error: ViewerErrorData;
22
+ }
23
+ export interface WorkerProgressMessage {
24
+ readonly kind: "progress";
25
+ readonly id: number;
26
+ readonly progress: ViewerProgress;
27
+ }
28
+ export interface WorkerWarningMessage {
29
+ readonly kind: "warning";
30
+ readonly id: number;
31
+ readonly warning: ViewerWarning;
32
+ }
33
+ export type WorkerInboundMessage = WorkerRequest | WorkerCancel;
34
+ export type WorkerOutboundMessage = WorkerSuccess | WorkerFailure | WorkerProgressMessage | WorkerWarningMessage;
35
+ export interface WorkerOpenPayload {
36
+ readonly data: ArrayBuffer;
37
+ readonly format: DocumentFormat;
38
+ readonly limits: ResourceLimits;
39
+ readonly fileName?: string;
40
+ readonly contentType?: string;
41
+ }
42
+ export interface WorkerRenderPayload {
43
+ readonly pageIndex: number;
44
+ readonly zoom: number;
45
+ readonly devicePixelRatio: number;
46
+ }
47
+ export type WorkerOperationResult = DocumentInfo | readonly TextRun[] | ImageBitmap | ArrayBuffer | undefined;
48
+ export declare function transferablesFor(value: unknown): Transferable[];
@@ -0,0 +1,14 @@
1
+ export function transferablesFor(value) {
2
+ if (value instanceof ArrayBuffer)
3
+ return [value];
4
+ if (typeof ImageBitmap !== "undefined" && value instanceof ImageBitmap)
5
+ return [value];
6
+ if (ArrayBuffer.isView(value))
7
+ return [value.buffer];
8
+ if (value && typeof value === "object") {
9
+ const data = value.data;
10
+ if (data instanceof ArrayBuffer)
11
+ return [data];
12
+ }
13
+ return [];
14
+ }
@@ -0,0 +1,4 @@
1
+ export * from "./worker-client.js";
2
+ export * from "./worker-adapter.js";
3
+ export * from "./worker-endpoint.js";
4
+ export * from "./worker-protocol.js";
package/dist/worker.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from "./worker-client.js";
2
+ export * from "./worker-adapter.js";
3
+ export * from "./worker-endpoint.js";
4
+ export * from "./worker-protocol.js";
@@ -0,0 +1,160 @@
1
+ // src/errors.ts
2
+ var ViewerError = class extends Error {
3
+ name = "ViewerError";
4
+ code;
5
+ details;
6
+ constructor(code, message, options = {}) {
7
+ super(
8
+ message,
9
+ options.cause === void 0 ? void 0 : { cause: options.cause }
10
+ );
11
+ this.code = code;
12
+ if (options.details) this.details = options.details;
13
+ }
14
+ toJSON() {
15
+ return {
16
+ name: this.name,
17
+ code: this.code,
18
+ message: this.message,
19
+ ...this.details ? { details: this.details } : {}
20
+ };
21
+ }
22
+ };
23
+
24
+ // src/adapters/csv-parser.ts
25
+ function parseDelimitedBytes(data, format, maxCells = 1e6) {
26
+ const decoded = decodeDelimitedBytes(data);
27
+ const delimiter = format === "tsv" ? " " : detectDelimiter(decoded.text, [",", " ", ";"]);
28
+ return {
29
+ delimiter,
30
+ encoding: decoded.encoding,
31
+ rows: parseDelimitedText(decoded.text, delimiter, maxCells)
32
+ };
33
+ }
34
+ function parseDelimitedText(text, delimiter, maxCells = 1e6) {
35
+ const rows = [];
36
+ let row = [];
37
+ let field = "";
38
+ let quoted = false;
39
+ let cells = 0;
40
+ const pushField = () => {
41
+ cells += 1;
42
+ if (cells > maxCells)
43
+ throw new ViewerError(
44
+ "resource-limit",
45
+ "Delimited data exceeds cell limit",
46
+ {
47
+ details: { maxCells }
48
+ }
49
+ );
50
+ row.push(field);
51
+ field = "";
52
+ };
53
+ const pushRow = () => {
54
+ pushField();
55
+ rows.push(row);
56
+ row = [];
57
+ };
58
+ for (let index = 0; index < text.length; index += 1) {
59
+ const character = text[index];
60
+ if (quoted) {
61
+ if (character === '"') {
62
+ if (text[index + 1] === '"') {
63
+ field += '"';
64
+ index += 1;
65
+ } else quoted = false;
66
+ } else field += character;
67
+ continue;
68
+ }
69
+ if (character === '"' && field.length === 0) quoted = true;
70
+ else if (character === delimiter) pushField();
71
+ else if (character === "\n") pushRow();
72
+ else if (character !== "\r") field += character;
73
+ }
74
+ if (quoted)
75
+ throw new ViewerError(
76
+ "invalid-file",
77
+ "Unterminated quoted field in delimited data"
78
+ );
79
+ if (field.length > 0 || row.length > 0) pushRow();
80
+ return rows;
81
+ }
82
+ function decodeDelimitedBytes(data) {
83
+ if (data[0] === 239 && data[1] === 187 && data[2] === 191)
84
+ return {
85
+ text: new TextDecoder("utf-8", { fatal: true }).decode(data.subarray(3)),
86
+ encoding: "utf-8"
87
+ };
88
+ if (data[0] === 255 && data[1] === 254)
89
+ return {
90
+ text: new TextDecoder("utf-16le", { fatal: true }).decode(
91
+ data.subarray(2)
92
+ ),
93
+ encoding: "utf-16le"
94
+ };
95
+ if (data[0] === 254 && data[1] === 255) {
96
+ const swapped = data.subarray(2).slice();
97
+ for (let index = 0; index + 1 < swapped.length; index += 2)
98
+ [swapped[index], swapped[index + 1]] = [
99
+ swapped[index + 1],
100
+ swapped[index]
101
+ ];
102
+ return {
103
+ text: new TextDecoder("utf-16le", { fatal: true }).decode(swapped),
104
+ encoding: "utf-16be"
105
+ };
106
+ }
107
+ try {
108
+ return {
109
+ text: new TextDecoder("utf-8", { fatal: true }).decode(data),
110
+ encoding: "utf-8"
111
+ };
112
+ } catch {
113
+ return {
114
+ text: new TextDecoder("windows-1252").decode(data),
115
+ encoding: "windows-1252"
116
+ };
117
+ }
118
+ }
119
+ function detectDelimiter(text, candidates) {
120
+ const sample = text.slice(0, 64 * 1024);
121
+ let best = ",";
122
+ let bestScore = -1;
123
+ for (const candidate of candidates) {
124
+ let quoted = false;
125
+ let count = 0;
126
+ let lines = 0;
127
+ for (let index = 0; index < sample.length && lines < 20; index += 1) {
128
+ const character = sample[index];
129
+ if (character === '"') {
130
+ if (quoted && sample[index + 1] === '"') index += 1;
131
+ else quoted = !quoted;
132
+ } else if (!quoted && character === candidate) count += 1;
133
+ else if (!quoted && character === "\n") lines += 1;
134
+ }
135
+ if (count > bestScore) {
136
+ best = candidate;
137
+ bestScore = count;
138
+ }
139
+ }
140
+ return best;
141
+ }
142
+
143
+ // src/csv-worker.ts
144
+ var workerScope = self;
145
+ workerScope.onmessage = (event) => {
146
+ try {
147
+ const result = parseDelimitedBytes(
148
+ new Uint8Array(event.data.data),
149
+ event.data.format,
150
+ event.data.maxCells
151
+ );
152
+ workerScope.postMessage({ ok: true, result });
153
+ } catch (error) {
154
+ workerScope.postMessage({
155
+ ok: false,
156
+ message: error instanceof Error ? error.message : String(error),
157
+ code: typeof error === "object" && error !== null && "code" in error ? String(error.code) : "invalid-file"
158
+ });
159
+ }
160
+ };
@@ -0,0 +1,41 @@
1
+ const workerScope = self;
2
+ let document;
3
+ workerScope.onmessage = async (event) => {
4
+ const request = event.data;
5
+ try {
6
+ if (request.type === "open") {
7
+ if (!request.moduleUrl || !request.data || !request.maxPixels)
8
+ throw new Error("Invalid TIFF open request");
9
+ const module = (await import(
10
+ /* @vite-ignore */ request.moduleUrl));
11
+ await module.default();
12
+ document?.free();
13
+ document = new module.TiffViewerDocument(new Uint8Array(request.data), request.maxPixels);
14
+ const pages = Array.from({ length: document.pageCount() }, (_, pageIndex) => ({
15
+ width: document.pageWidth(pageIndex),
16
+ height: document.pageHeight(pageIndex),
17
+ }));
18
+ workerScope.postMessage({ id: request.id, ok: true, pages });
19
+ }
20
+ else if (request.type === "render") {
21
+ if (!document || request.pageIndex === undefined)
22
+ throw new Error("TIFF is not open");
23
+ const png = document.renderPagePng(request.pageIndex);
24
+ const data = png.slice().buffer;
25
+ workerScope.postMessage({ id: request.id, ok: true, data }, [data]);
26
+ }
27
+ else {
28
+ document?.free();
29
+ document = undefined;
30
+ workerScope.postMessage({ id: request.id, ok: true });
31
+ }
32
+ }
33
+ catch (error) {
34
+ workerScope.postMessage({
35
+ id: request.id,
36
+ ok: false,
37
+ message: error instanceof Error ? error.message : String(error),
38
+ });
39
+ }
40
+ };
41
+ export {};
@@ -0,0 +1,19 @@
1
+ const workerScope = self;
2
+ workerScope.onmessage = async (event) => {
3
+ try {
4
+ const module = (await import(
5
+ /* @vite-ignore */ event.data.moduleUrl));
6
+ await module.default();
7
+ const output = module.convertLegacyToOoxml(new Uint8Array(event.data.data), event.data.format);
8
+ const data = output.slice().buffer;
9
+ workerScope.postMessage({ ok: true, data }, [data]);
10
+ }
11
+ catch (error) {
12
+ workerScope.postMessage({
13
+ ok: false,
14
+ data: new ArrayBuffer(0),
15
+ message: error instanceof Error ? error.message : String(error),
16
+ });
17
+ }
18
+ };
19
+ export {};