@lhremote/core 0.1.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 (499) hide show
  1. package/README.md +124 -0
  2. package/dist/cdp/app-discovery.d.ts +22 -0
  3. package/dist/cdp/app-discovery.d.ts.map +1 -0
  4. package/dist/cdp/app-discovery.js +60 -0
  5. package/dist/cdp/app-discovery.js.map +1 -0
  6. package/dist/cdp/app-discovery.test.d.ts +2 -0
  7. package/dist/cdp/app-discovery.test.d.ts.map +1 -0
  8. package/dist/cdp/app-discovery.test.js +124 -0
  9. package/dist/cdp/app-discovery.test.js.map +1 -0
  10. package/dist/cdp/client.d.ts +14 -0
  11. package/dist/cdp/client.d.ts.map +1 -1
  12. package/dist/cdp/client.integration.test.js +10 -3
  13. package/dist/cdp/client.integration.test.js.map +1 -1
  14. package/dist/cdp/client.js +41 -8
  15. package/dist/cdp/client.js.map +1 -1
  16. package/dist/cdp/client.test.js +267 -3
  17. package/dist/cdp/client.test.js.map +1 -1
  18. package/dist/cdp/discovery.d.ts.map +1 -1
  19. package/dist/cdp/discovery.integration.test.js +2 -0
  20. package/dist/cdp/discovery.integration.test.js.map +1 -1
  21. package/dist/cdp/discovery.js +2 -0
  22. package/dist/cdp/discovery.js.map +1 -1
  23. package/dist/cdp/discovery.test.js +2 -0
  24. package/dist/cdp/discovery.test.js.map +1 -1
  25. package/dist/cdp/errors.d.ts.map +1 -1
  26. package/dist/cdp/errors.js +2 -0
  27. package/dist/cdp/errors.js.map +1 -1
  28. package/dist/cdp/errors.test.js +2 -0
  29. package/dist/cdp/errors.test.js.map +1 -1
  30. package/dist/cdp/index.d.ts +1 -0
  31. package/dist/cdp/index.d.ts.map +1 -1
  32. package/dist/cdp/index.js +3 -0
  33. package/dist/cdp/index.js.map +1 -1
  34. package/dist/cdp/instance-discovery.d.ts.map +1 -1
  35. package/dist/cdp/instance-discovery.integration.test.js +2 -0
  36. package/dist/cdp/instance-discovery.integration.test.js.map +1 -1
  37. package/dist/cdp/instance-discovery.js +5 -17
  38. package/dist/cdp/instance-discovery.js.map +1 -1
  39. package/dist/cdp/instance-discovery.test.js +2 -0
  40. package/dist/cdp/instance-discovery.test.js.map +1 -1
  41. package/dist/cdp/testing/launch-chromium.d.ts.map +1 -1
  42. package/dist/cdp/testing/launch-chromium.js +4 -1
  43. package/dist/cdp/testing/launch-chromium.js.map +1 -1
  44. package/dist/constants.d.ts +5 -0
  45. package/dist/constants.d.ts.map +1 -0
  46. package/dist/constants.js +7 -0
  47. package/dist/constants.js.map +1 -0
  48. package/dist/data/action-types.d.ts +39 -0
  49. package/dist/data/action-types.d.ts.map +1 -0
  50. package/dist/data/action-types.js +497 -0
  51. package/dist/data/action-types.js.map +1 -0
  52. package/dist/data/action-types.test.d.ts +2 -0
  53. package/dist/data/action-types.test.d.ts.map +1 -0
  54. package/dist/data/action-types.test.js +544 -0
  55. package/dist/data/action-types.test.js.map +1 -0
  56. package/dist/data/index.d.ts +3 -0
  57. package/dist/data/index.d.ts.map +1 -0
  58. package/dist/data/index.js +4 -0
  59. package/dist/data/index.js.map +1 -0
  60. package/dist/db/client.d.ts +19 -5
  61. package/dist/db/client.d.ts.map +1 -1
  62. package/dist/db/client.integration.test.js +5 -1
  63. package/dist/db/client.integration.test.js.map +1 -1
  64. package/dist/db/client.js +11 -5
  65. package/dist/db/client.js.map +1 -1
  66. package/dist/db/client.test.js +2 -0
  67. package/dist/db/client.test.js.map +1 -1
  68. package/dist/db/discovery.d.ts.map +1 -1
  69. package/dist/db/discovery.integration.test.js +2 -0
  70. package/dist/db/discovery.integration.test.js.map +1 -1
  71. package/dist/db/discovery.js +2 -0
  72. package/dist/db/discovery.js.map +1 -1
  73. package/dist/db/discovery.test.js +2 -0
  74. package/dist/db/discovery.test.js.map +1 -1
  75. package/dist/db/errors.d.ts +31 -0
  76. package/dist/db/errors.d.ts.map +1 -1
  77. package/dist/db/errors.js +49 -0
  78. package/dist/db/errors.js.map +1 -1
  79. package/dist/db/errors.test.js +2 -0
  80. package/dist/db/errors.test.js.map +1 -1
  81. package/dist/db/escape-like.d.ts +8 -0
  82. package/dist/db/escape-like.d.ts.map +1 -0
  83. package/dist/db/escape-like.js +12 -0
  84. package/dist/db/escape-like.js.map +1 -0
  85. package/dist/db/escape-like.test.d.ts +2 -0
  86. package/dist/db/escape-like.test.d.ts.map +1 -0
  87. package/dist/db/escape-like.test.js +25 -0
  88. package/dist/db/escape-like.test.js.map +1 -0
  89. package/dist/db/index.d.ts +3 -3
  90. package/dist/db/index.d.ts.map +1 -1
  91. package/dist/db/index.js +4 -2
  92. package/dist/db/index.js.map +1 -1
  93. package/dist/db/repositories/campaign-exclude-list.d.ts +89 -0
  94. package/dist/db/repositories/campaign-exclude-list.d.ts.map +1 -0
  95. package/dist/db/repositories/campaign-exclude-list.js +204 -0
  96. package/dist/db/repositories/campaign-exclude-list.js.map +1 -0
  97. package/dist/db/repositories/campaign-exclude-list.test.d.ts +2 -0
  98. package/dist/db/repositories/campaign-exclude-list.test.d.ts.map +1 -0
  99. package/dist/db/repositories/campaign-exclude-list.test.js +132 -0
  100. package/dist/db/repositories/campaign-exclude-list.test.js.map +1 -0
  101. package/dist/db/repositories/campaign-statistics.d.ts +58 -0
  102. package/dist/db/repositories/campaign-statistics.d.ts.map +1 -0
  103. package/dist/db/repositories/campaign-statistics.js +278 -0
  104. package/dist/db/repositories/campaign-statistics.js.map +1 -0
  105. package/dist/db/repositories/campaign-statistics.test.d.ts +2 -0
  106. package/dist/db/repositories/campaign-statistics.test.d.ts.map +1 -0
  107. package/dist/db/repositories/campaign-statistics.test.js +266 -0
  108. package/dist/db/repositories/campaign-statistics.test.js.map +1 -0
  109. package/dist/db/repositories/campaign.d.ts +103 -0
  110. package/dist/db/repositories/campaign.d.ts.map +1 -0
  111. package/dist/db/repositories/campaign.js +388 -0
  112. package/dist/db/repositories/campaign.js.map +1 -0
  113. package/dist/db/repositories/campaign.test.d.ts +2 -0
  114. package/dist/db/repositories/campaign.test.d.ts.map +1 -0
  115. package/dist/db/repositories/campaign.test.js +392 -0
  116. package/dist/db/repositories/campaign.test.js.map +1 -0
  117. package/dist/db/repositories/index.d.ts +4 -0
  118. package/dist/db/repositories/index.d.ts.map +1 -1
  119. package/dist/db/repositories/index.js +6 -0
  120. package/dist/db/repositories/index.js.map +1 -1
  121. package/dist/db/repositories/message.d.ts +57 -0
  122. package/dist/db/repositories/message.d.ts.map +1 -0
  123. package/dist/db/repositories/message.integration.test.d.ts +2 -0
  124. package/dist/db/repositories/message.integration.test.d.ts.map +1 -0
  125. package/dist/db/repositories/message.integration.test.js +137 -0
  126. package/dist/db/repositories/message.integration.test.js.map +1 -0
  127. package/dist/db/repositories/message.js +308 -0
  128. package/dist/db/repositories/message.js.map +1 -0
  129. package/dist/db/repositories/message.test.d.ts +2 -0
  130. package/dist/db/repositories/message.test.d.ts.map +1 -0
  131. package/dist/db/repositories/message.test.js +179 -0
  132. package/dist/db/repositories/message.test.js.map +1 -0
  133. package/dist/db/repositories/profile.d.ts +11 -1
  134. package/dist/db/repositories/profile.d.ts.map +1 -1
  135. package/dist/db/repositories/profile.integration.test.js +103 -0
  136. package/dist/db/repositories/profile.integration.test.js.map +1 -1
  137. package/dist/db/repositories/profile.js +52 -15
  138. package/dist/db/repositories/profile.js.map +1 -1
  139. package/dist/db/repositories/profile.test.js +90 -0
  140. package/dist/db/repositories/profile.test.js.map +1 -1
  141. package/dist/db/testing/create-fixture.d.ts +0 -6
  142. package/dist/db/testing/create-fixture.d.ts.map +1 -1
  143. package/dist/db/testing/create-fixture.js +463 -4
  144. package/dist/db/testing/create-fixture.js.map +1 -1
  145. package/dist/db/testing/open-fixture.d.ts +5 -4
  146. package/dist/db/testing/open-fixture.d.ts.map +1 -1
  147. package/dist/db/testing/open-fixture.js +24 -6
  148. package/dist/db/testing/open-fixture.js.map +1 -1
  149. package/dist/formats/campaign-format.d.ts +31 -0
  150. package/dist/formats/campaign-format.d.ts.map +1 -0
  151. package/dist/formats/campaign-format.js +225 -0
  152. package/dist/formats/campaign-format.js.map +1 -0
  153. package/dist/formats/campaign-format.test.d.ts +2 -0
  154. package/dist/formats/campaign-format.test.d.ts.map +1 -0
  155. package/dist/formats/campaign-format.test.js +442 -0
  156. package/dist/formats/campaign-format.test.js.map +1 -0
  157. package/dist/formats/errors.d.ts +7 -0
  158. package/dist/formats/errors.d.ts.map +1 -0
  159. package/dist/formats/errors.js +12 -0
  160. package/dist/formats/errors.js.map +1 -0
  161. package/dist/formats/index.d.ts +3 -0
  162. package/dist/formats/index.d.ts.map +1 -0
  163. package/dist/formats/index.js +5 -0
  164. package/dist/formats/index.js.map +1 -0
  165. package/dist/index.d.ts +10 -5
  166. package/dist/index.d.ts.map +1 -1
  167. package/dist/index.js +26 -4
  168. package/dist/index.js.map +1 -1
  169. package/dist/operations/campaign-add-action.d.ts +14 -0
  170. package/dist/operations/campaign-add-action.d.ts.map +1 -0
  171. package/dist/operations/campaign-add-action.js +33 -0
  172. package/dist/operations/campaign-add-action.js.map +1 -0
  173. package/dist/operations/campaign-add-action.test.d.ts +2 -0
  174. package/dist/operations/campaign-add-action.test.d.ts.map +1 -0
  175. package/dist/operations/campaign-add-action.test.js +122 -0
  176. package/dist/operations/campaign-add-action.test.js.map +1 -0
  177. package/dist/operations/campaign-create.d.ts +17 -0
  178. package/dist/operations/campaign-create.d.ts.map +1 -0
  179. package/dist/operations/campaign-create.js +21 -0
  180. package/dist/operations/campaign-create.js.map +1 -0
  181. package/dist/operations/campaign-create.test.d.ts +2 -0
  182. package/dist/operations/campaign-create.test.d.ts.map +1 -0
  183. package/dist/operations/campaign-create.test.js +113 -0
  184. package/dist/operations/campaign-create.test.js.map +1 -0
  185. package/dist/operations/campaign-delete.d.ts +20 -0
  186. package/dist/operations/campaign-delete.d.ts.map +1 -0
  187. package/dist/operations/campaign-delete.js +22 -0
  188. package/dist/operations/campaign-delete.js.map +1 -0
  189. package/dist/operations/campaign-delete.test.d.ts +2 -0
  190. package/dist/operations/campaign-delete.test.d.ts.map +1 -0
  191. package/dist/operations/campaign-delete.test.js +92 -0
  192. package/dist/operations/campaign-delete.test.js.map +1 -0
  193. package/dist/operations/campaign-exclude-add.d.ts +16 -0
  194. package/dist/operations/campaign-exclude-add.d.ts.map +1 -0
  195. package/dist/operations/campaign-exclude-add.js +27 -0
  196. package/dist/operations/campaign-exclude-add.js.map +1 -0
  197. package/dist/operations/campaign-exclude-add.test.d.ts +2 -0
  198. package/dist/operations/campaign-exclude-add.test.d.ts.map +1 -0
  199. package/dist/operations/campaign-exclude-add.test.js +114 -0
  200. package/dist/operations/campaign-exclude-add.test.js.map +1 -0
  201. package/dist/operations/campaign-exclude-list.d.ts +14 -0
  202. package/dist/operations/campaign-exclude-list.d.ts.map +1 -0
  203. package/dist/operations/campaign-exclude-list.js +26 -0
  204. package/dist/operations/campaign-exclude-list.js.map +1 -0
  205. package/dist/operations/campaign-exclude-list.test.d.ts +2 -0
  206. package/dist/operations/campaign-exclude-list.test.d.ts.map +1 -0
  207. package/dist/operations/campaign-exclude-list.test.js +113 -0
  208. package/dist/operations/campaign-exclude-list.test.js.map +1 -0
  209. package/dist/operations/campaign-exclude-remove.d.ts +16 -0
  210. package/dist/operations/campaign-exclude-remove.d.ts.map +1 -0
  211. package/dist/operations/campaign-exclude-remove.js +27 -0
  212. package/dist/operations/campaign-exclude-remove.js.map +1 -0
  213. package/dist/operations/campaign-exclude-remove.test.d.ts +2 -0
  214. package/dist/operations/campaign-exclude-remove.test.d.ts.map +1 -0
  215. package/dist/operations/campaign-exclude-remove.test.js +114 -0
  216. package/dist/operations/campaign-exclude-remove.test.js.map +1 -0
  217. package/dist/operations/campaign-export.d.ts +12 -0
  218. package/dist/operations/campaign-export.d.ts.map +1 -0
  219. package/dist/operations/campaign-export.js +24 -0
  220. package/dist/operations/campaign-export.js.map +1 -0
  221. package/dist/operations/campaign-export.test.d.ts +2 -0
  222. package/dist/operations/campaign-export.test.d.ts.map +1 -0
  223. package/dist/operations/campaign-export.test.js +134 -0
  224. package/dist/operations/campaign-export.test.js.map +1 -0
  225. package/dist/operations/campaign-get.d.ts +19 -0
  226. package/dist/operations/campaign-get.d.ts.map +1 -0
  227. package/dist/operations/campaign-get.js +23 -0
  228. package/dist/operations/campaign-get.js.map +1 -0
  229. package/dist/operations/campaign-get.test.d.ts +2 -0
  230. package/dist/operations/campaign-get.test.d.ts.map +1 -0
  231. package/dist/operations/campaign-get.test.js +99 -0
  232. package/dist/operations/campaign-get.test.js.map +1 -0
  233. package/dist/operations/campaign-list.d.ts +20 -0
  234. package/dist/operations/campaign-list.d.ts.map +1 -0
  235. package/dist/operations/campaign-list.js +23 -0
  236. package/dist/operations/campaign-list.js.map +1 -0
  237. package/dist/operations/campaign-list.test.d.ts +2 -0
  238. package/dist/operations/campaign-list.test.d.ts.map +1 -0
  239. package/dist/operations/campaign-list.test.js +106 -0
  240. package/dist/operations/campaign-list.test.js.map +1 -0
  241. package/dist/operations/campaign-move-next.d.ts +15 -0
  242. package/dist/operations/campaign-move-next.d.ts.map +1 -0
  243. package/dist/operations/campaign-move-next.js +25 -0
  244. package/dist/operations/campaign-move-next.js.map +1 -0
  245. package/dist/operations/campaign-move-next.test.d.ts +2 -0
  246. package/dist/operations/campaign-move-next.test.d.ts.map +1 -0
  247. package/dist/operations/campaign-move-next.test.js +105 -0
  248. package/dist/operations/campaign-move-next.test.js.map +1 -0
  249. package/dist/operations/campaign-remove-action.d.ts +12 -0
  250. package/dist/operations/campaign-remove-action.d.ts.map +1 -0
  251. package/dist/operations/campaign-remove-action.js +23 -0
  252. package/dist/operations/campaign-remove-action.js.map +1 -0
  253. package/dist/operations/campaign-remove-action.test.d.ts +2 -0
  254. package/dist/operations/campaign-remove-action.test.d.ts.map +1 -0
  255. package/dist/operations/campaign-remove-action.test.js +95 -0
  256. package/dist/operations/campaign-remove-action.test.js.map +1 -0
  257. package/dist/operations/campaign-reorder-actions.d.ts +13 -0
  258. package/dist/operations/campaign-reorder-actions.d.ts.map +1 -0
  259. package/dist/operations/campaign-reorder-actions.js +19 -0
  260. package/dist/operations/campaign-reorder-actions.js.map +1 -0
  261. package/dist/operations/campaign-reorder-actions.test.d.ts +2 -0
  262. package/dist/operations/campaign-reorder-actions.test.d.ts.map +1 -0
  263. package/dist/operations/campaign-reorder-actions.test.js +103 -0
  264. package/dist/operations/campaign-reorder-actions.test.js.map +1 -0
  265. package/dist/operations/campaign-retry.d.ts +13 -0
  266. package/dist/operations/campaign-retry.d.ts.map +1 -0
  267. package/dist/operations/campaign-retry.js +24 -0
  268. package/dist/operations/campaign-retry.js.map +1 -0
  269. package/dist/operations/campaign-retry.test.d.ts +2 -0
  270. package/dist/operations/campaign-retry.test.d.ts.map +1 -0
  271. package/dist/operations/campaign-retry.test.js +100 -0
  272. package/dist/operations/campaign-retry.test.js.map +1 -0
  273. package/dist/operations/campaign-start.d.ts +13 -0
  274. package/dist/operations/campaign-start.d.ts.map +1 -0
  275. package/dist/operations/campaign-start.js +24 -0
  276. package/dist/operations/campaign-start.js.map +1 -0
  277. package/dist/operations/campaign-start.test.d.ts +2 -0
  278. package/dist/operations/campaign-start.test.d.ts.map +1 -0
  279. package/dist/operations/campaign-start.test.js +96 -0
  280. package/dist/operations/campaign-start.test.js.map +1 -0
  281. package/dist/operations/campaign-statistics.d.ts +10 -0
  282. package/dist/operations/campaign-statistics.d.ts.map +1 -0
  283. package/dist/operations/campaign-statistics.js +23 -0
  284. package/dist/operations/campaign-statistics.js.map +1 -0
  285. package/dist/operations/campaign-statistics.test.d.ts +2 -0
  286. package/dist/operations/campaign-statistics.test.d.ts.map +1 -0
  287. package/dist/operations/campaign-statistics.test.js +120 -0
  288. package/dist/operations/campaign-statistics.test.js.map +1 -0
  289. package/dist/operations/campaign-status.d.ts +26 -0
  290. package/dist/operations/campaign-status.d.ts.map +1 -0
  291. package/dist/operations/campaign-status.js +32 -0
  292. package/dist/operations/campaign-status.js.map +1 -0
  293. package/dist/operations/campaign-status.test.d.ts +2 -0
  294. package/dist/operations/campaign-status.test.d.ts.map +1 -0
  295. package/dist/operations/campaign-status.test.js +142 -0
  296. package/dist/operations/campaign-status.test.js.map +1 -0
  297. package/dist/operations/campaign-stop.d.ts +11 -0
  298. package/dist/operations/campaign-stop.d.ts.map +1 -0
  299. package/dist/operations/campaign-stop.js +23 -0
  300. package/dist/operations/campaign-stop.js.map +1 -0
  301. package/dist/operations/campaign-stop.test.d.ts +2 -0
  302. package/dist/operations/campaign-stop.test.d.ts.map +1 -0
  303. package/dist/operations/campaign-stop.test.js +92 -0
  304. package/dist/operations/campaign-stop.test.js.map +1 -0
  305. package/dist/operations/campaign-update.d.ts +18 -0
  306. package/dist/operations/campaign-update.d.ts.map +1 -0
  307. package/dist/operations/campaign-update.js +21 -0
  308. package/dist/operations/campaign-update.js.map +1 -0
  309. package/dist/operations/campaign-update.test.d.ts +2 -0
  310. package/dist/operations/campaign-update.test.d.ts.map +1 -0
  311. package/dist/operations/campaign-update.test.js +105 -0
  312. package/dist/operations/campaign-update.test.js.map +1 -0
  313. package/dist/operations/check-replies.d.ts +12 -0
  314. package/dist/operations/check-replies.d.ts.map +1 -0
  315. package/dist/operations/check-replies.js +26 -0
  316. package/dist/operations/check-replies.js.map +1 -0
  317. package/dist/operations/check-replies.test.d.ts +2 -0
  318. package/dist/operations/check-replies.test.d.ts.map +1 -0
  319. package/dist/operations/check-replies.test.js +118 -0
  320. package/dist/operations/check-replies.test.js.map +1 -0
  321. package/dist/operations/import-people-from-urls.d.ts +16 -0
  322. package/dist/operations/import-people-from-urls.d.ts.map +1 -0
  323. package/dist/operations/import-people-from-urls.js +27 -0
  324. package/dist/operations/import-people-from-urls.js.map +1 -0
  325. package/dist/operations/import-people-from-urls.test.d.ts +2 -0
  326. package/dist/operations/import-people-from-urls.test.d.ts.map +1 -0
  327. package/dist/operations/import-people-from-urls.test.js +118 -0
  328. package/dist/operations/import-people-from-urls.test.js.map +1 -0
  329. package/dist/operations/index.d.ts +24 -0
  330. package/dist/operations/index.d.ts.map +1 -0
  331. package/dist/operations/index.js +30 -0
  332. package/dist/operations/index.js.map +1 -0
  333. package/dist/operations/query-messages.d.ts +23 -0
  334. package/dist/operations/query-messages.d.ts.map +1 -0
  335. package/dist/operations/query-messages.js +33 -0
  336. package/dist/operations/query-messages.js.map +1 -0
  337. package/dist/operations/query-messages.test.d.ts +2 -0
  338. package/dist/operations/query-messages.test.d.ts.map +1 -0
  339. package/dist/operations/query-messages.test.js +134 -0
  340. package/dist/operations/query-messages.test.js.map +1 -0
  341. package/dist/operations/scrape-messaging-history.d.ts +10 -0
  342. package/dist/operations/scrape-messaging-history.d.ts.map +1 -0
  343. package/dist/operations/scrape-messaging-history.js +24 -0
  344. package/dist/operations/scrape-messaging-history.js.map +1 -0
  345. package/dist/operations/scrape-messaging-history.test.d.ts +2 -0
  346. package/dist/operations/scrape-messaging-history.test.d.ts.map +1 -0
  347. package/dist/operations/scrape-messaging-history.test.js +112 -0
  348. package/dist/operations/scrape-messaging-history.test.js.map +1 -0
  349. package/dist/operations/types.d.ts +10 -0
  350. package/dist/operations/types.d.ts.map +1 -0
  351. package/dist/operations/types.js +4 -0
  352. package/dist/operations/types.js.map +1 -0
  353. package/dist/services/account-resolution.d.ts +22 -0
  354. package/dist/services/account-resolution.d.ts.map +1 -0
  355. package/dist/services/account-resolution.js +45 -0
  356. package/dist/services/account-resolution.js.map +1 -0
  357. package/dist/services/account-resolution.test.d.ts +2 -0
  358. package/dist/services/account-resolution.test.d.ts.map +1 -0
  359. package/dist/services/account-resolution.test.js +91 -0
  360. package/dist/services/account-resolution.test.js.map +1 -0
  361. package/dist/services/app.d.ts.map +1 -1
  362. package/dist/services/app.js +2 -0
  363. package/dist/services/app.js.map +1 -1
  364. package/dist/services/app.test.js +2 -0
  365. package/dist/services/app.test.js.map +1 -1
  366. package/dist/services/campaign.d.ts +143 -0
  367. package/dist/services/campaign.d.ts.map +1 -0
  368. package/dist/services/campaign.js +409 -0
  369. package/dist/services/campaign.js.map +1 -0
  370. package/dist/services/campaign.test.d.ts +2 -0
  371. package/dist/services/campaign.test.d.ts.map +1 -0
  372. package/dist/services/campaign.test.js +481 -0
  373. package/dist/services/campaign.test.js.map +1 -0
  374. package/dist/services/errors.d.ts +38 -0
  375. package/dist/services/errors.d.ts.map +1 -1
  376. package/dist/services/errors.js +60 -0
  377. package/dist/services/errors.js.map +1 -1
  378. package/dist/services/errors.test.js +53 -1
  379. package/dist/services/errors.test.js.map +1 -1
  380. package/dist/services/index.d.ts +5 -3
  381. package/dist/services/index.d.ts.map +1 -1
  382. package/dist/services/index.js +6 -2
  383. package/dist/services/index.js.map +1 -1
  384. package/dist/services/instance-context.d.ts +37 -0
  385. package/dist/services/instance-context.d.ts.map +1 -0
  386. package/dist/services/instance-context.js +49 -0
  387. package/dist/services/instance-context.js.map +1 -0
  388. package/dist/services/instance-context.test.d.ts +2 -0
  389. package/dist/services/instance-context.test.d.ts.map +1 -0
  390. package/dist/services/instance-context.test.js +203 -0
  391. package/dist/services/instance-context.test.js.map +1 -0
  392. package/dist/services/instance-lifecycle.d.ts.map +1 -1
  393. package/dist/services/instance-lifecycle.js +6 -6
  394. package/dist/services/instance-lifecycle.js.map +1 -1
  395. package/dist/services/instance-lifecycle.test.js +8 -2
  396. package/dist/services/instance-lifecycle.test.js.map +1 -1
  397. package/dist/services/instance.d.ts +40 -0
  398. package/dist/services/instance.d.ts.map +1 -1
  399. package/dist/services/instance.js +66 -9
  400. package/dist/services/instance.js.map +1 -1
  401. package/dist/services/instance.test.js +116 -6
  402. package/dist/services/instance.test.js.map +1 -1
  403. package/dist/services/launcher.d.ts +3 -0
  404. package/dist/services/launcher.d.ts.map +1 -1
  405. package/dist/services/launcher.js +25 -10
  406. package/dist/services/launcher.js.map +1 -1
  407. package/dist/services/launcher.test.js +39 -2
  408. package/dist/services/launcher.test.js.map +1 -1
  409. package/dist/services/status.d.ts +5 -1
  410. package/dist/services/status.d.ts.map +1 -1
  411. package/dist/services/status.js +24 -15
  412. package/dist/services/status.js.map +1 -1
  413. package/dist/services/status.test.js +42 -1
  414. package/dist/services/status.test.js.map +1 -1
  415. package/dist/testing/e2e-helpers.d.ts.map +1 -1
  416. package/dist/testing/e2e-helpers.js +7 -4
  417. package/dist/testing/e2e-helpers.js.map +1 -1
  418. package/dist/testing/index.d.ts +2 -0
  419. package/dist/testing/index.d.ts.map +1 -0
  420. package/dist/testing/index.js +4 -0
  421. package/dist/testing/index.js.map +1 -0
  422. package/dist/types/account.d.ts.map +1 -1
  423. package/dist/types/account.js +2 -0
  424. package/dist/types/account.js.map +1 -1
  425. package/dist/types/account.test.js +2 -0
  426. package/dist/types/account.test.js.map +1 -1
  427. package/dist/types/campaign.d.ts +267 -0
  428. package/dist/types/campaign.d.ts.map +1 -0
  429. package/dist/types/campaign.js +4 -0
  430. package/dist/types/campaign.js.map +1 -0
  431. package/dist/types/cdp.d.ts.map +1 -1
  432. package/dist/types/cdp.js +2 -0
  433. package/dist/types/cdp.js.map +1 -1
  434. package/dist/types/cdp.test.js +2 -0
  435. package/dist/types/cdp.test.js.map +1 -1
  436. package/dist/types/index.d.ts +3 -1
  437. package/dist/types/index.d.ts.map +1 -1
  438. package/dist/types/index.js +2 -0
  439. package/dist/types/index.js.map +1 -1
  440. package/dist/types/instance.d.ts.map +1 -1
  441. package/dist/types/instance.js +2 -6
  442. package/dist/types/instance.js.map +1 -1
  443. package/dist/types/instance.test.js +2 -0
  444. package/dist/types/instance.test.js.map +1 -1
  445. package/dist/types/messaging.d.ts +51 -0
  446. package/dist/types/messaging.d.ts.map +1 -0
  447. package/dist/types/messaging.js +4 -0
  448. package/dist/types/messaging.js.map +1 -0
  449. package/dist/types/profile.d.ts +31 -0
  450. package/dist/types/profile.d.ts.map +1 -1
  451. package/dist/types/profile.js +2 -6
  452. package/dist/types/profile.js.map +1 -1
  453. package/dist/types/profile.test.js +2 -0
  454. package/dist/types/profile.test.js.map +1 -1
  455. package/dist/utils/cdp-port.d.ts +5 -0
  456. package/dist/utils/cdp-port.d.ts.map +1 -0
  457. package/dist/utils/cdp-port.js +15 -0
  458. package/dist/utils/cdp-port.js.map +1 -0
  459. package/dist/utils/cdp-port.test.d.ts +2 -0
  460. package/dist/utils/cdp-port.test.d.ts.map +1 -0
  461. package/dist/utils/cdp-port.test.js +23 -0
  462. package/dist/utils/cdp-port.test.js.map +1 -0
  463. package/dist/utils/delay.d.ts +5 -0
  464. package/dist/utils/delay.d.ts.map +1 -0
  465. package/dist/utils/delay.js +9 -0
  466. package/dist/utils/delay.js.map +1 -0
  467. package/dist/utils/delay.test.d.ts +2 -0
  468. package/dist/utils/delay.test.d.ts.map +1 -0
  469. package/dist/utils/delay.test.js +17 -0
  470. package/dist/utils/delay.test.js.map +1 -0
  471. package/dist/utils/error-message.d.ts +5 -0
  472. package/dist/utils/error-message.d.ts.map +1 -0
  473. package/dist/utils/error-message.js +9 -0
  474. package/dist/utils/error-message.js.map +1 -0
  475. package/dist/utils/error-message.test.d.ts +2 -0
  476. package/dist/utils/error-message.test.d.ts.map +1 -0
  477. package/dist/utils/error-message.test.js +28 -0
  478. package/dist/utils/error-message.test.js.map +1 -0
  479. package/dist/utils/index.d.ts +5 -0
  480. package/dist/utils/index.d.ts.map +1 -0
  481. package/dist/utils/index.js +7 -0
  482. package/dist/utils/index.js.map +1 -0
  483. package/dist/utils/loopback.d.ts +10 -0
  484. package/dist/utils/loopback.d.ts.map +1 -0
  485. package/dist/utils/loopback.js +28 -0
  486. package/dist/utils/loopback.js.map +1 -0
  487. package/dist/utils/loopback.test.d.ts +2 -0
  488. package/dist/utils/loopback.test.d.ts.map +1 -0
  489. package/dist/utils/loopback.test.js +34 -0
  490. package/dist/utils/loopback.test.js.map +1 -0
  491. package/package.json +13 -8
  492. package/dist/services/profile.d.ts +0 -44
  493. package/dist/services/profile.d.ts.map +0 -1
  494. package/dist/services/profile.js +0 -83
  495. package/dist/services/profile.js.map +0 -1
  496. package/dist/services/profile.test.d.ts +0 -2
  497. package/dist/services/profile.test.d.ts.map +0 -1
  498. package/dist/services/profile.test.js +0 -145
  499. package/dist/services/profile.test.js.map +0 -1
