@vertesia/workflow 0.52.0 → 0.54.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 (379) hide show
  1. package/package.json +5 -4
  2. package/src/activities/createDocumentFromOther.ts +1 -1
  3. package/src/activities/executeInteraction.ts +66 -39
  4. package/src/activities/extractDocumentText.ts +67 -51
  5. package/src/activities/generateEmbeddings.ts +1 -1
  6. package/src/activities/generateImageRendition.ts +35 -14
  7. package/src/activities/generateOrAssignContentType.ts +52 -26
  8. package/src/activities/getObjectFromStore.ts +1 -1
  9. package/src/activities/handleError.ts +25 -0
  10. package/src/activities/index-dsl.ts +1 -0
  11. package/src/activities/index.ts +0 -1
  12. package/src/activities/media/processPdfWithTextract.ts +4 -4
  13. package/src/activities/media/transcribeMediaWithGladia.ts +1 -1
  14. package/src/activities/setDocumentStatus.ts +1 -1
  15. package/src/conversion/TextractProcessor.ts +9 -9
  16. package/src/conversion/image.ts +8 -2
  17. package/src/conversion/markitdown.ts +41 -0
  18. package/src/conversion/mutool.ts +1 -1
  19. package/src/conversion/pandoc.test.ts +2 -2
  20. package/src/conversion/pandoc.ts +38 -42
  21. package/src/dsl/dsl-workflow.ts +80 -12
  22. package/src/dsl/validation.test.ts +2 -2
  23. package/src/dsl/vars.test.ts +1 -1
  24. package/src/dsl/vars.ts +6 -6
  25. package/src/dsl/workflow-exec-child.test.ts +14 -4
  26. package/src/dsl/workflow-fetch.test.ts +1 -1
  27. package/src/dsl/workflow-import.test.ts +1 -1
  28. package/src/dsl/workflow.test.ts +12 -2
  29. package/src/index.ts +1 -1
  30. package/src/iterative-generation/activities/extractToc.ts +1 -1
  31. package/src/iterative-generation/activities/generatePart.ts +2 -2
  32. package/src/iterative-generation/activities/generateToc.ts +1 -1
  33. package/src/iterative-generation/iterativeGenerationWorkflow.ts +1 -1
  34. package/src/iterative-generation/types.ts +4 -4
  35. package/src/iterative-generation/utils.ts +4 -4
  36. package/lib/cjs/activities/advanced/createDocumentTypeFromInteractionRun.js +0 -32
  37. package/lib/cjs/activities/advanced/createDocumentTypeFromInteractionRun.js.map +0 -1
  38. package/lib/cjs/activities/advanced/createOrUpdateDocumentFromInteractionRun.js +0 -72
  39. package/lib/cjs/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +0 -1
  40. package/lib/cjs/activities/advanced/updateDocumentFromInteractionRun.js +0 -18
  41. package/lib/cjs/activities/advanced/updateDocumentFromInteractionRun.js.map +0 -1
  42. package/lib/cjs/activities/chunkDocument.js +0 -84
  43. package/lib/cjs/activities/chunkDocument.js.map +0 -1
  44. package/lib/cjs/activities/createDocumentFromOther.js +0 -64
  45. package/lib/cjs/activities/createDocumentFromOther.js.map +0 -1
  46. package/lib/cjs/activities/executeInteraction.js +0 -140
  47. package/lib/cjs/activities/executeInteraction.js.map +0 -1
  48. package/lib/cjs/activities/extractDocumentText.js +0 -153
  49. package/lib/cjs/activities/extractDocumentText.js.map +0 -1
  50. package/lib/cjs/activities/generateDocumentProperties.js +0 -77
  51. package/lib/cjs/activities/generateDocumentProperties.js.map +0 -1
  52. package/lib/cjs/activities/generateEmbeddings.js +0 -248
  53. package/lib/cjs/activities/generateEmbeddings.js.map +0 -1
  54. package/lib/cjs/activities/generateImageRendition.js +0 -147
  55. package/lib/cjs/activities/generateImageRendition.js.map +0 -1
  56. package/lib/cjs/activities/generateOrAssignContentType.js +0 -99
  57. package/lib/cjs/activities/generateOrAssignContentType.js.map +0 -1
  58. package/lib/cjs/activities/getObjectFromStore.js +0 -20
  59. package/lib/cjs/activities/getObjectFromStore.js.map +0 -1
  60. package/lib/cjs/activities/index-dsl.js +0 -37
  61. package/lib/cjs/activities/index-dsl.js.map +0 -1
  62. package/lib/cjs/activities/index.js +0 -22
  63. package/lib/cjs/activities/index.js.map +0 -1
  64. package/lib/cjs/activities/media/processPdfWithTextract.js +0 -102
  65. package/lib/cjs/activities/media/processPdfWithTextract.js.map +0 -1
  66. package/lib/cjs/activities/media/transcribeMediaWithGladia.js +0 -51
  67. package/lib/cjs/activities/media/transcribeMediaWithGladia.js.map +0 -1
  68. package/lib/cjs/activities/notifyWebhook.js +0 -34
  69. package/lib/cjs/activities/notifyWebhook.js.map +0 -1
  70. package/lib/cjs/activities/setDocumentStatus.js +0 -15
  71. package/lib/cjs/activities/setDocumentStatus.js.map +0 -1
  72. package/lib/cjs/conversion/TextractProcessor.js +0 -417
  73. package/lib/cjs/conversion/TextractProcessor.js.map +0 -1
  74. package/lib/cjs/conversion/image.js +0 -90
  75. package/lib/cjs/conversion/image.js.map +0 -1
  76. package/lib/cjs/conversion/mutool.js +0 -147
  77. package/lib/cjs/conversion/mutool.js.map +0 -1
  78. package/lib/cjs/conversion/pandoc.js +0 -39
  79. package/lib/cjs/conversion/pandoc.js.map +0 -1
  80. package/lib/cjs/dsl/conditions.js +0 -81
  81. package/lib/cjs/dsl/conditions.js.map +0 -1
  82. package/lib/cjs/dsl/dsl-workflow.js +0 -223
  83. package/lib/cjs/dsl/dsl-workflow.js.map +0 -1
  84. package/lib/cjs/dsl/dslProxyActivities.js +0 -23
  85. package/lib/cjs/dsl/dslProxyActivities.js.map +0 -1
  86. package/lib/cjs/dsl/projections.js +0 -59
  87. package/lib/cjs/dsl/projections.js.map +0 -1
  88. package/lib/cjs/dsl/setup/ActivityContext.js +0 -120
  89. package/lib/cjs/dsl/setup/ActivityContext.js.map +0 -1
  90. package/lib/cjs/dsl/setup/fetch/DataProvider.js +0 -51
  91. package/lib/cjs/dsl/setup/fetch/DataProvider.js.map +0 -1
  92. package/lib/cjs/dsl/setup/fetch/index.js +0 -16
  93. package/lib/cjs/dsl/setup/fetch/index.js.map +0 -1
  94. package/lib/cjs/dsl/setup/fetch/providers.js +0 -67
  95. package/lib/cjs/dsl/setup/fetch/providers.js.map +0 -1
  96. package/lib/cjs/dsl/test/test-child-workflow.js +0 -10
  97. package/lib/cjs/dsl/test/test-child-workflow.js.map +0 -1
  98. package/lib/cjs/dsl/validation.js +0 -122
  99. package/lib/cjs/dsl/validation.js.map +0 -1
  100. package/lib/cjs/dsl/vars.js +0 -341
  101. package/lib/cjs/dsl/vars.js.map +0 -1
  102. package/lib/cjs/dsl/walk.js +0 -100
  103. package/lib/cjs/dsl/walk.js.map +0 -1
  104. package/lib/cjs/dsl.js +0 -20
  105. package/lib/cjs/dsl.js.map +0 -1
  106. package/lib/cjs/errors.js +0 -48
  107. package/lib/cjs/errors.js.map +0 -1
  108. package/lib/cjs/index.js +0 -50
  109. package/lib/cjs/index.js.map +0 -1
  110. package/lib/cjs/iterative-generation/activities/extractToc.js +0 -47
  111. package/lib/cjs/iterative-generation/activities/extractToc.js.map +0 -1
  112. package/lib/cjs/iterative-generation/activities/finalizeOutput.js +0 -69
  113. package/lib/cjs/iterative-generation/activities/finalizeOutput.js.map +0 -1
  114. package/lib/cjs/iterative-generation/activities/generatePart.js +0 -73
  115. package/lib/cjs/iterative-generation/activities/generatePart.js.map +0 -1
  116. package/lib/cjs/iterative-generation/activities/generateToc.js +0 -91
  117. package/lib/cjs/iterative-generation/activities/generateToc.js.map +0 -1
  118. package/lib/cjs/iterative-generation/activities/index.js +0 -12
  119. package/lib/cjs/iterative-generation/activities/index.js.map +0 -1
  120. package/lib/cjs/iterative-generation/iterativeGenerationWorkflow.js +0 -56
  121. package/lib/cjs/iterative-generation/iterativeGenerationWorkflow.js.map +0 -1
  122. package/lib/cjs/iterative-generation/types.js +0 -5
  123. package/lib/cjs/iterative-generation/types.js.map +0 -1
  124. package/lib/cjs/iterative-generation/utils.js +0 -121
  125. package/lib/cjs/iterative-generation/utils.js.map +0 -1
  126. package/lib/cjs/package.json +0 -3
  127. package/lib/cjs/result-types.js +0 -10
  128. package/lib/cjs/result-types.js.map +0 -1
  129. package/lib/cjs/system/notifyWebhookWorkflow.js +0 -47
  130. package/lib/cjs/system/notifyWebhookWorkflow.js.map +0 -1
  131. package/lib/cjs/system/recalculateEmbeddingsWorkflow.js +0 -28
  132. package/lib/cjs/system/recalculateEmbeddingsWorkflow.js.map +0 -1
  133. package/lib/cjs/utils/auth.js +0 -15
  134. package/lib/cjs/utils/auth.js.map +0 -1
  135. package/lib/cjs/utils/blobs.js +0 -69
  136. package/lib/cjs/utils/blobs.js.map +0 -1
  137. package/lib/cjs/utils/chunks.js +0 -14
  138. package/lib/cjs/utils/chunks.js.map +0 -1
  139. package/lib/cjs/utils/client.js +0 -26
  140. package/lib/cjs/utils/client.js.map +0 -1
  141. package/lib/cjs/utils/expand-vars.js +0 -33
  142. package/lib/cjs/utils/expand-vars.js.map +0 -1
  143. package/lib/cjs/utils/memory.js +0 -65
  144. package/lib/cjs/utils/memory.js.map +0 -1
  145. package/lib/cjs/utils/tokens.js +0 -38
  146. package/lib/cjs/utils/tokens.js.map +0 -1
  147. package/lib/cjs/vars.js +0 -20
  148. package/lib/cjs/vars.js.map +0 -1
  149. package/lib/cjs/workflows.js +0 -15
  150. package/lib/cjs/workflows.js.map +0 -1
  151. package/lib/esm/activities/advanced/createDocumentTypeFromInteractionRun.js +0 -29
  152. package/lib/esm/activities/advanced/createDocumentTypeFromInteractionRun.js.map +0 -1
  153. package/lib/esm/activities/advanced/createOrUpdateDocumentFromInteractionRun.js +0 -69
  154. package/lib/esm/activities/advanced/createOrUpdateDocumentFromInteractionRun.js.map +0 -1
  155. package/lib/esm/activities/advanced/updateDocumentFromInteractionRun.js +0 -15
  156. package/lib/esm/activities/advanced/updateDocumentFromInteractionRun.js.map +0 -1
  157. package/lib/esm/activities/chunkDocument.js +0 -81
  158. package/lib/esm/activities/chunkDocument.js.map +0 -1
  159. package/lib/esm/activities/createDocumentFromOther.js +0 -58
  160. package/lib/esm/activities/createDocumentFromOther.js.map +0 -1
  161. package/lib/esm/activities/executeInteraction.js +0 -136
  162. package/lib/esm/activities/executeInteraction.js.map +0 -1
  163. package/lib/esm/activities/extractDocumentText.js +0 -150
  164. package/lib/esm/activities/extractDocumentText.js.map +0 -1
  165. package/lib/esm/activities/generateDocumentProperties.js +0 -74
  166. package/lib/esm/activities/generateDocumentProperties.js.map +0 -1
  167. package/lib/esm/activities/generateEmbeddings.js +0 -245
  168. package/lib/esm/activities/generateEmbeddings.js.map +0 -1
  169. package/lib/esm/activities/generateImageRendition.js +0 -141
  170. package/lib/esm/activities/generateImageRendition.js.map +0 -1
  171. package/lib/esm/activities/generateOrAssignContentType.js +0 -96
  172. package/lib/esm/activities/generateOrAssignContentType.js.map +0 -1
  173. package/lib/esm/activities/getObjectFromStore.js +0 -17
  174. package/lib/esm/activities/getObjectFromStore.js.map +0 -1
  175. package/lib/esm/activities/index-dsl.js +0 -18
  176. package/lib/esm/activities/index-dsl.js.map +0 -1
  177. package/lib/esm/activities/index.js +0 -6
  178. package/lib/esm/activities/index.js.map +0 -1
  179. package/lib/esm/activities/media/processPdfWithTextract.js +0 -98
  180. package/lib/esm/activities/media/processPdfWithTextract.js.map +0 -1
  181. package/lib/esm/activities/media/transcribeMediaWithGladia.js +0 -48
  182. package/lib/esm/activities/media/transcribeMediaWithGladia.js.map +0 -1
  183. package/lib/esm/activities/notifyWebhook.js +0 -31
  184. package/lib/esm/activities/notifyWebhook.js.map +0 -1
  185. package/lib/esm/activities/setDocumentStatus.js +0 -12
  186. package/lib/esm/activities/setDocumentStatus.js.map +0 -1
  187. package/lib/esm/conversion/TextractProcessor.js +0 -410
  188. package/lib/esm/conversion/TextractProcessor.js.map +0 -1
  189. package/lib/esm/conversion/image.js +0 -84
  190. package/lib/esm/conversion/image.js.map +0 -1
  191. package/lib/esm/conversion/mutool.js +0 -139
  192. package/lib/esm/conversion/mutool.js.map +0 -1
  193. package/lib/esm/conversion/pandoc.js +0 -36
  194. package/lib/esm/conversion/pandoc.js.map +0 -1
  195. package/lib/esm/dsl/conditions.js +0 -75
  196. package/lib/esm/dsl/conditions.js.map +0 -1
  197. package/lib/esm/dsl/dsl-workflow.js +0 -216
  198. package/lib/esm/dsl/dsl-workflow.js.map +0 -1
  199. package/lib/esm/dsl/dslProxyActivities.js +0 -20
  200. package/lib/esm/dsl/dslProxyActivities.js.map +0 -1
  201. package/lib/esm/dsl/projections.js +0 -55
  202. package/lib/esm/dsl/projections.js.map +0 -1
  203. package/lib/esm/dsl/setup/ActivityContext.js +0 -115
  204. package/lib/esm/dsl/setup/ActivityContext.js.map +0 -1
  205. package/lib/esm/dsl/setup/fetch/DataProvider.js +0 -47
  206. package/lib/esm/dsl/setup/fetch/DataProvider.js.map +0 -1
  207. package/lib/esm/dsl/setup/fetch/index.js +0 -12
  208. package/lib/esm/dsl/setup/fetch/index.js.map +0 -1
  209. package/lib/esm/dsl/setup/fetch/providers.js +0 -61
  210. package/lib/esm/dsl/setup/fetch/providers.js.map +0 -1
  211. package/lib/esm/dsl/test/test-child-workflow.js +0 -5
  212. package/lib/esm/dsl/test/test-child-workflow.js.map +0 -1
  213. package/lib/esm/dsl/validation.js +0 -118
  214. package/lib/esm/dsl/validation.js.map +0 -1
  215. package/lib/esm/dsl/vars.js +0 -335
  216. package/lib/esm/dsl/vars.js.map +0 -1
  217. package/lib/esm/dsl/walk.js +0 -96
  218. package/lib/esm/dsl/walk.js.map +0 -1
  219. package/lib/esm/dsl.js +0 -4
  220. package/lib/esm/dsl.js.map +0 -1
  221. package/lib/esm/errors.js +0 -41
  222. package/lib/esm/errors.js.map +0 -1
  223. package/lib/esm/index.js +0 -32
  224. package/lib/esm/index.js.map +0 -1
  225. package/lib/esm/iterative-generation/activities/extractToc.js +0 -44
  226. package/lib/esm/iterative-generation/activities/extractToc.js.map +0 -1
  227. package/lib/esm/iterative-generation/activities/finalizeOutput.js +0 -66
  228. package/lib/esm/iterative-generation/activities/finalizeOutput.js.map +0 -1
  229. package/lib/esm/iterative-generation/activities/generatePart.js +0 -70
  230. package/lib/esm/iterative-generation/activities/generatePart.js.map +0 -1
  231. package/lib/esm/iterative-generation/activities/generateToc.js +0 -88
  232. package/lib/esm/iterative-generation/activities/generateToc.js.map +0 -1
  233. package/lib/esm/iterative-generation/activities/index.js +0 -5
  234. package/lib/esm/iterative-generation/activities/index.js.map +0 -1
  235. package/lib/esm/iterative-generation/iterativeGenerationWorkflow.js +0 -53
  236. package/lib/esm/iterative-generation/iterativeGenerationWorkflow.js.map +0 -1
  237. package/lib/esm/iterative-generation/types.js +0 -2
  238. package/lib/esm/iterative-generation/types.js.map +0 -1
  239. package/lib/esm/iterative-generation/utils.js +0 -112
  240. package/lib/esm/iterative-generation/utils.js.map +0 -1
  241. package/lib/esm/result-types.js +0 -7
  242. package/lib/esm/result-types.js.map +0 -1
  243. package/lib/esm/system/notifyWebhookWorkflow.js +0 -44
  244. package/lib/esm/system/notifyWebhookWorkflow.js.map +0 -1
  245. package/lib/esm/system/recalculateEmbeddingsWorkflow.js +0 -25
  246. package/lib/esm/system/recalculateEmbeddingsWorkflow.js.map +0 -1
  247. package/lib/esm/utils/auth.js +0 -8
  248. package/lib/esm/utils/auth.js.map +0 -1
  249. package/lib/esm/utils/blobs.js +0 -58
  250. package/lib/esm/utils/blobs.js.map +0 -1
  251. package/lib/esm/utils/chunks.js +0 -9
  252. package/lib/esm/utils/chunks.js.map +0 -1
  253. package/lib/esm/utils/client.js +0 -23
  254. package/lib/esm/utils/client.js.map +0 -1
  255. package/lib/esm/utils/expand-vars.js +0 -30
  256. package/lib/esm/utils/expand-vars.js.map +0 -1
  257. package/lib/esm/utils/memory.js +0 -55
  258. package/lib/esm/utils/memory.js.map +0 -1
  259. package/lib/esm/utils/tokens.js +0 -34
  260. package/lib/esm/utils/tokens.js.map +0 -1
  261. package/lib/esm/vars.js +0 -4
  262. package/lib/esm/vars.js.map +0 -1
  263. package/lib/esm/workflows.js +0 -8
  264. package/lib/esm/workflows.js.map +0 -1
  265. package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts +0 -17
  266. package/lib/types/activities/advanced/createDocumentTypeFromInteractionRun.d.ts.map +0 -1
  267. package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts +0 -39
  268. package/lib/types/activities/advanced/createOrUpdateDocumentFromInteractionRun.d.ts.map +0 -1
  269. package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts +0 -19
  270. package/lib/types/activities/advanced/updateDocumentFromInteractionRun.d.ts.map +0 -1
  271. package/lib/types/activities/chunkDocument.d.ts +0 -33
  272. package/lib/types/activities/chunkDocument.d.ts.map +0 -1
  273. package/lib/types/activities/createDocumentFromOther.d.ts +0 -21
  274. package/lib/types/activities/createDocumentFromOther.d.ts.map +0 -1
  275. package/lib/types/activities/executeInteraction.d.ts +0 -55
  276. package/lib/types/activities/executeInteraction.d.ts.map +0 -1
  277. package/lib/types/activities/extractDocumentText.d.ts +0 -10
  278. package/lib/types/activities/extractDocumentText.d.ts.map +0 -1
  279. package/lib/types/activities/generateDocumentProperties.d.ts +0 -32
  280. package/lib/types/activities/generateDocumentProperties.d.ts.map +0 -1
  281. package/lib/types/activities/generateEmbeddings.d.ts +0 -53
  282. package/lib/types/activities/generateEmbeddings.d.ts.map +0 -1
  283. package/lib/types/activities/generateImageRendition.d.ts +0 -15
  284. package/lib/types/activities/generateImageRendition.d.ts.map +0 -1
  285. package/lib/types/activities/generateOrAssignContentType.d.ts +0 -44
  286. package/lib/types/activities/generateOrAssignContentType.d.ts.map +0 -1
  287. package/lib/types/activities/getObjectFromStore.d.ts +0 -14
  288. package/lib/types/activities/getObjectFromStore.d.ts.map +0 -1
  289. package/lib/types/activities/index-dsl.d.ts +0 -17
  290. package/lib/types/activities/index-dsl.d.ts.map +0 -1
  291. package/lib/types/activities/index.d.ts +0 -6
  292. package/lib/types/activities/index.d.ts.map +0 -1
  293. package/lib/types/activities/media/processPdfWithTextract.d.ts +0 -26
  294. package/lib/types/activities/media/processPdfWithTextract.d.ts.map +0 -1
  295. package/lib/types/activities/media/transcribeMediaWithGladia.d.ts +0 -14
  296. package/lib/types/activities/media/transcribeMediaWithGladia.d.ts.map +0 -1
  297. package/lib/types/activities/notifyWebhook.d.ts +0 -16
  298. package/lib/types/activities/notifyWebhook.d.ts.map +0 -1
  299. package/lib/types/activities/setDocumentStatus.d.ts +0 -15
  300. package/lib/types/activities/setDocumentStatus.d.ts.map +0 -1
  301. package/lib/types/conversion/TextractProcessor.d.ts +0 -45
  302. package/lib/types/conversion/TextractProcessor.d.ts.map +0 -1
  303. package/lib/types/conversion/image.d.ts +0 -11
  304. package/lib/types/conversion/image.d.ts.map +0 -1
  305. package/lib/types/conversion/mutool.d.ts +0 -19
  306. package/lib/types/conversion/mutool.d.ts.map +0 -1
  307. package/lib/types/conversion/pandoc.d.ts +0 -2
  308. package/lib/types/conversion/pandoc.d.ts.map +0 -1
  309. package/lib/types/dsl/conditions.d.ts +0 -2
  310. package/lib/types/dsl/conditions.d.ts.map +0 -1
  311. package/lib/types/dsl/dsl-workflow.d.ts +0 -5
  312. package/lib/types/dsl/dsl-workflow.d.ts.map +0 -1
  313. package/lib/types/dsl/dslProxyActivities.d.ts +0 -10
  314. package/lib/types/dsl/dslProxyActivities.d.ts.map +0 -1
  315. package/lib/types/dsl/projections.d.ts +0 -4
  316. package/lib/types/dsl/projections.d.ts.map +0 -1
  317. package/lib/types/dsl/setup/ActivityContext.d.ts +0 -17
  318. package/lib/types/dsl/setup/ActivityContext.d.ts.map +0 -1
  319. package/lib/types/dsl/setup/fetch/DataProvider.d.ts +0 -9
  320. package/lib/types/dsl/setup/fetch/DataProvider.d.ts.map +0 -1
  321. package/lib/types/dsl/setup/fetch/index.d.ts +0 -6
  322. package/lib/types/dsl/setup/fetch/index.d.ts.map +0 -1
  323. package/lib/types/dsl/setup/fetch/providers.d.ts +0 -25
  324. package/lib/types/dsl/setup/fetch/providers.d.ts.map +0 -1
  325. package/lib/types/dsl/test/test-child-workflow.d.ts +0 -4
  326. package/lib/types/dsl/test/test-child-workflow.d.ts.map +0 -1
  327. package/lib/types/dsl/validation.d.ts +0 -4
  328. package/lib/types/dsl/validation.d.ts.map +0 -1
  329. package/lib/types/dsl/vars.d.ts +0 -48
  330. package/lib/types/dsl/vars.d.ts.map +0 -1
  331. package/lib/types/dsl/walk.d.ts +0 -18
  332. package/lib/types/dsl/walk.d.ts.map +0 -1
  333. package/lib/types/dsl.d.ts +0 -4
  334. package/lib/types/dsl.d.ts.map +0 -1
  335. package/lib/types/errors.d.ts +0 -22
  336. package/lib/types/errors.d.ts.map +0 -1
  337. package/lib/types/index.d.ts +0 -31
  338. package/lib/types/index.d.ts.map +0 -1
  339. package/lib/types/iterative-generation/activities/extractToc.d.ts +0 -10
  340. package/lib/types/iterative-generation/activities/extractToc.d.ts.map +0 -1
  341. package/lib/types/iterative-generation/activities/finalizeOutput.d.ts +0 -3
  342. package/lib/types/iterative-generation/activities/finalizeOutput.d.ts.map +0 -1
  343. package/lib/types/iterative-generation/activities/generatePart.d.ts +0 -3
  344. package/lib/types/iterative-generation/activities/generatePart.d.ts.map +0 -1
  345. package/lib/types/iterative-generation/activities/generateToc.d.ts +0 -4
  346. package/lib/types/iterative-generation/activities/generateToc.d.ts.map +0 -1
  347. package/lib/types/iterative-generation/activities/index.d.ts +0 -5
  348. package/lib/types/iterative-generation/activities/index.d.ts.map +0 -1
  349. package/lib/types/iterative-generation/iterativeGenerationWorkflow.d.ts +0 -3
  350. package/lib/types/iterative-generation/iterativeGenerationWorkflow.d.ts.map +0 -1
  351. package/lib/types/iterative-generation/types.d.ts +0 -79
  352. package/lib/types/iterative-generation/types.d.ts.map +0 -1
  353. package/lib/types/iterative-generation/utils.d.ts +0 -27
  354. package/lib/types/iterative-generation/utils.d.ts.map +0 -1
  355. package/lib/types/result-types.d.ts +0 -22
  356. package/lib/types/result-types.d.ts.map +0 -1
  357. package/lib/types/system/notifyWebhookWorkflow.d.ts +0 -3
  358. package/lib/types/system/notifyWebhookWorkflow.d.ts.map +0 -1
  359. package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts +0 -25
  360. package/lib/types/system/recalculateEmbeddingsWorkflow.d.ts.map +0 -1
  361. package/lib/types/utils/auth.d.ts +0 -4
  362. package/lib/types/utils/auth.d.ts.map +0 -1
  363. package/lib/types/utils/blobs.d.ts +0 -8
  364. package/lib/types/utils/blobs.d.ts.map +0 -1
  365. package/lib/types/utils/chunks.d.ts +0 -9
  366. package/lib/types/utils/chunks.d.ts.map +0 -1
  367. package/lib/types/utils/client.d.ts +0 -7
  368. package/lib/types/utils/client.d.ts.map +0 -1
  369. package/lib/types/utils/expand-vars.d.ts +0 -8
  370. package/lib/types/utils/expand-vars.d.ts.map +0 -1
  371. package/lib/types/utils/memory.d.ts +0 -8
  372. package/lib/types/utils/memory.d.ts.map +0 -1
  373. package/lib/types/utils/tokens.d.ts +0 -11
  374. package/lib/types/utils/tokens.d.ts.map +0 -1
  375. package/lib/types/vars.d.ts +0 -3
  376. package/lib/types/vars.d.ts.map +0 -1
  377. package/lib/types/workflows.d.ts +0 -8
  378. package/lib/types/workflows.d.ts.map +0 -1
  379. package/lib/workflows-bundle.js +0 -20689
