@lhremote/core 0.8.0 → 0.10.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 (480) hide show
  1. package/dist/cdp/app-discovery.d.ts +57 -0
  2. package/dist/cdp/app-discovery.d.ts.map +1 -1
  3. package/dist/cdp/app-discovery.js +90 -7
  4. package/dist/cdp/app-discovery.js.map +1 -1
  5. package/dist/cdp/app-discovery.test.js +180 -9
  6. package/dist/cdp/app-discovery.test.js.map +1 -1
  7. package/dist/cdp/client.d.ts +8 -1
  8. package/dist/cdp/client.d.ts.map +1 -1
  9. package/dist/cdp/client.js +8 -1
  10. package/dist/cdp/client.js.map +1 -1
  11. package/dist/cdp/discovery.d.ts.map +1 -1
  12. package/dist/cdp/discovery.js +5 -1
  13. package/dist/cdp/discovery.js.map +1 -1
  14. package/dist/cdp/discovery.test.js +7 -0
  15. package/dist/cdp/discovery.test.js.map +1 -1
  16. package/dist/cdp/index.d.ts +1 -1
  17. package/dist/cdp/index.d.ts.map +1 -1
  18. package/dist/cdp/index.js +1 -1
  19. package/dist/cdp/index.js.map +1 -1
  20. package/dist/cdp/instance-discovery.d.ts.map +1 -1
  21. package/dist/cdp/instance-discovery.js +25 -10
  22. package/dist/cdp/instance-discovery.js.map +1 -1
  23. package/dist/cdp/instance-discovery.test.js +17 -0
  24. package/dist/cdp/instance-discovery.test.js.map +1 -1
  25. package/dist/cdp/testing/launch-chromium.d.ts +1 -1
  26. package/dist/cdp/testing/launch-chromium.js +2 -2
  27. package/dist/db/client.d.ts.map +1 -1
  28. package/dist/db/client.js +3 -0
  29. package/dist/db/client.js.map +1 -1
  30. package/dist/db/repositories/campaign-hard-delete.integration.test.js +4 -1
  31. package/dist/db/repositories/campaign-hard-delete.integration.test.js.map +1 -1
  32. package/dist/db/repositories/campaign.d.ts.map +1 -1
  33. package/dist/db/repositories/campaign.js +81 -33
  34. package/dist/db/repositories/campaign.js.map +1 -1
  35. package/dist/db/repositories/campaign.test.js +2 -2
  36. package/dist/db/repositories/collection-list.d.ts +11 -0
  37. package/dist/db/repositories/collection-list.d.ts.map +1 -1
  38. package/dist/db/repositories/collection-list.integration.test.js +6 -4
  39. package/dist/db/repositories/collection-list.integration.test.js.map +1 -1
  40. package/dist/db/repositories/collection-list.js +92 -2
  41. package/dist/db/repositories/collection-list.js.map +1 -1
  42. package/dist/db/testing/create-fixture.js +36 -2
  43. package/dist/db/testing/create-fixture.js.map +1 -1
  44. package/dist/index.d.ts +6 -6
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +6 -6
  47. package/dist/index.js.map +1 -1
  48. package/dist/linkedin/dom-automation-retry.test.d.ts +2 -0
  49. package/dist/linkedin/dom-automation-retry.test.d.ts.map +1 -0
  50. package/dist/linkedin/dom-automation-retry.test.js +51 -0
  51. package/dist/linkedin/dom-automation-retry.test.js.map +1 -0
  52. package/dist/linkedin/dom-automation.d.ts +166 -6
  53. package/dist/linkedin/dom-automation.d.ts.map +1 -1
  54. package/dist/linkedin/dom-automation.js +496 -21
  55. package/dist/linkedin/dom-automation.js.map +1 -1
  56. package/dist/linkedin/humanized-mouse.d.ts +69 -0
  57. package/dist/linkedin/humanized-mouse.d.ts.map +1 -0
  58. package/dist/linkedin/humanized-mouse.js +109 -0
  59. package/dist/linkedin/humanized-mouse.js.map +1 -0
  60. package/dist/linkedin/index.d.ts +3 -2
  61. package/dist/linkedin/index.d.ts.map +1 -1
  62. package/dist/linkedin/index.js +3 -2
  63. package/dist/linkedin/index.js.map +1 -1
  64. package/dist/linkedin/selectors.d.ts +74 -48
  65. package/dist/linkedin/selectors.d.ts.map +1 -1
  66. package/dist/linkedin/selectors.js +64 -41
  67. package/dist/linkedin/selectors.js.map +1 -1
  68. package/dist/operations/add-people-to-collection.d.ts +1 -1
  69. package/dist/operations/add-people-to-collection.d.ts.map +1 -1
  70. package/dist/operations/add-people-to-collection.js +3 -6
  71. package/dist/operations/add-people-to-collection.js.map +1 -1
  72. package/dist/operations/build-linkedin-url.test.d.ts +2 -0
  73. package/dist/operations/build-linkedin-url.test.d.ts.map +1 -0
  74. package/dist/operations/build-linkedin-url.test.js +158 -0
  75. package/dist/operations/build-linkedin-url.test.js.map +1 -0
  76. package/dist/operations/campaign-add-action.d.ts +1 -1
  77. package/dist/operations/campaign-add-action.d.ts.map +1 -1
  78. package/dist/operations/campaign-add-action.js +3 -6
  79. package/dist/operations/campaign-add-action.js.map +1 -1
  80. package/dist/operations/campaign-create.d.ts +1 -1
  81. package/dist/operations/campaign-create.d.ts.map +1 -1
  82. package/dist/operations/campaign-create.js +3 -6
  83. package/dist/operations/campaign-create.js.map +1 -1
  84. package/dist/operations/campaign-delete.d.ts +1 -1
  85. package/dist/operations/campaign-delete.d.ts.map +1 -1
  86. package/dist/operations/campaign-delete.js +3 -6
  87. package/dist/operations/campaign-delete.js.map +1 -1
  88. package/dist/operations/campaign-erase.d.ts +1 -1
  89. package/dist/operations/campaign-erase.d.ts.map +1 -1
  90. package/dist/operations/campaign-erase.js +3 -6
  91. package/dist/operations/campaign-erase.js.map +1 -1
  92. package/dist/operations/campaign-exclude-add.d.ts +1 -1
  93. package/dist/operations/campaign-exclude-add.d.ts.map +1 -1
  94. package/dist/operations/campaign-exclude-add.js +3 -6
  95. package/dist/operations/campaign-exclude-add.js.map +1 -1
  96. package/dist/operations/campaign-exclude-list.d.ts +1 -1
  97. package/dist/operations/campaign-exclude-list.d.ts.map +1 -1
  98. package/dist/operations/campaign-exclude-list.js +3 -6
  99. package/dist/operations/campaign-exclude-list.js.map +1 -1
  100. package/dist/operations/campaign-exclude-remove.d.ts +1 -1
  101. package/dist/operations/campaign-exclude-remove.d.ts.map +1 -1
  102. package/dist/operations/campaign-exclude-remove.js +3 -6
  103. package/dist/operations/campaign-exclude-remove.js.map +1 -1
  104. package/dist/operations/campaign-export.d.ts +1 -1
  105. package/dist/operations/campaign-export.d.ts.map +1 -1
  106. package/dist/operations/campaign-export.js +3 -6
  107. package/dist/operations/campaign-export.js.map +1 -1
  108. package/dist/operations/campaign-get.d.ts +1 -1
  109. package/dist/operations/campaign-get.d.ts.map +1 -1
  110. package/dist/operations/campaign-get.js +3 -6
  111. package/dist/operations/campaign-get.js.map +1 -1
  112. package/dist/operations/campaign-list-people.d.ts +1 -1
  113. package/dist/operations/campaign-list-people.d.ts.map +1 -1
  114. package/dist/operations/campaign-list-people.js +3 -6
  115. package/dist/operations/campaign-list-people.js.map +1 -1
  116. package/dist/operations/campaign-list.d.ts +1 -1
  117. package/dist/operations/campaign-list.d.ts.map +1 -1
  118. package/dist/operations/campaign-list.js +3 -6
  119. package/dist/operations/campaign-list.js.map +1 -1
  120. package/dist/operations/campaign-move-next.d.ts +1 -1
  121. package/dist/operations/campaign-move-next.d.ts.map +1 -1
  122. package/dist/operations/campaign-move-next.js +3 -6
  123. package/dist/operations/campaign-move-next.js.map +1 -1
  124. package/dist/operations/campaign-remove-action.d.ts +1 -1
  125. package/dist/operations/campaign-remove-action.d.ts.map +1 -1
  126. package/dist/operations/campaign-remove-action.js +3 -6
  127. package/dist/operations/campaign-remove-action.js.map +1 -1
  128. package/dist/operations/campaign-remove-people.d.ts +1 -1
  129. package/dist/operations/campaign-remove-people.d.ts.map +1 -1
  130. package/dist/operations/campaign-remove-people.js +3 -6
  131. package/dist/operations/campaign-remove-people.js.map +1 -1
  132. package/dist/operations/campaign-reorder-actions.d.ts +1 -1
  133. package/dist/operations/campaign-reorder-actions.d.ts.map +1 -1
  134. package/dist/operations/campaign-reorder-actions.js +3 -6
  135. package/dist/operations/campaign-reorder-actions.js.map +1 -1
  136. package/dist/operations/campaign-retry.d.ts +1 -1
  137. package/dist/operations/campaign-retry.d.ts.map +1 -1
  138. package/dist/operations/campaign-retry.js +3 -6
  139. package/dist/operations/campaign-retry.js.map +1 -1
  140. package/dist/operations/campaign-start.d.ts +1 -1
  141. package/dist/operations/campaign-start.d.ts.map +1 -1
  142. package/dist/operations/campaign-start.js +3 -6
  143. package/dist/operations/campaign-start.js.map +1 -1
  144. package/dist/operations/campaign-statistics.d.ts +1 -1
  145. package/dist/operations/campaign-statistics.d.ts.map +1 -1
  146. package/dist/operations/campaign-statistics.js +3 -6
  147. package/dist/operations/campaign-statistics.js.map +1 -1
  148. package/dist/operations/campaign-status.d.ts +1 -1
  149. package/dist/operations/campaign-status.d.ts.map +1 -1
  150. package/dist/operations/campaign-status.js +3 -6
  151. package/dist/operations/campaign-status.js.map +1 -1
  152. package/dist/operations/campaign-stop.d.ts +1 -1
  153. package/dist/operations/campaign-stop.d.ts.map +1 -1
  154. package/dist/operations/campaign-stop.js +3 -6
  155. package/dist/operations/campaign-stop.js.map +1 -1
  156. package/dist/operations/campaign-update-action.d.ts +1 -1
  157. package/dist/operations/campaign-update-action.d.ts.map +1 -1
  158. package/dist/operations/campaign-update-action.js +3 -6
  159. package/dist/operations/campaign-update-action.js.map +1 -1
  160. package/dist/operations/campaign-update.d.ts +1 -1
  161. package/dist/operations/campaign-update.d.ts.map +1 -1
  162. package/dist/operations/campaign-update.js +3 -6
  163. package/dist/operations/campaign-update.js.map +1 -1
  164. package/dist/operations/check-replies.d.ts +3 -1
  165. package/dist/operations/check-replies.d.ts.map +1 -1
  166. package/dist/operations/check-replies.js +124 -17
  167. package/dist/operations/check-replies.js.map +1 -1
  168. package/dist/operations/check-replies.test.js +152 -17
  169. package/dist/operations/check-replies.test.js.map +1 -1
  170. package/dist/operations/collect-people.d.ts +1 -1
  171. package/dist/operations/collect-people.d.ts.map +1 -1
  172. package/dist/operations/collect-people.js +18 -12
  173. package/dist/operations/collect-people.js.map +1 -1
  174. package/dist/operations/collect-people.test.js +21 -5
  175. package/dist/operations/collect-people.test.js.map +1 -1
  176. package/dist/operations/comment-on-post.d.ts +4 -1
  177. package/dist/operations/comment-on-post.d.ts.map +1 -1
  178. package/dist/operations/comment-on-post.js +15 -19
  179. package/dist/operations/comment-on-post.js.map +1 -1
  180. package/dist/operations/comment-on-post.test.js +8 -6
  181. package/dist/operations/comment-on-post.test.js.map +1 -1
  182. package/dist/operations/create-collection.d.ts +1 -1
  183. package/dist/operations/create-collection.d.ts.map +1 -1
  184. package/dist/operations/create-collection.js +5 -7
  185. package/dist/operations/create-collection.js.map +1 -1
  186. package/dist/operations/create-collection.test.js +3 -1
  187. package/dist/operations/create-collection.test.js.map +1 -1
  188. package/dist/operations/delete-collection.d.ts +1 -1
  189. package/dist/operations/delete-collection.d.ts.map +1 -1
  190. package/dist/operations/delete-collection.js +3 -6
  191. package/dist/operations/delete-collection.js.map +1 -1
  192. package/dist/operations/dismiss-errors.d.ts +11 -5
  193. package/dist/operations/dismiss-errors.d.ts.map +1 -1
  194. package/dist/operations/dismiss-errors.js +68 -34
  195. package/dist/operations/dismiss-errors.js.map +1 -1
  196. package/dist/operations/dismiss-errors.test.js +129 -8
  197. package/dist/operations/dismiss-errors.test.js.map +1 -1
  198. package/dist/operations/endorse-skills.test.d.ts +2 -0
  199. package/dist/operations/endorse-skills.test.d.ts.map +1 -0
  200. package/dist/operations/endorse-skills.test.js +70 -0
  201. package/dist/operations/endorse-skills.test.js.map +1 -0
  202. package/dist/operations/enrich-profile.test.d.ts +2 -0
  203. package/dist/operations/enrich-profile.test.d.ts.map +1 -0
  204. package/dist/operations/enrich-profile.test.js +73 -0
  205. package/dist/operations/enrich-profile.test.js.map +1 -0
  206. package/dist/operations/ephemeral-action.d.ts +2 -1
  207. package/dist/operations/ephemeral-action.d.ts.map +1 -1
  208. package/dist/operations/ephemeral-action.js +5 -7
  209. package/dist/operations/ephemeral-action.js.map +1 -1
  210. package/dist/operations/ephemeral-action.test.d.ts +2 -0
  211. package/dist/operations/ephemeral-action.test.d.ts.map +1 -0
  212. package/dist/operations/ephemeral-action.test.js +159 -0
  213. package/dist/operations/ephemeral-action.test.js.map +1 -0
  214. package/dist/operations/follow-person.test.d.ts +2 -0
  215. package/dist/operations/follow-person.test.d.ts.map +1 -0
  216. package/dist/operations/follow-person.test.js +57 -0
  217. package/dist/operations/follow-person.test.js.map +1 -0
  218. package/dist/operations/get-action-budget.d.ts +1 -1
  219. package/dist/operations/get-action-budget.d.ts.map +1 -1
  220. package/dist/operations/get-action-budget.js +3 -6
  221. package/dist/operations/get-action-budget.js.map +1 -1
  222. package/dist/operations/get-errors.d.ts +5 -1
  223. package/dist/operations/get-errors.d.ts.map +1 -1
  224. package/dist/operations/get-errors.js +55 -33
  225. package/dist/operations/get-errors.js.map +1 -1
  226. package/dist/operations/get-errors.test.js +54 -55
  227. package/dist/operations/get-errors.test.js.map +1 -1
  228. package/dist/operations/get-feed.d.ts +83 -4
  229. package/dist/operations/get-feed.d.ts.map +1 -1
  230. package/dist/operations/get-feed.js +400 -153
  231. package/dist/operations/get-feed.js.map +1 -1
  232. package/dist/operations/get-feed.test.js +416 -190
  233. package/dist/operations/get-feed.test.js.map +1 -1
  234. package/dist/operations/get-post-engagers.d.ts +6 -3
  235. package/dist/operations/get-post-engagers.d.ts.map +1 -1
  236. package/dist/operations/get-post-engagers.js +278 -78
  237. package/dist/operations/get-post-engagers.js.map +1 -1
  238. package/dist/operations/get-post-engagers.test.js +292 -14
  239. package/dist/operations/get-post-engagers.test.js.map +1 -1
  240. package/dist/operations/get-post-stats.d.ts +8 -3
  241. package/dist/operations/get-post-stats.d.ts.map +1 -1
  242. package/dist/operations/get-post-stats.js +101 -37
  243. package/dist/operations/get-post-stats.js.map +1 -1
  244. package/dist/operations/get-post-stats.test.js +137 -2
  245. package/dist/operations/get-post-stats.test.js.map +1 -1
  246. package/dist/operations/get-post.d.ts +9 -150
  247. package/dist/operations/get-post.d.ts.map +1 -1
  248. package/dist/operations/get-post.js +356 -210
  249. package/dist/operations/get-post.js.map +1 -1
  250. package/dist/operations/get-post.test.js +210 -387
  251. package/dist/operations/get-post.test.js.map +1 -1
  252. package/dist/operations/get-profile-activity.d.ts +13 -92
  253. package/dist/operations/get-profile-activity.d.ts.map +1 -1
  254. package/dist/operations/get-profile-activity.js +305 -105
  255. package/dist/operations/get-profile-activity.js.map +1 -1
  256. package/dist/operations/get-profile-activity.test.js +277 -158
  257. package/dist/operations/get-profile-activity.test.js.map +1 -1
  258. package/dist/operations/get-throttle-status.d.ts +1 -1
  259. package/dist/operations/get-throttle-status.d.ts.map +1 -1
  260. package/dist/operations/get-throttle-status.js +4 -10
  261. package/dist/operations/get-throttle-status.js.map +1 -1
  262. package/dist/operations/import-people-from-collection.d.ts +1 -1
  263. package/dist/operations/import-people-from-collection.d.ts.map +1 -1
  264. package/dist/operations/import-people-from-collection.js +3 -6
  265. package/dist/operations/import-people-from-collection.js.map +1 -1
  266. package/dist/operations/import-people-from-urls.d.ts +1 -1
  267. package/dist/operations/import-people-from-urls.d.ts.map +1 -1
  268. package/dist/operations/import-people-from-urls.js +3 -6
  269. package/dist/operations/import-people-from-urls.js.map +1 -1
  270. package/dist/operations/index.d.ts +2 -2
  271. package/dist/operations/index.d.ts.map +1 -1
  272. package/dist/operations/index.js +2 -1
  273. package/dist/operations/index.js.map +1 -1
  274. package/dist/operations/like-person-posts.test.d.ts +2 -0
  275. package/dist/operations/like-person-posts.test.d.ts.map +1 -0
  276. package/dist/operations/like-person-posts.test.js +103 -0
  277. package/dist/operations/like-person-posts.test.js.map +1 -0
  278. package/dist/operations/list-collections.d.ts +1 -1
  279. package/dist/operations/list-collections.d.ts.map +1 -1
  280. package/dist/operations/list-collections.js +3 -6
  281. package/dist/operations/list-collections.js.map +1 -1
  282. package/dist/operations/message-person.test.d.ts +2 -0
  283. package/dist/operations/message-person.test.d.ts.map +1 -0
  284. package/dist/operations/message-person.test.js +108 -0
  285. package/dist/operations/message-person.test.js.map +1 -0
  286. package/dist/operations/navigate-away.d.ts +14 -0
  287. package/dist/operations/navigate-away.d.ts.map +1 -0
  288. package/dist/operations/navigate-away.js +24 -0
  289. package/dist/operations/navigate-away.js.map +1 -0
  290. package/dist/operations/navigate-away.test.d.ts +2 -0
  291. package/dist/operations/navigate-away.test.d.ts.map +1 -0
  292. package/dist/operations/navigate-away.test.js +51 -0
  293. package/dist/operations/navigate-away.test.js.map +1 -0
  294. package/dist/operations/query-messages.d.ts +1 -1
  295. package/dist/operations/query-messages.d.ts.map +1 -1
  296. package/dist/operations/query-messages.js +3 -6
  297. package/dist/operations/query-messages.js.map +1 -1
  298. package/dist/operations/react-to-post.d.ts +16 -4
  299. package/dist/operations/react-to-post.d.ts.map +1 -1
  300. package/dist/operations/react-to-post.js +86 -24
  301. package/dist/operations/react-to-post.js.map +1 -1
  302. package/dist/operations/react-to-post.test.js +55 -5
  303. package/dist/operations/react-to-post.test.js.map +1 -1
  304. package/dist/operations/remove-connection.test.d.ts +2 -0
  305. package/dist/operations/remove-connection.test.d.ts.map +1 -0
  306. package/dist/operations/remove-connection.test.js +45 -0
  307. package/dist/operations/remove-connection.test.js.map +1 -0
  308. package/dist/operations/remove-people-from-collection.d.ts +1 -1
  309. package/dist/operations/remove-people-from-collection.d.ts.map +1 -1
  310. package/dist/operations/remove-people-from-collection.js +3 -6
  311. package/dist/operations/remove-people-from-collection.js.map +1 -1
  312. package/dist/operations/resolve-linkedin-entity.d.ts.map +1 -1
  313. package/dist/operations/resolve-linkedin-entity.js +2 -2
  314. package/dist/operations/resolve-linkedin-entity.js.map +1 -1
  315. package/dist/operations/resolve-linkedin-entity.test.d.ts +2 -0
  316. package/dist/operations/resolve-linkedin-entity.test.d.ts.map +1 -0
  317. package/dist/operations/resolve-linkedin-entity.test.js +343 -0
  318. package/dist/operations/resolve-linkedin-entity.test.js.map +1 -0
  319. package/dist/operations/scrape-messaging-history.d.ts +2 -1
  320. package/dist/operations/scrape-messaging-history.d.ts.map +1 -1
  321. package/dist/operations/scrape-messaging-history.js +113 -18
  322. package/dist/operations/scrape-messaging-history.js.map +1 -1
  323. package/dist/operations/scrape-messaging-history.test.js +109 -12
  324. package/dist/operations/scrape-messaging-history.test.js.map +1 -1
  325. package/dist/operations/search-posts.d.ts +20 -112
  326. package/dist/operations/search-posts.d.ts.map +1 -1
  327. package/dist/operations/search-posts.js +369 -170
  328. package/dist/operations/search-posts.js.map +1 -1
  329. package/dist/operations/search-posts.test.js +273 -234
  330. package/dist/operations/search-posts.test.js.map +1 -1
  331. package/dist/operations/send-inmail.test.d.ts +2 -0
  332. package/dist/operations/send-inmail.test.d.ts.map +1 -0
  333. package/dist/operations/send-inmail.test.js +108 -0
  334. package/dist/operations/send-inmail.test.js.map +1 -0
  335. package/dist/operations/send-invite.test.d.ts +2 -0
  336. package/dist/operations/send-invite.test.d.ts.map +1 -0
  337. package/dist/operations/send-invite.test.js +59 -0
  338. package/dist/operations/send-invite.test.js.map +1 -0
  339. package/dist/operations/types.d.ts +27 -1
  340. package/dist/operations/types.d.ts.map +1 -1
  341. package/dist/operations/types.js +14 -1
  342. package/dist/operations/types.js.map +1 -1
  343. package/dist/operations/visit-profile.d.ts +1 -1
  344. package/dist/operations/visit-profile.d.ts.map +1 -1
  345. package/dist/operations/visit-profile.js +3 -6
  346. package/dist/operations/visit-profile.js.map +1 -1
  347. package/dist/services/account-resolution.d.ts +10 -4
  348. package/dist/services/account-resolution.d.ts.map +1 -1
  349. package/dist/services/account-resolution.js +63 -5
  350. package/dist/services/account-resolution.js.map +1 -1
  351. package/dist/services/app.d.ts +6 -2
  352. package/dist/services/app.d.ts.map +1 -1
  353. package/dist/services/app.js +18 -6
  354. package/dist/services/app.js.map +1 -1
  355. package/dist/services/app.test.js +41 -7
  356. package/dist/services/app.test.js.map +1 -1
  357. package/dist/services/campaign.d.ts +40 -4
  358. package/dist/services/campaign.d.ts.map +1 -1
  359. package/dist/services/campaign.js +176 -10
  360. package/dist/services/campaign.js.map +1 -1
  361. package/dist/services/campaign.test.js +53 -15
  362. package/dist/services/campaign.test.js.map +1 -1
  363. package/dist/services/collection.d.ts +16 -21
  364. package/dist/services/collection.d.ts.map +1 -1
  365. package/dist/services/collection.js +34 -47
  366. package/dist/services/collection.js.map +1 -1
  367. package/dist/services/collection.test.js +30 -91
  368. package/dist/services/collection.test.js.map +1 -1
  369. package/dist/services/ephemeral-campaign.d.ts +6 -0
  370. package/dist/services/ephemeral-campaign.d.ts.map +1 -1
  371. package/dist/services/ephemeral-campaign.js +54 -10
  372. package/dist/services/ephemeral-campaign.js.map +1 -1
  373. package/dist/services/ephemeral-campaign.test.js +23 -10
  374. package/dist/services/ephemeral-campaign.test.js.map +1 -1
  375. package/dist/services/errors.d.ts +2 -1
  376. package/dist/services/errors.d.ts.map +1 -1
  377. package/dist/services/errors.js +6 -3
  378. package/dist/services/errors.js.map +1 -1
  379. package/dist/services/index.d.ts +1 -2
  380. package/dist/services/index.d.ts.map +1 -1
  381. package/dist/services/index.js +1 -2
  382. package/dist/services/index.js.map +1 -1
  383. package/dist/services/instance-context.d.ts +5 -1
  384. package/dist/services/instance-context.d.ts.map +1 -1
  385. package/dist/services/instance-context.js +87 -28
  386. package/dist/services/instance-context.js.map +1 -1
  387. package/dist/services/instance-context.test.js +5 -1
  388. package/dist/services/instance-context.test.js.map +1 -1
  389. package/dist/services/instance-lifecycle.d.ts.map +1 -1
  390. package/dist/services/instance-lifecycle.js +32 -1
  391. package/dist/services/instance-lifecycle.js.map +1 -1
  392. package/dist/services/instance-lifecycle.test.js +52 -1
  393. package/dist/services/instance-lifecycle.test.js.map +1 -1
  394. package/dist/services/instance.d.ts +37 -9
  395. package/dist/services/instance.d.ts.map +1 -1
  396. package/dist/services/instance.js +100 -25
  397. package/dist/services/instance.js.map +1 -1
  398. package/dist/services/instance.test.js +157 -0
  399. package/dist/services/instance.test.js.map +1 -1
  400. package/dist/services/launcher.d.ts +47 -3
  401. package/dist/services/launcher.d.ts.map +1 -1
  402. package/dist/services/launcher.js +205 -33
  403. package/dist/services/launcher.js.map +1 -1
  404. package/dist/services/launcher.test.js +133 -6
  405. package/dist/services/launcher.test.js.map +1 -1
  406. package/dist/services/source-type-registry.d.ts +8 -0
  407. package/dist/services/source-type-registry.d.ts.map +1 -1
  408. package/dist/services/source-type-registry.js +39 -0
  409. package/dist/services/source-type-registry.js.map +1 -1
  410. package/dist/services/source-type-registry.test.js +31 -1
  411. package/dist/services/source-type-registry.test.js.map +1 -1
  412. package/dist/services/status.d.ts +6 -2
  413. package/dist/services/status.d.ts.map +1 -1
  414. package/dist/services/status.js +67 -34
  415. package/dist/services/status.js.map +1 -1
  416. package/dist/services/status.test.js +9 -2
  417. package/dist/services/status.test.js.map +1 -1
  418. package/dist/testing/e2e-helpers.d.ts +47 -1
  419. package/dist/testing/e2e-helpers.d.ts.map +1 -1
  420. package/dist/testing/e2e-helpers.js +244 -7
  421. package/dist/testing/e2e-helpers.js.map +1 -1
  422. package/dist/testing/index.d.ts +1 -1
  423. package/dist/testing/index.d.ts.map +1 -1
  424. package/dist/testing/index.js +1 -1
  425. package/dist/testing/index.js.map +1 -1
  426. package/dist/types/account.d.ts +1 -1
  427. package/dist/types/campaign.d.ts +1 -1
  428. package/dist/types/campaign.d.ts.map +1 -1
  429. package/dist/types/feed.d.ts +1 -3
  430. package/dist/types/feed.d.ts.map +1 -1
  431. package/dist/types/index.d.ts +0 -1
  432. package/dist/types/index.d.ts.map +1 -1
  433. package/dist/utils/cdp-port.d.ts.map +1 -1
  434. package/dist/utils/cdp-port.js +3 -1
  435. package/dist/utils/cdp-port.js.map +1 -1
  436. package/dist/utils/cdp-port.test.js +1 -1
  437. package/dist/utils/cdp-port.test.js.map +1 -1
  438. package/dist/utils/delay.d.ts +79 -0
  439. package/dist/utils/delay.d.ts.map +1 -1
  440. package/dist/utils/delay.js +118 -0
  441. package/dist/utils/delay.js.map +1 -1
  442. package/dist/utils/delay.test.js +111 -1
  443. package/dist/utils/delay.test.js.map +1 -1
  444. package/dist/utils/index.d.ts +2 -1
  445. package/dist/utils/index.d.ts.map +1 -1
  446. package/dist/utils/index.js +2 -1
  447. package/dist/utils/index.js.map +1 -1
  448. package/dist/utils/session-pacer.d.ts +27 -0
  449. package/dist/utils/session-pacer.d.ts.map +1 -0
  450. package/dist/utils/session-pacer.js +55 -0
  451. package/dist/utils/session-pacer.js.map +1 -0
  452. package/dist/utils/session-pacer.test.d.ts +2 -0
  453. package/dist/utils/session-pacer.test.d.ts.map +1 -0
  454. package/dist/utils/session-pacer.test.js +111 -0
  455. package/dist/utils/session-pacer.test.js.map +1 -0
  456. package/package.json +1 -1
  457. package/dist/linkedin/__tests__/selectors.integration.test.d.ts +0 -2
  458. package/dist/linkedin/__tests__/selectors.integration.test.d.ts.map +0 -1
  459. package/dist/linkedin/__tests__/selectors.integration.test.js +0 -258
  460. package/dist/linkedin/__tests__/selectors.integration.test.js.map +0 -1
  461. package/dist/types/search-posts.d.ts +0 -22
  462. package/dist/types/search-posts.d.ts.map +0 -1
  463. package/dist/types/search-posts.js +0 -4
  464. package/dist/types/search-posts.js.map +0 -1
  465. package/dist/voyager/index.d.ts +0 -2
  466. package/dist/voyager/index.d.ts.map +0 -1
  467. package/dist/voyager/index.js +0 -4
  468. package/dist/voyager/index.js.map +0 -1
  469. package/dist/voyager/interceptor.d.ts +0 -100
  470. package/dist/voyager/interceptor.d.ts.map +0 -1
  471. package/dist/voyager/interceptor.integration.test.d.ts +0 -2
  472. package/dist/voyager/interceptor.integration.test.d.ts.map +0 -1
  473. package/dist/voyager/interceptor.integration.test.js +0 -89
  474. package/dist/voyager/interceptor.integration.test.js.map +0 -1
  475. package/dist/voyager/interceptor.js +0 -235
  476. package/dist/voyager/interceptor.js.map +0 -1
  477. package/dist/voyager/interceptor.test.d.ts +0 -2
  478. package/dist/voyager/interceptor.test.d.ts.map +0 -1
  479. package/dist/voyager/interceptor.test.js +0 -372
  480. package/dist/voyager/interceptor.test.js.map +0 -1
