mcp-scraper 0.89.1 → 0.89.2
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/CHANGELOG.md +33 -14
- package/README.md +3 -3
- package/THIRD_PARTY_NOTICES.html +203 -0
- package/dist/{analytics-repository-J25XR5E7.js → analytics-repository-X6J7TWTL.js} +1 -1
- package/dist/bin/api-server.js +1 -1
- package/dist/bin/mcp-scraper-cli.js +1 -1
- package/dist/bin/mcp-scraper-core.js +1 -1
- package/dist/bin/mcp-scraper-install.js +1 -1
- package/dist/bin/mcp-stdio-server.js +1 -1
- package/dist/bin/paa-harvest.js +1 -1
- package/dist/{chunk-FFPD2DOF.js → chunk-2O3UYISB.js} +1 -1
- package/dist/chunk-3GP5CYZX.js +1 -1
- package/dist/{chunk-MEM4D2QN.js → chunk-3MUEBDWY.js} +4 -4
- package/dist/chunk-4FROKQJN.js +1 -1
- package/dist/{chunk-RYNHNEF3.js → chunk-D4NOJAUN.js} +15 -15
- package/dist/{chunk-645LQBE7.js → chunk-DEPJ4ZZ6.js} +1 -1
- package/dist/{chunk-IJ2AO7AO.js → chunk-DMCYIWB3.js} +1 -1
- package/dist/{chunk-ZHORX44A.js → chunk-EN66HBAW.js} +1 -1
- package/dist/{chunk-PRWZNHQB.js → chunk-HYQDXTS7.js} +1 -1
- package/dist/{chunk-6QO4F2KC.js → chunk-J7EVLE6H.js} +3 -3
- package/dist/{chunk-57AHYL2O.js → chunk-K7KMLT33.js} +1 -1
- package/dist/{chunk-YUPLOOTB.js → chunk-MKEMCMRO.js} +1 -1
- package/dist/chunk-QPWPR5XG.js +3 -3
- package/dist/chunk-S7RA23GR.js +1 -0
- package/dist/chunk-TW46NKVH.js +1 -0
- package/dist/{chunk-DGBLGFNJ.js → chunk-VEJQ4XPI.js} +1 -1
- package/dist/{chunk-D6IQJP64.js → chunk-Z27SYWYD.js} +1 -1
- package/dist/{chunk-63T4W2LX.js → chunk-Z66Z2HV4.js} +87 -83
- package/dist/{chunk-CCYWSJNG.js → chunk-ZWZ6OWY6.js} +1 -1
- package/dist/{db-JJWJLAVQ.js → db-NLGNTQC3.js} +1 -1
- package/dist/{extract-bundle-TTSEGWYF.js → extract-bundle-TXH3VNXH.js} +1 -1
- package/dist/{gmail-service-34PIJRLK.js → gmail-service-J2DWSQJX.js} +1 -1
- package/dist/index.cjs +49 -37
- package/dist/index.d.cts +14 -14
- package/dist/index.d.ts +14 -14
- package/dist/index.js +1 -1
- package/dist/{lead-list-enrichment-repository-VJBBMBCG.js → lead-list-enrichment-repository-G7Z5DQZR.js} +1 -1
- package/dist/{location-data-repository-W3LPT6G3.js → location-data-repository-TEXZ3I2N.js} +1 -1
- package/dist/{server-UEY5YQL6.js → server-LBOFC2EE.js} +718 -711
- package/dist/{site-extract-repository-7W5ZUNPR.js → site-extract-repository-MBSCAP4D.js} +1 -1
- package/dist/worker-SUCJKWU2.js +1 -0
- package/package.json +17 -131
- package/dist/chunk-5H3MCTTP.js +0 -1
- package/dist/chunk-FXEWHK54.js +0 -1
- package/dist/worker-ZOTOKG56.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as s,B as t,C as u,D as v,E as w,F as x,G as y,H as z,I as A,J as B,K as C,L as D,M as E,i as a,j as b,k as c,l as d,m as e,n as f,o as g,p as h,q as i,r as j,s as k,t as l,u as m,v as n,w as o,x as p,y as q,z as r}from"./chunk-
|
|
1
|
+
import{A as s,B as t,C as u,D as v,E as w,F as x,G as y,H as z,I as A,J as B,K as C,L as D,M as E,i as a,j as b,k as c,l as d,m as e,n as f,o as g,p as h,q as i,r as j,s as k,t as l,u as m,v as n,w as o,x as p,y as q,z as r}from"./chunk-VEJQ4XPI.js";import"./chunk-TMB56NCA.js";import"./chunk-MZN4U5BL.js";import"./chunk-Z66Z2HV4.js";export{a as XRAY_ENTITLED_EXTRACT_BILLING_CLASS,q as abandonExtractSettlement,p as claimFailedExtractJobForRefinalize,z as completeExtractJob,w as countSuccessfulPages,d as createExtractJob,f as createOrGetExtractJob,b as extractJobLimitInfo,A as failExtractJob,o as failStaleRunningExtractJob,B as failUnfundedExtractJob,E as finalizeXRayEntitledExtractJobCharge,y as finishExtractJob,g as getExtractJob,e as getExtractJobByIdempotencyKey,v as getExtractedImageLinks,u as getExtractedPages,x as getExtractedUrls,h as listExtractJobs,t as listExtractPages,j as listFundedPendingExtractJobs,n as listStaleRunningExtractJobs,i as listUnsettledExtractJobs,k as markExtractJobDispatchAttempt,l as recordExtractJobDispatchFailure,m as recordExtractSettlementFailure,s as saveExtractPages,C as setExtractJobPublicError,r as setExtractJobTotal,D as settleExtractJob,c as terminalExtractJobStatus};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as h,b as f,c as O,d as y,f as A,g as b}from"./chunk-HYQDXTS7.js";import"./chunk-YQZGZBB4.js";import{u as k}from"./chunk-J7EVLE6H.js";import"./chunk-QPWPR5XG.js";import{b as p,c as M}from"./chunk-S7RA23GR.js";import{a as m,b as H}from"./chunk-MZN4U5BL.js";import{a as w}from"./chunk-4FROKQJN.js";import{b as _}from"./chunk-D4NOJAUN.js";import"./chunk-3GP5CYZX.js";import{$a as v,Eb as o,Ib as d,Na as u,bb as c,ja as l}from"./chunk-Z66Z2HV4.js";var C=2,g=0;function R(e){if(!e||typeof e!="object")return 0;let t=e;return typeof t.totalQuestions=="number"?t.totalQuestions:Array.isArray(t.flat)?t.flat.length:0}function x(e){return m.paa_base+Math.max(1,e)*m.paa}async function P(e){g++;try{let t=typeof e.options=="string"?JSON.parse(e.options):e.options,r={value:null},a=await _({op:t.serpOnly?"serp":"paa",userId:Number(e.user_id),headlessSentOut:r},()=>k({...t,\u006b\u0065\u0072\u006e\u0065\u006cApiKey:w(),headless:!0,format:"json",outputDir:"/tmp/paa-output-api",onAttemptEvent:A(e.id,e.user_id)}));await v(e.id,a);let s=await l(e.id,e.user_id);if(!t.serpOnly&&typeof t.billingHoldMc=="number"){let n=x(R(a)),i=t.billingHoldMc-n;i>0?await o(e.user_id,i,"paa_refund","overestimate refund"):i<0&&await d(e.user_id,-i,"paa",t.query??e.query)}else if(t.serpOnly&&typeof t.billingHoldMc=="number"){let n=H(r.value),i=t.billingHoldMc-n;i>0?await o(e.user_id,i,"serp_refund","headless-mode pricing settle"):i<0&&await d(e.user_id,-i,"serp",t.query??e.query)}e.callback_url&&await b(e.callback_url,{job_id:e.id,status:"done",result:M(a),attempts:p(s)})}catch(t){console.error("[harvest/worker] failed",{jobId:e.id,error:t instanceof Error?t.message:String(t)});let r=h(t),a=typeof e.options=="string"?JSON.parse(e.options):e.options,s=typeof a.billingHoldMc=="number"&&a.billingHoldMc>0;await c(e.id,f(r),y(r,{chargeStatus:s?"refund_pending":"not_charged"}));let n=await l(e.id,e.user_id);try{s&&(await o(e.user_id,a.billingHoldMc,"refund","failed call"),await c(e.id,f(r),y(r,{chargeStatus:"refunded"})))}catch{}e.callback_url&&await b(e.callback_url,{job_id:e.id,status:"failed",...O(r),attempts:p(n)})}finally{g--}}async function J(){let e=await u();if(!e)return{claimed:!1};let t=Date.now();return await P(e),{claimed:!0,jobId:e.id,completed:!0,durationMs:Date.now()-t}}async function W(e){let t=[];for(let r=0;r<e.maxJobs&&!(Date.now()>=e.deadlineMs);r++){let a=await J();if(t.push(a),!a.claimed)break}return t}function B(){setInterval(async()=>{if(g>=C)return;let e=await u();e&&P(e)},2e3),console.log(`[worker] started \u2014 polling every 2s, max ${C} concurrent`)}export{W as drainQueue,B as startWorker,J as tickOnce};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-scraper",
|
|
3
|
-
"version": "0.89.
|
|
3
|
+
"version": "0.89.2",
|
|
4
4
|
"description": "MCP server for MCP Scraper web intelligence tools",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -23,104 +23,11 @@
|
|
|
23
23
|
"mcp-scraper-install": "dist/bin/mcp-scraper-install.js",
|
|
24
24
|
"mcp-scraper-cli": "dist/bin/mcp-scraper-cli.js"
|
|
25
25
|
},
|
|
26
|
-
"files": [
|
|
27
|
-
"dist/*.js",
|
|
28
|
-
"dist/*.cjs",
|
|
29
|
-
"dist/*.d.ts",
|
|
30
|
-
"dist/*.d.cts",
|
|
31
|
-
"dist/bin/*.js",
|
|
32
|
-
"dist/editorial-reading-room/assets",
|
|
33
|
-
"public/agent-install.md",
|
|
34
|
-
"public/.well-known/xray-install.json",
|
|
35
|
-
"README.md",
|
|
36
|
-
"CHANGELOG.md"
|
|
37
|
-
],
|
|
38
|
-
"repository": {
|
|
39
|
-
"type": "git",
|
|
40
|
-
"url": "git+https://github.com/VilovietaSEO/mcp-scraper.git"
|
|
41
|
-
},
|
|
42
26
|
"homepage": "https://mcpscraper.dev",
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
},
|
|
46
|
-
"scripts": {
|
|
47
|
-
"build": "tsup",
|
|
48
|
-
"build:md": "node scripts/build-md-mirror.mjs",
|
|
49
|
-
"build:mcpb": "npm run build && node scripts/build-mcpb.mjs",
|
|
50
|
-
"build:mcpb:candidate": "npm run build && node scripts/build-mcpb.mjs --candidate",
|
|
51
|
-
"build:rates": "node --import tsx scripts/gen-rates.ts",
|
|
52
|
-
"build:geotargets": "node --import tsx scripts/gen-geotargets.ts",
|
|
53
|
-
"build:blog": "node scripts/run-ts-sandbox-safe.mjs scripts/build-blog.ts",
|
|
54
|
-
"mcp:manifest": "node scripts/run-ts-sandbox-safe.mjs scripts/generate-mcp-tool-manifest.ts",
|
|
55
|
-
"contracts:memory": "node --import tsx scripts/generate-memory-tool-contract.ts",
|
|
56
|
-
"contracts:memory-governed": "node --import tsx scripts/generate-governed-memory-mcp-schemas.ts",
|
|
57
|
-
"verify:crm-authority": "node --import tsx scripts/verify-crm-authority-boundary.ts",
|
|
58
|
-
"contracts:openapi": "node --import tsx scripts/generate-personal-assistant-openapi.ts",
|
|
59
|
-
"contracts:assistant": "npm run mcp:manifest && npm run contracts:memory && npm run contracts:openapi",
|
|
60
|
-
"contracts:assistant:verify": "node --import tsx scripts/verify-personal-assistant-contract.ts",
|
|
61
|
-
"contracts:assistant:verify:release": "node --import tsx scripts/verify-personal-assistant-contract.ts --release",
|
|
62
|
-
"mcp:memory-image-schemas": "node scripts/generate-memory-image-mcp-schemas.mjs",
|
|
63
|
-
"mcp:measure-catalog": "node scripts/run-ts-sandbox-safe.mjs scripts/measure-mcp-catalog.ts",
|
|
64
|
-
"mcp:lint-tools": "node scripts/run-ts-sandbox-safe.mjs scripts/lint-mcp-tool-craft.ts",
|
|
65
|
-
"mcp:lint-tools:write": "node scripts/run-ts-sandbox-safe.mjs scripts/lint-mcp-tool-craft.ts --write",
|
|
66
|
-
"xray:install-contract": "node --import tsx scripts/generate-xray-install-contract.ts",
|
|
67
|
-
"xray:install-contract:check": "node --import tsx scripts/generate-xray-install-contract.ts --check",
|
|
68
|
-
"api": "node scripts/run-ts-sandbox-safe.mjs bin/api-server.ts",
|
|
69
|
-
"dev": "node scripts/run-ts-sandbox-safe.mjs src/cli.ts",
|
|
70
|
-
"test": "vitest run tests/unit tests/contract",
|
|
71
|
-
"test:live": "vitest run --config vitest.live.config.ts",
|
|
72
|
-
"test:site-similarity": "node --import tsx scripts/run-site-similarity-live.ts",
|
|
73
|
-
"reanalyze:site-similarity": "node --import tsx scripts/reanalyze-site-similarity-zip.ts",
|
|
74
|
-
"test:headless-harvest": "node scripts/run-ts-sandbox-safe.mjs tests/live/harness/headless-harvest-canary.ts",
|
|
75
|
-
"test:integration": "node scripts/run-integration-tests.mjs",
|
|
76
|
-
"test:smoke": "vitest run tests/smoke",
|
|
77
|
-
"test:stripe": "node scripts/stripe-setup-smoke.mjs",
|
|
78
|
-
"typecheck": "tsc --noEmit",
|
|
79
|
-
"test:kernel": "vitest run tests/integration/kernel.smoke.test.ts",
|
|
80
|
-
"sync:env": "bash scripts/push-env.sh",
|
|
81
|
-
"sync:env:apply": "bash scripts/push-env.sh --apply",
|
|
82
|
-
"locations:publish-geonames": "node --import tsx scripts/publish-geonames-location-data.ts",
|
|
83
|
-
"locations:sync": "node --import tsx scripts/sync-hosted-location-data.ts",
|
|
84
|
-
"integrations:migrate-scheduler": "node --import tsx scripts/migrate-scheduler-integrations.ts",
|
|
85
|
-
"test:webhook": "node scripts/test-webhook.mjs",
|
|
86
|
-
"test:e2e": "playwright test",
|
|
87
|
-
"email:preview": "node scripts/run-ts-sandbox-safe.mjs scripts/email/render-previews.ts",
|
|
88
|
-
"email:preflight": "node --import tsx scripts/email/preflight.ts",
|
|
89
|
-
"email:avatar": "node --import tsx scripts/email/generate-sender-avatar.ts",
|
|
90
|
-
"email:inbound:setup": "node --import tsx scripts/email/setup-resend-inbound.ts",
|
|
91
|
-
"email:audience": "node scripts/run-ts-sandbox-safe.mjs scripts/email/sync-resend-audience.ts",
|
|
92
|
-
"email:drafts": "node scripts/run-ts-sandbox-safe.mjs scripts/email/create-resend-drafts.ts",
|
|
93
|
-
"email:workshop-reminders": "node --import tsx scripts/email/refresh-workshop-reminders.ts",
|
|
94
|
-
"email:workshop-reminders:apply": "node --import tsx scripts/email/refresh-workshop-reminders.ts --apply",
|
|
95
|
-
"billing:preview-credit-lot-repair": "node --import tsx scripts/billing/preview-credit-lot-repair.ts",
|
|
96
|
-
"billing:apply-credit-lot-repair": "node --import tsx scripts/billing/apply-credit-lot-repair.ts",
|
|
97
|
-
"brightdata:usage": "node scripts/brightdata-usage-report.mjs",
|
|
98
|
-
"brightdata:test:bandwidth": "node --import tsx scripts/brightdata-paa-bandwidth-test.ts",
|
|
99
|
-
"db:migrate": "node --import tsx scripts/run-core-migration.ts",
|
|
100
|
-
"oauth-store:migrate": "node --import tsx scripts/migrate-oauth-store.ts --apply-schema",
|
|
101
|
-
"oauth-store:verify": "node --import tsx scripts/migrate-oauth-store.ts --verify",
|
|
102
|
-
"oauth-store:test": "vitest run tests/unit/oauth-store.test.ts",
|
|
103
|
-
"oauth-store:test-remote": "OAUTH_STORE_REMOTE_REQUIRED=1 vitest run --config vitest.live.config.ts tests/live/oauth-store-remote.live.test.ts",
|
|
104
|
-
"oauth:verify-live": "node scripts/verify-mcp-oauth-live.mjs",
|
|
105
|
-
"analytics:migrate": "node --import tsx scripts/run-analytics-migration.ts",
|
|
106
|
-
"analytics:contract": "node --import tsx scripts/analytics/export-analytics-rest-contract.ts",
|
|
107
|
-
"analytics:contract:check": "node --import tsx scripts/analytics/export-analytics-rest-contract.ts --check",
|
|
108
|
-
"assistant:migrate": "node --import tsx scripts/run-personal-assistant-migration.ts",
|
|
109
|
-
"assistant:schema:verify": "vitest run tests/unit/personal-assistant-db.test.ts tests/unit/personal-assistant-production-stores.test.ts tests/integration/personal-assistant-db.test.ts",
|
|
110
|
-
"assistant:deployment:preflight": "node --import tsx scripts/verify-personal-assistant-deployment-config.ts",
|
|
111
|
-
"analytics:rollups": "node --import tsx scripts/run-analytics-rollups.ts",
|
|
112
|
-
"test:mcp-output-contract": "vitest run --config vitest.mcp-output-contract.config.ts tests/unit/golden-payloads.test.ts tests/unit/mcp-formatter-structured.test.ts tests/unit/mcp-2026-stdio.test.ts",
|
|
113
|
-
"mcp:verify": "npm run xray:install-contract:check && npm run build && npm run mcp:manifest && npm run build:rates && npm run mcp:measure-catalog && npm run mcp:lint-tools && npm run test:mcp-output-contract && npm run typecheck && npm test && npm run package:verify-entrypoints",
|
|
114
|
-
"prepack": "npm run mcp:verify",
|
|
115
|
-
"package:verify-entrypoints": "node scripts/verify-package-entrypoints.mjs",
|
|
116
|
-
"product:install": "node scripts/run-product-command.mjs install",
|
|
117
|
-
"product:build": "node scripts/run-product-command.mjs build",
|
|
118
|
-
"product:typecheck": "node scripts/run-product-command.mjs typecheck",
|
|
119
|
-
"product:test": "node scripts/run-product-command.mjs test",
|
|
120
|
-
"product:verify-layout": "node scripts/verify-product-repository-layout.mjs",
|
|
121
|
-
"package:public": "npm run mcp:verify && node scripts/build-public-package.mjs",
|
|
122
|
-
"prepublishOnly": "node -e \"throw new Error('Publish the verified archive produced by npm run package:public')\""
|
|
27
|
+
"engines": {
|
|
28
|
+
"node": ">=20.18.1"
|
|
123
29
|
},
|
|
30
|
+
"license": "ISC",
|
|
124
31
|
"dependencies": {
|
|
125
32
|
"@anthropic-ai/sdk": "^0.96.0",
|
|
126
33
|
"@fal-ai/client": "^1.10.1",
|
|
@@ -159,38 +66,17 @@
|
|
|
159
66
|
"youtube-transcript": "^1.3.1",
|
|
160
67
|
"zod": "4.4.3"
|
|
161
68
|
},
|
|
162
|
-
"
|
|
163
|
-
"
|
|
164
|
-
"
|
|
165
|
-
"
|
|
166
|
-
"
|
|
167
|
-
"
|
|
168
|
-
"
|
|
169
|
-
"
|
|
170
|
-
"
|
|
171
|
-
"
|
|
172
|
-
"
|
|
173
|
-
"
|
|
174
|
-
|
|
175
|
-
"dotenv": "^17.4.2",
|
|
176
|
-
"esbuild": "^0.27.7",
|
|
177
|
-
"fflate": "^0.7.4",
|
|
178
|
-
"jsdom": "^29.1.1",
|
|
179
|
-
"tsup": "^8.0.0",
|
|
180
|
-
"tsx": "^4.0.0",
|
|
181
|
-
"typescript": "^5.4.0",
|
|
182
|
-
"vitest": "^1.6.0",
|
|
183
|
-
"youtubei.js": "^17.0.1",
|
|
184
|
-
"@onkernel/sdk": "^0.93.0"
|
|
185
|
-
},
|
|
186
|
-
"engines": {
|
|
187
|
-
"node": ">=20.18.1"
|
|
188
|
-
},
|
|
189
|
-
"directories": {
|
|
190
|
-
"doc": "docs",
|
|
191
|
-
"test": "tests"
|
|
192
|
-
},
|
|
193
|
-
"keywords": [],
|
|
194
|
-
"author": "",
|
|
195
|
-
"license": "ISC"
|
|
69
|
+
"files": [
|
|
70
|
+
"dist/*.js",
|
|
71
|
+
"dist/*.cjs",
|
|
72
|
+
"dist/*.d.ts",
|
|
73
|
+
"dist/*.d.cts",
|
|
74
|
+
"dist/bin/*.js",
|
|
75
|
+
"dist/editorial-reading-room/assets",
|
|
76
|
+
"public/agent-install.md",
|
|
77
|
+
"public/.well-known/xray-install.json",
|
|
78
|
+
"README.md",
|
|
79
|
+
"CHANGELOG.md",
|
|
80
|
+
"THIRD_PARTY_NOTICES.html"
|
|
81
|
+
]
|
|
196
82
|
}
|
package/dist/chunk-5H3MCTTP.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var o="0.89.1";export{o as a};
|
package/dist/chunk-FXEWHK54.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{g as _,i as c}from"./chunk-63T4W2LX.js";var g={kernel:"browserRuntime"},a=/error|message/i,w=/(?:spending|billing|organization|account).{0,80}(?:cap|limit|blocked|disabled)|(?:quota|capacity).{0,40}(?:reached|exceeded)|https?:\/\/\S*(?:dashboard|onkernel)/i,E=/\b(?:ENOENT|ENOTDIR|EACCES|EPERM|EISDIR|EMFILE|ENFILE)\b|\b(?:mkdir|open|stat|lstat|readFile|writeFile)\s+['"]?(?:\/|[A-Za-z]:\\)|(?:^|[\s'"])(?:\/Users|\/home|\/tmp|\/var|\/private|\/opt|\/srv|\/root)\//i,k=new Set(["kernel_session_id","browser_session_id","kernelSessionId","browserSessionId","sessionId","kernel_delete_started","session_cleanup_started","kernelDeleteStarted","sessionCleanupStarted","kernel_delete_succeeded","session_cleanup_succeeded","kernelDeleteSucceeded","sessionCleanupSucceeded","kernel_delete_error","session_cleanup_error","kernelDeleteError","sessionCleanupError","kernelProxyId","proxyId","requestedProxyIdSuffix","retrievedProxyIdSuffix","provider","providerName","service","serviceName","vendor","vendorName","organization","organizationId","accountId","browser_provider","provider_session_id","provider_session_observed_at","provider_lookup_status","provider_status","provider_error_code","provider_error_message","provider_reason_source","provider_duration_ms","provider_bandwidth_bytes","provider_captcha","provider_checked_at","provider_detail","provider_detail_json","provider_disconnect_observed","provider_disconnect_message","browserProvider","providerSessionId","providerLookupStatus","providerStatus","providerErrorCode","providerErrorMessage","providerReasonSource","providerDurationMs","providerBandwidthBytes","providerCaptcha","providerCheckedAt","providerDetail","providerDisconnectObserved","providerDisconnectMessage"]),S=new Set(["hosted_url","hostedUrl","live_view_url","liveViewUrl","cdp_ws_url","cdpWsUrl","browser_live_view_url"]),f=/\b(?:wss?|https?):\/\/[^\s"'<>]*\bonkernel\.com[^\s"'<>]*/gi;function b(e){return e.replace(f,"[browser-service]")}var R=new Set(["bright_data_browser_api","kernel","local"]),m=new Set(["pending","complete","not_found","unavailable_credentials","temporary_error","invalid_payload","not_applicable"]),h=new Set(["active","running","complete","completed","failed","closed","stopped","terminated","timed_out"]),I=new Set(["provider_session_api","client_runtime","extractor","unknown"]),y=new Set(["browser_disconnected","worker_disconnect","job_killed","cdp_cmd_timeout","network_inactivity_timeout","session_timeout","client_timeout","navigate_domains_limit","cdp_error","browser_session_interrupted","provider_detail_pending","provider_lookup_unavailable","provider_reported_no_error","provider_session_not_found","provider_invalid_json","provider_invalid_payload","provider_lookup_timeout","provider_lookup_network_error","unknown"]),T=new Set(["browser_provider","provider_session_id","provider_lookup_status","provider_status","provider_error_code","provider_error_message","provider_reason_source","provider_duration_ms","provider_bandwidth_bytes","provider_captcha","provider_checked_at","provider_detail","provider_detail_json","provider_disconnect_observed","provider_disconnect_message"]),P=512,A=320;function t(e,r){return typeof e=="string"&&r.has(e)?e:null}function O(e){return typeof e!="string"?null:y.has(e)||/^provider_http_(?:429|5\d\d)$/.test(e)?e:null}function D(e){return typeof e!="string"||e.length<1||e.length>P||/^(?:authorization|bearer|password|secret|token|api[_-]?key|account)/i.test(e)?null:/^[A-Za-z0-9._:-]+$/.test(e)&&!e.includes("://")?e:null}function p(e){return typeof e=="number"&&Number.isSafeInteger(e)&&e>=0?e:null}function l(e){if(typeof e!="string"||e.length>40)return null;let r=Date.parse(e);return Number.isFinite(r)&&new Date(r).toISOString()===e?e:null}function u(e){if(typeof e!="string")return null;let r=e.replace(/[\u0000-\u001f\u007f]+/g," ").replace(/\s+/g," ").trim();if(!r||r.startsWith("{")||r.startsWith("["))return null;let o=r.replace(/\b(?:wss?|https?):\/\/\S+/gi,"[redacted endpoint]").replace(/\b(?:authorization|proxy-authorization)\s*:\s*(?:Bearer\s+)?\S+/gi,"[redacted credential]").replace(/\bBearer\s+\S+/gi,"[redacted credential]").replace(/\b(?:api[_-]?key|password|secret|token|account[_-]?id)\s*[=:]\s*[^\s,;]+/gi,"[redacted credential]").replace(/\b(?:account|organization)\s+(?:id\s+)?[A-Za-z0-9_-]{4,}/gi,"[redacted account]");return b(o).slice(0,A)}function v(e){return typeof e=="boolean"?e:null}function N(e){return{browser_provider:t(e.browser_provider,R),provider_session_id:D(e.provider_session_id),provider_session_observed_at:l(e.provider_session_observed_at),provider_lookup_status:t(e.provider_lookup_status,m),provider_status:t(e.provider_status,h),provider_error_code:O(e.provider_error_code),provider_error_message:u(e.provider_error_message),provider_reason_source:t(e.provider_reason_source,I),provider_duration_ms:p(e.provider_duration_ms),provider_bandwidth_bytes:p(e.provider_bandwidth_bytes),provider_captcha:v(e.provider_captcha),provider_checked_at:l(e.provider_checked_at),provider_disconnect_observed:v(e.provider_disconnect_observed),provider_disconnect_message:u(e.provider_disconnect_message)}}function i(e,r=""){if(typeof e=="string"){let o=b(e);return a.test(r)&&(w.test(e)||E.test(e))?o=_("service_unavailable"):a.test(r)&&(o=c(o)),o}if(Array.isArray(e))return e.map(o=>i(o,r));if(e!==null&&typeof e=="object"){let o={};for(let[n,d]of Object.entries(e)){if(k.has(n))continue;let s=g[n]??n;if(S.has(n)){o[s]=null;continue}o[s]=i(d,n)}return o}return e}function L(e){return e.map(r=>{if(r===null||typeof r!="object"||Array.isArray(r))return i(r);let o=r,n=i(o);return Object.keys(o).some(s=>T.has(s))?{...n,...N(o)}:n})}function C(e){let r=e?.diagnostics;return r?.debug?{...e,diagnostics:{...r,debug:i(r.debug)}}:e}export{i as a,L as b,C as c};
|
package/dist/worker-ZOTOKG56.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as h,b as f,c as O,d as y,f as A,g as b}from"./chunk-PRWZNHQB.js";import"./chunk-YQZGZBB4.js";import{u as k}from"./chunk-6QO4F2KC.js";import"./chunk-QPWPR5XG.js";import{b as p,c as M}from"./chunk-FXEWHK54.js";import{a as m,b as H}from"./chunk-MZN4U5BL.js";import{a as w}from"./chunk-4FROKQJN.js";import{b as _}from"./chunk-RYNHNEF3.js";import"./chunk-3GP5CYZX.js";import{$a as v,Eb as o,Ib as d,Na as u,bb as c,ja as l}from"./chunk-63T4W2LX.js";var C=2,g=0;function R(e){if(!e||typeof e!="object")return 0;let t=e;return typeof t.totalQuestions=="number"?t.totalQuestions:Array.isArray(t.flat)?t.flat.length:0}function x(e){return m.paa_base+Math.max(1,e)*m.paa}async function P(e){g++;try{let t=typeof e.options=="string"?JSON.parse(e.options):e.options,r={value:null},a=await _({op:t.serpOnly?"serp":"paa",userId:Number(e.user_id),headlessSentOut:r},()=>k({...t,kernelApiKey:w(),headless:!0,format:"json",outputDir:"/tmp/paa-output-api",onAttemptEvent:A(e.id,e.user_id)}));await v(e.id,a);let s=await l(e.id,e.user_id);if(!t.serpOnly&&typeof t.billingHoldMc=="number"){let n=x(R(a)),i=t.billingHoldMc-n;i>0?await o(e.user_id,i,"paa_refund","overestimate refund"):i<0&&await d(e.user_id,-i,"paa",t.query??e.query)}else if(t.serpOnly&&typeof t.billingHoldMc=="number"){let n=H(r.value),i=t.billingHoldMc-n;i>0?await o(e.user_id,i,"serp_refund","headless-mode pricing settle"):i<0&&await d(e.user_id,-i,"serp",t.query??e.query)}e.callback_url&&await b(e.callback_url,{job_id:e.id,status:"done",result:M(a),attempts:p(s)})}catch(t){console.error("[harvest/worker] failed",{jobId:e.id,error:t instanceof Error?t.message:String(t)});let r=h(t),a=typeof e.options=="string"?JSON.parse(e.options):e.options,s=typeof a.billingHoldMc=="number"&&a.billingHoldMc>0;await c(e.id,f(r),y(r,{chargeStatus:s?"refund_pending":"not_charged"}));let n=await l(e.id,e.user_id);try{s&&(await o(e.user_id,a.billingHoldMc,"refund","failed call"),await c(e.id,f(r),y(r,{chargeStatus:"refunded"})))}catch{}e.callback_url&&await b(e.callback_url,{job_id:e.id,status:"failed",...O(r),attempts:p(n)})}finally{g--}}async function J(){let e=await u();if(!e)return{claimed:!1};let t=Date.now();return await P(e),{claimed:!0,jobId:e.id,completed:!0,durationMs:Date.now()-t}}async function W(e){let t=[];for(let r=0;r<e.maxJobs&&!(Date.now()>=e.deadlineMs);r++){let a=await J();if(t.push(a),!a.claimed)break}return t}function B(){setInterval(async()=>{if(g>=C)return;let e=await u();e&&P(e)},2e3),console.log(`[worker] started \u2014 polling every 2s, max ${C} concurrent`)}export{W as drainQueue,B as startWorker,J as tickOnce};
|