@@ -1,410 +0,0 @@
1
- import { PutObjectCommand, S3Client } from "@aws-sdk/client-s3";
2
- import { GetDocumentAnalysisCommand, StartDocumentAnalysisCommand, TextractClient } from "@aws-sdk/client-textract";
3
- import Papa from 'papaparse';
4
- export class TextractProcessor {
5
- textractClient;
6
- s3Client;
7
- fileKey;
8
- bucket;
9
- log;
10
- detectImages;
11
- /**
12
- * Whether or not to include confidence values in CSV output for tables.
13
- */
14
- includeConfidenceInTables;
15
- constructor({ fileKey, region, bucket, credentials, log, detectImages = false, includeConfidenceInTables = false // NEW default = false
16
- }) {
17
- this.fileKey = fileKey;
18
- this.bucket = bucket;
19
- this.log = log;
20
- this.detectImages = detectImages;
21
- this.includeConfidenceInTables = includeConfidenceInTables;
22
- this.textractClient = new TextractClient({
23
- region,
24
- credentials
25
- });
26
- this.s3Client = new S3Client({
27
- region,
28
- credentials
29
- });
30
- }
31
- getText(result, blocksMap) {
32
- let text = '';
33
- if (result.Relationships) {
34
- for (const relationship of result.Relationships) {
35
- if (relationship.Type === 'CHILD') {
36
- for (const childId of relationship.Ids || []) {
37
- const word = blocksMap[childId];
38
- if (word.BlockType === 'WORD') {
39
- const wordText = word.Text || '';
40
- // Example logic to quote numeric text with commas
41
- if (wordText.includes(',') &&
42
- wordText.replace(',', '').match(/^\d+$/)) {
43
- text += `"${wordText}" `;
44
- }
45
- else {
46
- text += `${wordText} `;
47
- }
48
- }
49
- if (word.BlockType === 'SELECTION_ELEMENT' &&
50
- word.SelectionStatus === 'SELECTED') {
51
- text += 'X ';
52
- }
53
- }
54
- }
55
- }
56
- }
57
- return text.trim();
58
- }
59
- isBlockInTable(block, blocksMap) {
60
- if (block.BlockType !== 'LINE') {
61
- return false;
62
- }
63
- if (block.Relationships) {
64
- for (const relationship of block.Relationships) {
65
- if (relationship.Type === 'CHILD') {
66
- for (const childId of relationship.Ids || []) {
67
- const wordBlock = blocksMap[childId];
68
- if (this.isWordInTableCell(wordBlock, blocksMap)) {
69
- return true;
70
- }
71
- }
72
- }
73
- }
74
- }
75
- return false;
76
- }
77
- isWordInTableCell(wordBlock, blocksMap) {
78
- // Check if the wordBlock is a descendant of any TABLE->CELL block
79
- for (const blockId in blocksMap) {
80
- const potentialTable = blocksMap[blockId];
81
- if (potentialTable.BlockType === 'TABLE' && potentialTable.Relationships) {
82
- for (const relationship of potentialTable.Relationships) {
83
- if (relationship.Type === 'CHILD') {
84
- for (const cellId of relationship.Ids || []) {
85
- const cell = blocksMap[cellId];
86
- if (cell.BlockType === 'CELL' && cell.Relationships) {
87
- for (const cellRel of cell.Relationships) {
88
- if (cellRel.Type === 'CHILD' &&
89
- cellRel.Ids?.includes(wordBlock.Id)) {
90
- return true;
91
- }
92
- }
93
- }
94
- }
95
- }
96
- }
97
- }
98
- }
99
- return false;
100
- }
101
- /**
102
- * NEW: Helper type to store row and column text along with confidence.
103
- */
104
- getRowsColumnsMap(tableResult, blocksMap) {
105
- const rows = [];
106
- tableResult.Relationships?.forEach(relationship => {
107
- if (relationship.Type === 'CHILD') {
108
- relationship.Ids?.forEach(childId => {
109
- const cell = blocksMap[childId];
110
- if (cell.BlockType === 'CELL') {
111
- const rowIndex = cell.RowIndex || 1;
112
- const colIndex = cell.ColumnIndex || 1;
113
- // Expand the array if needed
114
- if (!rows[rowIndex - 1]) {
115
- rows[rowIndex - 1] = [];
116
- }
117
- // Prepare cell text and confidence
118
- const text = this.getText(cell, blocksMap);
119
- const confidence = cell.Confidence || 0;
120
- // If there's a gap, fill it with placeholders
121
- // so that we can safely place text at colIndex - 1
122
- for (let i = rows[rowIndex - 1].length; i < colIndex - 1; i++) {
123
- rows[rowIndex - 1].push({ text: '', confidence: 0 });
124
- }
125
- rows[rowIndex - 1][colIndex - 1] = { text, confidence };
126
- }
127
- });
128
- }
129
- });
130
- return { rows };
131
- }
132
- generateTableCSV(tableResult, blocksMap, _tableIndex, _pageNumber) {
133
- const { rows } = this.getRowsColumnsMap(tableResult, blocksMap);
134
- let totalConfidence = 0;
135
- let cellCount = 0;
136
- // Prepare CSV data
137
- const csvData = [];
138
- for (const row of rows) {
139
- const rowData = [];
140
- for (const cell of row) {
141
- // Add to CSV
142
- rowData.push(cell.text.trim());
143
- // Accumulate confidence
144
- totalConfidence += cell.confidence;
145
- cellCount++;
146
- }
147
- csvData.push(rowData);
148
- }
149
- // Compute average confidence (or any other method you prefer)
150
- const tableConfidence = cellCount > 0 ? (totalConfidence / cellCount) : 0;
151
- // Convert to CSV
152
- const csv = Papa.unparse(csvData, {
153
- delimiter: ',',
154
- quotes: true,
155
- quoteChar: '"',
156
- escapeChar: '"',
157
- header: false,
158
- newline: '\n',
159
- skipEmptyLines: false
160
- });
161
- return { csv, tableConfidence };
162
- }
163
- async upload(fileBuf) {
164
- this.log.info('Uploading file to S3', { fileKey: this.fileKey });
165
- const command = new PutObjectCommand({
166
- Bucket: this.bucket,
167
- Key: this.fileKey,
168
- Body: fileBuf,
169
- });
170
- await this.s3Client.send(command);
171
- }
172
- async startAnalysis(s3Key) {
173
- const command = new StartDocumentAnalysisCommand({
174
- DocumentLocation: {
175
- S3Object: {
176
- Bucket: this.bucket,
177
- Name: s3Key
178
- }
179
- },
180
- FeatureTypes: ["TABLES"]
181
- });
182
- const response = await this.textractClient.send(command);
183
- return response.JobId;
184
- }
185
- async checkJobStatus(jobId) {
186
- const command = new GetDocumentAnalysisCommand({ JobId: jobId });
187
- const response = await this.textractClient.send(command);
188
- return response.JobStatus;
189
- }
190
- getImagePlaceholder(block) {
191
- const geometry = block.Geometry?.BoundingBox;
192
- if (!geometry)
193
- return '';
194
- const area = (geometry.Width || 0) * (geometry.Height || 0);
195
- if (area < 0.05)
196
- return ''; // skip small images
197
- const top = geometry.Top || 0;
198
- const left = geometry.Left || 0;
199
- let position = '';
200
- if (top < 0.3)
201
- position += 'TOP_';
202
- else if (top > 0.7)
203
- position += 'BOTTOM_';
204
- if (left < 0.3)
205
- position += 'LEFT';
206
- else if (left > 0.7)
207
- position += 'RIGHT';
208
- else
209
- position += 'CENTER';
210
- return `[IMAGE_${position}]\n`;
211
- }
212
- getIndentationLevel(block) {
213
- const left = block.Geometry?.BoundingBox?.Left || 0;
214
- if (left < 0.15)
215
- return 0;
216
- if (left < 0.25)
217
- return 1;
218
- return 2;
219
- }
220
- isLikelyHeader(block, prevBlock) {
221
- if (!prevBlock)
222
- return true;
223
- const gap = (block.Geometry?.BoundingBox?.Top || 0) -
224
- ((prevBlock.Geometry?.BoundingBox?.Top || 0) +
225
- (prevBlock.Geometry?.BoundingBox?.Height || 0));
226
- return gap > 0.03;
227
- }
228
- formatTextBlock(block, prevBlock) {
229
- const text = block.Text || '';
230
- const indentLevel = this.getIndentationLevel(block);
231
- const indent = ' '.repeat(indentLevel);
232
- if (this.isLikelyHeader(block, prevBlock)) {
233
- return `\n${indent}${text}\n`;
234
- }
235
- return `${indent}${text}\n`;
236
- }
237
- shouldMergeLines(prev, current) {
238
- const prevBottom = (prev.Geometry?.BoundingBox?.Top || 0)
239
- + (prev.Geometry?.BoundingBox?.Height || 0);
240
- const currentTop = current.Geometry?.BoundingBox?.Top || 0;
241
- const gap = currentTop - prevBottom;
242
- // For example, if gap < 0.02, treat them as contiguous
243
- if (gap < 0.02) {
244
- return true;
245
- }
246
- return false;
247
- }
248
- async processResults(jobId) {
249
- let nextToken;
250
- let allBlocks = [];
251
- do {
252
- const command = new GetDocumentAnalysisCommand({
253
- JobId: jobId,
254
- NextToken: nextToken
255
- });
256
- const response = await this.textractClient.send(command);
257
- allBlocks = allBlocks.concat(response.Blocks || []);
258
- nextToken = response.NextToken;
259
- } while (nextToken);
260
- // Create blocks map
261
- const blocksMap = {};
262
- for (const block of allBlocks) {
263
- blocksMap[block.Id] = block;
264
- }
265
- // We'll store each page's content in sequence
266
- const pageContents = [];
267
- let currentPage = null;
268
- // We'll keep track of a "current text block" that we're building
269
- let currentTextContent = "";
270
- let prevLineBlock = null;
271
- // Sort by page and vertical position
272
- allBlocks.sort((a, b) => {
273
- if (a.Page !== b.Page)
274
- return (a.Page || 0) - (b.Page || 0);
275
- return (a.Geometry?.BoundingBox?.Top || 0) - (b.Geometry?.BoundingBox?.Top || 0);
276
- });
277
- for (const block of allBlocks) {
278
- if (block.BlockType === 'PAGE') {
279
- // If we were building a text block, push it before starting a new page
280
- if (currentTextContent.trim().length > 0 && currentPage) {
281
- currentPage.blocks.push({
282
- type: 'text',
283
- content: currentTextContent
284
- });
285
- }
286
- if (currentPage) {
287
- pageContents.push(currentPage);
288
- }
289
- currentPage = {
290
- pageNumber: block.Page || 0,
291
- blocks: []
292
- };
293
- currentTextContent = "";
294
- prevLineBlock = null;
295
- }
296
- else if (currentPage && block.Page === currentPage.pageNumber) {
297
- // TABLE handling
298
- if (block.BlockType === 'TABLE') {
299
- // If there's a pending text block, push it first
300
- if (currentTextContent.trim().length > 0) {
301
- currentPage.blocks.push({
302
- type: 'text',
303
- content: currentTextContent
304
- });
305
- currentTextContent = "";
306
- }
307
- const { csv, tableConfidence } = this.generateTableCSV(block, blocksMap, currentPage.blocks.filter(b => b.type === 'table').length + 1, currentPage.pageNumber);
308
- currentPage.blocks.push({
309
- type: 'table',
310
- content: csv,
311
- confidence: tableConfidence
312
- });
313
- prevLineBlock = null;
314
- }
315
- // LINE handling (merge or start new)
316
- else if (block.BlockType === 'LINE' && !this.isBlockInTable(block, blocksMap)) {
317
- if (prevLineBlock && this.shouldMergeLines(prevLineBlock, block)) {
318
- // If we consider this line to be part of the same paragraph,
319
- // just append the text. We'll call formatTextBlock to get
320
- // indentation/header logic, but we won't add a leading newline.
321
- const formatted = this.formatTextBlock(block, prevLineBlock);
322
- // formatTextBlock might include a leading newline if isLikelyHeader = true
323
- // so you can strip it out if you want them truly "merged" into one paragraph:
324
- const mergedText = formatted.replace(/^\s*\n/, " ");
325
- currentTextContent += " " + mergedText.trim();
326
- }
327
- else {
328
- // If there's an existing text block, push it
329
- if (currentTextContent.trim().length > 0) {
330
- currentPage.blocks.push({
331
- type: 'text',
332
- content: currentTextContent
333
- });
334
- }
335
- // Start a new text block
336
- currentTextContent = this.formatTextBlock(block, prevLineBlock).trim();
337
- }
338
- prevLineBlock = block;
339
- }
340
- // IMAGES (if detectImages)
341
- else if (this.detectImages) {
342
- const geometry = block.Geometry?.BoundingBox;
343
- if (geometry && geometry.Width && geometry.Height) {
344
- const imagePlaceholder = this.getImagePlaceholder(block);
345
- if (imagePlaceholder) {
346
- // If there's a pending text block, push it first
347
- if (currentTextContent.trim().length > 0) {
348
- currentPage.blocks.push({
349
- type: 'text',
350
- content: currentTextContent
351
- });
352
- currentTextContent = "";
353
- }
354
- currentPage.blocks.push({
355
- type: 'image',
356
- content: imagePlaceholder,
357
- left: geometry.Left,
358
- top: geometry.Top,
359
- width: geometry.Width,
360
- height: geometry.Height
361
- });
362
- }
363
- }
364
- // No line update to prevLineBlock here
365
- }
366
- }
367
- }
368
- // Handle last page
369
- if (currentPage) {
370
- if (currentTextContent.trim().length > 0) {
371
- currentPage.blocks.push({
372
- type: 'text',
373
- content: currentTextContent
374
- });
375
- }
376
- pageContents.push(currentPage);
377
- }
378
- // Build final output
379
- let fulltext = '';
380
- let imgNumber = 1;
381
- let tableNumber = 1;
382
- for (const page of pageContents) {
383
- fulltext += `<page number="${page.pageNumber}">\n`;
384
- for (const block of page.blocks) {
385
- if (block.type === 'text') {
386
- fulltext += `<text>\n${block.content}\n</text>\n\n`;
387
- }
388
- else if (block.type === 'table') {
389
- const confidenceAttr = block.confidence !== undefined && this.includeConfidenceInTables
390
- ? ` confidence="${block.confidence.toFixed(2)}"`
391
- : '';
392
- fulltext += `<table number=${tableNumber++} type="csv" ${confidenceAttr}>\n`;
393
- fulltext += `${block.content}\n`;
394
- fulltext += `</table>\n\n`;
395
- }
396
- else if (block.type === 'image') {
397
- // Include geometry if you like
398
- const leftAttr = block.left ? ` left="${block.left.toFixed(4)}"` : '';
399
- const topAttr = block.top ? ` top="${block.top.toFixed(4)}"` : '';
400
- const widthAttr = block.width ? ` width="${block.width.toFixed(4)}"` : '';
401
- const heightAttr = block.height ? ` height="${block.height.toFixed(4)}"` : '';
402
- fulltext += `<image id="${imgNumber++}" ${leftAttr}${topAttr}${widthAttr}${heightAttr}>\n${block.content.trim()}\n</image>\n\n`;
403
- }
404
- }
405
- fulltext += `</page>\n\n`;
406
- }
407
- return fulltext;
408
- }
409
- }
410
- //# sourceMappingURL=TextractProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextractProcessor.js","sourceRoot":"","sources":["../../../src/conversion/TextractProcessor.ts"],"names":[],"mappings":"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"}
@@ -1,84 +0,0 @@
1
- import { log } from "@temporalio/activity";
2
- import { execFile as execFileCallback } from "child_process";
3
- import fs from "fs";
4
- import { file } from "tmp-promise";
5
- import { promisify } from "util";
6
- const execFile = promisify(execFileCallback);
7
- /**
8
- * Resizes an image to a maximum height or width using ImageMagick
9
- * with progressive loading when supported
10
- * @param inputPath Input file path
11
- * @param max_hw Maximum height or width
12
- * @param format Output format
13
- * @param progressive Enable progressive loading for supported formats (defaults to true)
14
- * @returns Path to the resized image
15
- */
16
- export async function imageResizer(inputPath, max_hw, format, progressive = true) {
17
- const allowedFormats = ["jpg", "jpeg", "png", "webp"];
18
- if (!format || format.trim() === "") {
19
- throw new Error(`Invalid format: ${format}.Supported : ${allowedFormats.join(", ")}`);
20
- }
21
- //check that max_hw is valid
22
- if (!Number.isInteger(max_hw) || max_hw <= 0) {
23
- throw new Error(`Invalid max_hw value: ${max_hw}`);
24
- }
25
- //check that inputPath exists
26
- if (!fs.existsSync(inputPath)) {
27
- throw new Error(`Input file does not exist: ${inputPath}`);
28
- }
29
- // Create a temporary file
30
- const { path: outputPath, cleanup } = await file({ postfix: `.${format}` });
31
- try {
32
- // Check if input file exists
33
- if (!fs.existsSync(inputPath)) {
34
- throw new Error(`Input file does not exist: ${inputPath}`);
35
- }
36
- // Validate max_hw
37
- if (!Number.isInteger(max_hw) || max_hw <= 0) {
38
- throw new Error(`Invalid max_hw value: ${max_hw}`);
39
- }
40
- // Progressive loading options
41
- let conversionOption = "";
42
- // Only add progressive option for formats that support it
43
- if (progressive) {
44
- // JPEG and some other formats support progressive loading
45
- const lowerFormat = format.toLowerCase();
46
- if (lowerFormat === "jpg" || lowerFormat === "jpeg") {
47
- conversionOption = "-interlace JPEG";
48
- log.info(`Enabling interlaced ${lowerFormat.toUpperCase()} format`);
49
- }
50
- else if (lowerFormat === "png") {
51
- conversionOption = "-interlace PNG";
52
- log.info(`Enabling interlaced ${lowerFormat.toUpperCase()} format`);
53
- }
54
- else if (lowerFormat === "gif") {
55
- conversionOption = "-interlace GIF";
56
- log.info(`Enabling interlaced ${lowerFormat.toUpperCase()} format`);
57
- }
58
- }
59
- log.info(`Resizing image using ImageMagick: ${inputPath} -> ${outputPath}`);
60
- const { stderr } = await execFile("convert", [
61
- inputPath,
62
- "-resize",
63
- `${max_hw}x${max_hw}>`,
64
- ...(conversionOption ? conversionOption.split(" ") : []),
65
- outputPath,
66
- ]);
67
- if (stderr) {
68
- log.warn(`ImageMagick warning: ${stderr}`);
69
- }
70
- // Verify output exists and has content
71
- if (!fs.existsSync(outputPath) || fs.statSync(outputPath).size === 0) {
72
- throw new Error(`ImageMagick conversion failed: output file not created or empty`);
73
- }
74
- return outputPath;
75
- }
76
- catch (error) {
77
- // Clean up the temporary file
78
- await cleanup();
79
- const errorMessage = error instanceof Error ? error.message : String(error);
80
- log.error(`Image conversion failed: ${errorMessage}`);
81
- throw new Error(`Image conversion failed: ${errorMessage}`);
82
- }
83
- }
84
- //# sourceMappingURL=image.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"image.js","sourceRoot":"","sources":["../../../src/conversion/image.ts"],"names":[],"mappings":"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"}
@@ -1,139 +0,0 @@
1
- import { log } from '@temporalio/activity';
2
- import { spawn } from 'child_process';
3
- import fs from 'fs';
4
- import tmp from 'tmp';
5
- /**
6
- * Convert a pdf file to text
7
- * TODO: pass file reference instead of Buffer
8
- */
9
- export function mutoolPdfToText(buffer) {
10
- const inputFile = tmp.fileSync({ postfix: '.pdf' });
11
- const targetFileName = tmp.tmpNameSync({ postfix: '.txt' });
12
- fs.writeSync(inputFile.fd, buffer);
13
- return new Promise((resolve, reject) => {
14
- log.info("Converting pdf to text", { inputFile: inputFile.name, targetFileName });
15
- const command = spawn("mutool", ["convert", "-o", targetFileName, inputFile.name]);
16
- command.on('exit', function (code) {
17
- if (code) {
18
- reject(new Error(`mutool exited with code ${code}`));
19
- }
20
- });
21
- command.on('close', function (code) {
22
- if (code) {
23
- reject(new Error(`mutool exited with code ${code}`));
24
- }
25
- else {
26
- return fs.readFile(targetFileName, 'utf8', (err, data) => {
27
- if (err) {
28
- reject(err);
29
- }
30
- return resolve(data);
31
- });
32
- }
33
- ;
34
- });
35
- command.on('error', (err) => {
36
- reject(err);
37
- });
38
- });
39
- }
40
- /**
41
- *
42
- * Convert a pdf files to images (one image per page), as PNG format
43
- *
44
- * @param file
45
- * @param pages
46
- * @returns
47
- */
48
- export async function pdfToImages(file, pages) {
49
- const workDir = tmp.dirSync();
50
- log.info(`Converting pdf to images`, { workDir: workDir.name, input_type: typeof file, pages });
51
- if (file instanceof Buffer) {
52
- fs.writeFileSync(`${workDir.name}/input.pdf`, file);
53
- }
54
- const filename = typeof file === 'string' ? file : `${workDir.name}/input.pdf`;
55
- const args = [
56
- "draw",
57
- "-o", `${workDir.name}/page-%d.png`,
58
- filename,
59
- ];
60
- if (pages) {
61
- args.push(pages.join(','));
62
- }
63
- return new Promise((resolve, reject) => {
64
- const command = spawn("mutool", args);
65
- log.info(`Executing mutool command`, { workDir: workDir.name, filename, command: command.spawnargs });
66
- let errors = '';
67
- command.stderr.on('data', (data) => {
68
- errors += data;
69
- });
70
- command.on('exit', function (code) {
71
- if (code) {
72
- log.error(`mutool exited with code ${code}`, { errors });
73
- reject(new Error(`mutool exited with code ${code}`));
74
- }
75
- });
76
- command.on('close', function (code) {
77
- if (code) {
78
- reject(new Error(`mutool finished with code ${code}`));
79
- }
80
- else {
81
- const files = fs.readdirSync(workDir.name);
82
- const images = files.filter(f => f.endsWith('.png')).map(f => `${workDir.name}/${f}`);
83
- log.info(`Converted pdf to ${images.length} images`, files);
84
- return resolve(images);
85
- }
86
- ;
87
- });
88
- command.on('error', (err) => {
89
- reject(err);
90
- });
91
- });
92
- }
93
- /**
94
- * Get somes pages from a PDF to create a new one
95
- */
96
- export async function pdfExtractPages(file, pages) {
97
- const workDir = tmp.dirSync();
98
- log.info(`Getting pages from pdf`, { workDir: workDir.name, input_type: typeof file, pages });
99
- if (file instanceof Buffer) {
100
- fs.writeFileSync(`${workDir.name}/input.pdf`, file);
101
- }
102
- const filename = typeof file === 'string' ? file : `${workDir.name}/input.pdf`;
103
- const args = [
104
- "merge",
105
- "-o", `${workDir.name}/output.pdf`,
106
- "-O", "garbage=compact,sanitize",
107
- filename,
108
- pages.join(','),
109
- ];
110
- return new Promise((resolve, reject) => {
111
- const command = spawn("mutool", args);
112
- log.info(`Executing mutool command`, { workDir: workDir.name, filename, command: command.spawnargs });
113
- let errors = '';
114
- command.stderr.on('data', (data) => {
115
- errors += data;
116
- });
117
- command.on('exit', function (code) {
118
- if (code) {
119
- log.error(`mutool exited with code ${code}`, { errors });
120
- reject(new Error(`mutool exited with code ${code}`));
121
- }
122
- });
123
- command.on('close', function (code) {
124
- if (code) {
125
- reject(new Error(`mutool finished with code ${code}`));
126
- }
127
- else {
128
- const file = `${workDir.name}/output.pdf`;
129
- log.info(`Extracted pages from pdf`, { pages, file });
130
- return resolve(file);
131
- }
132
- ;
133
- });
134
- command.on('error', (err) => {
135
- reject(err);
136
- });
137
- });
138
- }
139
- //# sourceMappingURL=mutool.js.map