@lhremote/core 0.12.0 → 0.14.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 (49) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +3 -3
  4. package/dist/index.js.map +1 -1
  5. package/dist/operations/comment-on-post.d.ts +7 -0
  6. package/dist/operations/comment-on-post.d.ts.map +1 -1
  7. package/dist/operations/comment-on-post.js +26 -14
  8. package/dist/operations/comment-on-post.js.map +1 -1
  9. package/dist/operations/dismiss-feed-post.d.ts +28 -0
  10. package/dist/operations/dismiss-feed-post.d.ts.map +1 -0
  11. package/dist/operations/dismiss-feed-post.js +115 -0
  12. package/dist/operations/dismiss-feed-post.js.map +1 -0
  13. package/dist/operations/dismiss-feed-post.test.d.ts +2 -0
  14. package/dist/operations/dismiss-feed-post.test.d.ts.map +1 -0
  15. package/dist/operations/dismiss-feed-post.test.js +137 -0
  16. package/dist/operations/dismiss-feed-post.test.js.map +1 -0
  17. package/dist/operations/get-feed.d.ts +1 -1
  18. package/dist/operations/get-feed.d.ts.map +1 -1
  19. package/dist/operations/get-feed.js +99 -32
  20. package/dist/operations/get-feed.js.map +1 -1
  21. package/dist/operations/get-feed.test.js +177 -30
  22. package/dist/operations/get-feed.test.js.map +1 -1
  23. package/dist/operations/hide-feed-author.d.ts +32 -0
  24. package/dist/operations/hide-feed-author.d.ts.map +1 -0
  25. package/dist/operations/hide-feed-author.js +116 -0
  26. package/dist/operations/hide-feed-author.js.map +1 -0
  27. package/dist/operations/hide-feed-author.test.d.ts +2 -0
  28. package/dist/operations/hide-feed-author.test.d.ts.map +1 -0
  29. package/dist/operations/hide-feed-author.test.js +160 -0
  30. package/dist/operations/hide-feed-author.test.js.map +1 -0
  31. package/dist/operations/index.d.ts +3 -0
  32. package/dist/operations/index.d.ts.map +1 -1
  33. package/dist/operations/index.js +3 -0
  34. package/dist/operations/index.js.map +1 -1
  35. package/dist/operations/react-to-post.d.ts +9 -0
  36. package/dist/operations/react-to-post.d.ts.map +1 -1
  37. package/dist/operations/react-to-post.js +15 -4
  38. package/dist/operations/react-to-post.js.map +1 -1
  39. package/dist/operations/react-to-post.test.js +49 -0
  40. package/dist/operations/react-to-post.test.js.map +1 -1
  41. package/dist/operations/unfollow-from-feed.d.ts +30 -0
  42. package/dist/operations/unfollow-from-feed.d.ts.map +1 -0
  43. package/dist/operations/unfollow-from-feed.js +114 -0
  44. package/dist/operations/unfollow-from-feed.js.map +1 -0
  45. package/dist/operations/unfollow-from-feed.test.d.ts +2 -0
  46. package/dist/operations/unfollow-from-feed.test.d.ts.map +1 -0
  47. package/dist/operations/unfollow-from-feed.test.js +141 -0
  48. package/dist/operations/unfollow-from-feed.test.js.map +1 -0
  49. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@ export { CampaignFormatError, FormatError, parseCampaignJson, parseCampaignYaml,
5
5
  export { type ActionCategory, type ActionType, type ActionTypeCatalog, type ActionTypeInfo, type ConfigFieldSchema, getActionTypeCatalog, getActionTypeInfo, getFunctionById, getIndustryById, getLinkedInReferenceData, getSeniorityById, isReferenceDataType, } from "./data/index.js";
6
6
  export { ActionNotFoundError, CampaignNotFoundError, ChatNotFoundError, DatabaseError, DatabaseNotFoundError, ExcludeListNotFoundError, NoNextActionError, ProfileNotFoundError, } from "./db/index.js";
7
7
  export { CDPClient, CDPConnectionError, CDPError, CDPEvaluationError, CDPTimeoutError, discoverInstancePort, discoverTargets, findApp, resolveAppPort, resolveInstancePort, resolveLauncherPort, type AppRole, type DiscoveredApp, killInstanceProcesses, } from "./cdp/index.js";
8
- export { buildCdpOptions, type ConnectionOptions, campaignGet, type CampaignGetInput, type CampaignGetOutput, campaignList, type CampaignListInput, type CampaignListOutput, campaignCreate, type CampaignCreateInput, type CampaignCreateOutput, campaignUpdate, type CampaignUpdateInput, type CampaignUpdateOutput, campaignDelete, type CampaignDeleteInput, type CampaignDeleteOutput, campaignErase, type CampaignEraseInput, type CampaignEraseOutput, collectPeople, type CollectPeopleInput, type CollectPeopleOutput, campaignListPeople, type CampaignListPeopleInput, type CampaignListPeopleOutput, campaignStart, type CampaignStartInput, type CampaignStartOutput, campaignStop, type CampaignStopInput, type CampaignStopOutput, campaignRetry, type CampaignRetryInput, type CampaignRetryOutput, campaignMoveNext, type CampaignMoveNextInput, type CampaignMoveNextOutput, campaignStatistics, type CampaignStatisticsInput, type CampaignStatisticsOutput, campaignStatus, type CampaignStatusInput, type CampaignStatusOutput, campaignAddAction, type CampaignAddActionInput, type CampaignAddActionOutput, campaignRemoveAction, type CampaignRemoveActionInput, type CampaignRemoveActionOutput, campaignUpdateAction, type CampaignUpdateActionInput, type CampaignUpdateActionOutput, campaignReorderActions, type CampaignReorderActionsInput, type CampaignReorderActionsOutput, campaignExport, type CampaignExportInput, type CampaignExportOutput, campaignExcludeAdd, type CampaignExcludeAddInput, type CampaignExcludeAddOutput, campaignExcludeRemove, type CampaignExcludeRemoveInput, type CampaignExcludeRemoveOutput, campaignExcludeList, type CampaignExcludeListInput, type CampaignExcludeListOutput, commentOnPost, type CommentOnPostInput, type CommentOnPostOutput, getFeed, type GetFeedInput, type GetFeedOutput, getPost, type GetPostInput, type GetPostOutput, getPostStats, extractPostUrn, resolvePostDetailUrl, type GetPostStatsInput, type GetPostStatsOutput, getPostEngagers, type GetPostEngagersInput, type GetPostEngagersOutput, searchPosts, type SearchPostsInput, type SearchPostsOutput, getProfileActivity, extractProfileId, type GetProfileActivityInput, type GetProfileActivityOutput, getActionBudget, type GetActionBudgetInput, type GetActionBudgetOutput, getThrottleStatus, type GetThrottleStatusInput, type GetThrottleStatusOutput, getErrors, type GetErrorsInput, type GetErrorsOutput, dismissErrors, type DismissErrorsInput, type DismissErrorsOutput, queryMessages, type QueryMessagesInput, type QueryMessagesOutput, checkReplies, type CheckRepliesInput, type CheckRepliesOutput, scrapeMessagingHistory, type ScrapeMessagingHistoryInput, type ScrapeMessagingHistoryOutput, importPeopleFromUrls, type ImportPeopleFromUrlsInput, type ImportPeopleFromUrlsOutput, campaignRemovePeople, type CampaignRemovePeopleInput, type CampaignRemovePeopleOutput, listCollections, type ListCollectionsInput, type ListCollectionsOutput, createCollection, type CreateCollectionInput, type CreateCollectionOutput, deleteCollection, type DeleteCollectionInput, type DeleteCollectionOutput, addPeopleToCollection, type AddPeopleToCollectionInput, type AddPeopleToCollectionOutput, removePeopleFromCollection, type RemovePeopleFromCollectionInput, type RemovePeopleFromCollectionOutput, importPeopleFromCollection, type ImportPeopleFromCollectionInput, type ImportPeopleFromCollectionOutput, visitProfile, type VisitProfileInput, type VisitProfileOutput, reactToPost, REACTION_TYPES, type ReactToPostInput, type ReactToPostOutput, type ReactionType, type EphemeralActionInput, messagePerson, type MessagePersonInput, type MessagePersonOutput, sendInvite, type SendInviteInput, type SendInviteOutput, sendInmail, type SendInmailInput, type SendInmailOutput, followPerson, type FollowPersonInput, type FollowPersonOutput, endorseSkills, type EndorseSkillsInput, type EndorseSkillsOutput, likePersonPosts, type LikePersonPostsInput, type LikePersonPostsOutput, removeConnection, type RemoveConnectionInput, type RemoveConnectionOutput, enrichProfile, type EnrichProfileInput, type EnrichProfileOutput, type EnrichmentCategory, buildLinkedInUrl, type BuildLinkedInUrlInput, type BuildLinkedInUrlOutput, resolveLinkedInEntity, type ResolveLinkedInEntityInput, type ResolveLinkedInEntityOutput, } from "./operations/index.js";
8
+ export { buildCdpOptions, type ConnectionOptions, campaignGet, type CampaignGetInput, type CampaignGetOutput, campaignList, type CampaignListInput, type CampaignListOutput, campaignCreate, type CampaignCreateInput, type CampaignCreateOutput, campaignUpdate, type CampaignUpdateInput, type CampaignUpdateOutput, campaignDelete, type CampaignDeleteInput, type CampaignDeleteOutput, campaignErase, type CampaignEraseInput, type CampaignEraseOutput, collectPeople, type CollectPeopleInput, type CollectPeopleOutput, campaignListPeople, type CampaignListPeopleInput, type CampaignListPeopleOutput, campaignStart, type CampaignStartInput, type CampaignStartOutput, campaignStop, type CampaignStopInput, type CampaignStopOutput, campaignRetry, type CampaignRetryInput, type CampaignRetryOutput, campaignMoveNext, type CampaignMoveNextInput, type CampaignMoveNextOutput, campaignStatistics, type CampaignStatisticsInput, type CampaignStatisticsOutput, campaignStatus, type CampaignStatusInput, type CampaignStatusOutput, campaignAddAction, type CampaignAddActionInput, type CampaignAddActionOutput, campaignRemoveAction, type CampaignRemoveActionInput, type CampaignRemoveActionOutput, campaignUpdateAction, type CampaignUpdateActionInput, type CampaignUpdateActionOutput, campaignReorderActions, type CampaignReorderActionsInput, type CampaignReorderActionsOutput, campaignExport, type CampaignExportInput, type CampaignExportOutput, campaignExcludeAdd, type CampaignExcludeAddInput, type CampaignExcludeAddOutput, campaignExcludeRemove, type CampaignExcludeRemoveInput, type CampaignExcludeRemoveOutput, campaignExcludeList, type CampaignExcludeListInput, type CampaignExcludeListOutput, commentOnPost, type CommentOnPostInput, type CommentOnPostOutput, dismissFeedPost, type DismissFeedPostInput, type DismissFeedPostOutput, getFeed, type GetFeedInput, type GetFeedOutput, hideFeedAuthor, type HideFeedAuthorInput, type HideFeedAuthorOutput, getPost, type GetPostInput, type GetPostOutput, getPostStats, extractPostUrn, resolvePostDetailUrl, type GetPostStatsInput, type GetPostStatsOutput, getPostEngagers, type GetPostEngagersInput, type GetPostEngagersOutput, searchPosts, type SearchPostsInput, type SearchPostsOutput, getProfileActivity, extractProfileId, type GetProfileActivityInput, type GetProfileActivityOutput, getActionBudget, type GetActionBudgetInput, type GetActionBudgetOutput, getThrottleStatus, type GetThrottleStatusInput, type GetThrottleStatusOutput, getErrors, type GetErrorsInput, type GetErrorsOutput, dismissErrors, type DismissErrorsInput, type DismissErrorsOutput, queryMessages, type QueryMessagesInput, type QueryMessagesOutput, checkReplies, type CheckRepliesInput, type CheckRepliesOutput, scrapeMessagingHistory, type ScrapeMessagingHistoryInput, type ScrapeMessagingHistoryOutput, importPeopleFromUrls, type ImportPeopleFromUrlsInput, type ImportPeopleFromUrlsOutput, campaignRemovePeople, type CampaignRemovePeopleInput, type CampaignRemovePeopleOutput, listCollections, type ListCollectionsInput, type ListCollectionsOutput, createCollection, type CreateCollectionInput, type CreateCollectionOutput, deleteCollection, type DeleteCollectionInput, type DeleteCollectionOutput, addPeopleToCollection, type AddPeopleToCollectionInput, type AddPeopleToCollectionOutput, removePeopleFromCollection, type RemovePeopleFromCollectionInput, type RemovePeopleFromCollectionOutput, importPeopleFromCollection, type ImportPeopleFromCollectionInput, type ImportPeopleFromCollectionOutput, visitProfile, type VisitProfileInput, type VisitProfileOutput, reactToPost, REACTION_TYPES, type ReactToPostInput, type ReactToPostOutput, type ReactionType, unfollowFromFeed, type UnfollowFromFeedInput, type UnfollowFromFeedOutput, type EphemeralActionInput, messagePerson, type MessagePersonInput, type MessagePersonOutput, sendInvite, type SendInviteInput, type SendInviteOutput, sendInmail, type SendInmailInput, type SendInmailOutput, followPerson, type FollowPersonInput, type FollowPersonOutput, endorseSkills, type EndorseSkillsInput, type EndorseSkillsOutput, likePersonPosts, type LikePersonPostsInput, type LikePersonPostsOutput, removeConnection, type RemoveConnectionInput, type RemoveConnectionOutput, enrichProfile, type EnrichProfileInput, type EnrichProfileOutput, type EnrichmentCategory, buildLinkedInUrl, type BuildLinkedInUrlInput, type BuildLinkedInUrlOutput, resolveLinkedInEntity, type ResolveLinkedInEntityInput, type ResolveLinkedInEntityOutput, } from "./operations/index.js";
9
9
  export { click, getElementCenter, hover, humanizedClick, humanizedHover, humanizedScrollY, HumanizedMouse, scrollTo, type MentionEntry, typeText, typeTextWithMentions, type TypeMethod, waitForElement, type WaitForElementOptions, COMMENT_INPUT, COMMENT_SUBMIT_BUTTON, FEED_POST_CONTAINER, MENTION_OPTION, MENTION_TYPEAHEAD, REACTION_CELEBRATE, REACTION_FUNNY, REACTION_INSIGHTFUL, REACTION_LIKE, REACTION_LOVE, REACTION_SUPPORT, REACTION_TRIGGER, SELECTORS, type SelectorName, } from "./linkedin/index.js";
10
10
  export { DEFAULT_CDP_PORT } from "./constants.js";
11
11
  export { delay, randomDelay, gaussianRandom, gaussianDelay, gaussianBetween, maybeBreak, errorMessage, isCdpPort, isLoopbackAddress, SessionPacer, rhythmMultiplier } from "./utils/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,IAAI,EACJ,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,QAAQ,EACR,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,yBAAyB,EACzB,oBAAoB,EACpB,OAAO,EACP,YAAY,EACZ,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,SAAS,EACT,QAAQ,EACR,OAAO,EACP,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,WAAW,EACX,KAAK,EACL,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,2BAA2B,EAC3B,gBAAgB,EAChB,qBAAqB,EACrB,WAAW,EACX,UAAU,EACV,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,QAAQ,EACR,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,YAAY,EACjB,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,KAAK,iBAAiB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,EACf,KAAK,eAAe,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,uBAAuB,EACvB,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,2BAA2B,EAC3B,4BAA4B,EAC5B,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,yBAAyB,EACzB,cAAc,EACd,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,WAAW,EACX,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,YAAY,EACZ,oBAAoB,EACpB,+BAA+B,EAC/B,cAAc,GACf,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,kBAAkB,EAClB,4BAA4B,EAC5B,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,cAAc,EACd,KAAK,qBAAqB,EAC1B,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,eAAe,EACf,OAAO,EACP,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,eAAe,EACf,KAAK,iBAAiB,EAEtB,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAExB,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAExB,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAE7B,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAEzB,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,sBAAsB,EACtB,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAEzB,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAE9B,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAExB,OAAO,EACP,KAAK,YAAY,EACjB,KAAK,aAAa,EAElB,OAAO,EACP,KAAK,YAAY,EACjB,KAAK,aAAa,EAElB,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAE1B,WAAW,EACX,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EAEtB,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAE7B,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAE5B,SAAS,EACT,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EAExB,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,sBAAsB,EACtB,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAE/B,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,0BAA0B,EAC1B,KAAK,+BAA+B,EACpC,KAAK,gCAAgC,EACrC,0BAA0B,EAC1B,KAAK,+BAA+B,EACpC,KAAK,gCAAgC,EAErC,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAEvB,WAAW,EACX,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAEjB,KAAK,oBAAoB,EACzB,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,eAAe,EACf,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EAEvB,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,GACjC,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,KAAK,EACL,gBAAgB,EAChB,KAAK,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,KAAK,YAAY,EACjB,QAAQ,EACR,oBAAoB,EACpB,KAAK,UAAU,EACf,cAAc,EACd,KAAK,qBAAqB,EAC1B,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACT,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -26,9 +26,9 @@ campaignAddAction, campaignRemoveAction, campaignUpdateAction, campaignReorderAc
26
26
  // Exclude list
27
27
  campaignExcludeAdd, campaignExcludeRemove, campaignExcludeList,
28
28
  // Post interaction
29
- commentOnPost,
29
+ commentOnPost, dismissFeedPost,
30
30
  // Feed
31
- getFeed,
31
+ getFeed, hideFeedAuthor,
32
32
  // Post detail
33
33
  getPost,
34
34
  // Post analytics
@@ -48,7 +48,7 @@ listCollections, createCollection, deleteCollection, addPeopleToCollection, remo
48
48
  // Standalone actions
49
49
  visitProfile,
50
50
  // Post interaction
51
- reactToPost, REACTION_TYPES, messagePerson, sendInvite, sendInmail, followPerson, endorseSkills, likePersonPosts, removeConnection, enrichProfile,
51
+ reactToPost, REACTION_TYPES, unfollowFromFeed, messagePerson, sendInvite, sendInmail, followPerson, endorseSkills, likePersonPosts, removeConnection, enrichProfile,
52
52
  // URL building & entity resolution
53
53
  buildLinkedInUrl, resolveLinkedInEntity, } from "./operations/index.js";
