salesprompter-cli 0.1.49 → 0.1.50
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/cli.js +36 -7
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -7755,6 +7755,8 @@ async function createLocalAccountSearchBrowserRelay(requestedPort) {
|
|
|
7755
7755
|
status: "task",
|
|
7756
7756
|
requestId: pending.requestId,
|
|
7757
7757
|
url: pending.url,
|
|
7758
|
+
headers: pending.headers,
|
|
7759
|
+
requiredHeaders: pending.requiredHeaders,
|
|
7758
7760
|
}
|
|
7759
7761
|
: { status: "idle" });
|
|
7760
7762
|
return;
|
|
@@ -7793,7 +7795,10 @@ async function createLocalAccountSearchBrowserRelay(requestedPort) {
|
|
|
7793
7795
|
return;
|
|
7794
7796
|
}
|
|
7795
7797
|
if (!Number.isFinite(status) || status < 200 || status >= 300) {
|
|
7796
|
-
|
|
7798
|
+
const recovery = status === 401 || status === 403
|
|
7799
|
+
? " Refresh the Sales Navigator search, capture the current csrf-token from a native Lead Search request, and replay this task with the supplied headers."
|
|
7800
|
+
: "";
|
|
7801
|
+
current.reject(new Error(`Sales Navigator browser relay failed with HTTP ${status}: ${bodyPreview}.${recovery}`));
|
|
7797
7802
|
writeLocalAccountSearchRelayJson(response, 200, {
|
|
7798
7803
|
status: "failed",
|
|
7799
7804
|
});
|
|
@@ -7828,21 +7833,37 @@ async function createLocalAccountSearchBrowserRelay(requestedPort) {
|
|
|
7828
7833
|
}
|
|
7829
7834
|
return {
|
|
7830
7835
|
port: address.port,
|
|
7831
|
-
request(
|
|
7836
|
+
request(request) {
|
|
7832
7837
|
if (pending) {
|
|
7833
7838
|
throw new Error("Account Search browser relay already has a pending task.");
|
|
7834
7839
|
}
|
|
7835
|
-
const parsedUrl = new URL(url);
|
|
7840
|
+
const parsedUrl = new URL(request.url);
|
|
7836
7841
|
if (!/(^|\.)linkedin\.com$/i.test(parsedUrl.hostname) ||
|
|
7837
7842
|
!(parsedUrl.pathname.includes("/sales-api/salesApiAccountSearch") ||
|
|
7838
7843
|
parsedUrl.pathname.includes("/sales-api/salesApiLeadSearch"))) {
|
|
7839
7844
|
throw new Error("Browser relay only accepts LinkedIn Account or Lead Search API URLs.");
|
|
7840
7845
|
}
|
|
7846
|
+
const headers = Object.fromEntries(Object.entries(request.headers)
|
|
7847
|
+
.map(([name, value]) => [name.toLowerCase(), value])
|
|
7848
|
+
.filter(([name]) => ![
|
|
7849
|
+
"cookie",
|
|
7850
|
+
"host",
|
|
7851
|
+
"origin",
|
|
7852
|
+
"referer",
|
|
7853
|
+
"content-length",
|
|
7854
|
+
"user-agent",
|
|
7855
|
+
].includes(name)));
|
|
7856
|
+
headers.accept ??= "*/*";
|
|
7857
|
+
headers["x-restli-protocol-version"] ??= "2.0.0";
|
|
7841
7858
|
requestSequence += 1;
|
|
7842
7859
|
return new Promise((resolve, reject) => {
|
|
7843
7860
|
pending = {
|
|
7844
7861
|
requestId: `sales-nav-search-${requestSequence}`,
|
|
7845
|
-
url,
|
|
7862
|
+
url: request.url,
|
|
7863
|
+
headers,
|
|
7864
|
+
requiredHeaders: parsedUrl.pathname.includes("salesApiLeadSearch")
|
|
7865
|
+
? ["csrf-token"]
|
|
7866
|
+
: [],
|
|
7846
7867
|
resolve,
|
|
7847
7868
|
reject,
|
|
7848
7869
|
};
|
|
@@ -13281,7 +13302,7 @@ async function runSalesNavigatorPeopleCollectCommand(options) {
|
|
|
13281
13302
|
retryMaxDelayMs: 10_000
|
|
13282
13303
|
},
|
|
13283
13304
|
executeRequest: browserRelay
|
|
13284
|
-
? (request) => browserRelay.request(request
|
|
13305
|
+
? (request) => browserRelay.request(request)
|
|
13285
13306
|
: undefined
|
|
13286
13307
|
});
|
|
13287
13308
|
}
|
|
@@ -13303,6 +13324,14 @@ async function runSalesNavigatorPeopleCollectCommand(options) {
|
|
|
13303
13324
|
dryRun: false,
|
|
13304
13325
|
collected: collected.people.length,
|
|
13305
13326
|
totalResults: collected.totalResults,
|
|
13327
|
+
collectionComplete: collected.totalResults != null &&
|
|
13328
|
+
collected.people.length >= collected.totalResults,
|
|
13329
|
+
truncated: collected.totalResults != null &&
|
|
13330
|
+
collected.totalResults > collected.people.length &&
|
|
13331
|
+
collected.people.length >= maxResults,
|
|
13332
|
+
remainingResults: collected.totalResults == null
|
|
13333
|
+
? null
|
|
13334
|
+
: Math.max(0, collected.totalResults - collected.people.length),
|
|
13306
13335
|
fetchedPages: collected.fetchedPages,
|
|
13307
13336
|
runId: imported.runId,
|
|
13308
13337
|
imported: imported.imported,
|
|
@@ -13359,7 +13388,7 @@ async function runAffiliateLaunchCommand(options) {
|
|
|
13359
13388
|
retryMaxDelayMs: 10_000,
|
|
13360
13389
|
},
|
|
13361
13390
|
executeRequest: browserRelay
|
|
13362
|
-
? (request) => browserRelay.request(request
|
|
13391
|
+
? (request) => browserRelay.request(request)
|
|
13363
13392
|
: undefined,
|
|
13364
13393
|
});
|
|
13365
13394
|
}
|
|
@@ -14464,7 +14493,7 @@ program
|
|
|
14464
14493
|
};
|
|
14465
14494
|
};
|
|
14466
14495
|
const executeRequest = (request) => browserRelay
|
|
14467
|
-
? browserRelay.request(request
|
|
14496
|
+
? browserRelay.request(request)
|
|
14468
14497
|
: fetchLocalSalesNavigatorRequest(request, retry);
|
|
14469
14498
|
try {
|
|
14470
14499
|
let requestsThisRun = 0;
|
package/package.json
CHANGED