@@ -0,0 +1,103 @@
1
+ import type { CampaignActionConfig, CampaignActionResult, Campaign, CampaignAction, CampaignState, CampaignSummary, CampaignUpdateConfig, GetResultsOptions, ListCampaignsOptions } from "../../types/index.js";
2
+ import type { DatabaseClient } from "../client.js";
3
+ /**
4
+ * Repository for campaign CRUD, creation support, and action chain operations.
5
+ *
6
+ * Provides read operations (list, get, getActions, getResults, getState)
7
+ * and write operations (fixIsValid, createActionExcludeLists, addAction,
8
+ * moveToNextAction, updateCampaign) for LinkedHelper campaigns.
9
+ *
10
+ * Write operations require the DatabaseClient to be opened with
11
+ * `{ readOnly: false }`.
12
+ */
13
+ export declare class CampaignRepository {
14
+ private readonly client;
15
+ private readonly stmtListCampaigns;
16
+ private readonly stmtListAllCampaigns;
17
+ private readonly stmtGetCampaign;
18
+ private readonly stmtGetCampaignActions;
19
+ private readonly stmtGetResults;
20
+ private writeStatements;
21
+ constructor(client: DatabaseClient);
22
+ /**
23
+ * List campaigns, optionally including archived ones.
24
+ */
25
+ listCampaigns(options?: ListCampaignsOptions): CampaignSummary[];
26
+ /**
27
+ * Get a campaign by ID.
28
+ *
29
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
30
+ */
31
+ getCampaign(campaignId: number): Campaign;
32
+ /**
33
+ * Get all actions for a campaign.
34
+ *
35
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
36
+ */
37
+ getCampaignActions(campaignId: number): CampaignAction[];
38
+ /**
39
+ * Get execution results for a campaign.
40
+ *
41
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
42
+ */
43
+ getResults(campaignId: number, options?: GetResultsOptions): CampaignActionResult[];
44
+ /**
45
+ * Get the current state of a campaign.
46
+ *
47
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
48
+ */
49
+ getCampaignState(campaignId: number): CampaignState;
50
+ /**
51
+ * Update a campaign's name and/or description.
52
+ *
53
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
54
+ */
55
+ updateCampaign(campaignId: number, updates: CampaignUpdateConfig): Campaign;
56
+ /**
57
+ * Prepare write statements lazily (only when needed).
58
+ * This avoids issues when the client is opened in read-only mode.
59
+ */
60
+ private getWriteStatements;
61
+ /**
62
+ * Fix the is_valid flag after programmatic campaign creation.
63
+ *
64
+ * Campaigns created via `createCampaign()` have `is_valid = NULL`,
65
+ * making them invisible in the LinkedHelper UI. This sets
66
+ * `is_valid = 1` to match the behavior of the UI campaign editor.
67
+ */
68
+ fixIsValid(campaignId: number): void;
69
+ /**
70
+ * Create action-level exclude lists after programmatic campaign creation.
71
+ *
72
+ * The `createCampaign()` API creates campaign-level exclude lists but
73
+ * skips action-level ones due to a code path bug. The LH UI crashes
74
+ * with "Expected excludeListId but got null" when opening campaigns
75
+ * missing these. This creates the full exclude list chain for each
76
+ * action: collection -> collection_people_versions -> action_versions.
77
+ */
78
+ createActionExcludeLists(campaignId: number, liAccountId: number): void;
79
+ /**
80
+ * Add a new action to an existing campaign's action chain.
81
+ *
82
+ * Creates the full action record set via direct DB operations:
83
+ * action_configs -> actions -> action_versions (x2) -> exclude list chain.
84
+ *
85
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
86
+ */
87
+ addAction(campaignId: number, actionConfig: CampaignActionConfig, liAccountId: number): CampaignAction;
88
+ /**
89
+ * Move people from the current action to the next action in the chain.
90
+ *
91
+ * For each person:
92
+ * 1. Mark the person as successful (state=3) in the current action
93
+ * 2. Queue the person (state=1) in the next action's target list
94
+ *
95
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
96
+ * @throws {ActionNotFoundError} if the action does not belong to the campaign.
97
+ * @throws {NoNextActionError} if the action is the last in the chain.
98
+ */
99
+ moveToNextAction(campaignId: number, actionId: number, personIds: number[]): {
100
+ nextActionId: number;
101
+ };
102
+ }
103
+ //# sourceMappingURL=campaign.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/campaign.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,oBAAoB,EACpB,oBAAoB,EACpB,QAAQ,EACR,cAAc,EACd,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA0DnD;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAsBjB,OAAO,CAAC,QAAQ,CAAC,MAAM;IArBnC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAGhC,OAAO,CAAC,eAAe,CAYP;gBAEa,MAAM,EAAE,cAAc;IAmDnD;;OAEG;IACH,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,eAAe,EAAE;IAoBpE;;;;OAIG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ;IAiBzC;;;;OAIG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE;IAoCxD;;;;OAIG;IACH,UAAU,CACR,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,oBAAoB,EAAE;IAqBzB;;;;OAIG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa;IAKnD;;;;OAIG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,QAAQ;IAyB3E;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAuD1B;;;;;;OAMG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAKpC;;;;;;;;OAQG;IACH,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAmCvE;;;;;;;OAOG;IACH,SAAS,CACP,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,oBAAoB,EAClC,WAAW,EAAE,MAAM,GAClB,cAAc;IA0EjB;;;;;;;;;;OAUG;IACH,gBAAgB,CACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EAAE,GAClB;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE;CAoD5B"}
@@ -0,0 +1,388 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { ActionNotFoundError, CampaignNotFoundError, NoNextActionError, } from "../errors.js";
4
+ function deriveCampaignState(isPaused, isArchived, isValid) {
5
+ if (isArchived === 1)
6
+ return "archived";
7
+ if (isValid === 0)
8
+ return "invalid";
9
+ if (isPaused === 1)
10
+ return "paused";
11
+ return "active";
12
+ }
13
+ /**
14
+ * Repository for campaign CRUD, creation support, and action chain operations.
15
+ *
16
+ * Provides read operations (list, get, getActions, getResults, getState)
17
+ * and write operations (fixIsValid, createActionExcludeLists, addAction,
18
+ * moveToNextAction, updateCampaign) for LinkedHelper campaigns.
19
+ *
20
+ * Write operations require the DatabaseClient to be opened with
21
+ * `{ readOnly: false }`.
22
+ */
23
+ export class CampaignRepository {
24
+ client;
25
+ stmtListCampaigns;
26
+ stmtListAllCampaigns;
27
+ stmtGetCampaign;
28
+ stmtGetCampaignActions;
29
+ stmtGetResults;
30
+ // Write statements (prepared lazily to avoid issues with read-only mode)
31
+ writeStatements = null;
32
+ constructor(client) {
33
+ this.client = client;
34
+ const { db } = client;
35
+ this.stmtListCampaigns = db.prepare(`SELECT c.id, c.name, c.description, c.is_paused, c.is_archived,
36
+ c.is_valid, c.li_account_id, c.created_at,
37
+ (SELECT COUNT(*) FROM actions a WHERE a.campaign_id = c.id) AS action_count
38
+ FROM campaigns c
39
+ WHERE c.is_archived IS NULL OR c.is_archived = 0
40
+ ORDER BY c.created_at DESC`);
41
+ this.stmtListAllCampaigns = db.prepare(`SELECT c.id, c.name, c.description, c.is_paused, c.is_archived,
42
+ c.is_valid, c.li_account_id, c.created_at,
43
+ (SELECT COUNT(*) FROM actions a WHERE a.campaign_id = c.id) AS action_count
44
+ FROM campaigns c
45
+ ORDER BY c.created_at DESC`);
46
+ this.stmtGetCampaign = db.prepare(`SELECT id, name, description, is_paused, is_archived, is_valid,
47
+ li_account_id, created_at
48
+ FROM campaigns WHERE id = ?`);
49
+ this.stmtGetCampaignActions = db.prepare(`SELECT a.id, a.campaign_id, a.name, a.description,
50
+ ac.id AS config_id, ac.actionType AS action_type,
51
+ ac.actionSettings AS action_settings, ac.coolDown AS cool_down,
52
+ ac.maxActionResultsPerIteration AS max_action_results_per_iteration,
53
+ ac.isDraft AS is_draft, av.id AS version_id
54
+ FROM actions a
55
+ JOIN action_versions av ON av.action_id = a.id
56
+ JOIN action_configs ac ON av.config_id = ac.id
57
+ WHERE a.campaign_id = ?
58
+ ORDER BY a.id`);
59
+ this.stmtGetResults = db.prepare(`SELECT ar.id, ar.action_version_id, ar.person_id, ar.result,
60
+ ar.platform, ar.created_at
61
+ FROM action_results ar
62
+ JOIN action_versions av ON ar.action_version_id = av.id
63
+ JOIN actions a ON av.action_id = a.id
64
+ WHERE a.campaign_id = ?
65
+ ORDER BY ar.created_at DESC
66
+ LIMIT ?`);
67
+ }
68
+ /**
69
+ * List campaigns, optionally including archived ones.
70
+ */
71
+ listCampaigns(options = {}) {
72
+ const { includeArchived = false } = options;
73
+ const stmt = includeArchived
74
+ ? this.stmtListAllCampaigns
75
+ : this.stmtListCampaigns;
76
+ const rows = stmt.all();
77
+ return rows.map((r) => ({
78
+ id: r.id,
79
+ name: r.name,
80
+ description: r.description,
81
+ state: deriveCampaignState(r.is_paused, r.is_archived, r.is_valid),
82
+ liAccountId: r.li_account_id,
83
+ actionCount: r.action_count,
84
+ createdAt: r.created_at,
85
+ }));
86
+ }
87
+ /**
88
+ * Get a campaign by ID.
89
+ *
90
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
91
+ */
92
+ getCampaign(campaignId) {
93
+ const row = this.stmtGetCampaign.get(campaignId);
94
+ if (!row)
95
+ throw new CampaignNotFoundError(campaignId);
96
+ return {
97
+ id: row.id,
98
+ name: row.name,
99
+ description: row.description,
100
+ state: deriveCampaignState(row.is_paused, row.is_archived, row.is_valid),
101
+ liAccountId: row.li_account_id,
102
+ isPaused: row.is_paused === 1,
103
+ isArchived: row.is_archived === 1,
104
+ isValid: row.is_valid === null ? null : row.is_valid === 1,
105
+ createdAt: row.created_at,
106
+ };
107
+ }
108
+ /**
109
+ * Get all actions for a campaign.
110
+ *
111
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
112
+ */
113
+ getCampaignActions(campaignId) {
114
+ // Verify campaign exists
115
+ this.getCampaign(campaignId);
116
+ const rows = this.stmtGetCampaignActions.all(campaignId);
117
+ return rows.map((r) => {
118
+ let actionSettings = {};
119
+ try {
120
+ actionSettings = JSON.parse(r.action_settings);
121
+ }
122
+ catch {
123
+ // Keep empty object if parsing fails
124
+ }
125
+ const config = {
126
+ id: r.config_id,
127
+ actionType: r.action_type,
128
+ actionSettings,
129
+ coolDown: r.cool_down,
130
+ maxActionResultsPerIteration: r.max_action_results_per_iteration,
131
+ isDraft: r.is_draft === 1,
132
+ };
133
+ return {
134
+ id: r.id,
135
+ campaignId: r.campaign_id,
136
+ name: r.name,
137
+ description: r.description,
138
+ config,
139
+ versionId: r.version_id,
140
+ };
141
+ });
142
+ }
143
+ /**
144
+ * Get execution results for a campaign.
145
+ *
146
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
147
+ */
148
+ getResults(campaignId, options = {}) {
149
+ // Verify campaign exists
150
+ this.getCampaign(campaignId);
151
+ const { limit = 100 } = options;
152
+ const rows = this.stmtGetResults.all(campaignId, limit);
153
+ return rows.map((r) => ({
154
+ id: r.id,
155
+ actionVersionId: r.action_version_id,
156
+ personId: r.person_id,
157
+ result: r.result,
158
+ platform: r.platform,
159
+ createdAt: r.created_at,
160
+ }));
161
+ }
162
+ /**
163
+ * Get the current state of a campaign.
164
+ *
165
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
166
+ */
167
+ getCampaignState(campaignId) {
168
+ const campaign = this.getCampaign(campaignId);
169
+ return campaign.state;
170
+ }
171
+ /**
172
+ * Update a campaign's name and/or description.
173
+ *
174
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
175
+ */
176
+ updateCampaign(campaignId, updates) {
177
+ // Verify campaign exists
178
+ this.getCampaign(campaignId);
179
+ const setClauses = [];
180
+ const params = [];
181
+ if (updates.name !== undefined) {
182
+ setClauses.push("name = ?");
183
+ params.push(updates.name);
184
+ }
185
+ if (updates.description !== undefined) {
186
+ setClauses.push("description = ?");
187
+ params.push(updates.description);
188
+ }
189
+ if (setClauses.length > 0) {
190
+ params.push(campaignId);
191
+ const sql = `UPDATE campaigns SET ${setClauses.join(", ")} WHERE id = ?`;
192
+ this.client.db.prepare(sql).run(...params);
193
+ }
194
+ return this.getCampaign(campaignId);
195
+ }
196
+ /**
197
+ * Prepare write statements lazily (only when needed).
198
+ * This avoids issues when the client is opened in read-only mode.
199
+ */
200
+ getWriteStatements() {
201
+ if (this.writeStatements)
202
+ return this.writeStatements;
203
+ const { db } = this.client;
204
+ this.writeStatements = {
205
+ fixIsValid: db.prepare(`UPDATE campaigns SET is_valid = 1 WHERE id = ?`),
206
+ insertActionConfig: db.prepare(`INSERT INTO action_configs (actionType, actionSettings, coolDown, maxActionResultsPerIteration, isDraft)
207
+ VALUES (?, ?, ?, ?, 0)`),
208
+ insertAction: db.prepare(`INSERT INTO actions (campaign_id, name, description, startAt)
209
+ VALUES (?, ?, ?, datetime('now'))`),
210
+ insertActionVersion: db.prepare(`INSERT INTO action_versions (action_id, config_id)
211
+ VALUES (?, ?)`),
212
+ insertCollection: db.prepare(`INSERT INTO collections (li_account_id, name, created_at, updated_at)
213
+ VALUES (?, NULL, datetime('now'), datetime('now'))`),
214
+ insertCollectionPeopleVersion: db.prepare(`INSERT INTO collection_people_versions
215
+ (collection_id, version_operation_status, additional_data, created_at, updated_at)
216
+ VALUES (?, 'addToTarget', NULL, datetime('now'), datetime('now'))`),
217
+ setActionVersionExcludeList: db.prepare(`UPDATE action_versions SET exclude_list_id = ? WHERE action_id = ?`),
218
+ markTargetSuccessful: db.prepare(`UPDATE action_target_people SET state = 3
219
+ WHERE action_id = ? AND person_id = ?`),
220
+ queueTarget: db.prepare(`UPDATE action_target_people SET state = 1
221
+ WHERE action_id = ? AND person_id = ?`),
222
+ insertTarget: db.prepare(`INSERT INTO action_target_people
223
+ (action_id, action_version_id, person_id, state, li_account_id)
224
+ VALUES (?, ?, ?, 1, ?)`),
225
+ countTarget: db.prepare(`SELECT COUNT(*) AS cnt FROM action_target_people
226
+ WHERE action_id = ? AND person_id = ?`),
227
+ };
228
+ return this.writeStatements;
229
+ }
230
+ /**
231
+ * Fix the is_valid flag after programmatic campaign creation.
232
+ *
233
+ * Campaigns created via `createCampaign()` have `is_valid = NULL`,
234
+ * making them invisible in the LinkedHelper UI. This sets
235
+ * `is_valid = 1` to match the behavior of the UI campaign editor.
236
+ */
237
+ fixIsValid(campaignId) {
238
+ const stmts = this.getWriteStatements();
239
+ stmts.fixIsValid.run(campaignId);
240
+ }
241
+ /**
242
+ * Create action-level exclude lists after programmatic campaign creation.
243
+ *
244
+ * The `createCampaign()` API creates campaign-level exclude lists but
245
+ * skips action-level ones due to a code path bug. The LH UI crashes
246
+ * with "Expected excludeListId but got null" when opening campaigns
247
+ * missing these. This creates the full exclude list chain for each
248
+ * action: collection -> collection_people_versions -> action_versions.
249
+ */
250
+ createActionExcludeLists(campaignId, liAccountId) {
251
+ const actions = this.getCampaignActions(campaignId);
252
+ if (actions.length === 0)
253
+ return;
254
+ const stmts = this.getWriteStatements();
255
+ this.client.db.exec("BEGIN");
256
+ try {
257
+ for (const action of actions) {
258
+ // 1. Create a collection for this action's exclude list
259
+ stmts.insertCollection.run(liAccountId);
260
+ const collectionId = this.client.db
261
+ .prepare("SELECT last_insert_rowid() AS id")
262
+ .get().id;
263
+ // 2. Create a collection_people_versions entry
264
+ stmts.insertCollectionPeopleVersion.run(collectionId);
265
+ const cpvId = this.client.db
266
+ .prepare("SELECT last_insert_rowid() AS id")
267
+ .get().id;
268
+ // 3. Set exclude_list_id on all action_versions for this action
269
+ stmts.setActionVersionExcludeList.run(cpvId, action.id);
270
+ }
271
+ this.client.db.exec("COMMIT");
272
+ }
273
+ catch (e) {
274
+ this.client.db.exec("ROLLBACK");
275
+ throw e;
276
+ }
277
+ }
278
+ /**
279
+ * Add a new action to an existing campaign's action chain.
280
+ *
281
+ * Creates the full action record set via direct DB operations:
282
+ * action_configs -> actions -> action_versions (x2) -> exclude list chain.
283
+ *
284
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
285
+ */
286
+ addAction(campaignId, actionConfig, liAccountId) {
287
+ // Verify campaign exists
288
+ this.getCampaign(campaignId);
289
+ const stmts = this.getWriteStatements();
290
+ const { db } = this.client;
291
+ const getLastId = db.prepare("SELECT last_insert_rowid() AS id");
292
+ db.exec("BEGIN");
293
+ try {
294
+ // 1. Insert action_configs
295
+ const actionSettings = JSON.stringify(actionConfig.actionSettings ?? {});
296
+ const coolDown = actionConfig.coolDown ?? 60_000;
297
+ const maxResults = actionConfig.maxActionResultsPerIteration ?? 10;
298
+ stmts.insertActionConfig.run(actionConfig.actionType, actionSettings, coolDown, maxResults);
299
+ const configId = getLastId.get().id;
300
+ // 2. Insert actions
301
+ stmts.insertAction.run(campaignId, actionConfig.name, actionConfig.description ?? "");
302
+ const actionId = getLastId.get().id;
303
+ // 3. Insert two action_versions (matching createCampaign pattern)
304
+ stmts.insertActionVersion.run(actionId, configId);
305
+ const versionId1 = getLastId.get().id;
306
+ stmts.insertActionVersion.run(actionId, configId);
307
+ // 4. Create exclude list chain for the new action
308
+ stmts.insertCollection.run(liAccountId);
309
+ const collectionId = getLastId.get().id;
310
+ stmts.insertCollectionPeopleVersion.run(collectionId);
311
+ const cpvId = getLastId.get().id;
312
+ stmts.setActionVersionExcludeList.run(cpvId, actionId);
313
+ db.exec("COMMIT");
314
+ // Build and return the CampaignAction
315
+ const config = {
316
+ id: configId,
317
+ actionType: actionConfig.actionType,
318
+ actionSettings: actionConfig.actionSettings ?? {},
319
+ coolDown,
320
+ maxActionResultsPerIteration: maxResults,
321
+ isDraft: false,
322
+ };
323
+ return {
324
+ id: actionId,
325
+ campaignId,
326
+ name: actionConfig.name,
327
+ description: actionConfig.description ?? null,
328
+ config,
329
+ versionId: versionId1,
330
+ };
331
+ }
332
+ catch (e) {
333
+ db.exec("ROLLBACK");
334
+ throw e;
335
+ }
336
+ }
337
+ /**
338
+ * Move people from the current action to the next action in the chain.
339
+ *
340
+ * For each person:
341
+ * 1. Mark the person as successful (state=3) in the current action
342
+ * 2. Queue the person (state=1) in the next action's target list
343
+ *
344
+ * @throws {CampaignNotFoundError} if no campaign exists with the given ID.
345
+ * @throws {ActionNotFoundError} if the action does not belong to the campaign.
346
+ * @throws {NoNextActionError} if the action is the last in the chain.
347
+ */
348
+ moveToNextAction(campaignId, actionId, personIds) {
349
+ if (personIds.length === 0)
350
+ return { nextActionId: 0 };
351
+ // Get all actions ordered by id
352
+ const actions = this.getCampaignActions(campaignId);
353
+ // Find the current action index
354
+ const currentIndex = actions.findIndex((a) => a.id === actionId);
355
+ if (currentIndex === -1) {
356
+ throw new ActionNotFoundError(actionId, campaignId);
357
+ }
358
+ // Find the next action
359
+ if (currentIndex >= actions.length - 1) {
360
+ throw new NoNextActionError(actionId, campaignId);
361
+ }
362
+ const nextAction = actions[currentIndex + 1];
363
+ const campaign = this.getCampaign(campaignId);
364
+ const stmts = this.getWriteStatements();
365
+ this.client.db.exec("BEGIN");
366
+ try {
367
+ for (const personId of personIds) {
368
+ // 1. Mark person as successful in the current action
369
+ stmts.markTargetSuccessful.run(actionId, personId);
370
+ // 2. Queue person in the next action's target list
371
+ const { cnt } = stmts.countTarget.get(nextAction.id, personId);
372
+ if (cnt > 0) {
373
+ stmts.queueTarget.run(nextAction.id, personId);
374
+ }
375
+ else {
376
+ stmts.insertTarget.run(nextAction.id, nextAction.versionId, personId, campaign.liAccountId);
377
+ }
378
+ }
379
+ this.client.db.exec("COMMIT");
380
+ }
381
+ catch (e) {
382
+ this.client.db.exec("ROLLBACK");
383
+ throw e;
384
+ }
385
+ return { nextActionId: nextAction.id };
386
+ }
387
+ }
388
+ //# sourceMappingURL=campaign.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign.js","sourceRoot":"","sources":["../../../src/db/repositories/campaign.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAiBpC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AA0CtB,SAAS,mBAAmB,CAC1B,QAAuB,EACvB,UAAyB,EACzB,OAAsB;IAEtB,IAAI,UAAU,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC;IACxC,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACpC,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,kBAAkB;IAsBA;IArBZ,iBAAiB,CAAC;IAClB,oBAAoB,CAAC;IACrB,eAAe,CAAC;IAChB,sBAAsB,CAAC;IACvB,cAAc,CAAC;IAEhC,yEAAyE;IACjE,eAAe,GAYZ,IAAI,CAAC;IAEhB,YAA6B,MAAsB;QAAtB,WAAM,GAAN,MAAM,CAAgB;QACjD,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;QAEtB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,OAAO,CACjC;;;;;kCAK4B,CAC7B,CAAC;QAEF,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC,OAAO,CACpC;;;;kCAI4B,CAC7B,CAAC;QAEF,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC,OAAO,CAC/B;;mCAE6B,CAC9B,CAAC;QAEF,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC,OAAO,CACtC;;;;;;;;;qBASe,CAChB,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,OAAO,CAC9B;;;;;;;eAOS,CACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,UAAgC,EAAE;QAC9C,MAAM,EAAE,eAAe,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;QAE5C,MAAM,IAAI,GAAG,eAAe;YAC1B,CAAC,CAAC,IAAI,CAAC,oBAAoB;YAC3B,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAE3B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAkC,CAAC;QAExD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC;YAClE,WAAW,EAAE,CAAC,CAAC,aAAa;YAC5B,WAAW,EAAE,CAAC,CAAC,YAAY;YAC3B,SAAS,EAAE,CAAC,CAAC,UAAU;SACxB,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,UAAkB;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAA4B,CAAC;QAC5E,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAEtD,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,KAAK,EAAE,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC;YACxE,WAAW,EAAE,GAAG,CAAC,aAAa;YAC9B,QAAQ,EAAE,GAAG,CAAC,SAAS,KAAK,CAAC;YAC7B,UAAU,EAAE,GAAG,CAAC,WAAW,KAAK,CAAC;YACjC,OAAO,EAAE,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC;YAC1D,SAAS,EAAE,GAAG,CAAC,UAAU;SAC1B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,UAAkB;QACnC,yBAAyB;QACzB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAE7B,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAC1C,UAAU,CACuB,CAAC;QAEpC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACpB,IAAI,cAAc,GAAmB,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAmB,CAAC;YACnE,CAAC;YAAC,MAAM,CAAC;gBACP,qCAAqC;YACvC,CAAC;YAED,MAAM,MAAM,GAAiB;gBAC3B,EAAE,EAAE,CAAC,CAAC,SAAS;gBACf,UAAU,EAAE,CAAC,CAAC,WAAW;gBACzB,cAAc;gBACd,QAAQ,EAAE,CAAC,CAAC,SAAS;gBACrB,4BAA4B,EAAE,CAAC,CAAC,gCAAgC;gBAChE,OAAO,EAAE,CAAC,CAAC,QAAQ,KAAK,CAAC;aAC1B,CAAC;YAEF,OAAO;gBACL,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,UAAU,EAAE,CAAC,CAAC,WAAW;gBACzB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,MAAM;gBACN,SAAS,EAAE,CAAC,CAAC,UAAU;aACxB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,UAAU,CACR,UAAkB,EAClB,UAA6B,EAAE;QAE/B,yBAAyB;QACzB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAE7B,MAAM,EAAE,KAAK,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;QAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAClC,UAAU,EACV,KAAK,CAC0B,CAAC;QAElC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,eAAe,EAAE,CAAC,CAAC,iBAAiB;YACpC,QAAQ,EAAE,CAAC,CAAC,SAAS;YACrB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,SAAS,EAAE,CAAC,CAAC,UAAU;SACxB,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,UAAkB;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC9C,OAAO,QAAQ,CAAC,KAAK,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,UAAkB,EAAE,OAA6B;QAC9D,yBAAyB;QACzB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAE7B,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,MAAM,GAA+B,EAAE,CAAC;QAE9C,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACtC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxB,MAAM,GAAG,GAAG,wBAAwB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;YACzE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACK,kBAAkB;QACxB,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC,eAAe,CAAC;QAEtD,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,IAAI,CAAC,eAAe,GAAG;YACrB,UAAU,EAAE,EAAE,CAAC,OAAO,CACpB,gDAAgD,CACjD;YACD,kBAAkB,EAAE,EAAE,CAAC,OAAO,CAC5B;gCACwB,CACzB;YACD,YAAY,EAAE,EAAE,CAAC,OAAO,CACtB;2CACmC,CACpC;YACD,mBAAmB,EAAE,EAAE,CAAC,OAAO,CAC7B;uBACe,CAChB;YACD,gBAAgB,EAAE,EAAE,CAAC,OAAO,CAC1B;4DACoD,CACrD;YACD,6BAA6B,EAAE,EAAE,CAAC,OAAO,CACvC;;2EAEmE,CACpE;YACD,2BAA2B,EAAE,EAAE,CAAC,OAAO,CACrC,oEAAoE,CACrE;YACD,oBAAoB,EAAE,EAAE,CAAC,OAAO,CAC9B;+CACuC,CACxC;YACD,WAAW,EAAE,EAAE,CAAC,OAAO,CACrB;+CACuC,CACxC;YACD,YAAY,EAAE,EAAE,CAAC,OAAO,CACtB;;gCAEwB,CACzB;YACD,WAAW,EAAE,EAAE,CAAC,OAAO,CACrB;+CACuC,CACxC;SACF,CAAC;QAEF,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CAAC,UAAkB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;;;OAQG;IACH,wBAAwB,CAAC,UAAkB,EAAE,WAAmB;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEjC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAExC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC;YACH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,wDAAwD;gBACxD,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACxC,MAAM,YAAY,GAChB,IAAI,CAAC,MAAM,CAAC,EAAE;qBACX,OAAO,CAAC,kCAAkC,CAAC;qBAC3C,GAAG,EACP,CAAC,EAAE,CAAC;gBAEL,+CAA+C;gBAC/C,KAAK,CAAC,6BAA6B,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACtD,MAAM,KAAK,GACT,IAAI,CAAC,MAAM,CAAC,EAAE;qBACX,OAAO,CAAC,kCAAkC,CAAC;qBAC3C,GAAG,EACP,CAAC,EAAE,CAAC;gBAEL,gEAAgE;gBAChE,KAAK,CAAC,2BAA2B,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChC,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,SAAS,CACP,UAAkB,EAClB,YAAkC,EAClC,WAAmB;QAEnB,yBAAyB;QACzB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAE7B,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxC,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAC1B,kCAAkC,CACnC,CAAC;QAEF,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjB,IAAI,CAAC;YACH,2BAA2B;YAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;YACzE,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,IAAI,MAAM,CAAC;YACjD,MAAM,UAAU,GAAG,YAAY,CAAC,4BAA4B,IAAI,EAAE,CAAC;YAEnE,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAC1B,YAAY,CAAC,UAAU,EACvB,cAAc,EACd,QAAQ,EACR,UAAU,CACX,CAAC;YACF,MAAM,QAAQ,GAAI,SAAS,CAAC,GAAG,EAAqB,CAAC,EAAE,CAAC;YAExD,oBAAoB;YACpB,KAAK,CAAC,YAAY,CAAC,GAAG,CACpB,UAAU,EACV,YAAY,CAAC,IAAI,EACjB,YAAY,CAAC,WAAW,IAAI,EAAE,CAC/B,CAAC;YACF,MAAM,QAAQ,GAAI,SAAS,CAAC,GAAG,EAAqB,CAAC,EAAE,CAAC;YAExD,kEAAkE;YAClE,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAClD,MAAM,UAAU,GAAI,SAAS,CAAC,GAAG,EAAqB,CAAC,EAAE,CAAC;YAC1D,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAElD,kDAAkD;YAClD,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACxC,MAAM,YAAY,GAAI,SAAS,CAAC,GAAG,EAAqB,CAAC,EAAE,CAAC;YAE5D,KAAK,CAAC,6BAA6B,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACtD,MAAM,KAAK,GAAI,SAAS,CAAC,GAAG,EAAqB,CAAC,EAAE,CAAC;YAErD,KAAK,CAAC,2BAA2B,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAEvD,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElB,sCAAsC;YACtC,MAAM,MAAM,GAAiB;gBAC3B,EAAE,EAAE,QAAQ;gBACZ,UAAU,EAAE,YAAY,CAAC,UAAU;gBACnC,cAAc,EAAE,YAAY,CAAC,cAAc,IAAI,EAAE;gBACjD,QAAQ;gBACR,4BAA4B,EAAE,UAAU;gBACxC,OAAO,EAAE,KAAK;aACf,CAAC;YAEF,OAAO;gBACL,EAAE,EAAE,QAAQ;gBACZ,UAAU;gBACV,IAAI,EAAE,YAAY,CAAC,IAAI;gBACvB,WAAW,EAAE,YAAY,CAAC,WAAW,IAAI,IAAI;gBAC7C,MAAM;gBACN,SAAS,EAAE,UAAU;aACtB,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpB,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,gBAAgB,CACd,UAAkB,EAClB,QAAgB,EAChB,SAAmB;QAEnB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;QAEvD,gCAAgC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAEpD,gCAAgC;QAChC,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QACjE,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACtD,CAAC;QAED,uBAAuB;QACvB,IAAI,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,CAAC,CAAwB,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAExC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC;YACH,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,qDAAqD;gBACrD,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAEnD,mDAAmD;gBACnD,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CACnC,UAAU,CAAC,EAAE,EACb,QAAQ,CACU,CAAC;gBAErB,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;oBACZ,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,YAAY,CAAC,GAAG,CACpB,UAAU,CAAC,EAAE,EACb,UAAU,CAAC,SAAS,EACpB,QAAQ,EACR,QAAQ,CAAC,WAAW,CACrB,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChC,MAAM,CAAC,CAAC;QACV,CAAC;QAED,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=campaign.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaign.test.d.ts","sourceRoot":"","sources":["../../../src/db/repositories/campaign.test.ts"],"names":[],"mappings":""}