@lhremote/core 0.0.0 → 0.2.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 (551) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +124 -0
  3. package/dist/cdp/app-discovery.d.ts +22 -0
  4. package/dist/cdp/app-discovery.d.ts.map +1 -0
  5. package/dist/cdp/app-discovery.js +60 -0
  6. package/dist/cdp/app-discovery.js.map +1 -0
  7. package/dist/cdp/app-discovery.test.d.ts +2 -0
  8. package/dist/cdp/app-discovery.test.d.ts.map +1 -0
  9. package/dist/cdp/app-discovery.test.js +124 -0
  10. package/dist/cdp/app-discovery.test.js.map +1 -0
  11. package/dist/cdp/client.d.ts +114 -0
  12. package/dist/cdp/client.d.ts.map +1 -0
  13. package/dist/cdp/client.integration.test.d.ts +2 -0
  14. package/dist/cdp/client.integration.test.d.ts.map +1 -0
  15. package/dist/cdp/client.integration.test.js +77 -0
  16. package/dist/cdp/client.integration.test.js.map +1 -0
  17. package/dist/cdp/client.js +319 -0
  18. package/dist/cdp/client.js.map +1 -0
  19. package/dist/cdp/client.test.d.ts +2 -0
  20. package/dist/cdp/client.test.d.ts.map +1 -0
  21. package/dist/cdp/client.test.js +533 -0
  22. package/dist/cdp/client.test.js.map +1 -0
  23. package/dist/cdp/discovery.d.ts +14 -0
  24. package/dist/cdp/discovery.d.ts.map +1 -0
  25. package/dist/cdp/discovery.integration.test.d.ts +2 -0
  26. package/dist/cdp/discovery.integration.test.d.ts.map +1 -0
  27. package/dist/cdp/discovery.integration.test.js +27 -0
  28. package/dist/cdp/discovery.integration.test.js.map +1 -0
  29. package/dist/cdp/discovery.js +33 -0
  30. package/dist/cdp/discovery.js.map +1 -0
  31. package/dist/cdp/discovery.test.d.ts +2 -0
  32. package/dist/cdp/discovery.test.d.ts.map +1 -0
  33. package/dist/cdp/discovery.test.js +56 -0
  34. package/dist/cdp/discovery.test.js.map +1 -0
  35. package/dist/cdp/errors.d.ts +28 -0
  36. package/dist/cdp/errors.d.ts.map +1 -0
  37. package/dist/cdp/errors.js +42 -0
  38. package/dist/cdp/errors.js.map +1 -0
  39. package/dist/cdp/errors.test.d.ts +2 -0
  40. package/dist/cdp/errors.test.d.ts.map +1 -0
  41. package/dist/cdp/errors.test.js +37 -0
  42. package/dist/cdp/errors.test.js.map +1 -0
  43. package/dist/cdp/index.d.ts +6 -0
  44. package/dist/cdp/index.d.ts.map +1 -0
  45. package/dist/cdp/index.js +8 -0
  46. package/dist/cdp/index.js.map +1 -0
  47. package/dist/cdp/instance-discovery.d.ts +30 -0
  48. package/dist/cdp/instance-discovery.d.ts.map +1 -0
  49. package/dist/cdp/instance-discovery.integration.test.d.ts +2 -0
  50. package/dist/cdp/instance-discovery.integration.test.d.ts.map +1 -0
  51. package/dist/cdp/instance-discovery.integration.test.js +36 -0
  52. package/dist/cdp/instance-discovery.integration.test.js.map +1 -0
  53. package/dist/cdp/instance-discovery.js +118 -0
  54. package/dist/cdp/instance-discovery.js.map +1 -0
  55. package/dist/cdp/instance-discovery.test.d.ts +2 -0
  56. package/dist/cdp/instance-discovery.test.d.ts.map +1 -0
  57. package/dist/cdp/instance-discovery.test.js +112 -0
  58. package/dist/cdp/instance-discovery.test.js.map +1 -0
  59. package/dist/cdp/testing/launch-chromium.d.ts +24 -0
  60. package/dist/cdp/testing/launch-chromium.d.ts.map +1 -0
  61. package/dist/cdp/testing/launch-chromium.js +93 -0
  62. package/dist/cdp/testing/launch-chromium.js.map +1 -0
  63. package/dist/constants.d.ts +5 -0
  64. package/dist/constants.d.ts.map +1 -0
  65. package/dist/constants.js +7 -0
  66. package/dist/constants.js.map +1 -0
  67. package/dist/data/action-types.d.ts +39 -0
  68. package/dist/data/action-types.d.ts.map +1 -0
  69. package/dist/data/action-types.js +497 -0
  70. package/dist/data/action-types.js.map +1 -0
  71. package/dist/data/action-types.test.d.ts +2 -0
  72. package/dist/data/action-types.test.d.ts.map +1 -0
  73. package/dist/data/action-types.test.js +544 -0
  74. package/dist/data/action-types.test.js.map +1 -0
  75. package/dist/data/index.d.ts +3 -0
  76. package/dist/data/index.d.ts.map +1 -0
  77. package/dist/data/index.js +4 -0
  78. package/dist/data/index.js.map +1 -0
  79. package/dist/db/client.d.ts +27 -0
  80. package/dist/db/client.d.ts.map +1 -0
  81. package/dist/db/client.integration.test.d.ts +2 -0
  82. package/dist/db/client.integration.test.d.ts.map +1 -0
  83. package/dist/db/client.integration.test.js +63 -0
  84. package/dist/db/client.integration.test.js.map +1 -0
  85. package/dist/db/client.js +23 -0
  86. package/dist/db/client.js.map +1 -0
  87. package/dist/db/client.test.d.ts +2 -0
  88. package/dist/db/client.test.d.ts.map +1 -0
  89. package/dist/db/client.test.js +48 -0
  90. package/dist/db/client.test.js.map +1 -0
  91. package/dist/db/discovery.d.ts +14 -0
  92. package/dist/db/discovery.d.ts.map +1 -0
  93. package/dist/db/discovery.integration.test.d.ts +2 -0
  94. package/dist/db/discovery.integration.test.d.ts.map +1 -0
  95. package/dist/db/discovery.integration.test.js +101 -0
  96. package/dist/db/discovery.integration.test.js.map +1 -0
  97. package/dist/db/discovery.js +76 -0
  98. package/dist/db/discovery.js.map +1 -0
  99. package/dist/db/discovery.test.d.ts +2 -0
  100. package/dist/db/discovery.test.d.ts.map +1 -0
  101. package/dist/db/discovery.test.js +125 -0
  102. package/dist/db/discovery.test.js.map +1 -0
  103. package/dist/db/errors.d.ts +52 -0
  104. package/dist/db/errors.d.ts.map +1 -0
  105. package/dist/db/errors.js +82 -0
  106. package/dist/db/errors.js.map +1 -0
  107. package/dist/db/errors.test.d.ts +2 -0
  108. package/dist/db/errors.test.d.ts.map +1 -0
  109. package/dist/db/errors.test.js +34 -0
  110. package/dist/db/errors.test.js.map +1 -0
  111. package/dist/db/escape-like.d.ts +8 -0
  112. package/dist/db/escape-like.d.ts.map +1 -0
  113. package/dist/db/escape-like.js +12 -0
  114. package/dist/db/escape-like.js.map +1 -0
  115. package/dist/db/escape-like.test.d.ts +2 -0
  116. package/dist/db/escape-like.test.d.ts.map +1 -0
  117. package/dist/db/escape-like.test.js +25 -0
  118. package/dist/db/escape-like.test.js.map +1 -0
  119. package/dist/db/index.d.ts +5 -0
  120. package/dist/db/index.d.ts.map +1 -0
  121. package/dist/db/index.js +7 -0
  122. package/dist/db/index.js.map +1 -0
  123. package/dist/db/repositories/campaign-exclude-list.d.ts +89 -0
  124. package/dist/db/repositories/campaign-exclude-list.d.ts.map +1 -0
  125. package/dist/db/repositories/campaign-exclude-list.js +204 -0
  126. package/dist/db/repositories/campaign-exclude-list.js.map +1 -0
  127. package/dist/db/repositories/campaign-exclude-list.test.d.ts +2 -0
  128. package/dist/db/repositories/campaign-exclude-list.test.d.ts.map +1 -0
  129. package/dist/db/repositories/campaign-exclude-list.test.js +132 -0
  130. package/dist/db/repositories/campaign-exclude-list.test.js.map +1 -0
  131. package/dist/db/repositories/campaign-statistics.d.ts +58 -0
  132. package/dist/db/repositories/campaign-statistics.d.ts.map +1 -0
  133. package/dist/db/repositories/campaign-statistics.js +278 -0
  134. package/dist/db/repositories/campaign-statistics.js.map +1 -0
  135. package/dist/db/repositories/campaign-statistics.test.d.ts +2 -0
  136. package/dist/db/repositories/campaign-statistics.test.d.ts.map +1 -0
  137. package/dist/db/repositories/campaign-statistics.test.js +266 -0
  138. package/dist/db/repositories/campaign-statistics.test.js.map +1 -0
  139. package/dist/db/repositories/campaign.d.ts +103 -0
  140. package/dist/db/repositories/campaign.d.ts.map +1 -0
  141. package/dist/db/repositories/campaign.js +388 -0
  142. package/dist/db/repositories/campaign.js.map +1 -0
  143. package/dist/db/repositories/campaign.test.d.ts +2 -0
  144. package/dist/db/repositories/campaign.test.d.ts.map +1 -0
  145. package/dist/db/repositories/campaign.test.js +392 -0
  146. package/dist/db/repositories/campaign.test.js.map +1 -0
  147. package/dist/db/repositories/index.d.ts +6 -0
  148. package/dist/db/repositories/index.d.ts.map +1 -0
  149. package/dist/db/repositories/index.js +8 -0
  150. package/dist/db/repositories/index.js.map +1 -0
  151. package/dist/db/repositories/message.d.ts +57 -0
  152. package/dist/db/repositories/message.d.ts.map +1 -0
  153. package/dist/db/repositories/message.integration.test.d.ts +2 -0
  154. package/dist/db/repositories/message.integration.test.d.ts.map +1 -0
  155. package/dist/db/repositories/message.integration.test.js +137 -0
  156. package/dist/db/repositories/message.integration.test.js.map +1 -0
  157. package/dist/db/repositories/message.js +308 -0
  158. package/dist/db/repositories/message.js.map +1 -0
  159. package/dist/db/repositories/message.test.d.ts +2 -0
  160. package/dist/db/repositories/message.test.d.ts.map +1 -0
  161. package/dist/db/repositories/message.test.js +179 -0
  162. package/dist/db/repositories/message.test.js.map +1 -0
  163. package/dist/db/repositories/profile.d.ts +42 -0
  164. package/dist/db/repositories/profile.d.ts.map +1 -0
  165. package/dist/db/repositories/profile.integration.test.d.ts +2 -0
  166. package/dist/db/repositories/profile.integration.test.d.ts.map +1 -0
  167. package/dist/db/repositories/profile.integration.test.js +222 -0
  168. package/dist/db/repositories/profile.integration.test.js.map +1 -0
  169. package/dist/db/repositories/profile.js +163 -0
  170. package/dist/db/repositories/profile.js.map +1 -0
  171. package/dist/db/repositories/profile.test.d.ts +2 -0
  172. package/dist/db/repositories/profile.test.d.ts.map +1 -0
  173. package/dist/db/repositories/profile.test.js +216 -0
  174. package/dist/db/repositories/profile.test.js.map +1 -0
  175. package/dist/db/testing/create-fixture.d.ts +2 -0
  176. package/dist/db/testing/create-fixture.d.ts.map +1 -0
  177. package/dist/db/testing/create-fixture.js +745 -0
  178. package/dist/db/testing/create-fixture.js.map +1 -0
  179. package/dist/db/testing/open-fixture.d.ts +15 -0
  180. package/dist/db/testing/open-fixture.d.ts.map +1 -0
  181. package/dist/db/testing/open-fixture.js +39 -0
  182. package/dist/db/testing/open-fixture.js.map +1 -0
  183. package/dist/formats/campaign-format.d.ts +31 -0
  184. package/dist/formats/campaign-format.d.ts.map +1 -0
  185. package/dist/formats/campaign-format.js +225 -0
  186. package/dist/formats/campaign-format.js.map +1 -0
  187. package/dist/formats/campaign-format.test.d.ts +2 -0
  188. package/dist/formats/campaign-format.test.d.ts.map +1 -0
  189. package/dist/formats/campaign-format.test.js +442 -0
  190. package/dist/formats/campaign-format.test.js.map +1 -0
  191. package/dist/formats/errors.d.ts +7 -0
  192. package/dist/formats/errors.d.ts.map +1 -0
  193. package/dist/formats/errors.js +12 -0
  194. package/dist/formats/errors.js.map +1 -0
  195. package/dist/formats/index.d.ts +3 -0
  196. package/dist/formats/index.d.ts.map +1 -0
  197. package/dist/formats/index.js +5 -0
  198. package/dist/formats/index.js.map +1 -0
  199. package/dist/index.d.ts +10 -1
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +29 -1
  202. package/dist/index.js.map +1 -1
  203. package/dist/operations/campaign-add-action.d.ts +14 -0
  204. package/dist/operations/campaign-add-action.d.ts.map +1 -0
  205. package/dist/operations/campaign-add-action.js +33 -0
  206. package/dist/operations/campaign-add-action.js.map +1 -0
  207. package/dist/operations/campaign-add-action.test.d.ts +2 -0
  208. package/dist/operations/campaign-add-action.test.d.ts.map +1 -0
  209. package/dist/operations/campaign-add-action.test.js +122 -0
  210. package/dist/operations/campaign-add-action.test.js.map +1 -0
  211. package/dist/operations/campaign-create.d.ts +17 -0
  212. package/dist/operations/campaign-create.d.ts.map +1 -0
  213. package/dist/operations/campaign-create.js +21 -0
  214. package/dist/operations/campaign-create.js.map +1 -0
  215. package/dist/operations/campaign-create.test.d.ts +2 -0
  216. package/dist/operations/campaign-create.test.d.ts.map +1 -0
  217. package/dist/operations/campaign-create.test.js +113 -0
  218. package/dist/operations/campaign-create.test.js.map +1 -0
  219. package/dist/operations/campaign-delete.d.ts +20 -0
  220. package/dist/operations/campaign-delete.d.ts.map +1 -0
  221. package/dist/operations/campaign-delete.js +22 -0
  222. package/dist/operations/campaign-delete.js.map +1 -0
  223. package/dist/operations/campaign-delete.test.d.ts +2 -0
  224. package/dist/operations/campaign-delete.test.d.ts.map +1 -0
  225. package/dist/operations/campaign-delete.test.js +92 -0
  226. package/dist/operations/campaign-delete.test.js.map +1 -0
  227. package/dist/operations/campaign-exclude-add.d.ts +16 -0
  228. package/dist/operations/campaign-exclude-add.d.ts.map +1 -0
  229. package/dist/operations/campaign-exclude-add.js +27 -0
  230. package/dist/operations/campaign-exclude-add.js.map +1 -0
  231. package/dist/operations/campaign-exclude-add.test.d.ts +2 -0
  232. package/dist/operations/campaign-exclude-add.test.d.ts.map +1 -0
  233. package/dist/operations/campaign-exclude-add.test.js +114 -0
  234. package/dist/operations/campaign-exclude-add.test.js.map +1 -0
  235. package/dist/operations/campaign-exclude-list.d.ts +14 -0
  236. package/dist/operations/campaign-exclude-list.d.ts.map +1 -0
  237. package/dist/operations/campaign-exclude-list.js +26 -0
  238. package/dist/operations/campaign-exclude-list.js.map +1 -0
  239. package/dist/operations/campaign-exclude-list.test.d.ts +2 -0
  240. package/dist/operations/campaign-exclude-list.test.d.ts.map +1 -0
  241. package/dist/operations/campaign-exclude-list.test.js +113 -0
  242. package/dist/operations/campaign-exclude-list.test.js.map +1 -0
  243. package/dist/operations/campaign-exclude-remove.d.ts +16 -0
  244. package/dist/operations/campaign-exclude-remove.d.ts.map +1 -0
  245. package/dist/operations/campaign-exclude-remove.js +27 -0
  246. package/dist/operations/campaign-exclude-remove.js.map +1 -0
  247. package/dist/operations/campaign-exclude-remove.test.d.ts +2 -0
  248. package/dist/operations/campaign-exclude-remove.test.d.ts.map +1 -0
  249. package/dist/operations/campaign-exclude-remove.test.js +114 -0
  250. package/dist/operations/campaign-exclude-remove.test.js.map +1 -0
  251. package/dist/operations/campaign-export.d.ts +12 -0
  252. package/dist/operations/campaign-export.d.ts.map +1 -0
  253. package/dist/operations/campaign-export.js +24 -0
  254. package/dist/operations/campaign-export.js.map +1 -0
  255. package/dist/operations/campaign-export.test.d.ts +2 -0
  256. package/dist/operations/campaign-export.test.d.ts.map +1 -0
  257. package/dist/operations/campaign-export.test.js +134 -0
  258. package/dist/operations/campaign-export.test.js.map +1 -0
  259. package/dist/operations/campaign-get.d.ts +19 -0
  260. package/dist/operations/campaign-get.d.ts.map +1 -0
  261. package/dist/operations/campaign-get.js +23 -0
  262. package/dist/operations/campaign-get.js.map +1 -0
  263. package/dist/operations/campaign-get.test.d.ts +2 -0
  264. package/dist/operations/campaign-get.test.d.ts.map +1 -0
  265. package/dist/operations/campaign-get.test.js +99 -0
  266. package/dist/operations/campaign-get.test.js.map +1 -0
  267. package/dist/operations/campaign-list.d.ts +20 -0
  268. package/dist/operations/campaign-list.d.ts.map +1 -0
  269. package/dist/operations/campaign-list.js +23 -0
  270. package/dist/operations/campaign-list.js.map +1 -0
  271. package/dist/operations/campaign-list.test.d.ts +2 -0
  272. package/dist/operations/campaign-list.test.d.ts.map +1 -0
  273. package/dist/operations/campaign-list.test.js +106 -0
  274. package/dist/operations/campaign-list.test.js.map +1 -0
  275. package/dist/operations/campaign-move-next.d.ts +15 -0
  276. package/dist/operations/campaign-move-next.d.ts.map +1 -0
  277. package/dist/operations/campaign-move-next.js +25 -0
  278. package/dist/operations/campaign-move-next.js.map +1 -0
  279. package/dist/operations/campaign-move-next.test.d.ts +2 -0
  280. package/dist/operations/campaign-move-next.test.d.ts.map +1 -0
  281. package/dist/operations/campaign-move-next.test.js +105 -0
  282. package/dist/operations/campaign-move-next.test.js.map +1 -0
  283. package/dist/operations/campaign-remove-action.d.ts +12 -0
  284. package/dist/operations/campaign-remove-action.d.ts.map +1 -0
  285. package/dist/operations/campaign-remove-action.js +23 -0
  286. package/dist/operations/campaign-remove-action.js.map +1 -0
  287. package/dist/operations/campaign-remove-action.test.d.ts +2 -0
  288. package/dist/operations/campaign-remove-action.test.d.ts.map +1 -0
  289. package/dist/operations/campaign-remove-action.test.js +95 -0
  290. package/dist/operations/campaign-remove-action.test.js.map +1 -0
  291. package/dist/operations/campaign-reorder-actions.d.ts +13 -0
  292. package/dist/operations/campaign-reorder-actions.d.ts.map +1 -0
  293. package/dist/operations/campaign-reorder-actions.js +19 -0
  294. package/dist/operations/campaign-reorder-actions.js.map +1 -0
  295. package/dist/operations/campaign-reorder-actions.test.d.ts +2 -0
  296. package/dist/operations/campaign-reorder-actions.test.d.ts.map +1 -0
  297. package/dist/operations/campaign-reorder-actions.test.js +103 -0
  298. package/dist/operations/campaign-reorder-actions.test.js.map +1 -0
  299. package/dist/operations/campaign-retry.d.ts +13 -0
  300. package/dist/operations/campaign-retry.d.ts.map +1 -0
  301. package/dist/operations/campaign-retry.js +24 -0
  302. package/dist/operations/campaign-retry.js.map +1 -0
  303. package/dist/operations/campaign-retry.test.d.ts +2 -0
  304. package/dist/operations/campaign-retry.test.d.ts.map +1 -0
  305. package/dist/operations/campaign-retry.test.js +100 -0
  306. package/dist/operations/campaign-retry.test.js.map +1 -0
  307. package/dist/operations/campaign-start.d.ts +13 -0
  308. package/dist/operations/campaign-start.d.ts.map +1 -0
  309. package/dist/operations/campaign-start.js +24 -0
  310. package/dist/operations/campaign-start.js.map +1 -0
  311. package/dist/operations/campaign-start.test.d.ts +2 -0
  312. package/dist/operations/campaign-start.test.d.ts.map +1 -0
  313. package/dist/operations/campaign-start.test.js +96 -0
  314. package/dist/operations/campaign-start.test.js.map +1 -0
  315. package/dist/operations/campaign-statistics.d.ts +10 -0
  316. package/dist/operations/campaign-statistics.d.ts.map +1 -0
  317. package/dist/operations/campaign-statistics.js +23 -0
  318. package/dist/operations/campaign-statistics.js.map +1 -0
  319. package/dist/operations/campaign-statistics.test.d.ts +2 -0
  320. package/dist/operations/campaign-statistics.test.d.ts.map +1 -0
  321. package/dist/operations/campaign-statistics.test.js +120 -0
  322. package/dist/operations/campaign-statistics.test.js.map +1 -0
  323. package/dist/operations/campaign-status.d.ts +26 -0
  324. package/dist/operations/campaign-status.d.ts.map +1 -0
  325. package/dist/operations/campaign-status.js +32 -0
  326. package/dist/operations/campaign-status.js.map +1 -0
  327. package/dist/operations/campaign-status.test.d.ts +2 -0
  328. package/dist/operations/campaign-status.test.d.ts.map +1 -0
  329. package/dist/operations/campaign-status.test.js +142 -0
  330. package/dist/operations/campaign-status.test.js.map +1 -0
  331. package/dist/operations/campaign-stop.d.ts +11 -0
  332. package/dist/operations/campaign-stop.d.ts.map +1 -0
  333. package/dist/operations/campaign-stop.js +23 -0
  334. package/dist/operations/campaign-stop.js.map +1 -0
  335. package/dist/operations/campaign-stop.test.d.ts +2 -0
  336. package/dist/operations/campaign-stop.test.d.ts.map +1 -0
  337. package/dist/operations/campaign-stop.test.js +92 -0
  338. package/dist/operations/campaign-stop.test.js.map +1 -0
  339. package/dist/operations/campaign-update.d.ts +18 -0
  340. package/dist/operations/campaign-update.d.ts.map +1 -0
  341. package/dist/operations/campaign-update.js +21 -0
  342. package/dist/operations/campaign-update.js.map +1 -0
  343. package/dist/operations/campaign-update.test.d.ts +2 -0
  344. package/dist/operations/campaign-update.test.d.ts.map +1 -0
  345. package/dist/operations/campaign-update.test.js +105 -0
  346. package/dist/operations/campaign-update.test.js.map +1 -0
  347. package/dist/operations/check-replies.d.ts +12 -0
  348. package/dist/operations/check-replies.d.ts.map +1 -0
  349. package/dist/operations/check-replies.js +26 -0
  350. package/dist/operations/check-replies.js.map +1 -0
  351. package/dist/operations/check-replies.test.d.ts +2 -0
  352. package/dist/operations/check-replies.test.d.ts.map +1 -0
  353. package/dist/operations/check-replies.test.js +118 -0
  354. package/dist/operations/check-replies.test.js.map +1 -0
  355. package/dist/operations/import-people-from-urls.d.ts +16 -0
  356. package/dist/operations/import-people-from-urls.d.ts.map +1 -0
  357. package/dist/operations/import-people-from-urls.js +27 -0
  358. package/dist/operations/import-people-from-urls.js.map +1 -0
  359. package/dist/operations/import-people-from-urls.test.d.ts +2 -0
  360. package/dist/operations/import-people-from-urls.test.d.ts.map +1 -0
  361. package/dist/operations/import-people-from-urls.test.js +118 -0
  362. package/dist/operations/import-people-from-urls.test.js.map +1 -0
  363. package/dist/operations/index.d.ts +24 -0
  364. package/dist/operations/index.d.ts.map +1 -0
  365. package/dist/operations/index.js +30 -0
  366. package/dist/operations/index.js.map +1 -0
  367. package/dist/operations/query-messages.d.ts +23 -0
  368. package/dist/operations/query-messages.d.ts.map +1 -0
  369. package/dist/operations/query-messages.js +33 -0
  370. package/dist/operations/query-messages.js.map +1 -0
  371. package/dist/operations/query-messages.test.d.ts +2 -0
  372. package/dist/operations/query-messages.test.d.ts.map +1 -0
  373. package/dist/operations/query-messages.test.js +134 -0
  374. package/dist/operations/query-messages.test.js.map +1 -0
  375. package/dist/operations/scrape-messaging-history.d.ts +10 -0
  376. package/dist/operations/scrape-messaging-history.d.ts.map +1 -0
  377. package/dist/operations/scrape-messaging-history.js +24 -0
  378. package/dist/operations/scrape-messaging-history.js.map +1 -0
  379. package/dist/operations/scrape-messaging-history.test.d.ts +2 -0
  380. package/dist/operations/scrape-messaging-history.test.d.ts.map +1 -0
  381. package/dist/operations/scrape-messaging-history.test.js +112 -0
  382. package/dist/operations/scrape-messaging-history.test.js.map +1 -0
  383. package/dist/operations/types.d.ts +10 -0
  384. package/dist/operations/types.d.ts.map +1 -0
  385. package/dist/operations/types.js +4 -0
  386. package/dist/operations/types.js.map +1 -0
  387. package/dist/services/account-resolution.d.ts +22 -0
  388. package/dist/services/account-resolution.d.ts.map +1 -0
  389. package/dist/services/account-resolution.js +45 -0
  390. package/dist/services/account-resolution.js.map +1 -0
  391. package/dist/services/account-resolution.test.d.ts +2 -0
  392. package/dist/services/account-resolution.test.d.ts.map +1 -0
  393. package/dist/services/account-resolution.test.js +91 -0
  394. package/dist/services/account-resolution.test.js.map +1 -0
  395. package/dist/services/app.d.ts +62 -0
  396. package/dist/services/app.d.ts.map +1 -0
  397. package/dist/services/app.js +200 -0
  398. package/dist/services/app.js.map +1 -0
  399. package/dist/services/app.test.d.ts +2 -0
  400. package/dist/services/app.test.d.ts.map +1 -0
  401. package/dist/services/app.test.js +267 -0
  402. package/dist/services/app.test.js.map +1 -0
  403. package/dist/services/campaign.d.ts +143 -0
  404. package/dist/services/campaign.d.ts.map +1 -0
  405. package/dist/services/campaign.js +409 -0
  406. package/dist/services/campaign.js.map +1 -0
  407. package/dist/services/campaign.test.d.ts +2 -0
  408. package/dist/services/campaign.test.d.ts.map +1 -0
  409. package/dist/services/campaign.test.js +481 -0
  410. package/dist/services/campaign.test.js.map +1 -0
  411. package/dist/services/errors.d.ts +83 -0
  412. package/dist/services/errors.d.ts.map +1 -0
  413. package/dist/services/errors.js +126 -0
  414. package/dist/services/errors.js.map +1 -0
  415. package/dist/services/errors.test.d.ts +2 -0
  416. package/dist/services/errors.test.d.ts.map +1 -0
  417. package/dist/services/errors.test.js +123 -0
  418. package/dist/services/errors.test.js.map +1 -0
  419. package/dist/services/index.d.ts +10 -0
  420. package/dist/services/index.d.ts.map +1 -0
  421. package/dist/services/index.js +12 -0
  422. package/dist/services/index.js.map +1 -0
  423. package/dist/services/instance-context.d.ts +37 -0
  424. package/dist/services/instance-context.d.ts.map +1 -0
  425. package/dist/services/instance-context.js +49 -0
  426. package/dist/services/instance-context.js.map +1 -0
  427. package/dist/services/instance-context.test.d.ts +2 -0
  428. package/dist/services/instance-context.test.d.ts.map +1 -0
  429. package/dist/services/instance-context.test.js +203 -0
  430. package/dist/services/instance-context.test.js.map +1 -0
  431. package/dist/services/instance-lifecycle.d.ts +38 -0
  432. package/dist/services/instance-lifecycle.d.ts.map +1 -0
  433. package/dist/services/instance-lifecycle.js +87 -0
  434. package/dist/services/instance-lifecycle.js.map +1 -0
  435. package/dist/services/instance-lifecycle.test.d.ts +2 -0
  436. package/dist/services/instance-lifecycle.test.d.ts.map +1 -0
  437. package/dist/services/instance-lifecycle.test.js +158 -0
  438. package/dist/services/instance-lifecycle.test.js.map +1 -0
  439. package/dist/services/instance.d.ts +90 -0
  440. package/dist/services/instance.d.ts.map +1 -0
  441. package/dist/services/instance.js +178 -0
  442. package/dist/services/instance.js.map +1 -0
  443. package/dist/services/instance.test.d.ts +2 -0
  444. package/dist/services/instance.test.d.ts.map +1 -0
  445. package/dist/services/instance.test.js +291 -0
  446. package/dist/services/instance.test.js.map +1 -0
  447. package/dist/services/launcher.d.ts +54 -0
  448. package/dist/services/launcher.d.ts.map +1 -0
  449. package/dist/services/launcher.js +162 -0
  450. package/dist/services/launcher.js.map +1 -0
  451. package/dist/services/launcher.test.d.ts +2 -0
  452. package/dist/services/launcher.test.d.ts.map +1 -0
  453. package/dist/services/launcher.test.js +163 -0
  454. package/dist/services/launcher.test.js.map +1 -0
  455. package/dist/services/status.d.ts +37 -0
  456. package/dist/services/status.d.ts.map +1 -0
  457. package/dist/services/status.js +85 -0
  458. package/dist/services/status.js.map +1 -0
  459. package/dist/services/status.test.d.ts +2 -0
  460. package/dist/services/status.test.d.ts.map +1 -0
  461. package/dist/services/status.test.js +248 -0
  462. package/dist/services/status.test.js.map +1 -0
  463. package/dist/testing/e2e-helpers.d.ts +41 -0
  464. package/dist/testing/e2e-helpers.d.ts.map +1 -0
  465. package/dist/testing/e2e-helpers.js +114 -0
  466. package/dist/testing/e2e-helpers.js.map +1 -0
  467. package/dist/testing/index.d.ts +2 -0
  468. package/dist/testing/index.d.ts.map +1 -0
  469. package/dist/testing/index.js +4 -0
  470. package/dist/testing/index.js.map +1 -0
  471. package/dist/types/account.d.ts +13 -0
  472. package/dist/types/account.d.ts.map +1 -0
  473. package/dist/types/account.js +4 -0
  474. package/dist/types/account.js.map +1 -0
  475. package/dist/types/account.test.d.ts +2 -0
  476. package/dist/types/account.test.d.ts.map +1 -0
  477. package/dist/types/account.test.js +26 -0
  478. package/dist/types/account.test.js.map +1 -0
  479. package/dist/types/campaign.d.ts +267 -0
  480. package/dist/types/campaign.d.ts.map +1 -0
  481. package/dist/types/campaign.js +4 -0
  482. package/dist/types/campaign.js.map +1 -0
  483. package/dist/types/cdp.d.ts +18 -0
  484. package/dist/types/cdp.d.ts.map +1 -0
  485. package/dist/types/cdp.js +4 -0
  486. package/dist/types/cdp.js.map +1 -0
  487. package/dist/types/cdp.test.d.ts +2 -0
  488. package/dist/types/cdp.test.d.ts.map +1 -0
  489. package/dist/types/cdp.test.js +30 -0
  490. package/dist/types/cdp.test.js.map +1 -0
  491. package/dist/types/index.d.ts +6 -0
  492. package/dist/types/index.d.ts.map +1 -0
  493. package/dist/types/index.js +4 -0
  494. package/dist/types/index.js.map +1 -0
  495. package/dist/types/instance.d.ts +36 -0
  496. package/dist/types/instance.d.ts.map +1 -0
  497. package/dist/types/instance.js +4 -0
  498. package/dist/types/instance.js.map +1 -0
  499. package/dist/types/instance.test.d.ts +2 -0
  500. package/dist/types/instance.test.d.ts.map +1 -0
  501. package/dist/types/instance.test.js +59 -0
  502. package/dist/types/instance.test.js.map +1 -0
  503. package/dist/types/messaging.d.ts +51 -0
  504. package/dist/types/messaging.d.ts.map +1 -0
  505. package/dist/types/messaging.js +4 -0
  506. package/dist/types/messaging.js.map +1 -0
  507. package/dist/types/profile.d.ts +81 -0
  508. package/dist/types/profile.d.ts.map +1 -0
  509. package/dist/types/profile.js +4 -0
  510. package/dist/types/profile.js.map +1 -0
  511. package/dist/types/profile.test.d.ts +2 -0
  512. package/dist/types/profile.test.d.ts.map +1 -0
  513. package/dist/types/profile.test.js +105 -0
  514. package/dist/types/profile.test.js.map +1 -0
  515. package/dist/utils/cdp-port.d.ts +5 -0
  516. package/dist/utils/cdp-port.d.ts.map +1 -0
  517. package/dist/utils/cdp-port.js +15 -0
  518. package/dist/utils/cdp-port.js.map +1 -0
  519. package/dist/utils/cdp-port.test.d.ts +2 -0
  520. package/dist/utils/cdp-port.test.d.ts.map +1 -0
  521. package/dist/utils/cdp-port.test.js +23 -0
  522. package/dist/utils/cdp-port.test.js.map +1 -0
  523. package/dist/utils/delay.d.ts +5 -0
  524. package/dist/utils/delay.d.ts.map +1 -0
  525. package/dist/utils/delay.js +9 -0
  526. package/dist/utils/delay.js.map +1 -0
  527. package/dist/utils/delay.test.d.ts +2 -0
  528. package/dist/utils/delay.test.d.ts.map +1 -0
  529. package/dist/utils/delay.test.js +17 -0
  530. package/dist/utils/delay.test.js.map +1 -0
  531. package/dist/utils/error-message.d.ts +5 -0
  532. package/dist/utils/error-message.d.ts.map +1 -0
  533. package/dist/utils/error-message.js +9 -0
  534. package/dist/utils/error-message.js.map +1 -0
  535. package/dist/utils/error-message.test.d.ts +2 -0
  536. package/dist/utils/error-message.test.d.ts.map +1 -0
  537. package/dist/utils/error-message.test.js +28 -0
  538. package/dist/utils/error-message.test.js.map +1 -0
  539. package/dist/utils/index.d.ts +5 -0
  540. package/dist/utils/index.d.ts.map +1 -0
  541. package/dist/utils/index.js +7 -0
  542. package/dist/utils/index.js.map +1 -0
  543. package/dist/utils/loopback.d.ts +10 -0
  544. package/dist/utils/loopback.d.ts.map +1 -0
  545. package/dist/utils/loopback.js +28 -0
  546. package/dist/utils/loopback.js.map +1 -0
  547. package/dist/utils/loopback.test.d.ts +2 -0
  548. package/dist/utils/loopback.test.d.ts.map +1 -0
  549. package/dist/utils/loopback.test.js +34 -0
  550. package/dist/utils/loopback.test.js.map +1 -0
  551. package/package.json +26 -9
