@lhremote/core 0.11.0 → 0.13.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.
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/linkedin/dom-automation-mentions.test.d.ts +2 -0
- package/dist/linkedin/dom-automation-mentions.test.d.ts.map +1 -0
- package/dist/linkedin/dom-automation-mentions.test.js +165 -0
- package/dist/linkedin/dom-automation-mentions.test.js.map +1 -0
- package/dist/linkedin/dom-automation.d.ts +30 -0
- package/dist/linkedin/dom-automation.d.ts.map +1 -1
- package/dist/linkedin/dom-automation.js +147 -0
- package/dist/linkedin/dom-automation.js.map +1 -1
- package/dist/linkedin/index.d.ts +2 -2
- package/dist/linkedin/index.d.ts.map +1 -1
- package/dist/linkedin/index.js +2 -2
- package/dist/linkedin/index.js.map +1 -1
- package/dist/linkedin/selectors.d.ts +27 -0
- package/dist/linkedin/selectors.d.ts.map +1 -1
- package/dist/linkedin/selectors.js +29 -0
- package/dist/linkedin/selectors.js.map +1 -1
- package/dist/operations/comment-on-post.d.ts +24 -0
- package/dist/operations/comment-on-post.d.ts.map +1 -1
- package/dist/operations/comment-on-post.js +64 -13
- package/dist/operations/comment-on-post.js.map +1 -1
- package/dist/operations/comment-on-post.test.js +93 -1
- package/dist/operations/comment-on-post.test.js.map +1 -1
- package/dist/operations/dismiss-feed-post.d.ts +28 -0
- package/dist/operations/dismiss-feed-post.d.ts.map +1 -0
- package/dist/operations/dismiss-feed-post.js +115 -0
- package/dist/operations/dismiss-feed-post.js.map +1 -0
- package/dist/operations/dismiss-feed-post.test.d.ts +2 -0
- package/dist/operations/dismiss-feed-post.test.d.ts.map +1 -0
- package/dist/operations/dismiss-feed-post.test.js +137 -0
- package/dist/operations/dismiss-feed-post.test.js.map +1 -0
- package/dist/operations/get-post.d.ts.map +1 -1
- package/dist/operations/get-post.js +5 -1
- package/dist/operations/get-post.js.map +1 -1
- package/dist/operations/get-post.test.js +10 -9
- package/dist/operations/get-post.test.js.map +1 -1
- package/dist/operations/hide-feed-author.d.ts +32 -0
- package/dist/operations/hide-feed-author.d.ts.map +1 -0
- package/dist/operations/hide-feed-author.js +116 -0
- package/dist/operations/hide-feed-author.js.map +1 -0
- package/dist/operations/hide-feed-author.test.d.ts +2 -0
- package/dist/operations/hide-feed-author.test.d.ts.map +1 -0
- package/dist/operations/hide-feed-author.test.js +160 -0
- package/dist/operations/hide-feed-author.test.js.map +1 -0
- package/dist/operations/index.d.ts +3 -0
- package/dist/operations/index.d.ts.map +1 -1
- package/dist/operations/index.js +3 -0
- package/dist/operations/index.js.map +1 -1
- package/dist/operations/react-to-post.d.ts +9 -0
- package/dist/operations/react-to-post.d.ts.map +1 -1
- package/dist/operations/react-to-post.js +15 -4
- package/dist/operations/react-to-post.js.map +1 -1
- package/dist/operations/react-to-post.test.js +49 -0
- package/dist/operations/react-to-post.test.js.map +1 -1
- package/dist/operations/unfollow-from-feed.d.ts +30 -0
- package/dist/operations/unfollow-from-feed.d.ts.map +1 -0
- package/dist/operations/unfollow-from-feed.js +114 -0
- package/dist/operations/unfollow-from-feed.js.map +1 -0
- package/dist/operations/unfollow-from-feed.test.d.ts +2 -0
- package/dist/operations/unfollow-from-feed.test.d.ts.map +1 -0
- package/dist/operations/unfollow-from-feed.test.js +141 -0
- package/dist/operations/unfollow-from-feed.test.js.map +1 -0
- package/dist/testing/e2e-helpers.d.ts +9 -0
- package/dist/testing/e2e-helpers.d.ts.map +1 -1
- package/dist/testing/e2e-helpers.js +14 -0
- package/dist/testing/e2e-helpers.js.map +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +1 -1
- package/dist/testing/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,160 @@
|
|
|
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(),
|
|
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
|
+
}));
|
|
18
|
+
vi.mock("./navigate-away.js", () => ({
|
|
19
|
+
navigateAwayIf: vi.fn().mockResolvedValue(undefined),
|
|
20
|
+
}));
|
|
21
|
+
vi.mock("./get-feed.js", () => ({
|
|
22
|
+
waitForFeedLoad: vi.fn().mockResolvedValue(undefined),
|
|
23
|
+
}));
|
|
24
|
+
import { CDPClient } from "../cdp/client.js";
|
|
25
|
+
import { discoverTargets } from "../cdp/discovery.js";
|
|
26
|
+
import { humanizedScrollToByIndex } from "../linkedin/dom-automation.js";
|
|
27
|
+
import { hideFeedAuthor } from "./hide-feed-author.js";
|
|
28
|
+
const mockClient = {
|
|
29
|
+
connect: vi.fn().mockResolvedValue(undefined),
|
|
30
|
+
navigate: vi.fn().mockResolvedValue(undefined),
|
|
31
|
+
evaluate: vi.fn(),
|
|
32
|
+
disconnect: vi.fn(),
|
|
33
|
+
};
|
|
34
|
+
function setupMocks(hiddenName = "John Doe") {
|
|
35
|
+
vi.mocked(CDPClient).mockImplementation(function () {
|
|
36
|
+
return mockClient;
|
|
37
|
+
});
|
|
38
|
+
vi.mocked(discoverTargets).mockResolvedValue([
|
|
39
|
+
{ id: "target-1", type: "page", title: "LinkedIn", url: "https://www.linkedin.com/feed/", description: "", devtoolsFrontendUrl: "" },
|
|
40
|
+
]);
|
|
41
|
+
vi.mocked(humanizedScrollToByIndex).mockResolvedValue(undefined);
|
|
42
|
+
// First evaluate: click menu button by index → returns true
|
|
43
|
+
// Second evaluate: click "Hide posts by" menu item → returns hidden name
|
|
44
|
+
mockClient.evaluate
|
|
45
|
+
.mockResolvedValueOnce(true) // menu button clicked
|
|
46
|
+
.mockResolvedValueOnce(hiddenName); // hidden name from menu item
|
|
47
|
+
}
|
|
48
|
+
describe("hideFeedAuthor", () => {
|
|
49
|
+
beforeEach(() => {
|
|
50
|
+
vi.clearAllMocks();
|
|
51
|
+
});
|
|
52
|
+
afterEach(() => {
|
|
53
|
+
vi.restoreAllMocks();
|
|
54
|
+
});
|
|
55
|
+
it("throws on non-loopback host without allowRemote", async () => {
|
|
56
|
+
await expect(hideFeedAuthor({
|
|
57
|
+
feedIndex: 0,
|
|
58
|
+
cdpPort: 9222,
|
|
59
|
+
cdpHost: "192.168.1.100",
|
|
60
|
+
})).rejects.toThrow("requires --allow-remote");
|
|
61
|
+
});
|
|
62
|
+
it("allows non-loopback host with allowRemote", async () => {
|
|
63
|
+
setupMocks();
|
|
64
|
+
const result = await hideFeedAuthor({
|
|
65
|
+
feedIndex: 0,
|
|
66
|
+
cdpPort: 9222,
|
|
67
|
+
cdpHost: "192.168.1.100",
|
|
68
|
+
allowRemote: true,
|
|
69
|
+
});
|
|
70
|
+
expect(result.success).toBe(true);
|
|
71
|
+
});
|
|
72
|
+
it("throws when no LinkedIn page is found", async () => {
|
|
73
|
+
vi.mocked(discoverTargets).mockResolvedValue([
|
|
74
|
+
{ id: "target-1", type: "page", title: "Example", url: "https://example.com", description: "", devtoolsFrontendUrl: "" },
|
|
75
|
+
]);
|
|
76
|
+
await expect(hideFeedAuthor({
|
|
77
|
+
feedIndex: 0,
|
|
78
|
+
cdpPort: 9222,
|
|
79
|
+
})).rejects.toThrow("No LinkedIn page found");
|
|
80
|
+
});
|
|
81
|
+
it("throws when no feed post menu button is found", async () => {
|
|
82
|
+
vi.mocked(CDPClient).mockImplementation(function () {
|
|
83
|
+
return mockClient;
|
|
84
|
+
});
|
|
85
|
+
vi.mocked(discoverTargets).mockResolvedValue([
|
|
86
|
+
{ id: "target-1", type: "page", title: "LinkedIn", url: "https://www.linkedin.com/feed/", description: "", devtoolsFrontendUrl: "" },
|
|
87
|
+
]);
|
|
88
|
+
vi.mocked(humanizedScrollToByIndex).mockResolvedValue(undefined);
|
|
89
|
+
mockClient.evaluate.mockResolvedValueOnce(false); // no menu button
|
|
90
|
+
await expect(hideFeedAuthor({
|
|
91
|
+
feedIndex: 0,
|
|
92
|
+
cdpPort: 9222,
|
|
93
|
+
})).rejects.toThrow("No feed post menu button found");
|
|
94
|
+
});
|
|
95
|
+
it("throws when 'Hide posts by' menu item is not found", async () => {
|
|
96
|
+
setupMocks(null);
|
|
97
|
+
// Third evaluate is the Escape dismiss
|
|
98
|
+
mockClient.evaluate.mockResolvedValueOnce(undefined);
|
|
99
|
+
await expect(hideFeedAuthor({
|
|
100
|
+
feedIndex: 0,
|
|
101
|
+
cdpPort: 9222,
|
|
102
|
+
})).rejects.toThrow('No "Hide posts by" menu item found');
|
|
103
|
+
});
|
|
104
|
+
it("returns success with hidden name", async () => {
|
|
105
|
+
setupMocks("Jane Smith");
|
|
106
|
+
const result = await hideFeedAuthor({
|
|
107
|
+
feedIndex: 0,
|
|
108
|
+
cdpPort: 9222,
|
|
109
|
+
});
|
|
110
|
+
expect(result).toEqual({
|
|
111
|
+
success: true,
|
|
112
|
+
feedIndex: 0,
|
|
113
|
+
hiddenName: "Jane Smith",
|
|
114
|
+
dryRun: false,
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
it("navigates to the feed", async () => {
|
|
118
|
+
setupMocks();
|
|
119
|
+
await hideFeedAuthor({
|
|
120
|
+
feedIndex: 0,
|
|
121
|
+
cdpPort: 9222,
|
|
122
|
+
});
|
|
123
|
+
expect(mockClient.navigate).toHaveBeenCalledWith("https://www.linkedin.com/feed/");
|
|
124
|
+
});
|
|
125
|
+
it("scrolls menu button into view and clicks by index", async () => {
|
|
126
|
+
setupMocks();
|
|
127
|
+
await hideFeedAuthor({
|
|
128
|
+
feedIndex: 0,
|
|
129
|
+
cdpPort: 9222,
|
|
130
|
+
});
|
|
131
|
+
expect(humanizedScrollToByIndex).toHaveBeenCalledWith(mockClient, '[data-testid="mainFeed"] div[role="listitem"] button[aria-label^="Open control menu for post"]', 0, undefined);
|
|
132
|
+
// Menu button is clicked via evaluate (by index), not humanizedClick
|
|
133
|
+
expect(mockClient.evaluate).toHaveBeenCalled();
|
|
134
|
+
});
|
|
135
|
+
it("wraps menu interaction in retryInteraction", async () => {
|
|
136
|
+
setupMocks();
|
|
137
|
+
const { retryInteraction } = await import("../linkedin/dom-automation.js");
|
|
138
|
+
await hideFeedAuthor({
|
|
139
|
+
feedIndex: 0,
|
|
140
|
+
cdpPort: 9222,
|
|
141
|
+
});
|
|
142
|
+
expect(retryInteraction).toHaveBeenCalledWith(expect.any(Function), 3);
|
|
143
|
+
});
|
|
144
|
+
it("disconnects the CDP client even when an error occurs", async () => {
|
|
145
|
+
vi.mocked(CDPClient).mockImplementation(function () {
|
|
146
|
+
return mockClient;
|
|
147
|
+
});
|
|
148
|
+
vi.mocked(discoverTargets).mockResolvedValue([
|
|
149
|
+
{ id: "target-1", type: "page", title: "LinkedIn", url: "https://www.linkedin.com/feed/", description: "", devtoolsFrontendUrl: "" },
|
|
150
|
+
]);
|
|
151
|
+
vi.mocked(humanizedScrollToByIndex).mockResolvedValue(undefined);
|
|
152
|
+
mockClient.evaluate.mockRejectedValue(new Error("evaluation failed"));
|
|
153
|
+
await expect(hideFeedAuthor({
|
|
154
|
+
feedIndex: 0,
|
|
155
|
+
cdpPort: 9222,
|
|
156
|
+
})).rejects.toThrow("evaluation failed");
|
|
157
|
+
expect(mockClient.disconnect).toHaveBeenCalled();
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
//# sourceMappingURL=hide-feed-author.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hide-feed-author.test.js","sourceRoot":"","sources":["../../src/operations/hide-feed-author.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,16 +35,19 @@ export { addPeopleToCollection, type AddPeopleToCollectionInput, type AddPeopleT
|
|
|
35
35
|
export { removePeopleFromCollection, type RemovePeopleFromCollectionInput, type RemovePeopleFromCollectionOutput, } from "./remove-people-from-collection.js";
|
|
36
36
|
export { importPeopleFromCollection, type ImportPeopleFromCollectionInput, type ImportPeopleFromCollectionOutput, } from "./import-people-from-collection.js";
|
|
37
37
|
export { commentOnPost, type CommentOnPostInput, type CommentOnPostOutput, } from "./comment-on-post.js";
|
|
38
|
+
export { dismissFeedPost, type DismissFeedPostInput, type DismissFeedPostOutput, } from "./dismiss-feed-post.js";
|
|
38
39
|
export { getPost, type GetPostInput, type GetPostOutput, } from "./get-post.js";
|
|
39
40
|
export { getPostStats, extractPostUrn, resolvePostDetailUrl, type GetPostStatsInput, type GetPostStatsOutput, } from "./get-post-stats.js";
|
|
40
41
|
export { getPostEngagers, type GetPostEngagersInput, type GetPostEngagersOutput, } from "./get-post-engagers.js";
|
|
41
42
|
export { searchPosts, type SearchPostsInput, type SearchPostsOutput, } from "./search-posts.js";
|
|
42
43
|
export { getFeed, type GetFeedInput, type GetFeedOutput, } from "./get-feed.js";
|
|
44
|
+
export { hideFeedAuthor, type HideFeedAuthorInput, type HideFeedAuthorOutput, } from "./hide-feed-author.js";
|
|
43
45
|
export { getProfileActivity, extractProfileId, type GetProfileActivityInput, type GetProfileActivityOutput, } from "./get-profile-activity.js";
|
|
44
46
|
export { getActionBudget, type GetActionBudgetInput, type GetActionBudgetOutput, } from "./get-action-budget.js";
|
|
45
47
|
export { getThrottleStatus, type GetThrottleStatusInput, type GetThrottleStatusOutput, } from "./get-throttle-status.js";
|
|
46
48
|
export { visitProfile, type VisitProfileInput, type VisitProfileOutput, } from "./visit-profile.js";
|
|
47
49
|
export { reactToPost, REACTION_TYPES, type ReactToPostInput, type ReactToPostOutput, type ReactionType, } from "./react-to-post.js";
|
|
50
|
+
export { unfollowFromFeed, type UnfollowFromFeedInput, type UnfollowFromFeedOutput, } from "./unfollow-from-feed.js";
|
|
48
51
|
export { type EphemeralActionInput, } from "./ephemeral-action.js";
|
|
49
52
|
export { messagePerson, type MessagePersonInput, type MessagePersonOutput, } from "./message-person.js";
|
|
50
53
|
export { sendInvite, type SendInviteInput, type SendInviteOutput, } from "./send-invite.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/operations/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/operations/index.ts"],"names":[],"mappings":"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"}
|
package/dist/operations/index.js
CHANGED
|
@@ -47,6 +47,7 @@ export { removePeopleFromCollection, } from "./remove-people-from-collection.js"
|
|
|
47
47
|
export { importPeopleFromCollection, } from "./import-people-from-collection.js";
|
|
48
48
|
// Post interaction
|
|
49
49
|
export { commentOnPost, } from "./comment-on-post.js";
|
|
50
|
+
export { dismissFeedPost, } from "./dismiss-feed-post.js";
|
|
50
51
|
// Post detail
|
|
51
52
|
export { getPost, } from "./get-post.js";
|
|
52
53
|
// Post analytics
|
|
@@ -56,6 +57,7 @@ export { getPostEngagers, } from "./get-post-engagers.js";
|
|
|
56
57
|
export { searchPosts, } from "./search-posts.js";
|
|
57
58
|
// Feed
|
|
58
59
|
export { getFeed, } from "./get-feed.js";
|
|
60
|
+
export { hideFeedAuthor, } from "./hide-feed-author.js";
|
|
59
61
|
// Profile activity
|
|
60
62
|
export { getProfileActivity, extractProfileId, } from "./get-profile-activity.js";
|
|
61
63
|
// Action budget & throttle status
|
|
@@ -65,6 +67,7 @@ export { getThrottleStatus, } from "./get-throttle-status.js";
|
|
|
65
67
|
export { visitProfile, } from "./visit-profile.js";
|
|
66
68
|
// Post interaction
|
|
67
69
|
export { reactToPost, REACTION_TYPES, } from "./react-to-post.js";
|
|
70
|
+
export { unfollowFromFeed, } from "./unfollow-from-feed.js";
|
|
68
71
|
// Individual actions (ephemeral campaign)
|
|
69
72
|
export {} from "./ephemeral-action.js";
|
|
70
73
|
export { messagePerson, } from "./message-person.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/operations/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,eAAe,EAA0B,MAAM,YAAY,CAAC;AAErE,gBAAgB;AAChB,OAAO,EACL,WAAW,GAGZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAE7B,kBAAkB;AAClB,OAAO,EACL,kBAAkB,GAGnB,MAAM,2BAA2B,CAAC;AAEnC,qBAAqB;AACrB,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,GAGjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,GAGnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAE9B,yBAAyB;AACzB,OAAO,EACL,iBAAiB,GAGlB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,oBAAoB,GAGrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oBAAoB,GAGrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,sBAAsB,GAGvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAE9B,eAAe;AACf,OAAO,EACL,kBAAkB,GAGnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,qBAAqB,GAGtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,mBAAmB,GAGpB,MAAM,4BAA4B,CAAC;AAEpC,kBAAkB;AAClB,OAAO,EACL,SAAS,GAGV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAE7B,YAAY;AACZ,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,sBAAsB,GAGvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,GAGrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,oBAAoB,GAGrB,MAAM,6BAA6B,CAAC;AAErC,oBAAoB;AACpB,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAE7B,sBAAsB;AACtB,OAAO,EACL,eAAe,GAGhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,gBAAgB,GAGjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,gBAAgB,GAGjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,GAGtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,0BAA0B,GAG3B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,0BAA0B,GAG3B,MAAM,oCAAoC,CAAC;AAE5C,mBAAmB;AACnB,OAAO,EACL,aAAa,GAGd,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/operations/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,eAAe,EAA0B,MAAM,YAAY,CAAC;AAErE,gBAAgB;AAChB,OAAO,EACL,WAAW,GAGZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAE7B,kBAAkB;AAClB,OAAO,EACL,kBAAkB,GAGnB,MAAM,2BAA2B,CAAC;AAEnC,qBAAqB;AACrB,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,GAGjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,GAGnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAE9B,yBAAyB;AACzB,OAAO,EACL,iBAAiB,GAGlB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,oBAAoB,GAGrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oBAAoB,GAGrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,sBAAsB,GAGvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAE9B,eAAe;AACf,OAAO,EACL,kBAAkB,GAGnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,qBAAqB,GAGtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,mBAAmB,GAGpB,MAAM,4BAA4B,CAAC;AAEpC,kBAAkB;AAClB,OAAO,EACL,SAAS,GAGV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAE7B,YAAY;AACZ,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,sBAAsB,GAGvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,GAGrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,oBAAoB,GAGrB,MAAM,6BAA6B,CAAC;AAErC,oBAAoB;AACpB,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAE7B,sBAAsB;AACtB,OAAO,EACL,eAAe,GAGhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,gBAAgB,GAGjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,gBAAgB,GAGjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,GAGtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,0BAA0B,GAG3B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,0BAA0B,GAG3B,MAAM,oCAAoC,CAAC;AAE5C,mBAAmB;AACnB,OAAO,EACL,aAAa,GAGd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,eAAe,GAGhB,MAAM,wBAAwB,CAAC;AAEhC,cAAc;AACd,OAAO,EACL,OAAO,GAGR,MAAM,eAAe,CAAC;AAEvB,iBAAiB;AACjB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,oBAAoB,GAGrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,eAAe,GAGhB,MAAM,wBAAwB,CAAC;AAEhC,cAAc;AACd,OAAO,EACL,WAAW,GAGZ,MAAM,mBAAmB,CAAC;AAE3B,OAAO;AACP,OAAO,EACL,OAAO,GAGR,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,GAGf,MAAM,uBAAuB,CAAC;AAE/B,mBAAmB;AACnB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,GAGjB,MAAM,2BAA2B,CAAC;AAEnC,kCAAkC;AAClC,OAAO,EACL,eAAe,GAGhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iBAAiB,GAGlB,MAAM,0BAA0B,CAAC;AAElC,qBAAqB;AACrB,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAE5B,mBAAmB;AACnB,OAAO,EACL,WAAW,EACX,cAAc,GAIf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,gBAAgB,GAGjB,MAAM,yBAAyB,CAAC;AAEjC,0CAA0C;AAC1C,OAAO,EAEN,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,UAAU,GAGX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,UAAU,GAGX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,eAAe,GAGhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,gBAAgB,GAGjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,aAAa,GAId,MAAM,qBAAqB,CAAC;AAE7B,mCAAmC;AACnC,OAAO,EACL,gBAAgB,GAGjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,GAGtB,MAAM,8BAA8B,CAAC"}
|
|
@@ -21,6 +21,8 @@ export interface ReactToPostInput extends ConnectionOptions {
|
|
|
21
21
|
readonly reactionType?: ReactionType | undefined;
|
|
22
22
|
/** Optional humanized mouse for natural cursor movement and clicks. */
|
|
23
23
|
readonly mouse?: HumanizedMouse | null | undefined;
|
|
24
|
+
/** When true, detect the reaction state but do not click. */
|
|
25
|
+
readonly dryRun?: boolean | undefined;
|
|
24
26
|
}
|
|
25
27
|
export interface ReactToPostOutput {
|
|
26
28
|
readonly success: true;
|
|
@@ -28,6 +30,9 @@ export interface ReactToPostOutput {
|
|
|
28
30
|
readonly reactionType: ReactionType;
|
|
29
31
|
/** Whether the post was already reacted with the requested type (no-op). */
|
|
30
32
|
readonly alreadyReacted: boolean;
|
|
33
|
+
/** The reaction detected on the post before acting (null if none). */
|
|
34
|
+
readonly currentReaction: ReactionType | null;
|
|
35
|
+
readonly dryRun: boolean;
|
|
31
36
|
}
|
|
32
37
|
/**
|
|
33
38
|
* React to a LinkedIn post with a specified reaction type.
|
|
@@ -42,6 +47,10 @@ export interface ReactToPostOutput {
|
|
|
42
47
|
* - **Already reacted with a different type**: clicks the trigger to
|
|
43
48
|
* remove the existing reaction, then applies the requested one.
|
|
44
49
|
*
|
|
50
|
+
* When `dryRun` is `true`, the operation navigates to the post, detects
|
|
51
|
+
* the current reaction state, and validates that the reaction popup opens,
|
|
52
|
+
* but skips the final reaction click.
|
|
53
|
+
*
|
|
45
54
|
* @param input - Post URL, reaction type, and CDP connection parameters.
|
|
46
55
|
* @returns Confirmation of the reaction applied, including whether the
|
|
47
56
|
* post was already reacted with the requested type.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-to-post.d.ts","sourceRoot":"","sources":["../../src/operations/react-to-post.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAWrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,WAAW,GACX,SAAS,GACT,MAAM,GACN,YAAY,GACZ,OAAO,CAAC;AAYZ,sCAAsC;AACtC,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAE/B,CAAC;AAoDpB,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IACjD,uEAAuE;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"react-to-post.d.ts","sourceRoot":"","sources":["../../src/operations/react-to-post.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAWrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,WAAW,GACX,SAAS,GACT,MAAM,GACN,YAAY,GACZ,OAAO,CAAC;AAYZ,sCAAsC;AACtC,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAE/B,CAAC;AAoDpB,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IACjD,uEAAuE;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;IACnD,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,4EAA4E;IAC5E,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,sEAAsE;IACtE,QAAQ,CAAC,eAAe,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CA0G5B"}
|
|
@@ -71,6 +71,10 @@ async function detectCurrentReaction(client) {
|
|
|
71
71
|
* - **Already reacted with a different type**: clicks the trigger to
|
|
72
72
|
* remove the existing reaction, then applies the requested one.
|
|
73
73
|
*
|
|
74
|
+
* When `dryRun` is `true`, the operation navigates to the post, detects
|
|
75
|
+
* the current reaction state, and validates that the reaction popup opens,
|
|
76
|
+
* but skips the final reaction click.
|
|
77
|
+
*
|
|
74
78
|
* @param input - Post URL, reaction type, and CDP connection parameters.
|
|
75
79
|
* @returns Confirmation of the reaction applied, including whether the
|
|
76
80
|
* post was already reacted with the requested type.
|
|
@@ -80,6 +84,7 @@ export async function reactToPost(input) {
|
|
|
80
84
|
const cdpHost = input.cdpHost ?? "127.0.0.1";
|
|
81
85
|
const allowRemote = input.allowRemote ?? false;
|
|
82
86
|
const reactionType = input.reactionType ?? "like";
|
|
87
|
+
const dryRun = input.dryRun ?? false;
|
|
83
88
|
if (!REACTION_TYPES.includes(reactionType)) {
|
|
84
89
|
throw new Error(`Invalid reaction type "${reactionType}". ` +
|
|
85
90
|
`Valid types: ${REACTION_TYPES.join(", ")}`);
|
|
@@ -113,9 +118,11 @@ export async function reactToPost(input) {
|
|
|
113
118
|
postUrl: input.postUrl,
|
|
114
119
|
reactionType,
|
|
115
120
|
alreadyReacted: true,
|
|
121
|
+
currentReaction,
|
|
122
|
+
dryRun,
|
|
116
123
|
};
|
|
117
124
|
}
|
|
118
|
-
if (currentReaction !== null) {
|
|
125
|
+
if (!dryRun && currentReaction !== null) {
|
|
119
126
|
// Reacted with a different type — click trigger to unreact first
|
|
120
127
|
await humanizedClick(client, REACTION_TRIGGER, mouse);
|
|
121
128
|
// Wait for DOM to settle after unreacting — the trigger element
|
|
@@ -138,15 +145,19 @@ export async function reactToPost(input) {
|
|
|
138
145
|
await gaussianDelay(2_000, 300, 1_500, 3_000);
|
|
139
146
|
await waitForElement(client, reactionSelector, { timeout: 10_000 });
|
|
140
147
|
}, 3);
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
148
|
+
if (!dryRun) {
|
|
149
|
+
await humanizedClick(client, reactionSelector, mouse);
|
|
150
|
+
// Let the UI settle
|
|
151
|
+
await gaussianDelay(550, 75, 400, 700);
|
|
152
|
+
}
|
|
144
153
|
await gaussianDelay(1_500, 500, 700, 3_500); // Post-action dwell
|
|
145
154
|
return {
|
|
146
155
|
success: true,
|
|
147
156
|
postUrl: input.postUrl,
|
|
148
157
|
reactionType,
|
|
149
158
|
alreadyReacted: false,
|
|
159
|
+
currentReaction,
|
|
160
|
+
dryRun,
|
|
150
161
|
};
|
|
151
162
|
}
|
|
152
163
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-to-post.js","sourceRoot":"","sources":["../../src/operations/react-to-post.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEnI,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAsBlD,qEAAqE;AACrE,MAAM,kBAAkB,GAA2C;IACjE,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE,kBAAkB;IAC7B,OAAO,EAAE,gBAAgB;IACzB,IAAI,EAAE,aAAa;IACnB,UAAU,EAAE,mBAAmB;IAC/B,KAAK,EAAE,cAAc;CACtB,CAAC;AAEF,sCAAsC;AACtC,MAAM,CAAC,MAAM,cAAc,GAA4B,MAAM,CAAC,IAAI,CAChE,kBAAkB,CACD,CAAC;AAEpB,6EAA6E;AAC7E,MAAM,iBAAiB,GAAoD;IACzE,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF;;;;;;;;;GASG;AACH,KAAK,UAAU,qBAAqB,CAClC,MAAiB;IAEjB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CACjC;0CACsC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;;SAEjE,CACN,CAAC;IAEF,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,uDAAuD;IACvD,MAAM,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;IAClE,CAAC;IAED,8DAA8D;IAC9D,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5C,yDAAyD;IACzD,MAAM,UAAU,GAAG,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjE,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;IAChE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;
|
|
1
|
+
{"version":3,"file":"react-to-post.js","sourceRoot":"","sources":["../../src/operations/react-to-post.ts"],"names":[],"mappings":"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"}
|
|
@@ -102,6 +102,8 @@ describe("reactToPost", () => {
|
|
|
102
102
|
postUrl: "https://www.linkedin.com/feed/update/urn:li:activity:123/",
|
|
103
103
|
reactionType: "celebrate",
|
|
104
104
|
alreadyReacted: false,
|
|
105
|
+
currentReaction: null,
|
|
106
|
+
dryRun: false,
|
|
105
107
|
});
|
|
106
108
|
});
|
|
107
109
|
it("returns alreadyReacted when same reaction is active (post page)", async () => {
|
|
@@ -148,6 +150,53 @@ describe("reactToPost", () => {
|
|
|
148
150
|
expect(humanizedClick).toHaveBeenCalledTimes(2);
|
|
149
151
|
expect(humanizedHover).toHaveBeenCalled();
|
|
150
152
|
});
|
|
153
|
+
it("returns dryRun: true and hovers popup but skips click", async () => {
|
|
154
|
+
setupMocks();
|
|
155
|
+
const result = await reactToPost({
|
|
156
|
+
postUrl: "https://www.linkedin.com/feed/update/urn:li:activity:123/",
|
|
157
|
+
reactionType: "like",
|
|
158
|
+
cdpPort: 9222,
|
|
159
|
+
dryRun: true,
|
|
160
|
+
});
|
|
161
|
+
expect(result.success).toBe(true);
|
|
162
|
+
expect(result.dryRun).toBe(true);
|
|
163
|
+
expect(result.alreadyReacted).toBe(false);
|
|
164
|
+
expect(result.currentReaction).toBeNull();
|
|
165
|
+
// Should hover to validate popup opens, but NOT click
|
|
166
|
+
expect(humanizedHover).toHaveBeenCalled();
|
|
167
|
+
expect(humanizedClick).not.toHaveBeenCalled();
|
|
168
|
+
});
|
|
169
|
+
it("returns dryRun with currentReaction when a different reaction is active", async () => {
|
|
170
|
+
setupMocks();
|
|
171
|
+
mockClient.evaluate.mockResolvedValueOnce("Unreact Celebrate");
|
|
172
|
+
const result = await reactToPost({
|
|
173
|
+
postUrl: "https://www.linkedin.com/feed/update/urn:li:activity:123/",
|
|
174
|
+
reactionType: "like",
|
|
175
|
+
cdpPort: 9222,
|
|
176
|
+
dryRun: true,
|
|
177
|
+
});
|
|
178
|
+
expect(result.success).toBe(true);
|
|
179
|
+
expect(result.dryRun).toBe(true);
|
|
180
|
+
expect(result.alreadyReacted).toBe(false);
|
|
181
|
+
expect(result.currentReaction).toBe("celebrate");
|
|
182
|
+
// Should NOT click to unreact, but should hover to validate popup
|
|
183
|
+
expect(humanizedClick).not.toHaveBeenCalled();
|
|
184
|
+
expect(humanizedHover).toHaveBeenCalled();
|
|
185
|
+
});
|
|
186
|
+
it("returns alreadyReacted with dryRun when same reaction is active", async () => {
|
|
187
|
+
setupMocks();
|
|
188
|
+
mockClient.evaluate.mockResolvedValueOnce("Unreact Like");
|
|
189
|
+
const result = await reactToPost({
|
|
190
|
+
postUrl: "https://www.linkedin.com/feed/update/urn:li:activity:123/",
|
|
191
|
+
reactionType: "like",
|
|
192
|
+
cdpPort: 9222,
|
|
193
|
+
dryRun: true,
|
|
194
|
+
});
|
|
195
|
+
expect(result.success).toBe(true);
|
|
196
|
+
expect(result.dryRun).toBe(true);
|
|
197
|
+
expect(result.alreadyReacted).toBe(true);
|
|
198
|
+
expect(result.currentReaction).toBe("like");
|
|
199
|
+
});
|
|
151
200
|
it("navigates to the post URL", async () => {
|
|
152
201
|
setupMocks();
|
|
153
202
|
await reactToPost({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-to-post.test.js","sourceRoot":"","sources":["../../src/operations/react-to-post.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"react-to-post.test.js","sourceRoot":"","sources":["../../src/operations/react-to-post.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { HumanizedMouse } from "../linkedin/humanized-mouse.js";
|
|
2
|
+
import type { ConnectionOptions } from "./types.js";
|
|
3
|
+
export interface UnfollowFromFeedInput 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 UnfollowFromFeedOutput {
|
|
12
|
+
readonly success: true;
|
|
13
|
+
readonly feedIndex: number;
|
|
14
|
+
/** The name extracted from the "Unfollow {Name}" menu item. */
|
|
15
|
+
readonly unfollowedName: string;
|
|
16
|
+
readonly dryRun: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Unfollow the author of a LinkedIn post via its feed three-dot menu.
|
|
20
|
+
*
|
|
21
|
+
* Navigates to the LinkedIn home feed, opens the three-dot menu of the
|
|
22
|
+
* post at the given `feedIndex`, and clicks the "Unfollow {Name}" menu
|
|
23
|
+
* item. The unfollowed person's name is extracted from the menu item text.
|
|
24
|
+
*
|
|
25
|
+
* @param input - Feed index and CDP connection parameters.
|
|
26
|
+
* @returns Confirmation including the unfollowed person's name.
|
|
27
|
+
* @throws If the three-dot menu does not contain an "Unfollow" item.
|
|
28
|
+
*/
|
|
29
|
+
export declare function unfollowFromFeed(input: UnfollowFromFeedInput): Promise<UnfollowFromFeedOutput>;
|
|
30
|
+
//# sourceMappingURL=unfollow-from-feed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unfollow-from-feed.d.ts","sourceRoot":"","sources":["../../src/operations/unfollow-from-feed.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAQpD,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,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,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,+DAA+D;IAC/D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CAqHjC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
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, retryInteraction } 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
|
+
* Unfollow the author of a LinkedIn post via its feed three-dot menu.
|
|
14
|
+
*
|
|
15
|
+
* Navigates to the LinkedIn home feed, opens the three-dot menu of the
|
|
16
|
+
* post at the given `feedIndex`, and clicks the "Unfollow {Name}" menu
|
|
17
|
+
* item. The unfollowed person's name is extracted from the menu item text.
|
|
18
|
+
*
|
|
19
|
+
* @param input - Feed index and CDP connection parameters.
|
|
20
|
+
* @returns Confirmation including the unfollowed person's name.
|
|
21
|
+
* @throws If the three-dot menu does not contain an "Unfollow" item.
|
|
22
|
+
*/
|
|
23
|
+
export async function unfollowFromFeed(input) {
|
|
24
|
+
const cdpPort = await resolveInstancePort(input.cdpPort, input.cdpHost);
|
|
25
|
+
const cdpHost = input.cdpHost ?? "127.0.0.1";
|
|
26
|
+
const allowRemote = input.allowRemote ?? false;
|
|
27
|
+
// Enforce loopback guard
|
|
28
|
+
if (!allowRemote && cdpHost !== "127.0.0.1" && cdpHost !== "localhost") {
|
|
29
|
+
throw new Error(`Non-loopback CDP host "${cdpHost}" requires --allow-remote. ` +
|
|
30
|
+
"This is a security measure to prevent remote code execution.");
|
|
31
|
+
}
|
|
32
|
+
const targets = await discoverTargets(cdpPort, cdpHost);
|
|
33
|
+
const linkedInTarget = targets.find((t) => t.type === "page" && t.url?.includes("linkedin.com"));
|
|
34
|
+
if (!linkedInTarget) {
|
|
35
|
+
throw new Error("No LinkedIn page found in LinkedHelper. " +
|
|
36
|
+
"Ensure LinkedHelper is running with an active LinkedIn session.");
|
|
37
|
+
}
|
|
38
|
+
const client = new CDPClient(cdpPort, { host: cdpHost, allowRemote });
|
|
39
|
+
await client.connect(linkedInTarget.id);
|
|
40
|
+
try {
|
|
41
|
+
const mouse = input.mouse;
|
|
42
|
+
const dryRun = input.dryRun ?? false;
|
|
43
|
+
const feedIndex = input.feedIndex;
|
|
44
|
+
// Navigate to the feed (force fresh load if already there)
|
|
45
|
+
await navigateAwayIf(client, "/feed");
|
|
46
|
+
await client.navigate("https://www.linkedin.com/feed/");
|
|
47
|
+
await waitForFeedLoad(client);
|
|
48
|
+
await maybeHesitate();
|
|
49
|
+
// Scroll the menu button into view by index and click it, retrying if
|
|
50
|
+
// the menu does not open on the first attempt.
|
|
51
|
+
const unfollowedName = await retryInteraction(async () => {
|
|
52
|
+
await humanizedScrollToByIndex(client, FEED_MENU_BUTTON_SELECTOR, feedIndex, mouse);
|
|
53
|
+
const clicked = await client.evaluate(`(() => {
|
|
54
|
+
const btns = document.querySelectorAll(
|
|
55
|
+
${JSON.stringify(FEED_MENU_BUTTON_SELECTOR)}
|
|
56
|
+
);
|
|
57
|
+
const btn = btns[${feedIndex}];
|
|
58
|
+
if (!btn) return false;
|
|
59
|
+
btn.click();
|
|
60
|
+
return true;
|
|
61
|
+
})()`);
|
|
62
|
+
if (!clicked) {
|
|
63
|
+
throw new Error("No feed post menu button found. " +
|
|
64
|
+
"Ensure the feed index points to a visible feed post.");
|
|
65
|
+
}
|
|
66
|
+
await gaussianDelay(700, 100, 500, 900);
|
|
67
|
+
// Find and click the "Unfollow {Name}" menu item, extracting
|
|
68
|
+
// the name from the text.
|
|
69
|
+
const name = await client.evaluate(`(() => {
|
|
70
|
+
const dryRun = ${dryRun};
|
|
71
|
+
for (const el of document.querySelectorAll('[role="menuitem"]')) {
|
|
72
|
+
const text = el.textContent?.trim() ?? '';
|
|
73
|
+
if (text.startsWith('Unfollow ')) {
|
|
74
|
+
if (!dryRun) el.click();
|
|
75
|
+
return text.slice('Unfollow '.length);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
})()`);
|
|
80
|
+
if (!name) {
|
|
81
|
+
// Dismiss any open menu before retrying
|
|
82
|
+
await client.evaluate(`(() => {
|
|
83
|
+
document.dispatchEvent(
|
|
84
|
+
new KeyboardEvent('keydown', { key: 'Escape', bubbles: true })
|
|
85
|
+
);
|
|
86
|
+
})()`);
|
|
87
|
+
await gaussianDelay(300, 75, 200, 500);
|
|
88
|
+
throw new Error('No "Unfollow" item found in the post control menu. ' +
|
|
89
|
+
"The post author may already be unfollowed, or the post " +
|
|
90
|
+
"may not support this action.");
|
|
91
|
+
}
|
|
92
|
+
return name;
|
|
93
|
+
}, 3);
|
|
94
|
+
if (dryRun) {
|
|
95
|
+
await client.evaluate(`(() => {
|
|
96
|
+
document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true }));
|
|
97
|
+
})()`);
|
|
98
|
+
await gaussianDelay(300, 75, 200, 500);
|
|
99
|
+
}
|
|
100
|
+
// Let the UI settle after clicking Unfollow
|
|
101
|
+
await gaussianDelay(550, 75, 400, 700);
|
|
102
|
+
await gaussianDelay(1_500, 500, 700, 3_500); // Post-action dwell
|
|
103
|
+
return {
|
|
104
|
+
success: true,
|
|
105
|
+
feedIndex: input.feedIndex,
|
|
106
|
+
unfollowedName,
|
|
107
|
+
dryRun,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
client.disconnect();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=unfollow-from-feed.js.map
|