54
54
  // LinkedIn DOM automation & selectors
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,8 @@ export interface CommentOnPostInput extends ConnectionOptions {
25
25
  readonly mentions?: readonly MentionEntry[] | undefined;
26
26
  /** Optional humanized mouse for natural cursor movement and clicks. */
27
27
  readonly mouse?: HumanizedMouse | null | undefined;
28
+ /** When true, validate the comment flow but skip typing and clicking submit. */
29
+ readonly dryRun?: boolean | undefined;
28
30
  }
29
31
  /**
30
32
  * Output from the comment-on-post operation.
@@ -35,6 +37,7 @@ export interface CommentOnPostOutput {
35
37
  readonly commentText: string;
36
38
  /** The parent comment URN when this was posted as a reply, or `null` for top-level comments. */
37
39
  readonly parentCommentUrn: string | null;
40
+ readonly dryRun: boolean;
38
41
  }
39
42
  /**
40
43
  * Post a comment on a LinkedIn post.
@@ -43,6 +46,10 @@ export interface CommentOnPostOutput {
43
46
  * input via selectors, types the comment text character-by-character
44
47
  * for human-like behaviour, and clicks submit.
45
48
  *
49
+ * When {@link CommentOnPostInput.dryRun | dryRun} is `true`, the
50
+ * operation validates that the comment input and submit button are
51
+ * present but skips typing and clicking submit.
52
+ *
46
53
  * Checks the action budget before attempting the comment and fails
47
54
  * with a {@link BudgetExceededError} if the PostComment limit has
48
55
  * been reached.
@@ -1 +1 @@
1
- {"version":3,"file":"comment-on-post.d.ts","sourceRoot":"","sources":["../../src/operations/comment-on-post.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAMrE,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAYrE;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,mGAAmG;IACnG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAAC;IACxD,uEAAuE;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,gGAAgG;IAChG,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,mBAAmB,CAAC,CA0I9B"}
1
+ {"version":3,"file":"comment-on-post.d.ts","sourceRoot":"","sources":["../../src/operations/comment-on-post.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAMrE,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAYrE;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,mGAAmG;IACnG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,YAAY,EAAE,GAAG,SAAS,CAAC;IACxD,uEAAuE;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;IACnD,gFAAgF;IAChF,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,gGAAgG;IAChG,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAmJ9B"}
@@ -24,6 +24,10 @@ const POST_COMMENT_LIMIT_TYPE_ID = 19;
24
24
  * input via selectors, types the comment text character-by-character
25
25
  * for human-like behaviour, and clicks submit.
26
26
  *
27
+ * When {@link CommentOnPostInput.dryRun | dryRun} is `true`, the
28
+ * operation validates that the comment input and submit button are
29
+ * present but skips typing and clicking submit.
30
+ *
27
31
  * Checks the action budget before attempting the comment and fails
28
32
  * with a {@link BudgetExceededError} if the PostComment limit has
29
33
  * been reached.
@@ -87,6 +91,7 @@ export async function commentOnPost(input) {
87
91
  const mouse = input.mouse;
88
92
  const parentUrn = input.parentCommentUrn;
89
93
  const mentions = input.mentions ?? [];
94
+ const dryRun = input.dryRun ?? false;
90
95
  if (parentUrn) {
91
96
  // --- Reply to a specific comment ---
92
97
  // Find the target comment article by its data-id attribute
@@ -103,11 +108,13 @@ export async function commentOnPost(input) {
103
108
  // pre-existing top-level comment input.
104
109
  await waitForElement(client, `${COMMENT_INPUT}:focus`, undefined, mouse);
105
110
  await gaussianDelay(350, 50, 250, 500);
106
- if (mentions.length > 0) {
107
- await typeTextWithMentions(client, `${COMMENT_INPUT}:focus`, input.text, mentions);
108
- }
109
- else {
110
- await typeText(client, `${COMMENT_INPUT}:focus`, input.text);
111
+ if (!dryRun) {
112
+ if (mentions.length > 0) {
113
+ await typeTextWithMentions(client, `${COMMENT_INPUT}:focus`, input.text, mentions);
114
+ }
115
+ else {
116
+ await typeText(client, `${COMMENT_INPUT}:focus`, input.text);
117
+ }
111
118
  }
112
119
  }
113
120
  else {
@@ -116,24 +123,29 @@ export async function commentOnPost(input) {
116
123
  await humanizedScrollTo(client, COMMENT_INPUT, mouse);
117
124
  await humanizedClick(client, COMMENT_INPUT, mouse);
118
125
  await gaussianDelay(550, 75, 400, 700);
119
- if (mentions.length > 0) {
120
- await typeTextWithMentions(client, COMMENT_INPUT, input.text, mentions);
121
- }
122
- else {
123
- await typeText(client, COMMENT_INPUT, input.text);
126
+ if (!dryRun) {
127
+ if (mentions.length > 0) {
128
+ await typeTextWithMentions(client, COMMENT_INPUT, input.text, mentions);
129
+ }
130
+ else {
131
+ await typeText(client, COMMENT_INPUT, input.text);
132
+ }
124
133
  }
125
134
  }
126
- // Wait for submit button and click
135
+ // Wait for submit button to validate the submit flow would work
127
136
  await waitForElement(client, COMMENT_SUBMIT_BUTTON, undefined, mouse);
128
- await humanizedClick(client, COMMENT_SUBMIT_BUTTON, mouse);
129
- // Brief wait for the comment to post
130
- await gaussianDelay(2_000, 250, 1_500, 2_500);
137
+ if (!dryRun) {
138
+ await humanizedClick(client, COMMENT_SUBMIT_BUTTON, mouse);
139
+ // Brief wait for the comment to post
140
+ await gaussianDelay(2_000, 250, 1_500, 2_500);
141
+ }
131
142
  await gaussianDelay(1_500, 500, 700, 3_500); // Post-action dwell
132
143
  return {
133
144
  success: true,
134
145
  postUrl: input.postUrl,
135
146
  commentText: input.text,
136
147
  parentCommentUrn: parentUrn ?? null,
148
+ dryRun,
137
149
  };
138
150
  }
139
151
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"comment-on-post.js","sourceRoot":"","sources":["../../src/operations/comment-on-post.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"comment-on-post.js","sourceRoot":"","sources":["../../src/operations/comment-on-post.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { HumanizedMouse } from "../linkedin/humanized-mouse.js";
2
+ import type { ConnectionOptions } from "./types.js";
3
+ export interface DismissFeedPostInput extends ConnectionOptions {
4
+ /** Zero-based index of the post in the visible LinkedIn feed. */
5
+ readonly feedIndex: number;
6
+ /** Optional humanized mouse for natural cursor movement and clicks. */
7
+ readonly mouse?: HumanizedMouse | null | undefined;
8
+ /** When true, locate the menu item but do not click it. */
9
+ readonly dryRun?: boolean | undefined;
10
+ }
11
+ export interface DismissFeedPostOutput {
12
+ readonly success: true;
13
+ readonly feedIndex: number;
14
+ readonly dryRun: boolean;
15
+ }
16
+ /**
17
+ * Dismiss a post from the LinkedIn feed by clicking "Not interested".
18
+ *
19
+ * Navigates to the LinkedIn home feed, opens the three-dot menu of the
20
+ * post at the given `feedIndex`, and clicks "Not interested".
21
+ *
22
+ * @param input - Feed index, CDP connection parameters, and optional mouse.
23
+ * @returns Confirmation that the post was dismissed.
24
+ * @throws When the menu button is not found or "Not interested" is not
25
+ * available in its menu.
26
+ */
27
+ export declare function dismissFeedPost(input: DismissFeedPostInput): Promise<DismissFeedPostOutput>;
28
+ //# sourceMappingURL=dismiss-feed-post.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dismiss-feed-post.d.ts","sourceRoot":"","sources":["../../src/operations/dismiss-feed-post.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAQpD,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;IACnD,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACvC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAmED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CA0DhC"}
@@ -0,0 +1,115 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { resolveInstancePort } from "../cdp/index.js";
4
+ import { CDPClient } from "../cdp/client.js";
5
+ import { discoverTargets } from "../cdp/discovery.js";
6
+ import { humanizedScrollToByIndex } from "../linkedin/dom-automation.js";
7
+ import { gaussianDelay, maybeHesitate } from "../utils/delay.js";
8
+ import { navigateAwayIf } from "./navigate-away.js";
9
+ import { waitForFeedLoad } from "./get-feed.js";
10
+ /** CSS selector for feed post menu buttons. */
11
+ const FEED_MENU_BUTTON_SELECTOR = '[data-testid="mainFeed"] div[role="listitem"] button[aria-label^="Open control menu for post"]';
12
+ /**
13
+ * Open the three-dot menu for a feed post at the given index and click
14
+ * the "Not interested" menu item.
15
+ *
16
+ * @returns `true` if "Not interested" was clicked, `false` if the menu
17
+ * item was not found.
18
+ * @throws If the menu button could not be clicked.
19
+ */
20
+ async function clickNotInterested(client, postIndex, mouse, dryRun) {
21
+ await maybeHesitate();
22
+ await humanizedScrollToByIndex(client, FEED_MENU_BUTTON_SELECTOR, postIndex, mouse);
23
+ const clicked = await client.evaluate(`(() => {
24
+ const btns = document.querySelectorAll(
25
+ ${JSON.stringify(FEED_MENU_BUTTON_SELECTOR)}
26
+ );
27
+ const btn = btns[${postIndex}];
28
+ if (!btn) return false;
29
+ btn.click();
30
+ return true;
31
+ })()`);
32
+ if (!clicked) {
33
+ throw new Error("Failed to open the three-dot menu for the target post.");
34
+ }
35
+ await gaussianDelay(700, 100, 500, 900);
36
+ const dismissed = await client.evaluate(`(() => {
37
+ const dryRun = ${!!dryRun};
38
+ for (const el of document.querySelectorAll('[role="menuitem"]')) {
39
+ if (el.textContent.trim() === 'Not interested') {
40
+ if (!dryRun) el.click();
41
+ return true;
42
+ }
43
+ }
44
+ return false;
45
+ })()`);
46
+ if (!dismissed) {
47
+ // Dismiss the open menu to avoid leaving the UI in a modal state
48
+ await client.evaluate(`(() => {
49
+ document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true }));
50
+ })()`);
51
+ await gaussianDelay(300, 75, 200, 500);
52
+ }
53
+ if (dismissed && dryRun) {
54
+ await client.evaluate(`(() => {
55
+ document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true }));
56
+ })()`);
57
+ await gaussianDelay(300, 75, 200, 500);
58
+ }
59
+ return dismissed;
60
+ }
61
+ /**
62
+ * Dismiss a post from the LinkedIn feed by clicking "Not interested".
63
+ *
64
+ * Navigates to the LinkedIn home feed, opens the three-dot menu of the
65
+ * post at the given `feedIndex`, and clicks "Not interested".
66
+ *
67
+ * @param input - Feed index, CDP connection parameters, and optional mouse.
68
+ * @returns Confirmation that the post was dismissed.
69
+ * @throws When the menu button is not found or "Not interested" is not
70
+ * available in its menu.
71
+ */
72
+ export async function dismissFeedPost(input) {
73
+ const cdpPort = await resolveInstancePort(input.cdpPort, input.cdpHost);
74
+ const cdpHost = input.cdpHost ?? "127.0.0.1";
75
+ const allowRemote = input.allowRemote ?? false;
76
+ // Enforce loopback guard
77
+ if (!allowRemote && cdpHost !== "127.0.0.1" && cdpHost !== "localhost") {
78
+ throw new Error(`Non-loopback CDP host "${cdpHost}" requires --allow-remote. ` +
79
+ "This is a security measure to prevent remote code execution.");
80
+ }
81
+ const targets = await discoverTargets(cdpPort, cdpHost);
82
+ const linkedInTarget = targets.find((t) => t.type === "page" && t.url?.includes("linkedin.com"));
83
+ if (!linkedInTarget) {
84
+ throw new Error("No LinkedIn page found in LinkedHelper. " +
85
+ "Ensure LinkedHelper is running with an active LinkedIn session.");
86
+ }
87
+ const client = new CDPClient(cdpPort, { host: cdpHost, allowRemote });
88
+ await client.connect(linkedInTarget.id);
89
+ try {
90
+ const mouse = input.mouse;
91
+ const dryRun = input.dryRun ?? false;
92
+ const feedIndex = input.feedIndex;
93
+ // Navigate to the feed (force fresh load if already there)
94
+ await navigateAwayIf(client, "/feed");
95
+ await client.navigate("https://www.linkedin.com/feed/");
96
+ await waitForFeedLoad(client);
97
+ // Click "Not interested" on the post at the given feed index
98
+ const dismissed = await clickNotInterested(client, feedIndex, mouse, dryRun);
99
+ if (!dismissed) {
100
+ throw new Error('The post\'s three-dot menu does not contain "Not interested". ' +
101
+ "This may happen for your own posts or sponsored content.");
102
+ }
103
+ await gaussianDelay(550, 75, 400, 700);
104
+ await gaussianDelay(1_500, 500, 700, 3_500); // Post-action dwell
105
+ return {
106
+ success: true,
107
+ feedIndex: input.feedIndex,
108
+ dryRun,
109
+ };
110
+ }
111
+ finally {
112
+ client.disconnect();
113
+ }
114
+ }
115
+ //# sourceMappingURL=dismiss-feed-post.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dismiss-feed-post.js","sourceRoot":"","sources":["../../src/operations/dismiss-feed-post.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dismiss-feed-post.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dismiss-feed-post.test.d.ts","sourceRoot":"","sources":["../../src/operations/dismiss-feed-post.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,137 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ // Copyright (C) 2026 Oleksii PELYKH
3
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
4
+ vi.mock("../cdp/client.js", () => ({
5
+ CDPClient: vi.fn(),
6
+ }));
7
+ vi.mock("../cdp/discovery.js", () => ({
8
+ discoverTargets: vi.fn(),
9
+ }));
10
+ vi.mock("../linkedin/dom-automation.js", () => ({
11
+ humanizedScrollToByIndex: vi.fn().mockResolvedValue(undefined),
12
+ retryInteraction: vi.fn().mockImplementation((fn) => fn()),
13
+ }));
14
+ vi.mock("../utils/delay.js", () => ({
15
+ delay: vi.fn().mockResolvedValue(undefined),
16
+ gaussianDelay: vi.fn().mockResolvedValue(undefined),
17
+ maybeHesitate: vi.fn().mockResolvedValue(undefined),
18
+ }));
19
+ vi.mock("./navigate-away.js", () => ({
20
+ navigateAwayIf: vi.fn().mockResolvedValue(undefined),
21
+ }));
22
+ vi.mock("./get-feed.js", () => ({
23
+ waitForFeedLoad: vi.fn().mockResolvedValue(undefined),
24
+ scrollFeed: vi.fn().mockResolvedValue(undefined),
25
+ }));
26
+ import { CDPClient } from "../cdp/client.js";
27
+ import { discoverTargets } from "../cdp/discovery.js";
28
+ import { dismissFeedPost } from "./dismiss-feed-post.js";
29
+ const mockClient = {
30
+ connect: vi.fn().mockResolvedValue(undefined),
31
+ navigate: vi.fn().mockResolvedValue(undefined),
32
+ evaluate: vi.fn().mockResolvedValue(null),
33
+ disconnect: vi.fn(),
34
+ };
35
+ function setupMocks() {
36
+ vi.mocked(CDPClient).mockImplementation(function () {
37
+ return mockClient;
38
+ });
39
+ vi.mocked(discoverTargets).mockResolvedValue([
40
+ { id: "target-1", type: "page", title: "LinkedIn", url: "https://www.linkedin.com/feed/", description: "", devtoolsFrontendUrl: "" },
41
+ ]);
42
+ }
43
+ /**
44
+ * Configure mockClient.evaluate to simulate a feed with one post whose
45
+ * menu contains "Not interested".
46
+ */
47
+ function setupFeedWithNotInterested() {
48
+ mockClient.evaluate.mockImplementation((script) => {
49
+ // Menu button click
50
+ if (typeof script === "string" && script.includes("btn.click()")) {
51
+ return Promise.resolve(true);
52
+ }
53
+ // "Not interested" click
54
+ if (typeof script === "string" && script.includes("Not interested")) {
55
+ return Promise.resolve(true);
56
+ }
57
+ // Escape key
58
+ if (typeof script === "string" && script.includes("Escape")) {
59
+ return Promise.resolve(undefined);
60
+ }
61
+ return Promise.resolve(null);
62
+ });
63
+ }
64
+ describe("dismissFeedPost", () => {
65
+ beforeEach(() => {
66
+ vi.clearAllMocks();
67
+ });
68
+ afterEach(() => {
69
+ vi.restoreAllMocks();
70
+ });
71
+ it("throws on non-loopback host without allowRemote", async () => {
72
+ await expect(dismissFeedPost({
73
+ feedIndex: 0,
74
+ cdpPort: 9222,
75
+ cdpHost: "192.168.1.100",
76
+ })).rejects.toThrow("requires --allow-remote");
77
+ });
78
+ it("allows non-loopback host with allowRemote", async () => {
79
+ setupMocks();
80
+ setupFeedWithNotInterested();
81
+ const result = await dismissFeedPost({
82
+ feedIndex: 0,
83
+ cdpPort: 9222,
84
+ cdpHost: "192.168.1.100",
85
+ allowRemote: true,
86
+ });
87
+ expect(result.success).toBe(true);
88
+ });
89
+ it("throws when no LinkedIn page is found", async () => {
90
+ vi.mocked(discoverTargets).mockResolvedValue([
91
+ { id: "target-1", type: "page", title: "Example", url: "https://example.com", description: "", devtoolsFrontendUrl: "" },
92
+ ]);
93
+ await expect(dismissFeedPost({
94
+ feedIndex: 0,
95
+ cdpPort: 9222,
96
+ })).rejects.toThrow("No LinkedIn page found");
97
+ });
98
+ it("returns success when post is found and dismissed", async () => {
99
+ setupMocks();
100
+ setupFeedWithNotInterested();
101
+ const result = await dismissFeedPost({
102
+ feedIndex: 0,
103
+ cdpPort: 9222,
104
+ });
105
+ expect(result).toEqual({
106
+ success: true,
107
+ feedIndex: 0,
108
+ dryRun: false,
109
+ });
110
+ });
111
+ it("throws when Not interested is not in the menu", async () => {
112
+ setupMocks();
113
+ mockClient.evaluate.mockImplementation((script) => {
114
+ if (typeof script === "string" && script.includes("btn.click()"))
115
+ return Promise.resolve(true);
116
+ if (typeof script === "string" && script.includes("Not interested"))
117
+ return Promise.resolve(false);
118
+ if (typeof script === "string" && script.includes("Escape"))
119
+ return Promise.resolve(undefined);
120
+ return Promise.resolve(null);
121
+ });
122
+ await expect(dismissFeedPost({
123
+ feedIndex: 0,
124
+ cdpPort: 9222,
125
+ })).rejects.toThrow('does not contain "Not interested"');
126
+ });
127
+ it("disconnects the CDP client even when an error occurs", async () => {
128
+ setupMocks();
129
+ mockClient.evaluate.mockRejectedValue(new Error("evaluation failed"));
130
+ await expect(dismissFeedPost({
131
+ feedIndex: 0,
132
+ cdpPort: 9222,
133
+ })).rejects.toThrow("evaluation failed");
134
+ expect(mockClient.disconnect).toHaveBeenCalled();
135
+ });
136
+ });
137
+ //# sourceMappingURL=dismiss-feed-post.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dismiss-feed-post.test.js","sourceRoot":"","sources":["../../src/operations/dismiss-feed-post.test.ts"],"names":[],"mappings":"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"}
@@ -52,7 +52,7 @@ export interface RawDomPost {
52
52
  * separate phase by opening each post's three-dot menu, clicking
53
53
  * "Copy link to post", and deriving the URN from the captured URL.
54
54
  */
55
- declare const SCRAPE_FEED_POSTS_SCRIPT = "(() => {\n const posts = [];\n\n // --- Step 1: Find the feed list via data-testid ---\n const feedList = document.querySelector('[data-testid=\"mainFeed\"]');\n if (!feedList) return posts;\n\n // --- Step 2: Iterate listitem children ---\n const items = feedList.querySelectorAll('div[role=\"listitem\"]');\n for (const wrapper of items) {\n // The listitem wraps the actual post content in nested divs.\n // Some listitems may be zero-height (virtualized/hidden) or\n // non-post items (composer, suggestions).\n const item = wrapper;\n if (item.offsetHeight < 100) continue;\n\n // Detect real posts: must have a three-dot menu button\n const menuBtn = item.querySelector('button[aria-label^=\"Open control menu for post\"]');\n if (!menuBtn) continue;\n\n // --- Author info ---\n let authorName = null;\n let authorHeadline = null;\n let authorProfileUrl = null;\n\n const authorLink = item.querySelector('a[href*=\"/in/\"], a[href*=\"/company/\"]');\n if (authorLink) {\n authorProfileUrl = authorLink.href.split('?')[0] || null;\n const nameEl = authorLink.querySelector('span[dir=\"ltr\"], span[aria-hidden=\"true\"]')\n || authorLink;\n const rawName = (nameEl.textContent || '').trim();\n authorName = rawName || null;\n }\n\n // Author headline: look for a short descriptive text near the author.\n const allSpans = item.querySelectorAll('span');\n for (const span of allSpans) {\n const txt = (span.textContent || '').trim();\n if (\n txt &&\n txt.length > 5 &&\n txt.length < 200 &&\n txt !== authorName &&\n !txt.match(/^\\d+[smhdw]$/) &&\n !txt.match(/^\\d[\\d,]*\\s+(reactions?|comments?|reposts?|likes?)$/i) &&\n !txt.match(/^Follow$|^Promoted$/i)\n ) {\n authorHeadline = txt;\n break;\n }\n }\n\n // --- Post text ---\n let text = null;\n const ltrSpans = item.querySelectorAll('span[dir=\"ltr\"]');\n let longestText = '';\n for (const span of ltrSpans) {\n const txt = (span.textContent || '').trim();\n if (txt.length > longestText.length && txt !== authorName && txt !== authorHeadline) {\n longestText = txt;\n }\n }\n if (longestText.length > 20) {\n text = longestText;\n }\n\n // --- Media type ---\n let mediaType = null;\n if (item.querySelector('video')) {\n mediaType = 'video';\n } else if (item.querySelector('img[src*=\"media.licdn.com\"]')) {\n const imgs = item.querySelectorAll('img[src*=\"media.licdn.com\"]');\n for (const img of imgs) {\n if (img.offsetHeight > 100) { mediaType = 'image'; break; }\n }\n }\n\n // --- Engagement counts ---\n const itemText = item.textContent || '';\n\n function parseCount(pattern) {\n const m = itemText.match(pattern);\n if (!m) return 0;\n const raw = m[1].replace(/,/g, '');\n const num = parseInt(raw, 10);\n return isNaN(num) ? 0 : num;\n }\n\n const reactionCount = parseCount(/(\\d[\\d,]*)\\s+reactions?/i);\n const commentCount = parseCount(/(\\d[\\d,]*)\\s+comments?/i);\n const shareCount = parseCount(/(\\d[\\d,]*)\\s+reposts?/i);\n\n // --- Timestamp ---\n let timestamp = null;\n const timeEl = item.querySelector('time');\n if (timeEl) {\n const dt = timeEl.getAttribute('datetime');\n if (dt) timestamp = dt;\n }\n if (!timestamp) {\n const timeMatch = itemText.match(/(?:^|\\s)(\\d+[smhdw])(?:\\s|$|\\u00B7|\\xB7)/);\n if (timeMatch) timestamp = timeMatch[1];\n }\n\n posts.push({\n url: null,\n authorName: authorName,\n authorHeadline: authorHeadline,\n authorProfileUrl: authorProfileUrl,\n text: text,\n mediaType: mediaType,\n reactionCount: reactionCount,\n commentCount: commentCount,\n shareCount: shareCount,\n timestamp: timestamp,\n });\n }\n\n return posts;\n})()";
55
+ declare const SCRAPE_FEED_POSTS_SCRIPT = "(() => {\n const posts = [];\n if (window.__lhrNextIdx == null) window.__lhrNextIdx = 0;\n\n // --- Step 1: Find the feed list via data-testid ---\n const feedList = document.querySelector('[data-testid=\"mainFeed\"]');\n if (!feedList) return posts;\n\n // --- Step 2: Iterate listitem children ---\n const items = feedList.querySelectorAll('div[role=\"listitem\"]');\n for (const wrapper of items) {\n // The listitem wraps the actual post content in nested divs.\n // Some listitems may be zero-height (virtualized/hidden) or\n // non-post items (composer, suggestions).\n const item = wrapper;\n if (item.offsetHeight < 100) continue;\n\n // Detect real posts: must have a three-dot menu button\n const menuBtn = item.querySelector('button[aria-label^=\"Open control menu for post\"]');\n if (!menuBtn) continue;\n\n // --- Discovery tagging ---\n // Tag each listitem with a unique index on first discovery so that\n // posts can be accumulated across scroll iterations despite LinkedIn\n // virtualising off-screen items out of the DOM. The index value\n // itself isn't consumed by the Node-side logic \u2014 it's only used as\n // the DOM attribute payload so that already-seen items can be\n // recognised on subsequent scrapes.\n let _isNew = false;\n if (!item.hasAttribute('data-lhr-idx')) {\n item.setAttribute('data-lhr-idx', String(window.__lhrNextIdx++));\n _isNew = true;\n }\n\n // --- Author info ---\n let authorName = null;\n let authorHeadline = null;\n let authorProfileUrl = null;\n\n const authorLink = item.querySelector('a[href*=\"/in/\"], a[href*=\"/company/\"]');\n if (authorLink) {\n authorProfileUrl = authorLink.href.split('?')[0] || null;\n const nameEl = authorLink.querySelector('span[dir=\"ltr\"], span[aria-hidden=\"true\"]')\n || authorLink;\n const rawName = (nameEl.textContent || '').trim();\n authorName = rawName || null;\n }\n\n // Author headline: look for a short descriptive text near the author.\n const allSpans = item.querySelectorAll('span');\n for (const span of allSpans) {\n const txt = (span.textContent || '').trim();\n if (\n txt &&\n txt.length > 5 &&\n txt.length < 200 &&\n txt !== authorName &&\n !txt.match(/^\\d+[smhdw]$/) &&\n !txt.match(/^\\d[\\d,]*\\s+(reactions?|comments?|reposts?|likes?)$/i) &&\n !txt.match(/^Follow$|^Promoted$/i)\n ) {\n authorHeadline = txt;\n break;\n }\n }\n\n // --- Post text ---\n let text = null;\n const ltrSpans = item.querySelectorAll('span[dir=\"ltr\"]');\n let longestText = '';\n for (const span of ltrSpans) {\n const txt = (span.textContent || '').trim();\n if (txt.length > longestText.length && txt !== authorName && txt !== authorHeadline) {\n longestText = txt;\n }\n }\n if (longestText.length > 20) {\n text = longestText;\n }\n\n // --- Media type ---\n let mediaType = null;\n if (item.querySelector('video')) {\n mediaType = 'video';\n } else if (item.querySelector('img[src*=\"media.licdn.com\"]')) {\n const imgs = item.querySelectorAll('img[src*=\"media.licdn.com\"]');\n for (const img of imgs) {\n if (img.offsetHeight > 100) { mediaType = 'image'; break; }\n }\n }\n\n // --- Engagement counts ---\n const itemText = item.textContent || '';\n\n function parseCount(pattern) {\n const m = itemText.match(pattern);\n if (!m) return 0;\n const raw = m[1].replace(/,/g, '');\n const num = parseInt(raw, 10);\n return isNaN(num) ? 0 : num;\n }\n\n const reactionCount = parseCount(/(\\d[\\d,]*)\\s+reactions?/i);\n const commentCount = parseCount(/(\\d[\\d,]*)\\s+comments?/i);\n const shareCount = parseCount(/(\\d[\\d,]*)\\s+reposts?/i);\n\n // --- Timestamp ---\n let timestamp = null;\n const timeEl = item.querySelector('time');\n if (timeEl) {\n const dt = timeEl.getAttribute('datetime');\n if (dt) timestamp = dt;\n }\n if (!timestamp) {\n const timeMatch = itemText.match(/(?:^|\\s)(\\d+[smhdw])(?:\\s|$|\\u00B7|\\xB7)/);\n if (timeMatch) timestamp = timeMatch[1];\n }\n\n posts.push({\n _isNew: _isNew,\n url: null,\n authorName: authorName,\n authorHeadline: authorHeadline,\n authorProfileUrl: authorProfileUrl,\n text: text,\n mediaType: mediaType,\n reactionCount: reactionCount,\n commentCount: commentCount,\n shareCount: shareCount,\n timestamp: timestamp,\n });\n }\n\n return posts;\n})()";
56
56
  /**
57
57
  * Legacy scraping script using structural heuristics to find the feed
58
58
  * container. Used by search-posts which navigates to search result
@@ -1 +1 @@
1
- {"version":3,"file":"get-feed.d.ts","sourceRoot":"","sources":["../../src/operations/get-feed.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,KAAK,IAAI,UAAU,EAAkF,MAAM,mBAAmB,CAAC;AACxI,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGpD;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,iBAAiB;IACrD,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,oEAAoE;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAMD,oDAAoD;AACpD,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAMD;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,wBAAwB,g5HAuHzB,CAAC;AAEN;;;;;;GAMG;AACH,OAAO,EAAE,wBAAwB,IAAI,kBAAkB,EAAE,CAAC;AAmH1D;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,CAI7D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAwBhE;AAED;;GAEG;AACH,oDAAoD;AACpD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;GAEG;AACH,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE,CAezD;AAMD,wDAAwD;AACxD,eAAO,MAAM,KAAK,mBAAa,CAAC;AAEhC;;;;;;;;;;;GAWG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,EACjB,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC,CAKf;AAMD,oDAAoD;AACpD,wBAAsB,eAAe,CACnC,MAAM,EAAE,SAAS,EACjB,SAAS,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC,CAqBf;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,aAAa,CAAC,CAmIxB"}
1
+ {"version":3,"file":"get-feed.d.ts","sourceRoot":"","sources":["../../src/operations/get-feed.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,KAAK,IAAI,UAAU,EAAkF,MAAM,mBAAmB,CAAC;AACxI,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGpD;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,iBAAiB;IACrD,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,oEAAoE;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAMD,oDAAoD;AACpD,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAMD;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,wBAAwB,6kJAsIzB,CAAC;AAEN;;;;;;GAMG;AACH,OAAO,EAAE,wBAAwB,IAAI,kBAAkB,EAAE,CAAC;AAmH1D;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,EAAE,CAI7D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAwBhE;AAED;;GAEG;AACH,oDAAoD;AACpD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;GAEG;AACH,oDAAoD;AACpD,wBAAgB,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,QAAQ,EAAE,CAezD;AAMD,wDAAwD;AACxD,eAAO,MAAM,KAAK,mBAAa,CAAC;AAEhC;;;;;;;;;;;GAWG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,EACjB,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC,CAKf;AAMD,oDAAoD;AACpD,wBAAsB,eAAe,CACnC,MAAM,EAAE,SAAS,EACjB,SAAS,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC,CAqBf;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,aAAa,CAAC,CA6LxB"}