@@ -0,0 +1,132 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { afterEach, beforeEach, describe, expect, it } from "vitest";
4
+ import { DatabaseClient } from "../client.js";
5
+ import { ActionNotFoundError, CampaignNotFoundError, ExcludeListNotFoundError, } from "../errors.js";
6
+ import { openFixture } from "../testing/open-fixture.js";
7
+ import { CampaignExcludeListRepository } from "./campaign-exclude-list.js";
8
+ describe("CampaignExcludeListRepository", () => {
9
+ let db;
10
+ let client;
11
+ let repo;
12
+ beforeEach(() => {
13
+ db = openFixture();
14
+ client = { db };
15
+ repo = new CampaignExcludeListRepository(client);
16
+ });
17
+ afterEach(() => {
18
+ db.close();
19
+ });
20
+ describe("getExcludeList", () => {
21
+ // Campaign 1 has campaign-level exclude list with person 2 pre-populated
22
+ // Campaign 5 has campaign-level exclude list (empty) and action-level lists (empty)
23
+ it("returns campaign-level exclude list", () => {
24
+ const entries = repo.getExcludeList(1);
25
+ expect(entries).toEqual([{ personId: 2 }]);
26
+ });
27
+ it("returns empty list when no people excluded", () => {
28
+ const entries = repo.getExcludeList(5);
29
+ expect(entries).toEqual([]);
30
+ });
31
+ it("returns action-level exclude list", () => {
32
+ const entries = repo.getExcludeList(1, 1);
33
+ // Action 1's exclude list (collection 2) has no people
34
+ expect(entries).toEqual([]);
35
+ });
36
+ it("throws CampaignNotFoundError for missing campaign", () => {
37
+ expect(() => repo.getExcludeList(999)).toThrow(CampaignNotFoundError);
38
+ });
39
+ it("throws ActionNotFoundError for action not in campaign", () => {
40
+ expect(() => repo.getExcludeList(1, 999)).toThrow(ActionNotFoundError);
41
+ });
42
+ it("throws ExcludeListNotFoundError when campaign has no exclude list chain", () => {
43
+ // Campaign 2 has no campaign_versions entry
44
+ expect(() => repo.getExcludeList(2)).toThrow(ExcludeListNotFoundError);
45
+ });
46
+ it("returns entries ordered by person_id", () => {
47
+ // Add multiple people to campaign 1's exclude list
48
+ db.exec(`
49
+ INSERT INTO collection_people (collection_id, person_id) VALUES (1, 3);
50
+ INSERT INTO collection_people (collection_id, person_id) VALUES (1, 1);
51
+ `);
52
+ const entries = repo.getExcludeList(1);
53
+ expect(entries.map((e) => e.personId)).toEqual([1, 2, 3]);
54
+ });
55
+ });
56
+ describe("addToExcludeList", () => {
57
+ it("adds people to campaign-level exclude list", () => {
58
+ const added = repo.addToExcludeList(1, [1, 3]);
59
+ expect(added).toBe(2);
60
+ // Verify in database
61
+ const entries = repo.getExcludeList(1);
62
+ expect(entries.map((e) => e.personId)).toContain(1);
63
+ expect(entries.map((e) => e.personId)).toContain(3);
64
+ });
65
+ it("skips already-excluded people", () => {
66
+ // Person 2 is already in campaign 1's exclude list
67
+ const added = repo.addToExcludeList(1, [2, 3]);
68
+ expect(added).toBe(1); // Only person 3 was newly added
69
+ const entries = repo.getExcludeList(1);
70
+ expect(entries).toHaveLength(2); // Person 2 (existing) + person 3 (new)
71
+ });
72
+ it("adds people to action-level exclude list", () => {
73
+ const added = repo.addToExcludeList(1, [1], 1);
74
+ expect(added).toBe(1);
75
+ const entries = repo.getExcludeList(1, 1);
76
+ expect(entries).toEqual([{ personId: 1 }]);
77
+ });
78
+ it("returns 0 for empty person list", () => {
79
+ const added = repo.addToExcludeList(1, []);
80
+ expect(added).toBe(0);
81
+ });
82
+ it("throws CampaignNotFoundError for missing campaign", () => {
83
+ expect(() => repo.addToExcludeList(999, [1])).toThrow(CampaignNotFoundError);
84
+ });
85
+ it("throws ActionNotFoundError for action not in campaign", () => {
86
+ expect(() => repo.addToExcludeList(1, [1], 999)).toThrow(ActionNotFoundError);
87
+ });
88
+ it("throws ExcludeListNotFoundError when exclude list chain missing", () => {
89
+ expect(() => repo.addToExcludeList(2, [1])).toThrow(ExcludeListNotFoundError);
90
+ });
91
+ });
92
+ describe("removeFromExcludeList", () => {
93
+ it("removes people from campaign-level exclude list", () => {
94
+ // Person 2 is in campaign 1's exclude list
95
+ const removed = repo.removeFromExcludeList(1, [2]);
96
+ expect(removed).toBe(1);
97
+ const entries = repo.getExcludeList(1);
98
+ expect(entries).toEqual([]);
99
+ });
100
+ it("returns 0 for people not in the list", () => {
101
+ const removed = repo.removeFromExcludeList(1, [999]);
102
+ expect(removed).toBe(0);
103
+ });
104
+ it("removes people from action-level exclude list", () => {
105
+ // First add a person to action 1's exclude list
106
+ repo.addToExcludeList(1, [1], 1);
107
+ const removed = repo.removeFromExcludeList(1, [1], 1);
108
+ expect(removed).toBe(1);
109
+ const entries = repo.getExcludeList(1, 1);
110
+ expect(entries).toEqual([]);
111
+ });
112
+ it("handles mixed present and absent people", () => {
113
+ // Person 2 is in the list, person 999 is not
114
+ const removed = repo.removeFromExcludeList(1, [2, 999]);
115
+ expect(removed).toBe(1);
116
+ });
117
+ it("returns 0 for empty person list", () => {
118
+ const removed = repo.removeFromExcludeList(1, []);
119
+ expect(removed).toBe(0);
120
+ });
121
+ it("throws CampaignNotFoundError for missing campaign", () => {
122
+ expect(() => repo.removeFromExcludeList(999, [1])).toThrow(CampaignNotFoundError);
123
+ });
124
+ it("throws ActionNotFoundError for action not in campaign", () => {
125
+ expect(() => repo.removeFromExcludeList(1, [1], 999)).toThrow(ActionNotFoundError);
126
+ });
127
+ it("throws ExcludeListNotFoundError when exclude list chain missing", () => {
128
+ expect(() => repo.removeFromExcludeList(2, [1])).toThrow(ExcludeListNotFoundError);
129
+ });
130
+ });
131
+ });
132
+ //# sourceMappingURL=campaign-exclude-list.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-exclude-list.test.js","sourceRoot":"","sources":["../../../src/db/repositories/campaign-exclude-list.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type { CampaignStatistics, GetStatisticsOptions } from "../../types/index.js";
2
+ import type { DatabaseClient } from "../client.js";
3
+ /**
4
+ * Repository for campaign statistics and reset operations.
5
+ *
6
+ * Provides read operations (getStatistics) and write operations
7
+ * (resetForRerun) for campaign execution data.
8
+ *
9
+ * Write operations require the DatabaseClient to be opened with
10
+ * `{ readOnly: false }`.
11
+ */
12
+ export declare class CampaignStatisticsRepository {
13
+ private readonly client;
14
+ private readonly stmtGetCampaign;
15
+ private readonly stmtGetCampaignActions;
16
+ private readonly stmtGetActionVersions;
17
+ private writeStatements;
18
+ constructor(client: DatabaseClient);
19
+ /**
20
+ * Get aggregated statistics for a campaign.
21
+ *
22
+ * Returns per-action result breakdowns (success/failure/skip/reply rates),
23
+ * top error codes with blame attribution, and processing timeline.
24
+ *
25
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
26
+ * @throws {ActionNotFoundError} if actionId is provided and not in the campaign.
27
+ */
28
+ getStatistics(campaignId: number, options?: GetStatisticsOptions): CampaignStatistics;
29
+ /**
30
+ * Reset persons for re-run in a campaign.
31
+ *
32
+ * This performs the three-table reset pattern required by LinkedHelper:
33
+ * 1. Requeue person in action_target_people (state = 1)
34
+ * 2. Reset person_in_campaigns_history (result_status = -999)
35
+ * 3. Delete old action_results (and FK children)
36
+ *
37
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
38
+ */
39
+ resetForRerun(campaignId: number, personIds: number[]): void;
40
+ /**
41
+ * Get all actions for a campaign.
42
+ *
43
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
44
+ */
45
+ private getCampaignActions;
46
+ /**
47
+ * Prepare write statements lazily (only when needed).
48
+ * This avoids issues when the client is opened in read-only mode.
49
+ */
50
+ private getWriteStatements;
51
+ /**
52
+ * Verify that a campaign exists.
53
+ *
54
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
55
+ */
56
+ private verifyCampaignExists;
57
+ }
58
+ //# sourceMappingURL=campaign-statistics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-statistics.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/campaign-statistics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAMV,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA6BnD;;;;;;;;GAQG;AACH,qBAAa,4BAA4B;IAc3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAbnC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACxC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAGvC,OAAO,CAAC,eAAe,CAMP;gBAEa,MAAM,EAAE,cAAc;IA8BnD;;;;;;;;OAQG;IACH,aAAa,CACX,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,oBAAyB,GACjC,kBAAkB;IAyIrB;;;;;;;;;OASG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAuC5D;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAoC1B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAqD1B;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;CAI7B"}
@@ -0,0 +1,278 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { ActionNotFoundError, CampaignNotFoundError, } from "../errors.js";
4
+ /**
5
+ * Repository for campaign statistics and reset operations.
6
+ *
7
+ * Provides read operations (getStatistics) and write operations
8
+ * (resetForRerun) for campaign execution data.
9
+ *
10
+ * Write operations require the DatabaseClient to be opened with
11
+ * `{ readOnly: false }`.
12
+ */
13
+ export class CampaignStatisticsRepository {
14
+ client;
15
+ stmtGetCampaign;
16
+ stmtGetCampaignActions;
17
+ stmtGetActionVersions;
18
+ // Write statements (prepared lazily to avoid issues with read-only mode)
19
+ writeStatements = null;
20
+ constructor(client) {
21
+ this.client = client;
22
+ const { db } = client;
23
+ this.stmtGetCampaign = db.prepare(`SELECT id, name, description, is_paused, is_archived, is_valid,
24
+ li_account_id, created_at
25
+ FROM campaigns WHERE id = ?`);
26
+ this.stmtGetCampaignActions = db.prepare(`SELECT a.id, a.campaign_id, a.name, a.description,
27
+ ac.id AS config_id, ac.actionType AS action_type,
28
+ ac.actionSettings AS action_settings, ac.coolDown AS cool_down,
29
+ ac.maxActionResultsPerIteration AS max_action_results_per_iteration,
30
+ ac.isDraft AS is_draft, av.id AS version_id
31
+ FROM actions a
32
+ JOIN action_versions av ON av.action_id = a.id
33
+ JOIN action_configs ac ON av.config_id = ac.id
34
+ WHERE a.campaign_id = ?
35
+ ORDER BY a.id`);
36
+ this.stmtGetActionVersions = db.prepare(`SELECT av.id, av.action_id
37
+ FROM action_versions av
38
+ JOIN actions a ON av.action_id = a.id
39
+ WHERE a.campaign_id = ?`);
40
+ }
41
+ /**
42
+ * Get aggregated statistics for a campaign.
43
+ *
44
+ * Returns per-action result breakdowns (success/failure/skip/reply rates),
45
+ * top error codes with blame attribution, and processing timeline.
46
+ *
47
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
48
+ * @throws {ActionNotFoundError} if actionId is provided and not in the campaign.
49
+ */
50
+ getStatistics(campaignId, options = {}) {
51
+ const { actionId, maxErrors = 5 } = options;
52
+ // Get actions (also validates campaign exists)
53
+ const actions = this.getCampaignActions(campaignId);
54
+ if (actionId !== undefined) {
55
+ if (!actions.some((a) => a.id === actionId)) {
56
+ throw new ActionNotFoundError(actionId, campaignId);
57
+ }
58
+ }
59
+ const filteredActions = actionId !== undefined
60
+ ? actions.filter((a) => a.id === actionId)
61
+ : actions;
62
+ const { db } = this.client;
63
+ const stmtActionStats = db.prepare(`SELECT
64
+ SUM(CASE WHEN ar.result = 1 THEN 1 ELSE 0 END) AS successful,
65
+ SUM(CASE WHEN ar.result = 2 THEN 1 ELSE 0 END) AS replied,
66
+ SUM(CASE WHEN ar.result = -1 THEN 1 ELSE 0 END) AS failed,
67
+ SUM(CASE WHEN ar.result = -2 THEN 1 ELSE 0 END) AS skipped,
68
+ COUNT(*) AS total,
69
+ MIN(ar.created_at) AS first_result_at,
70
+ MAX(ar.created_at) AS last_result_at
71
+ FROM action_results ar
72
+ JOIN action_versions av ON ar.action_version_id = av.id
73
+ WHERE av.action_id = ?`);
74
+ const stmtTopErrors = db.prepare(`SELECT
75
+ arf.code,
76
+ COUNT(*) AS cnt,
77
+ arf.is_exception,
78
+ arf.who_to_blame
79
+ FROM action_result_flags arf
80
+ JOIN action_results ar ON arf.action_result_id = ar.id
81
+ JOIN action_versions av ON ar.action_version_id = av.id
82
+ WHERE av.action_id = ? AND arf.code IS NOT NULL
83
+ GROUP BY arf.code, arf.is_exception, arf.who_to_blame
84
+ ORDER BY cnt DESC
85
+ LIMIT ?`);
86
+ const actionStats = [];
87
+ let totalSuccessful = 0;
88
+ let totalReplied = 0;
89
+ let totalFailed = 0;
90
+ let totalSkipped = 0;
91
+ let grandTotal = 0;
92
+ for (const action of filteredActions) {
93
+ const stats = stmtActionStats.get(action.id);
94
+ const successful = stats.successful ?? 0;
95
+ const replied = stats.replied ?? 0;
96
+ const failed = stats.failed ?? 0;
97
+ const skipped = stats.skipped ?? 0;
98
+ const total = stats.total ?? 0;
99
+ const successRate = total > 0
100
+ ? Math.round(((successful + replied) / total) * 1000) / 10
101
+ : 0;
102
+ const errorRows = stmtTopErrors.all(action.id, maxErrors);
103
+ const topErrors = errorRows.map((e) => ({
104
+ code: e.code,
105
+ count: e.cnt,
106
+ isException: e.is_exception === 1,
107
+ whoToBlame: e.who_to_blame,
108
+ }));
109
+ actionStats.push({
110
+ actionId: action.id,
111
+ actionName: action.name,
112
+ actionType: action.config.actionType,
113
+ successful,
114
+ replied,
115
+ failed,
116
+ skipped,
117
+ total,
118
+ successRate,
119
+ firstResultAt: stats.first_result_at,
120
+ lastResultAt: stats.last_result_at,
121
+ topErrors,
122
+ });
123
+ totalSuccessful += successful;
124
+ totalReplied += replied;
125
+ totalFailed += failed;
126
+ totalSkipped += skipped;
127
+ grandTotal += total;
128
+ }
129
+ const totalSuccessRate = grandTotal > 0
130
+ ? Math.round(((totalSuccessful + totalReplied) / grandTotal) * 1000) / 10
131
+ : 0;
132
+ return {
133
+ campaignId,
134
+ actions: actionStats,
135
+ totals: {
136
+ successful: totalSuccessful,
137
+ replied: totalReplied,
138
+ failed: totalFailed,
139
+ skipped: totalSkipped,
140
+ total: grandTotal,
141
+ successRate: totalSuccessRate,
142
+ },
143
+ };
144
+ }
145
+ /**
146
+ * Reset persons for re-run in a campaign.
147
+ *
148
+ * This performs the three-table reset pattern required by LinkedHelper:
149
+ * 1. Requeue person in action_target_people (state = 1)
150
+ * 2. Reset person_in_campaigns_history (result_status = -999)
151
+ * 3. Delete old action_results (and FK children)
152
+ *
153
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
154
+ */
155
+ resetForRerun(campaignId, personIds) {
156
+ if (personIds.length === 0)
157
+ return;
158
+ // Verify campaign exists and get actions
159
+ const actions = this.getCampaignActions(campaignId);
160
+ if (actions.length === 0)
161
+ return;
162
+ // Get all action versions for this campaign
163
+ const actionVersionRows = this.stmtGetActionVersions.all(campaignId);
164
+ const stmts = this.getWriteStatements();
165
+ this.client.db.exec("BEGIN");
166
+ try {
167
+ for (const personId of personIds) {
168
+ // 1. Requeue person in action_target_people for each action
169
+ for (const action of actions) {
170
+ stmts.resetTargetPeople.run(action.id, personId);
171
+ }
172
+ // 2. Reset campaign history
173
+ stmts.resetHistory.run(campaignId, personId);
174
+ // 3. Delete old results for each action version
175
+ for (const version of actionVersionRows) {
176
+ stmts.deleteResultFlags.run(version.id, personId);
177
+ stmts.deleteResultMessages.run(version.id, personId);
178
+ stmts.deleteResults.run(version.id, personId);
179
+ }
180
+ }
181
+ this.client.db.exec("COMMIT");
182
+ }
183
+ catch (e) {
184
+ this.client.db.exec("ROLLBACK");
185
+ throw e;
186
+ }
187
+ }
188
+ /**
189
+ * Get all actions for a campaign.
190
+ *
191
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
192
+ */
193
+ getCampaignActions(campaignId) {
194
+ // Verify campaign exists
195
+ this.verifyCampaignExists(campaignId);
196
+ const rows = this.stmtGetCampaignActions.all(campaignId);
197
+ return rows.map((r) => {
198
+ let actionSettings = {};
199
+ try {
200
+ actionSettings = JSON.parse(r.action_settings);
201
+ }
202
+ catch {
203
+ // Keep empty object if parsing fails
204
+ }
205
+ const config = {
206
+ id: r.config_id,
207
+ actionType: r.action_type,
208
+ actionSettings,
209
+ coolDown: r.cool_down,
210
+ maxActionResultsPerIteration: r.max_action_results_per_iteration,
211
+ isDraft: r.is_draft === 1,
212
+ };
213
+ return {
214
+ id: r.id,
215
+ campaignId: r.campaign_id,
216
+ name: r.name,
217
+ description: r.description,
218
+ config,
219
+ versionId: r.version_id,
220
+ };
221
+ });
222
+ }
223
+ /**
224
+ * Prepare write statements lazily (only when needed).
225
+ * This avoids issues when the client is opened in read-only mode.
226
+ */
227
+ getWriteStatements() {
228
+ if (this.writeStatements)
229
+ return this.writeStatements;
230
+ const { db } = this.client;
231
+ this.writeStatements = {
232
+ resetTargetPeople: db.prepare(`UPDATE action_target_people SET state = 1
233
+ WHERE action_id = ? AND person_id = ?`),
234
+ resetHistory: db.prepare(`UPDATE person_in_campaigns_history
235
+ SET result_status = -999,
236
+ result_id = NULL,
237
+ result_action_version_id = NULL,
238
+ result_action_iteration_id = NULL,
239
+ result_created_at = NULL,
240
+ result_data = NULL,
241
+ result_data_message = NULL,
242
+ result_code = NULL,
243
+ result_is_exception = NULL,
244
+ result_who_to_blame = NULL,
245
+ result_is_retryable = NULL,
246
+ result_flag_recipient_replied = NULL,
247
+ result_flag_sender_messaged = NULL,
248
+ result_invited_platform = NULL,
249
+ result_messaged_platform = NULL,
250
+ add_to_target_or_result_saved_date = add_to_target_date
251
+ WHERE campaign_id = ? AND person_id = ?`),
252
+ deleteResultFlags: db.prepare(`DELETE FROM action_result_flags
253
+ WHERE action_result_id IN (
254
+ SELECT id FROM action_results
255
+ WHERE action_version_id = ? AND person_id = ?
256
+ )`),
257
+ deleteResultMessages: db.prepare(`DELETE FROM action_result_messages
258
+ WHERE action_result_id IN (
259
+ SELECT id FROM action_results
260
+ WHERE action_version_id = ? AND person_id = ?
261
+ )`),
262
+ deleteResults: db.prepare(`DELETE FROM action_results
263
+ WHERE action_version_id = ? AND person_id = ?`),
264
+ };
265
+ return this.writeStatements;
266
+ }
267
+ /**
268
+ * Verify that a campaign exists.
269
+ *
270
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
271
+ */
272
+ verifyCampaignExists(campaignId) {
273
+ const row = this.stmtGetCampaign.get(campaignId);
274
+ if (!row)
275
+ throw new CampaignNotFoundError(campaignId);
276
+ }
277
+ }
278
+ //# sourceMappingURL=campaign-statistics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-statistics.js","sourceRoot":"","sources":["../../../src/db/repositories/campaign-statistics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=campaign-statistics.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign-statistics.test.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/campaign-statistics.test.ts"],"names":[],"mappings":""}