@@ -1,258 +0,0 @@
1
- // SPDX-License-Identifier: AGPL-3.0-only
2
- // Copyright (C) 2026 Oleksii PELYKH
3
- import { afterAll, beforeAll, describe, expect, it } from "vitest";
4
- import { CDPClient } from "../../cdp/client.js";
5
- import { discoverTargets } from "../../cdp/discovery.js";
6
- import { discoverInstancePort, killInstanceProcesses, } from "../../cdp/instance-discovery.js";
7
- import { startInstanceWithRecovery, waitForInstanceShutdown, } from "../../services/instance-lifecycle.js";
8
- import { LauncherService } from "../../services/launcher.js";
9
- import { describeE2E, launchApp, quitApp, retryAsync, } from "../../testing/e2e-helpers.js";
10
- import { delay } from "../../utils/delay.js";
11
- import { COMMENT_INPUT, COMMENT_SUBMIT_BUTTON, FEED_POST_CONTAINER, PAGINATION_TRIGGER, POST_AUTHOR_INFO, POST_AUTHOR_NAME, POST_TEXT_CONTENT, REACTION_CELEBRATE, REACTION_FUNNY, REACTION_INSIGHTFUL, REACTION_LIKE, REACTION_LOVE, REACTION_SUPPORT, REACTION_TRIGGER, REACTIONS_MENU, SCROLL_CONTAINER, SELECTORS, } from "../selectors.js";
12
- /**
13
- * Query the number of elements matching a CSS selector in the LinkedIn
14
- * WebView via CDP `Runtime.evaluate`.
15
- */
16
- async function queryCount(client, selector) {
17
- return client.evaluate(`document.querySelectorAll(${JSON.stringify(selector)}).length`);
18
- }
19
- /**
20
- * Dispatch a `mouseenter` + `mouseover` sequence on the first element
21
- * matching `selector` to trigger hover-dependent UI (e.g. reactions menu).
22
- */
23
- async function hoverFirst(client, selector) {
24
- await client.evaluate(`(() => {
25
- const el = document.querySelector(${JSON.stringify(selector)});
26
- if (!el) return;
27
- el.dispatchEvent(new MouseEvent('mouseenter', { bubbles: true }));
28
- el.dispatchEvent(new MouseEvent('mouseover', { bubbles: true }));
29
- })()`);
30
- }
31
- /**
32
- * Click the first element matching `selector`.
33
- */
34
- async function clickFirst(client, selector) {
35
- await client.evaluate(`(() => {
36
- const el = document.querySelector(${JSON.stringify(selector)});
37
- if (el) el.click();
38
- })()`);
39
- }
40
- /**
41
- * Navigate the CDP client to a URL and wait for the page load event.
42
- */
43
- async function navigateAndWait(client, url) {
44
- await client.send("Page.enable");
45
- try {
46
- const loadPromise = client.waitForEvent("Page.loadEventFired", 30_000);
47
- await client.navigate(url);
48
- await loadPromise;
49
- }
50
- finally {
51
- await client.send("Page.disable").catch(() => { });
52
- }
53
- }
54
- /** LinkedIn feed page URL. */
55
- const FEED_URL = "https://www.linkedin.com/feed/";
56
- /** Selector for the "Comment" button in the social action bar. */
57
- const COMMENT_BUTTON = 'button[aria-label*="Comment" i]';
58
- describeE2E("LinkedIn selectors registry", () => {
59
- let app;
60
- let launcherPort;
61
- let accountId;
62
- let linkedInClient;
63
- beforeAll(async () => {
64
- // 1. Launch LinkedHelper
65
- const launched = await launchApp();
66
- app = launched.app;
67
- launcherPort = launched.port;
68
- // 2. Start an account instance
69
- const launcher = new LauncherService(launcherPort);
70
- await retryAsync(() => launcher.connect(), { retries: 3, delay: 1_000 });
71
- const accounts = await launcher.listAccounts();
72
- expect(accounts.length, "No accounts configured in LinkedHelper").toBeGreaterThan(0);
73
- accountId = accounts[0].id;
74
- await startInstanceWithRecovery(launcher, accountId, launcherPort);
75
- launcher.disconnect();
76
- // 3. Discover the instance's CDP port
77
- const instancePort = await discoverInstancePort(launcherPort);
78
- if (instancePort === null) {
79
- throw new Error("Instance CDP port not discovered");
80
- }
81
- // 4. Connect directly to the LinkedIn WebView target
82
- const liTarget = await retryAsync(async () => {
83
- const t = await discoverTargets(instancePort);
84
- const li = t.find((tgt) => tgt.type === "page" && tgt.url.includes("linkedin.com"));
85
- if (!li)
86
- throw new Error("LinkedIn target not found yet");
87
- return li;
88
- }, { retries: 10, delay: 2_000 });
89
- linkedInClient = new CDPClient(instancePort);
90
- await linkedInClient.connect(liTarget.id);
91
- // 5. Navigate to the feed page and wait for it to load
92
- await navigateAndWait(linkedInClient, FEED_URL);
93
- // Give the SPA a moment to render dynamic content
94
- await delay(3_000);
95
- }, 180_000);
96
- afterAll(async () => {
97
- linkedInClient?.disconnect();
98
- if (accountId !== undefined) {
99
- const launcher = new LauncherService(launcherPort);
100
- try {
101
- await launcher.connect();
102
- try {
103
- await launcher.stopInstance(accountId);
104
- await waitForInstanceShutdown(launcherPort);
105
- }
106
- catch {
107
- await killInstanceProcesses(launcherPort);
108
- }
109
- }
110
- catch {
111
- // Best-effort cleanup
112
- }
113
- finally {
114
- launcher.disconnect();
115
- }
116
- }
117
- await quitApp(app);
118
- }, 60_000);
119
- // ── Module export sanity checks ─────────────────────────────────
120
- describe("module exports", () => {
121
- it("SELECTORS object contains all expected keys", () => {
122
- const expectedKeys = [
123
- "FEED_POST_CONTAINER",
124
- "POST_TEXT_CONTENT",
125
- "POST_AUTHOR_NAME",
126
- "POST_AUTHOR_INFO",
127
- "COMMENT_INPUT",
128
- "REACTION_TRIGGER",
129
- "REACTIONS_MENU",
130
- "REACTION_LIKE",
131
- "REACTION_CELEBRATE",
132
- "REACTION_SUPPORT",
133
- "REACTION_LOVE",
134
- "REACTION_INSIGHTFUL",
135
- "REACTION_FUNNY",
136
- "COMMENT_SUBMIT_BUTTON",
137
- "SCROLL_CONTAINER",
138
- "PAGINATION_TRIGGER",
139
- ];
140
- for (const key of expectedKeys) {
141
- expect(SELECTORS).toHaveProperty(key);
142
- expect(typeof SELECTORS[key], `${key} should be a non-empty string`).toBe("string");
143
- expect(SELECTORS[key].length, `${key} should not be empty`).toBeGreaterThan(0);
144
- }
145
- });
146
- });
147
- // ── Feed page selectors ─────────────────────────────────────────
148
- describe("feed page selectors", () => {
149
- it("FEED_POST_CONTAINER matches at least one element", async () => {
150
- const count = await queryCount(linkedInClient, FEED_POST_CONTAINER);
151
- expect(count, `Selector "${FEED_POST_CONTAINER}" matched 0 elements`).toBeGreaterThan(0);
152
- });
153
- it("POST_TEXT_CONTENT matches at least one element", async () => {
154
- const count = await queryCount(linkedInClient, POST_TEXT_CONTENT);
155
- expect(count, `Selector "${POST_TEXT_CONTENT}" matched 0 elements`).toBeGreaterThan(0);
156
- });
157
- it("POST_AUTHOR_NAME matches at least one element", async () => {
158
- const count = await queryCount(linkedInClient, POST_AUTHOR_NAME);
159
- expect(count, `Selector "${POST_AUTHOR_NAME}" matched 0 elements`).toBeGreaterThan(0);
160
- });
161
- it("POST_AUTHOR_INFO matches at least one element", async () => {
162
- const count = await queryCount(linkedInClient, POST_AUTHOR_INFO);
163
- expect(count, `Selector "${POST_AUTHOR_INFO}" matched 0 elements`).toBeGreaterThan(0);
164
- });
165
- it("REACTION_TRIGGER matches at least one element", async () => {
166
- const count = await queryCount(linkedInClient, REACTION_TRIGGER);
167
- expect(count, `Selector "${REACTION_TRIGGER}" matched 0 elements`).toBeGreaterThan(0);
168
- });
169
- it("SCROLL_CONTAINER matches at least one element", async () => {
170
- const count = await queryCount(linkedInClient, SCROLL_CONTAINER);
171
- expect(count, `Selector "${SCROLL_CONTAINER}" matched 0 elements`).toBeGreaterThan(0);
172
- });
173
- });
174
- // ── Reactions menu selectors (hover-triggered) ──────────────────
175
- describe("reactions menu selectors", () => {
176
- beforeAll(async () => {
177
- // Hover over the first reaction trigger to reveal the reactions menu
178
- await hoverFirst(linkedInClient, REACTION_TRIGGER);
179
- // Wait for the popup to render
180
- await delay(1_500);
181
- });
182
- it("REACTIONS_MENU matches at least one element", async () => {
183
- const count = await queryCount(linkedInClient, REACTIONS_MENU);
184
- expect(count, `Selector "${REACTIONS_MENU}" matched 0 elements`).toBeGreaterThan(0);
185
- });
186
- it("REACTION_LIKE matches at least one element", async () => {
187
- const count = await queryCount(linkedInClient, REACTION_LIKE);
188
- expect(count, `Selector "${REACTION_LIKE}" matched 0 elements`).toBeGreaterThan(0);
189
- });
190
- it("REACTION_CELEBRATE matches at least one element", async () => {
191
- const count = await queryCount(linkedInClient, REACTION_CELEBRATE);
192
- expect(count, `Selector "${REACTION_CELEBRATE}" matched 0 elements`).toBeGreaterThan(0);
193
- });
194
- it("REACTION_SUPPORT matches at least one element", async () => {
195
- const count = await queryCount(linkedInClient, REACTION_SUPPORT);
196
- expect(count, `Selector "${REACTION_SUPPORT}" matched 0 elements`).toBeGreaterThan(0);
197
- });
198
- it("REACTION_LOVE matches at least one element", async () => {
199
- const count = await queryCount(linkedInClient, REACTION_LOVE);
200
- expect(count, `Selector "${REACTION_LOVE}" matched 0 elements`).toBeGreaterThan(0);
201
- });
202
- it("REACTION_INSIGHTFUL matches at least one element", async () => {
203
- const count = await queryCount(linkedInClient, REACTION_INSIGHTFUL);
204
- expect(count, `Selector "${REACTION_INSIGHTFUL}" matched 0 elements`).toBeGreaterThan(0);
205
- });
206
- it("REACTION_FUNNY matches at least one element", async () => {
207
- const count = await queryCount(linkedInClient, REACTION_FUNNY);
208
- expect(count, `Selector "${REACTION_FUNNY}" matched 0 elements`).toBeGreaterThan(0);
209
- });
210
- });
211
- // ── Comment selectors (click-triggered) ─────────────────────────
212
- describe("comment selectors", () => {
213
- beforeAll(async () => {
214
- // Dismiss the reactions menu by clicking elsewhere
215
- await clickFirst(linkedInClient, "body");
216
- await delay(500);
217
- // Click the "Comment" button on the first post to expand the section
218
- await clickFirst(linkedInClient, COMMENT_BUTTON);
219
- await delay(1_500);
220
- });
221
- it("COMMENT_INPUT matches at least one element", async () => {
222
- const count = await queryCount(linkedInClient, COMMENT_INPUT);
223
- expect(count, `Selector "${COMMENT_INPUT}" matched 0 elements`).toBeGreaterThan(0);
224
- });
225
- it("COMMENT_SUBMIT_BUTTON matches at least one element", async () => {
226
- // The submit button only appears after typing into the editor
227
- await linkedInClient.evaluate(`(() => {
228
- const editor = document.querySelector(${JSON.stringify(COMMENT_INPUT)});
229
- if (editor) {
230
- editor.textContent = ' ';
231
- editor.dispatchEvent(new Event('input', { bubbles: true }));
232
- }
233
- })()`);
234
- await delay(1_000);
235
- const count = await queryCount(linkedInClient, COMMENT_SUBMIT_BUTTON);
236
- expect(count, `Selector "${COMMENT_SUBMIT_BUTTON}" matched 0 elements`).toBeGreaterThan(0);
237
- // Clean up: clear the editor text
238
- await linkedInClient.evaluate(`(() => {
239
- const editor = document.querySelector(${JSON.stringify(COMMENT_INPUT)});
240
- if (editor) {
241
- editor.textContent = '';
242
- editor.dispatchEvent(new Event('input', { bubbles: true }));
243
- }
244
- })()`);
245
- });
246
- });
247
- // ── Pagination trigger ──────────────────────────────────────────
248
- describe("pagination selectors", () => {
249
- it("PAGINATION_TRIGGER matches at least one element after scrolling", async () => {
250
- // Scroll to the bottom to trigger pagination rendering
251
- await linkedInClient.evaluate("window.scrollTo(0, document.body.scrollHeight)");
252
- await delay(3_000);
253
- const count = await queryCount(linkedInClient, PAGINATION_TRIGGER);
254
- expect(count, `Selector "${PAGINATION_TRIGGER}" matched 0 elements`).toBeGreaterThan(0);
255
- });
256
- });
257
- });
258
- //# sourceMappingURL=selectors.integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"selectors.integration.test.js","sourceRoot":"","sources":["../../../src/linkedin/__tests__/selectors.integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- /**
2
- * A LinkedIn post returned from a content search.
3
- */
4
- export interface SearchPostResult {
5
- /** Post URN (e.g. `urn:li:activity:1234567890`). */
6
- readonly postUrn: string;
7
- /** Post text content (may be truncated by API). */
8
- readonly text: string | null;
9
- /** Author first name. */
10
- readonly authorFirstName: string | null;
11
- /** Author last name. */
12
- readonly authorLastName: string | null;
13
- /** Author LinkedIn public ID (vanity URL slug). */
14
- readonly authorPublicId: string | null;
15
- /** Author professional headline. */
16
- readonly authorHeadline: string | null;
17
- /** Total number of reactions on the post. */
18
- readonly reactionCount: number;
19
- /** Total number of comments on the post. */
20
- readonly commentCount: number;
21
- }
22
- //# sourceMappingURL=search-posts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-posts.d.ts","sourceRoot":"","sources":["../../src/types/search-posts.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,yBAAyB;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,wBAAwB;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,mDAAmD;IACnD,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,oCAAoC;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,6CAA6C;IAC7C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,4CAA4C;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B"}
@@ -1,4 +0,0 @@
1
- // SPDX-License-Identifier: AGPL-3.0-only
2
- // Copyright (C) 2026 Oleksii PELYKH
3
- export {};
4
- //# sourceMappingURL=search-posts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-posts.js","sourceRoot":"","sources":["../../src/types/search-posts.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC"}
@@ -1,2 +0,0 @@
1
- export { VoyagerInterceptor, VOYAGER_URL_PATTERN, type VoyagerFetchOptions, type VoyagerResponse, type VoyagerResponseHandler, } from "./interceptor.js";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/voyager/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,sBAAsB,GAC5B,MAAM,kBAAkB,CAAC"}
@@ -1,4 +0,0 @@
1
- // SPDX-License-Identifier: AGPL-3.0-only
2
- // Copyright (C) 2026 Oleksii PELYKH
3
- export { VoyagerInterceptor, VOYAGER_URL_PATTERN, } from "./interceptor.js";
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/voyager/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GAIpB,MAAM,kBAAkB,CAAC"}
@@ -1,100 +0,0 @@
1
- import type { CDPClient } from "../cdp/client.js";
2
- /** URL pattern matching LinkedIn Voyager API endpoints. */
3
- export declare const VOYAGER_URL_PATTERN: RegExp;
4
- /**
5
- * A captured Voyager API response.
6
- */
7
- export interface VoyagerResponse {
8
- /** The full request URL. */
9
- readonly url: string;
10
- /** HTTP status code. */
11
- readonly status: number;
12
- /** Parsed JSON response body, or raw string if JSON parsing failed. */
13
- readonly body: unknown;
14
- }
15
- /**
16
- * Callback for intercepted Voyager API responses.
17
- */
18
- export type VoyagerResponseHandler = (response: VoyagerResponse) => void;
19
- /**
20
- * Options for active Voyager API fetching.
21
- */
22
- export interface VoyagerFetchOptions {
23
- /** Additional HTTP headers to include in the request. */
24
- readonly headers?: Readonly<Record<string, string>>;
25
- }
26
- /**
27
- * CDP Network domain listener for LinkedIn Voyager API responses.
28
- *
29
- * Intercepts HTTP responses matching the Voyager API URL pattern
30
- * (`/voyager/api/`) via the Chrome DevTools Protocol Network domain.
31
- *
32
- * Two modes of operation:
33
- * - **Passive**: Enable the interceptor and register handlers to capture
34
- * Voyager responses triggered by page navigation, scrolling, or user
35
- * interaction within the LinkedIn WebView.
36
- * - **Active**: Use {@link fetch} to execute Voyager API requests directly
37
- * in the page context (which has the LinkedIn session cookies).
38
- *
39
- * The interceptor is read-only — it does not modify requests or responses,
40
- * so it coexists safely with LinkedHelper's mockttp proxy.
41
- */
42
- export declare class VoyagerInterceptor {
43
- private readonly client;
44
- private readonly handlers;
45
- private readonly pendingRequests;
46
- private interceptEnabled;
47
- constructor(client: CDPClient);
48
- /** Whether passive interception is currently enabled. */
49
- get isEnabled(): boolean;
50
- /**
51
- * Enable the CDP Network domain and start intercepting Voyager responses.
52
- *
53
- * Subscribes to `Network.responseReceived`, `Network.loadingFinished`,
54
- * and `Network.loadingFailed` events. Responses matching the Voyager
55
- * URL pattern are captured and emitted to registered handlers.
56
- */
57
- enable(): Promise<void>;
58
- /**
59
- * Disable the CDP Network domain and stop intercepting.
60
- *
61
- * Cleans up event listeners and pending request state.
62
- */
63
- disable(): Promise<void>;
64
- /**
65
- * Register a handler for passively intercepted Voyager responses.
66
- */
67
- onResponse(handler: VoyagerResponseHandler): void;
68
- /**
69
- * Remove a previously registered response handler.
70
- */
71
- offResponse(handler: VoyagerResponseHandler): void;
72
- /**
73
- * Wait for the next Voyager response matching an optional URL filter.
74
- *
75
- * Requires the interceptor to be {@link enable}d.
76
- *
77
- * @param filter - Optional predicate applied to the response URL.
78
- * @param timeout - Maximum wait time in ms (default: 30 000).
79
- */
80
- waitForResponse(filter?: (url: string) => boolean, timeout?: number): Promise<VoyagerResponse>;
81
- /**
82
- * Execute a Voyager API request in the LinkedIn page context.
83
- *
84
- * Runs `fetch()` inside the WebView where LinkedIn session cookies are
85
- * available, automatically extracting the CSRF token from cookies.
86
- *
87
- * Does not require the interceptor to be {@link enable}d — works
88
- * independently of the Network domain.
89
- *
90
- * @param path - Voyager API path (e.g. `/voyager/api/feed/dash/feedUpdates`).
91
- * Full URLs starting with `https://` are also accepted.
92
- * @param options - Optional fetch configuration.
93
- */
94
- fetch(path: string, options?: VoyagerFetchOptions): Promise<VoyagerResponse>;
95
- private handleResponseReceived;
96
- private handleLoadingFinished;
97
- private handleLoadingFailed;
98
- private fetchAndEmitBody;
99
- }
100
- //# sourceMappingURL=interceptor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../src/voyager/interceptor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,QAAqB,CAAC;AAKtD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD;AAUD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG5B;IACJ,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,EAAE,SAAS;IAI7B,yDAAyD;IACzD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;;;;;OAMG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAS7B;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI;IAIjD;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI;IAIlD;;;;;;;OAOG;IACG,eAAe,CACnB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,EACjC,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,CAAC;IA2B3B;;;;;;;;;;;;OAYG;IACG,KAAK,CACT,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,eAAe,CAAC;IAyE3B,OAAO,CAAC,sBAAsB,CAY5B;IAEF,OAAO,CAAC,qBAAqB,CAO3B;IAEF,OAAO,CAAC,mBAAmB,CAGzB;YAEY,gBAAgB;CAqC/B"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=interceptor.integration.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interceptor.integration.test.d.ts","sourceRoot":"","sources":["../../src/voyager/interceptor.integration.test.ts"],"names":[],"mappings":""}
@@ -1,89 +0,0 @@
1
- // SPDX-License-Identifier: AGPL-3.0-only
2
- // Copyright (C) 2026 Oleksii PELYKH
3
- import { createServer } from "node:http";
4
- import { afterAll, afterEach, beforeAll, describe, expect, it } from "vitest";
5
- import { CDPClient } from "../cdp/client.js";
6
- import { launchChromium, } from "../cdp/testing/launch-chromium.js";
7
- import { VoyagerInterceptor } from "./interceptor.js";
8
- describe("VoyagerInterceptor (integration)", () => {
9
- let chromium;
10
- let server;
11
- let serverPort;
12
- let client;
13
- let interceptor;
14
- beforeAll(async () => {
15
- chromium = await launchChromium();
16
- // Start a minimal local HTTP server to avoid external network dependency
17
- // (http://example.com caused Windows CI timeouts)
18
- server = createServer((_req, res) => {
19
- res.writeHead(200, { "Content-Type": "text/html" });
20
- res.end("<html></html>");
21
- });
22
- await new Promise((resolve) => server.listen(0, resolve));
23
- serverPort = server.address().port;
24
- }, 30_000);
25
- afterAll(async () => {
26
- await chromium.close();
27
- server.close();
28
- });
29
- afterEach(async () => {
30
- if (interceptor?.isEnabled) {
31
- await interceptor.disable();
32
- }
33
- client?.disconnect();
34
- });
35
- describe("enable / disable", () => {
36
- it("should enable and disable without error on a real browser", async () => {
37
- client = new CDPClient(chromium.port);
38
- await client.connect();
39
- interceptor = new VoyagerInterceptor(client);
40
- await interceptor.enable();
41
- expect(interceptor.isEnabled).toBe(true);
42
- await interceptor.disable();
43
- expect(interceptor.isEnabled).toBe(false);
44
- });
45
- });
46
- describe("passive interception", () => {
47
- it("should capture responses matching Voyager URL pattern", async () => {
48
- client = new CDPClient(chromium.port);
49
- await client.connect();
50
- interceptor = new VoyagerInterceptor(client);
51
- // Navigate to the local HTTP server so we have an origin for fetch
52
- await client.send("Page.enable");
53
- const loadPromise = client.waitForEvent("Page.loadEventFired");
54
- await client.navigate(`http://localhost:${serverPort.toString()}`);
55
- await loadPromise;
56
- await client.send("Page.disable").catch(() => { });
57
- await interceptor.enable();
58
- // Use waitForResponse for deterministic waiting instead of setTimeout
59
- const responsePromise = interceptor.waitForResponse(undefined, 5000);
60
- // Trigger a fetch from within the page to a URL containing /voyager/api/
61
- // The local server responds with 200 to any path
62
- await client.evaluate(`fetch("/voyager/api/test-endpoint").catch(() => {})`, true);
63
- const captured = await responsePromise;
64
- expect(captured.url).toContain("/voyager/api/");
65
- });
66
- });
67
- describe("waitForResponse", () => {
68
- it("should resolve when a matching response arrives", async () => {
69
- client = new CDPClient(chromium.port);
70
- await client.connect();
71
- interceptor = new VoyagerInterceptor(client);
72
- // Navigate to the local HTTP server so we have an origin for fetch
73
- await client.send("Page.enable");
74
- const loadPromise = client.waitForEvent("Page.loadEventFired");
75
- await client.navigate(`http://localhost:${serverPort.toString()}`);
76
- await loadPromise;
77
- await client.send("Page.disable").catch(() => { });
78
- await interceptor.enable();
79
- // Start waiting before triggering the fetch
80
- const responsePromise = interceptor.waitForResponse(undefined, 5000);
81
- // Trigger a fetch matching the voyager pattern
82
- await client.evaluate(`fetch("/voyager/api/integration-test").catch(() => {})`, true);
83
- const response = await responsePromise;
84
- expect(response.url).toContain("/voyager/api/");
85
- expect(response.status).toEqual(expect.any(Number));
86
- });
87
- });
88
- });
89
- //# sourceMappingURL=interceptor.integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interceptor.integration.test.js","sourceRoot":"","sources":["../../src/voyager/interceptor.integration.test.ts"],"names":[],"mappings":"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"}