webpeel 0.19.4 → 0.20.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 (544) hide show
  1. package/README.md +2 -2
  2. package/dist/cache.d.ts +0 -1
  3. package/dist/cache.js +0 -1
  4. package/dist/cli/commands/auth.d.ts +5 -0
  5. package/dist/cli/commands/auth.js +476 -0
  6. package/dist/cli/commands/fetch.d.ts +6 -0
  7. package/dist/cli/commands/fetch.js +1015 -0
  8. package/dist/cli/commands/interact.d.ts +5 -0
  9. package/dist/cli/commands/interact.js +839 -0
  10. package/dist/cli/commands/jobs.d.ts +5 -0
  11. package/dist/cli/commands/jobs.js +997 -0
  12. package/dist/cli/commands/screenshot.d.ts +5 -0
  13. package/dist/cli/commands/screenshot.js +273 -0
  14. package/dist/cli/commands/search.d.ts +5 -0
  15. package/dist/cli/commands/search.js +524 -0
  16. package/dist/cli/utils.d.ts +84 -0
  17. package/dist/cli/utils.js +686 -0
  18. package/dist/cli-auth.d.ts +0 -1
  19. package/dist/cli-auth.js +0 -1
  20. package/dist/cli.d.ts +7 -6
  21. package/dist/cli.js +35 -4698
  22. package/dist/core/actions.d.ts +0 -1
  23. package/dist/core/actions.js +0 -1
  24. package/dist/core/agent.d.ts +0 -1
  25. package/dist/core/agent.js +9 -12
  26. package/dist/core/answer.d.ts +0 -1
  27. package/dist/core/answer.js +0 -1
  28. package/dist/core/application-tracker.d.ts +0 -1
  29. package/dist/core/application-tracker.js +0 -1
  30. package/dist/core/apply.d.ts +0 -1
  31. package/dist/core/apply.js +0 -1
  32. package/dist/core/auto-extract.d.ts +0 -1
  33. package/dist/core/auto-extract.js +0 -1
  34. package/dist/core/auto-interact.d.ts +0 -1
  35. package/dist/core/auto-interact.js +0 -1
  36. package/dist/core/bm25-filter.d.ts +0 -1
  37. package/dist/core/bm25-filter.js +0 -1
  38. package/dist/core/branding.d.ts +0 -1
  39. package/dist/core/branding.js +0 -1
  40. package/dist/core/browser-fetch.d.ts +0 -1
  41. package/dist/core/browser-fetch.js +17 -10
  42. package/dist/core/browser-pool.d.ts +0 -1
  43. package/dist/core/browser-pool.js +0 -1
  44. package/dist/core/budget.d.ts +0 -1
  45. package/dist/core/budget.js +0 -1
  46. package/dist/core/cache.d.ts +0 -1
  47. package/dist/core/cache.js +0 -1
  48. package/dist/core/cf-worker-proxy.d.ts +0 -1
  49. package/dist/core/cf-worker-proxy.js +0 -1
  50. package/dist/core/challenge-detection.d.ts +0 -1
  51. package/dist/core/challenge-detection.js +0 -1
  52. package/dist/core/change-tracking.d.ts +0 -1
  53. package/dist/core/change-tracking.js +0 -1
  54. package/dist/core/chunker.d.ts +0 -1
  55. package/dist/core/chunker.js +0 -1
  56. package/dist/core/chunking.d.ts +0 -1
  57. package/dist/core/chunking.js +0 -1
  58. package/dist/core/cloak-fetch.d.ts +0 -1
  59. package/dist/core/cloak-fetch.js +0 -1
  60. package/dist/core/content-pruner.d.ts +0 -1
  61. package/dist/core/content-pruner.js +0 -1
  62. package/dist/core/crawl-checkpoint.d.ts +0 -1
  63. package/dist/core/crawl-checkpoint.js +0 -1
  64. package/dist/core/crawler.d.ts +0 -1
  65. package/dist/core/crawler.js +6 -5
  66. package/dist/core/cycle-fetch.d.ts +0 -1
  67. package/dist/core/cycle-fetch.js +0 -1
  68. package/dist/core/deep-fetch.d.ts +0 -1
  69. package/dist/core/deep-fetch.js +0 -1
  70. package/dist/core/design-analysis.d.ts +0 -1
  71. package/dist/core/design-analysis.js +0 -1
  72. package/dist/core/design-compare.d.ts +0 -1
  73. package/dist/core/design-compare.js +0 -1
  74. package/dist/core/diff.d.ts +0 -1
  75. package/dist/core/diff.js +0 -1
  76. package/dist/core/dns-cache.d.ts +0 -1
  77. package/dist/core/dns-cache.js +0 -1
  78. package/dist/core/documents.d.ts +0 -1
  79. package/dist/core/documents.js +0 -1
  80. package/dist/core/domain-extractors.d.ts +0 -1
  81. package/dist/core/domain-extractors.js +0 -1
  82. package/dist/core/extract-inline.d.ts +0 -1
  83. package/dist/core/extract-inline.js +0 -1
  84. package/dist/core/extract-listings.d.ts +0 -1
  85. package/dist/core/extract-listings.js +0 -1
  86. package/dist/core/extract.d.ts +0 -1
  87. package/dist/core/extract.js +0 -1
  88. package/dist/core/fetcher.d.ts +0 -1
  89. package/dist/core/fetcher.js +0 -1
  90. package/dist/core/google-cache.d.ts +0 -1
  91. package/dist/core/google-cache.js +0 -1
  92. package/dist/core/hotel-search.d.ts +0 -1
  93. package/dist/core/hotel-search.js +0 -1
  94. package/dist/core/http-fetch.d.ts +0 -1
  95. package/dist/core/http-fetch.js +5 -7
  96. package/dist/core/human.d.ts +0 -1
  97. package/dist/core/human.js +0 -1
  98. package/dist/core/jobs.d.ts +0 -1
  99. package/dist/core/jobs.js +0 -1
  100. package/dist/core/json-ld.d.ts +0 -1
  101. package/dist/core/json-ld.js +0 -1
  102. package/dist/core/llm-extract.d.ts +0 -1
  103. package/dist/core/llm-extract.js +0 -1
  104. package/dist/core/logger.d.ts +17 -0
  105. package/dist/core/logger.js +44 -0
  106. package/dist/core/map.d.ts +0 -1
  107. package/dist/core/map.js +0 -1
  108. package/dist/core/markdown.d.ts +0 -1
  109. package/dist/core/markdown.js +0 -1
  110. package/dist/core/metadata.d.ts +0 -1
  111. package/dist/core/metadata.js +0 -1
  112. package/dist/core/paginate.d.ts +0 -1
  113. package/dist/core/paginate.js +0 -1
  114. package/dist/core/pdf.d.ts +0 -1
  115. package/dist/core/pdf.js +0 -1
  116. package/dist/core/peel-tls.d.ts +0 -1
  117. package/dist/core/peel-tls.js +0 -1
  118. package/dist/core/pipeline.d.ts +0 -1
  119. package/dist/core/pipeline.js +22 -25
  120. package/dist/core/profiles.d.ts +0 -1
  121. package/dist/core/profiles.js +0 -1
  122. package/dist/core/quick-answer.d.ts +0 -1
  123. package/dist/core/quick-answer.js +0 -1
  124. package/dist/core/rate-governor.d.ts +0 -1
  125. package/dist/core/rate-governor.js +0 -1
  126. package/dist/core/readability.d.ts +0 -1
  127. package/dist/core/readability.js +0 -1
  128. package/dist/core/research.d.ts +0 -1
  129. package/dist/core/research.js +0 -1
  130. package/dist/core/schema-extraction.d.ts +0 -1
  131. package/dist/core/schema-extraction.js +0 -1
  132. package/dist/core/schema-postprocess.d.ts +0 -1
  133. package/dist/core/schema-postprocess.js +0 -1
  134. package/dist/core/schema-templates.d.ts +0 -1
  135. package/dist/core/schema-templates.js +0 -1
  136. package/dist/core/screenshot.d.ts +0 -1
  137. package/dist/core/screenshot.js +0 -1
  138. package/dist/core/search-fallback.d.ts +0 -1
  139. package/dist/core/search-fallback.js +0 -1
  140. package/dist/core/search-provider.d.ts +0 -1
  141. package/dist/core/search-provider.js +18 -21
  142. package/dist/core/site-search.d.ts +0 -1
  143. package/dist/core/site-search.js +0 -1
  144. package/dist/core/sitemap.d.ts +0 -1
  145. package/dist/core/sitemap.js +0 -1
  146. package/dist/core/stealth-patches.d.ts +0 -1
  147. package/dist/core/stealth-patches.js +0 -1
  148. package/dist/core/stemmer.d.ts +0 -1
  149. package/dist/core/stemmer.js +0 -1
  150. package/dist/core/strategies.d.ts +6 -1
  151. package/dist/core/strategies.js +29 -41
  152. package/dist/core/strategy-hooks.d.ts +0 -1
  153. package/dist/core/strategy-hooks.js +0 -1
  154. package/dist/core/summarize.d.ts +0 -1
  155. package/dist/core/summarize.js +0 -1
  156. package/dist/core/synonyms.d.ts +0 -1
  157. package/dist/core/synonyms.js +0 -1
  158. package/dist/core/table-format.d.ts +0 -1
  159. package/dist/core/table-format.js +0 -1
  160. package/dist/core/timing.d.ts +0 -1
  161. package/dist/core/timing.js +0 -1
  162. package/dist/core/user-agents.d.ts +0 -1
  163. package/dist/core/user-agents.js +0 -1
  164. package/dist/core/watch-manager.d.ts +0 -1
  165. package/dist/core/watch-manager.js +0 -1
  166. package/dist/core/watch.d.ts +0 -1
  167. package/dist/core/watch.js +0 -1
  168. package/dist/core/youtube.d.ts +0 -1
  169. package/dist/core/youtube.js +0 -1
  170. package/dist/index.d.ts +8 -3
  171. package/dist/index.js +27 -3
  172. package/dist/integrations/index.d.ts +0 -1
  173. package/dist/integrations/index.js +0 -1
  174. package/dist/integrations/langchain.d.ts +0 -1
  175. package/dist/integrations/langchain.js +0 -1
  176. package/dist/integrations/llamaindex.d.ts +0 -1
  177. package/dist/integrations/llamaindex.js +0 -1
  178. package/dist/mcp/handlers/act.d.ts +5 -0
  179. package/dist/mcp/handlers/act.js +34 -0
  180. package/dist/mcp/handlers/definitions.d.ts +6 -0
  181. package/dist/mcp/handlers/definitions.js +266 -0
  182. package/dist/mcp/handlers/extract.d.ts +6 -0
  183. package/dist/mcp/handlers/extract.js +102 -0
  184. package/dist/mcp/handlers/fetch.d.ts +6 -0
  185. package/dist/mcp/handlers/fetch.js +98 -0
  186. package/dist/mcp/handlers/find.d.ts +5 -0
  187. package/dist/mcp/handlers/find.js +137 -0
  188. package/dist/mcp/handlers/index.d.ts +13 -0
  189. package/dist/mcp/handlers/index.js +61 -0
  190. package/dist/mcp/handlers/legacy.d.ts +25 -0
  191. package/dist/mcp/handlers/legacy.js +450 -0
  192. package/dist/mcp/handlers/meta.d.ts +6 -0
  193. package/dist/mcp/handlers/meta.js +31 -0
  194. package/dist/mcp/handlers/monitor.d.ts +5 -0
  195. package/dist/mcp/handlers/monitor.js +41 -0
  196. package/dist/mcp/handlers/read.d.ts +6 -0
  197. package/dist/mcp/handlers/read.js +63 -0
  198. package/dist/mcp/handlers/see.d.ts +5 -0
  199. package/dist/mcp/handlers/see.js +75 -0
  200. package/dist/mcp/handlers/types.d.ts +29 -0
  201. package/dist/mcp/handlers/types.js +28 -0
  202. package/dist/mcp/server.d.ts +3 -4
  203. package/dist/mcp/server.js +35 -1101
  204. package/dist/mcp/smart-router.d.ts +0 -1
  205. package/dist/mcp/smart-router.js +3 -1
  206. package/dist/types.d.ts +6 -1
  207. package/dist/types.js +0 -1
  208. package/package.json +3 -13
  209. package/dist/cache.d.ts.map +0 -1
  210. package/dist/cache.js.map +0 -1
  211. package/dist/cli-auth.d.ts.map +0 -1
  212. package/dist/cli-auth.js.map +0 -1
  213. package/dist/cli.bundle.cjs +0 -159248
  214. package/dist/cli.d.ts.map +0 -1
  215. package/dist/cli.js.map +0 -1
  216. package/dist/core/actions.d.ts.map +0 -1
  217. package/dist/core/actions.js.map +0 -1
  218. package/dist/core/agent.d.ts.map +0 -1
  219. package/dist/core/agent.js.map +0 -1
  220. package/dist/core/answer.d.ts.map +0 -1
  221. package/dist/core/answer.js.map +0 -1
  222. package/dist/core/application-tracker.d.ts.map +0 -1
  223. package/dist/core/application-tracker.js.map +0 -1
  224. package/dist/core/apply.d.ts.map +0 -1
  225. package/dist/core/apply.js.map +0 -1
  226. package/dist/core/auto-extract.d.ts.map +0 -1
  227. package/dist/core/auto-extract.js.map +0 -1
  228. package/dist/core/auto-interact.d.ts.map +0 -1
  229. package/dist/core/auto-interact.js.map +0 -1
  230. package/dist/core/bm25-filter.d.ts.map +0 -1
  231. package/dist/core/bm25-filter.js.map +0 -1
  232. package/dist/core/branding.d.ts.map +0 -1
  233. package/dist/core/branding.js.map +0 -1
  234. package/dist/core/browser-fetch.d.ts.map +0 -1
  235. package/dist/core/browser-fetch.js.map +0 -1
  236. package/dist/core/browser-pool.d.ts.map +0 -1
  237. package/dist/core/browser-pool.js.map +0 -1
  238. package/dist/core/budget.d.ts.map +0 -1
  239. package/dist/core/budget.js.map +0 -1
  240. package/dist/core/cache.d.ts.map +0 -1
  241. package/dist/core/cache.js.map +0 -1
  242. package/dist/core/cf-worker-proxy.d.ts.map +0 -1
  243. package/dist/core/cf-worker-proxy.js.map +0 -1
  244. package/dist/core/challenge-detection.d.ts.map +0 -1
  245. package/dist/core/challenge-detection.js.map +0 -1
  246. package/dist/core/change-tracking.d.ts.map +0 -1
  247. package/dist/core/change-tracking.js.map +0 -1
  248. package/dist/core/chunker.d.ts.map +0 -1
  249. package/dist/core/chunker.js.map +0 -1
  250. package/dist/core/chunking.d.ts.map +0 -1
  251. package/dist/core/chunking.js.map +0 -1
  252. package/dist/core/cloak-fetch.d.ts.map +0 -1
  253. package/dist/core/cloak-fetch.js.map +0 -1
  254. package/dist/core/content-pruner.d.ts.map +0 -1
  255. package/dist/core/content-pruner.js.map +0 -1
  256. package/dist/core/crawl-checkpoint.d.ts.map +0 -1
  257. package/dist/core/crawl-checkpoint.js.map +0 -1
  258. package/dist/core/crawler.d.ts.map +0 -1
  259. package/dist/core/crawler.js.map +0 -1
  260. package/dist/core/cycle-fetch.d.ts.map +0 -1
  261. package/dist/core/cycle-fetch.js.map +0 -1
  262. package/dist/core/deep-fetch.d.ts.map +0 -1
  263. package/dist/core/deep-fetch.js.map +0 -1
  264. package/dist/core/design-analysis.d.ts.map +0 -1
  265. package/dist/core/design-analysis.js.map +0 -1
  266. package/dist/core/design-compare.d.ts.map +0 -1
  267. package/dist/core/design-compare.js.map +0 -1
  268. package/dist/core/diff.d.ts.map +0 -1
  269. package/dist/core/diff.js.map +0 -1
  270. package/dist/core/dns-cache.d.ts.map +0 -1
  271. package/dist/core/dns-cache.js.map +0 -1
  272. package/dist/core/documents.d.ts.map +0 -1
  273. package/dist/core/documents.js.map +0 -1
  274. package/dist/core/domain-extractors.d.ts.map +0 -1
  275. package/dist/core/domain-extractors.js.map +0 -1
  276. package/dist/core/extract-inline.d.ts.map +0 -1
  277. package/dist/core/extract-inline.js.map +0 -1
  278. package/dist/core/extract-listings.d.ts.map +0 -1
  279. package/dist/core/extract-listings.js.map +0 -1
  280. package/dist/core/extract.d.ts.map +0 -1
  281. package/dist/core/extract.js.map +0 -1
  282. package/dist/core/fetcher.d.ts.map +0 -1
  283. package/dist/core/fetcher.js.map +0 -1
  284. package/dist/core/google-cache.d.ts.map +0 -1
  285. package/dist/core/google-cache.js.map +0 -1
  286. package/dist/core/hotel-search.d.ts.map +0 -1
  287. package/dist/core/hotel-search.js.map +0 -1
  288. package/dist/core/http-fetch.d.ts.map +0 -1
  289. package/dist/core/http-fetch.js.map +0 -1
  290. package/dist/core/human.d.ts.map +0 -1
  291. package/dist/core/human.js.map +0 -1
  292. package/dist/core/jobs.d.ts.map +0 -1
  293. package/dist/core/jobs.js.map +0 -1
  294. package/dist/core/json-ld.d.ts.map +0 -1
  295. package/dist/core/json-ld.js.map +0 -1
  296. package/dist/core/llm-extract.d.ts.map +0 -1
  297. package/dist/core/llm-extract.js.map +0 -1
  298. package/dist/core/map.d.ts.map +0 -1
  299. package/dist/core/map.js.map +0 -1
  300. package/dist/core/markdown.d.ts.map +0 -1
  301. package/dist/core/markdown.js.map +0 -1
  302. package/dist/core/metadata.d.ts.map +0 -1
  303. package/dist/core/metadata.js.map +0 -1
  304. package/dist/core/paginate.d.ts.map +0 -1
  305. package/dist/core/paginate.js.map +0 -1
  306. package/dist/core/pdf.d.ts.map +0 -1
  307. package/dist/core/pdf.js.map +0 -1
  308. package/dist/core/peel-tls.d.ts.map +0 -1
  309. package/dist/core/peel-tls.js.map +0 -1
  310. package/dist/core/pipeline.d.ts.map +0 -1
  311. package/dist/core/pipeline.js.map +0 -1
  312. package/dist/core/profiles.d.ts.map +0 -1
  313. package/dist/core/profiles.js.map +0 -1
  314. package/dist/core/quick-answer.d.ts.map +0 -1
  315. package/dist/core/quick-answer.js.map +0 -1
  316. package/dist/core/rate-governor.d.ts.map +0 -1
  317. package/dist/core/rate-governor.js.map +0 -1
  318. package/dist/core/readability.d.ts.map +0 -1
  319. package/dist/core/readability.js.map +0 -1
  320. package/dist/core/research.d.ts.map +0 -1
  321. package/dist/core/research.js.map +0 -1
  322. package/dist/core/schema-extraction.d.ts.map +0 -1
  323. package/dist/core/schema-extraction.js.map +0 -1
  324. package/dist/core/schema-postprocess.d.ts.map +0 -1
  325. package/dist/core/schema-postprocess.js.map +0 -1
  326. package/dist/core/schema-templates.d.ts.map +0 -1
  327. package/dist/core/schema-templates.js.map +0 -1
  328. package/dist/core/screenshot.d.ts.map +0 -1
  329. package/dist/core/screenshot.js.map +0 -1
  330. package/dist/core/search-fallback.d.ts.map +0 -1
  331. package/dist/core/search-fallback.js.map +0 -1
  332. package/dist/core/search-provider.d.ts.map +0 -1
  333. package/dist/core/search-provider.js.map +0 -1
  334. package/dist/core/site-search.d.ts.map +0 -1
  335. package/dist/core/site-search.js.map +0 -1
  336. package/dist/core/sitemap.d.ts.map +0 -1
  337. package/dist/core/sitemap.js.map +0 -1
  338. package/dist/core/stealth-patches.d.ts.map +0 -1
  339. package/dist/core/stealth-patches.js.map +0 -1
  340. package/dist/core/stemmer.d.ts.map +0 -1
  341. package/dist/core/stemmer.js.map +0 -1
  342. package/dist/core/strategies.d.ts.map +0 -1
  343. package/dist/core/strategies.js.map +0 -1
  344. package/dist/core/strategy-hooks.d.ts.map +0 -1
  345. package/dist/core/strategy-hooks.js.map +0 -1
  346. package/dist/core/summarize.d.ts.map +0 -1
  347. package/dist/core/summarize.js.map +0 -1
  348. package/dist/core/synonyms.d.ts.map +0 -1
  349. package/dist/core/synonyms.js.map +0 -1
  350. package/dist/core/table-format.d.ts.map +0 -1
  351. package/dist/core/table-format.js.map +0 -1
  352. package/dist/core/timing.d.ts.map +0 -1
  353. package/dist/core/timing.js.map +0 -1
  354. package/dist/core/user-agents.d.ts.map +0 -1
  355. package/dist/core/user-agents.js.map +0 -1
  356. package/dist/core/watch-manager.d.ts.map +0 -1
  357. package/dist/core/watch-manager.js.map +0 -1
  358. package/dist/core/watch.d.ts.map +0 -1
  359. package/dist/core/watch.js.map +0 -1
  360. package/dist/core/youtube.d.ts.map +0 -1
  361. package/dist/core/youtube.js.map +0 -1
  362. package/dist/index.d.ts.map +0 -1
  363. package/dist/index.js.map +0 -1
  364. package/dist/integrations/index.d.ts.map +0 -1
  365. package/dist/integrations/index.js.map +0 -1
  366. package/dist/integrations/langchain.d.ts.map +0 -1
  367. package/dist/integrations/langchain.js.map +0 -1
  368. package/dist/integrations/llamaindex.d.ts.map +0 -1
  369. package/dist/integrations/llamaindex.js.map +0 -1
  370. package/dist/mcp/server.d.ts.map +0 -1
  371. package/dist/mcp/server.js.map +0 -1
  372. package/dist/mcp/smart-router.d.ts.map +0 -1
  373. package/dist/mcp/smart-router.js.map +0 -1
  374. package/dist/server/app.d.ts +0 -15
  375. package/dist/server/app.d.ts.map +0 -1
  376. package/dist/server/app.js +0 -350
  377. package/dist/server/app.js.map +0 -1
  378. package/dist/server/auth-store.d.ts +0 -28
  379. package/dist/server/auth-store.d.ts.map +0 -1
  380. package/dist/server/auth-store.js +0 -89
  381. package/dist/server/auth-store.js.map +0 -1
  382. package/dist/server/email-service.d.ts +0 -22
  383. package/dist/server/email-service.d.ts.map +0 -1
  384. package/dist/server/email-service.js +0 -80
  385. package/dist/server/email-service.js.map +0 -1
  386. package/dist/server/job-queue.d.ts +0 -93
  387. package/dist/server/job-queue.d.ts.map +0 -1
  388. package/dist/server/job-queue.js +0 -146
  389. package/dist/server/job-queue.js.map +0 -1
  390. package/dist/server/logger.d.ts +0 -11
  391. package/dist/server/logger.d.ts.map +0 -1
  392. package/dist/server/logger.js +0 -38
  393. package/dist/server/logger.js.map +0 -1
  394. package/dist/server/middleware/auth.d.ts +0 -29
  395. package/dist/server/middleware/auth.d.ts.map +0 -1
  396. package/dist/server/middleware/auth.js +0 -222
  397. package/dist/server/middleware/auth.js.map +0 -1
  398. package/dist/server/middleware/rate-limit.d.ts +0 -25
  399. package/dist/server/middleware/rate-limit.d.ts.map +0 -1
  400. package/dist/server/middleware/rate-limit.js +0 -168
  401. package/dist/server/middleware/rate-limit.js.map +0 -1
  402. package/dist/server/middleware/url-validator.d.ts +0 -16
  403. package/dist/server/middleware/url-validator.d.ts.map +0 -1
  404. package/dist/server/middleware/url-validator.js +0 -187
  405. package/dist/server/middleware/url-validator.js.map +0 -1
  406. package/dist/server/openapi.yaml +0 -4944
  407. package/dist/server/pg-auth-store.d.ts +0 -133
  408. package/dist/server/pg-auth-store.d.ts.map +0 -1
  409. package/dist/server/pg-auth-store.js +0 -473
  410. package/dist/server/pg-auth-store.js.map +0 -1
  411. package/dist/server/pg-job-queue.d.ts +0 -60
  412. package/dist/server/pg-job-queue.d.ts.map +0 -1
  413. package/dist/server/pg-job-queue.js +0 -365
  414. package/dist/server/pg-job-queue.js.map +0 -1
  415. package/dist/server/premium/domain-intel.d.ts +0 -17
  416. package/dist/server/premium/domain-intel.d.ts.map +0 -1
  417. package/dist/server/premium/domain-intel.js +0 -134
  418. package/dist/server/premium/domain-intel.js.map +0 -1
  419. package/dist/server/premium/index.d.ts +0 -18
  420. package/dist/server/premium/index.d.ts.map +0 -1
  421. package/dist/server/premium/index.js +0 -36
  422. package/dist/server/premium/index.js.map +0 -1
  423. package/dist/server/premium/swr-cache.d.ts +0 -15
  424. package/dist/server/premium/swr-cache.d.ts.map +0 -1
  425. package/dist/server/premium/swr-cache.js +0 -35
  426. package/dist/server/premium/swr-cache.js.map +0 -1
  427. package/dist/server/routes/activity.d.ts +0 -7
  428. package/dist/server/routes/activity.d.ts.map +0 -1
  429. package/dist/server/routes/activity.js +0 -68
  430. package/dist/server/routes/activity.js.map +0 -1
  431. package/dist/server/routes/agent.d.ts +0 -16
  432. package/dist/server/routes/agent.d.ts.map +0 -1
  433. package/dist/server/routes/agent.js +0 -247
  434. package/dist/server/routes/agent.js.map +0 -1
  435. package/dist/server/routes/answer.d.ts +0 -6
  436. package/dist/server/routes/answer.d.ts.map +0 -1
  437. package/dist/server/routes/answer.js +0 -133
  438. package/dist/server/routes/answer.js.map +0 -1
  439. package/dist/server/routes/ask.d.ts +0 -23
  440. package/dist/server/routes/ask.d.ts.map +0 -1
  441. package/dist/server/routes/ask.js +0 -119
  442. package/dist/server/routes/ask.js.map +0 -1
  443. package/dist/server/routes/batch.d.ts +0 -7
  444. package/dist/server/routes/batch.d.ts.map +0 -1
  445. package/dist/server/routes/batch.js +0 -412
  446. package/dist/server/routes/batch.js.map +0 -1
  447. package/dist/server/routes/cli-usage.d.ts +0 -7
  448. package/dist/server/routes/cli-usage.d.ts.map +0 -1
  449. package/dist/server/routes/cli-usage.js +0 -121
  450. package/dist/server/routes/cli-usage.js.map +0 -1
  451. package/dist/server/routes/compat.d.ts +0 -24
  452. package/dist/server/routes/compat.d.ts.map +0 -1
  453. package/dist/server/routes/compat.js +0 -653
  454. package/dist/server/routes/compat.js.map +0 -1
  455. package/dist/server/routes/deep-fetch.d.ts +0 -9
  456. package/dist/server/routes/deep-fetch.d.ts.map +0 -1
  457. package/dist/server/routes/deep-fetch.js +0 -50
  458. package/dist/server/routes/deep-fetch.js.map +0 -1
  459. package/dist/server/routes/demo.d.ts +0 -25
  460. package/dist/server/routes/demo.d.ts.map +0 -1
  461. package/dist/server/routes/demo.js +0 -434
  462. package/dist/server/routes/demo.js.map +0 -1
  463. package/dist/server/routes/extract.d.ts +0 -9
  464. package/dist/server/routes/extract.d.ts.map +0 -1
  465. package/dist/server/routes/extract.js +0 -150
  466. package/dist/server/routes/extract.js.map +0 -1
  467. package/dist/server/routes/fetch.d.ts +0 -8
  468. package/dist/server/routes/fetch.d.ts.map +0 -1
  469. package/dist/server/routes/fetch.js +0 -988
  470. package/dist/server/routes/fetch.js.map +0 -1
  471. package/dist/server/routes/health.d.ts +0 -8
  472. package/dist/server/routes/health.d.ts.map +0 -1
  473. package/dist/server/routes/health.js +0 -20
  474. package/dist/server/routes/health.js.map +0 -1
  475. package/dist/server/routes/jobs.d.ts +0 -8
  476. package/dist/server/routes/jobs.d.ts.map +0 -1
  477. package/dist/server/routes/jobs.js +0 -487
  478. package/dist/server/routes/jobs.js.map +0 -1
  479. package/dist/server/routes/mcp.d.ts +0 -18
  480. package/dist/server/routes/mcp.d.ts.map +0 -1
  481. package/dist/server/routes/mcp.js +0 -1260
  482. package/dist/server/routes/mcp.js.map +0 -1
  483. package/dist/server/routes/oauth.d.ts +0 -10
  484. package/dist/server/routes/oauth.d.ts.map +0 -1
  485. package/dist/server/routes/oauth.js +0 -334
  486. package/dist/server/routes/oauth.js.map +0 -1
  487. package/dist/server/routes/quick-answer.d.ts +0 -9
  488. package/dist/server/routes/quick-answer.d.ts.map +0 -1
  489. package/dist/server/routes/quick-answer.js +0 -93
  490. package/dist/server/routes/quick-answer.js.map +0 -1
  491. package/dist/server/routes/screenshot.d.ts +0 -23
  492. package/dist/server/routes/screenshot.d.ts.map +0 -1
  493. package/dist/server/routes/screenshot.js +0 -819
  494. package/dist/server/routes/screenshot.js.map +0 -1
  495. package/dist/server/routes/search.d.ts +0 -7
  496. package/dist/server/routes/search.d.ts.map +0 -1
  497. package/dist/server/routes/search.js +0 -312
  498. package/dist/server/routes/search.js.map +0 -1
  499. package/dist/server/routes/session.d.ts +0 -16
  500. package/dist/server/routes/session.d.ts.map +0 -1
  501. package/dist/server/routes/session.js +0 -278
  502. package/dist/server/routes/session.js.map +0 -1
  503. package/dist/server/routes/stats.d.ts +0 -7
  504. package/dist/server/routes/stats.d.ts.map +0 -1
  505. package/dist/server/routes/stats.js +0 -65
  506. package/dist/server/routes/stats.js.map +0 -1
  507. package/dist/server/routes/stripe.d.ts +0 -16
  508. package/dist/server/routes/stripe.d.ts.map +0 -1
  509. package/dist/server/routes/stripe.js +0 -283
  510. package/dist/server/routes/stripe.js.map +0 -1
  511. package/dist/server/routes/users.d.ts +0 -9
  512. package/dist/server/routes/users.d.ts.map +0 -1
  513. package/dist/server/routes/users.js +0 -1211
  514. package/dist/server/routes/users.js.map +0 -1
  515. package/dist/server/routes/watch.d.ts +0 -16
  516. package/dist/server/routes/watch.d.ts.map +0 -1
  517. package/dist/server/routes/watch.js +0 -257
  518. package/dist/server/routes/watch.js.map +0 -1
  519. package/dist/server/routes/webhooks.d.ts +0 -16
  520. package/dist/server/routes/webhooks.d.ts.map +0 -1
  521. package/dist/server/routes/webhooks.js +0 -74
  522. package/dist/server/routes/webhooks.js.map +0 -1
  523. package/dist/server/routes/youtube.d.ts +0 -7
  524. package/dist/server/routes/youtube.d.ts.map +0 -1
  525. package/dist/server/routes/youtube.js +0 -93
  526. package/dist/server/routes/youtube.js.map +0 -1
  527. package/dist/server/sentry.d.ts +0 -14
  528. package/dist/server/sentry.d.ts.map +0 -1
  529. package/dist/server/sentry.js +0 -39
  530. package/dist/server/sentry.js.map +0 -1
  531. package/dist/server/types.d.ts +0 -16
  532. package/dist/server/types.d.ts.map +0 -1
  533. package/dist/server/types.js +0 -8
  534. package/dist/server/types.js.map +0 -1
  535. package/dist/server/utils/response.d.ts +0 -45
  536. package/dist/server/utils/response.d.ts.map +0 -1
  537. package/dist/server/utils/response.js +0 -70
  538. package/dist/server/utils/response.js.map +0 -1
  539. package/dist/server/utils/sse.d.ts +0 -23
  540. package/dist/server/utils/sse.d.ts.map +0 -1
  541. package/dist/server/utils/sse.js +0 -39
  542. package/dist/server/utils/sse.js.map +0 -1
  543. package/dist/types.d.ts.map +0 -1
  544. package/dist/types.js.map +0 -1
@@ -1,133 +0,0 @@
1
- /**
2
- * PostgreSQL-backed auth store for production deployments
3
- * Uses SHA-256 hashing for API keys and tracks WEEKLY usage with burst limits
4
- */
5
- import { AuthStore, ApiKeyInfo } from './auth-store.js';
6
- export interface WeeklyUsageInfo {
7
- week: string;
8
- basicCount: number;
9
- stealthCount: number;
10
- captchaCount: number;
11
- searchCount: number;
12
- totalUsed: number;
13
- weeklyLimit: number;
14
- rolloverCredits: number;
15
- totalAvailable: number;
16
- remaining: number;
17
- percentUsed: number;
18
- resetsAt: string;
19
- }
20
- export interface BurstInfo {
21
- hourBucket: string;
22
- count: number;
23
- limit: number;
24
- remaining: number;
25
- resetsIn: string;
26
- }
27
- export interface ExtraUsageInfo {
28
- enabled: boolean;
29
- balance: number;
30
- spent: number;
31
- spendingLimit: number;
32
- autoReload: boolean;
33
- percentUsed: number;
34
- resetsAt: string;
35
- }
36
- /**
37
- * PostgreSQL auth store for production
38
- */
39
- export declare class PostgresAuthStore implements AuthStore {
40
- private pool;
41
- constructor(connectionString?: string);
42
- /**
43
- * Hash API key with SHA-256
44
- * SECURITY: Never store raw API keys
45
- */
46
- private hashKey;
47
- /**
48
- * Get current ISO week in YYYY-WXX format (e.g., "2026-W07")
49
- */
50
- private getCurrentWeek;
51
- /**
52
- * Get previous ISO week in YYYY-WXX format
53
- */
54
- private getPreviousWeek;
55
- /**
56
- * Get next Monday 00:00 UTC (week reset time)
57
- */
58
- private getWeekResetTime;
59
- /**
60
- * Get current hour bucket in YYYY-MM-DDTHH format (UTC)
61
- */
62
- private getCurrentHour;
63
- /**
64
- * Get human-readable time until next hour
65
- */
66
- private getTimeUntilNextHour;
67
- /**
68
- * Validate API key and return user info
69
- * SECURITY: Uses SHA-256 hash comparison, updates last_used_at
70
- */
71
- validateKey(key: string): Promise<ApiKeyInfo | null>;
72
- /**
73
- * Check if a key exists but is expired (used to return specific 401 error)
74
- */
75
- isKeyExpired(key: string): Promise<boolean>;
76
- /**
77
- * Track weekly usage for an API key
78
- * SECURITY: Uses UPSERT to prevent race conditions
79
- */
80
- trackUsage(key: string, fetchType: 'basic' | 'stealth' | 'captcha' | 'search'): Promise<void>;
81
- /**
82
- * Track burst usage (hourly limit)
83
- */
84
- trackBurstUsage(key: string): Promise<void>;
85
- /**
86
- * Check burst limit (hourly)
87
- */
88
- checkBurstLimit(key: string): Promise<{
89
- allowed: boolean;
90
- burst: BurstInfo;
91
- }>;
92
- /**
93
- * Get weekly usage info for an API key with rollover calculation
94
- */
95
- getUsage(key: string): Promise<WeeklyUsageInfo | null>;
96
- /**
97
- * Check if API key has exceeded weekly limit
98
- */
99
- checkLimit(key: string): Promise<{
100
- allowed: boolean;
101
- usage?: WeeklyUsageInfo;
102
- }>;
103
- /**
104
- * Get extra usage info for a user
105
- */
106
- getExtraUsageInfo(key: string): Promise<ExtraUsageInfo | null>;
107
- /**
108
- * Check if extra usage can be used
109
- */
110
- canUseExtraUsage(key: string): Promise<boolean>;
111
- /**
112
- * Track extra usage and deduct from balance
113
- */
114
- trackExtraUsage(key: string, fetchType: 'basic' | 'stealth' | 'captcha' | 'search', url?: string, processingTimeMs?: number, statusCode?: number): Promise<{
115
- success: boolean;
116
- cost: number;
117
- newBalance: number;
118
- }>;
119
- /**
120
- * Generate a cryptographically secure API key
121
- * Format: wp_live_ + 32 random hex chars (total 40 chars)
122
- */
123
- static generateApiKey(): string;
124
- /**
125
- * Get key prefix (first 12 characters for display)
126
- */
127
- static getKeyPrefix(key: string): string;
128
- /**
129
- * Close the database pool
130
- */
131
- close(): Promise<void>;
132
- }
133
- //# sourceMappingURL=pg-auth-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pg-auth-store.d.ts","sourceRoot":"","sources":["../../src/server/pg-auth-store.ts"],"names":[],"mappings":"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"}
@@ -1,473 +0,0 @@
1
- /**
2
- * PostgreSQL-backed auth store for production deployments
3
- * Uses SHA-256 hashing for API keys and tracks WEEKLY usage with burst limits
4
- */
5
- import pg from 'pg';
6
- import crypto from 'crypto';
7
- const { Pool } = pg;
8
- // Extra usage cost constants
9
- const EXTRA_USAGE_RATES = {
10
- basic: 0.002, // $0.002 per basic fetch
11
- stealth: 0.01, // $0.01 per stealth fetch
12
- captcha: 0.02, // $0.02 per CAPTCHA solve
13
- search: 0.001, // $0.001 per search
14
- };
15
- /**
16
- * PostgreSQL auth store for production
17
- */
18
- export class PostgresAuthStore {
19
- pool;
20
- constructor(connectionString) {
21
- const dbUrl = connectionString || process.env.DATABASE_URL;
22
- if (!dbUrl) {
23
- throw new Error('DATABASE_URL environment variable is required for PostgresAuthStore');
24
- }
25
- this.pool = new Pool({
26
- connectionString: dbUrl,
27
- // TLS: enabled when DATABASE_URL contains sslmode=require.
28
- // Secure by default (rejectUnauthorized: true); set PG_REJECT_UNAUTHORIZED=false
29
- // only for managed DBs (Render/Neon/Supabase) that use self-signed certs.
30
- ssl: process.env.DATABASE_URL?.includes('sslmode=require')
31
- ? { rejectUnauthorized: process.env.PG_REJECT_UNAUTHORIZED !== 'false' }
32
- : undefined,
33
- max: 20,
34
- idleTimeoutMillis: 30000,
35
- connectionTimeoutMillis: 10000,
36
- });
37
- }
38
- /**
39
- * Hash API key with SHA-256
40
- * SECURITY: Never store raw API keys
41
- */
42
- hashKey(key) {
43
- return crypto.createHash('sha256').update(key).digest('hex');
44
- }
45
- /**
46
- * Get current ISO week in YYYY-WXX format (e.g., "2026-W07")
47
- */
48
- getCurrentWeek() {
49
- const now = new Date();
50
- const year = now.getUTCFullYear();
51
- const jan4 = new Date(Date.UTC(year, 0, 4));
52
- const weekNum = Math.ceil(((now.getTime() - jan4.getTime()) / 86400000 + jan4.getUTCDay() + 1) / 7);
53
- return `${year}-W${String(weekNum).padStart(2, '0')}`;
54
- }
55
- /**
56
- * Get previous ISO week in YYYY-WXX format
57
- */
58
- getPreviousWeek() {
59
- const now = new Date();
60
- const lastWeek = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
61
- const year = lastWeek.getUTCFullYear();
62
- const jan4 = new Date(Date.UTC(year, 0, 4));
63
- const weekNum = Math.ceil(((lastWeek.getTime() - jan4.getTime()) / 86400000 + jan4.getUTCDay() + 1) / 7);
64
- return `${year}-W${String(weekNum).padStart(2, '0')}`;
65
- }
66
- /**
67
- * Get next Monday 00:00 UTC (week reset time)
68
- */
69
- getWeekResetTime() {
70
- const now = new Date();
71
- const dayOfWeek = now.getUTCDay();
72
- const daysUntilMonday = dayOfWeek === 0 ? 1 : 8 - dayOfWeek;
73
- const nextMonday = new Date(now);
74
- nextMonday.setUTCDate(now.getUTCDate() + daysUntilMonday);
75
- nextMonday.setUTCHours(0, 0, 0, 0);
76
- return nextMonday;
77
- }
78
- /**
79
- * Get current hour bucket in YYYY-MM-DDTHH format (UTC)
80
- */
81
- getCurrentHour() {
82
- const now = new Date();
83
- return now.toISOString().substring(0, 13); // "2026-02-12T20"
84
- }
85
- /**
86
- * Get human-readable time until next hour
87
- */
88
- getTimeUntilNextHour() {
89
- const now = new Date();
90
- const minutesRemaining = 59 - now.getUTCMinutes();
91
- if (minutesRemaining === 0) {
92
- return '< 1 min';
93
- }
94
- return `${minutesRemaining} min`;
95
- }
96
- /**
97
- * Validate API key and return user info
98
- * SECURITY: Uses SHA-256 hash comparison, updates last_used_at
99
- */
100
- async validateKey(key) {
101
- if (!key || typeof key !== 'string') {
102
- return null;
103
- }
104
- const keyHash = this.hashKey(key);
105
- try {
106
- const result = await this.pool.query(`SELECT
107
- ak.id,
108
- ak.user_id,
109
- ak.key_prefix,
110
- ak.name,
111
- u.tier,
112
- u.rate_limit,
113
- u.weekly_limit,
114
- u.burst_limit,
115
- u.email
116
- FROM api_keys ak
117
- JOIN users u ON ak.user_id = u.id
118
- WHERE ak.key_hash = $1 AND ak.is_active = true
119
- AND (ak.expires_at IS NULL OR ak.expires_at > NOW())`, [keyHash]);
120
- if (result.rows.length === 0) {
121
- return null;
122
- }
123
- const row = result.rows[0];
124
- // Update last_used_at (fire and forget, don't wait)
125
- this.pool.query('UPDATE api_keys SET last_used_at = now() WHERE id = $1', [row.id]).catch(err => console.error('Failed to update last_used_at:', err));
126
- return {
127
- key,
128
- tier: row.tier,
129
- rateLimit: row.rate_limit,
130
- accountId: row.user_id,
131
- createdAt: new Date(),
132
- };
133
- }
134
- catch (error) {
135
- console.error('Failed to validate API key:', error);
136
- return null;
137
- }
138
- }
139
- /**
140
- * Check if a key exists but is expired (used to return specific 401 error)
141
- */
142
- async isKeyExpired(key) {
143
- if (!key || typeof key !== 'string')
144
- return false;
145
- const keyHash = this.hashKey(key);
146
- try {
147
- const result = await this.pool.query(`SELECT 1 FROM api_keys WHERE key_hash = $1 AND is_active = true AND expires_at IS NOT NULL AND expires_at <= NOW()`, [keyHash]);
148
- return result.rows.length > 0;
149
- }
150
- catch {
151
- return false;
152
- }
153
- }
154
- /**
155
- * Track weekly usage for an API key
156
- * SECURITY: Uses UPSERT to prevent race conditions
157
- */
158
- async trackUsage(key, fetchType) {
159
- const keyHash = this.hashKey(key);
160
- const week = this.getCurrentWeek();
161
- try {
162
- // Get API key ID and user ID
163
- const keyResult = await this.pool.query('SELECT id, user_id FROM api_keys WHERE key_hash = $1', [keyHash]);
164
- if (keyResult.rows.length === 0) {
165
- return;
166
- }
167
- const { id: apiKeyId, user_id: userId } = keyResult.rows[0];
168
- // Determine which counter to increment
169
- const columnMap = {
170
- basic: 'basic_count',
171
- stealth: 'stealth_count',
172
- captcha: 'captcha_count',
173
- search: 'search_count',
174
- };
175
- const column = columnMap[fetchType];
176
- // UPSERT usage record (total_count is GENERATED, don't touch it)
177
- await this.pool.query(`INSERT INTO weekly_usage (user_id, api_key_id, week, ${column})
178
- VALUES ($1, $2, $3, 1)
179
- ON CONFLICT (api_key_id, week)
180
- DO UPDATE SET
181
- ${column} = weekly_usage.${column} + 1,
182
- updated_at = now()`, [userId, apiKeyId, week]);
183
- }
184
- catch (error) {
185
- console.error('Failed to track usage:', error);
186
- throw error;
187
- }
188
- }
189
- /**
190
- * Track burst usage (hourly limit)
191
- */
192
- async trackBurstUsage(key) {
193
- const keyHash = this.hashKey(key);
194
- const hourBucket = this.getCurrentHour();
195
- try {
196
- const keyResult = await this.pool.query('SELECT id FROM api_keys WHERE key_hash = $1', [keyHash]);
197
- if (keyResult.rows.length === 0) {
198
- return;
199
- }
200
- const apiKeyId = keyResult.rows[0].id;
201
- // UPSERT burst usage
202
- await this.pool.query(`INSERT INTO burst_usage (api_key_id, hour_bucket, count)
203
- VALUES ($1, $2, 1)
204
- ON CONFLICT (api_key_id, hour_bucket)
205
- DO UPDATE SET
206
- count = burst_usage.count + 1,
207
- updated_at = now()`, [apiKeyId, hourBucket]);
208
- }
209
- catch (error) {
210
- console.error('Failed to track burst usage:', error);
211
- throw error;
212
- }
213
- }
214
- /**
215
- * Check burst limit (hourly)
216
- */
217
- async checkBurstLimit(key) {
218
- const keyHash = this.hashKey(key);
219
- const hourBucket = this.getCurrentHour();
220
- try {
221
- const result = await this.pool.query(`SELECT
222
- u.burst_limit,
223
- COALESCE(bu.count, 0) as count
224
- FROM api_keys ak
225
- JOIN users u ON ak.user_id = u.id
226
- LEFT JOIN burst_usage bu ON bu.api_key_id = ak.id AND bu.hour_bucket = $2
227
- WHERE ak.key_hash = $1`, [keyHash, hourBucket]);
228
- if (result.rows.length === 0) {
229
- return {
230
- allowed: false,
231
- burst: {
232
- hourBucket,
233
- count: 0,
234
- limit: 0,
235
- remaining: 0,
236
- resetsIn: this.getTimeUntilNextHour(),
237
- },
238
- };
239
- }
240
- const row = result.rows[0];
241
- const allowed = row.count < row.burst_limit;
242
- return {
243
- allowed,
244
- burst: {
245
- hourBucket,
246
- count: row.count,
247
- limit: row.burst_limit,
248
- remaining: Math.max(0, row.burst_limit - row.count),
249
- resetsIn: this.getTimeUntilNextHour(),
250
- },
251
- };
252
- }
253
- catch (error) {
254
- console.error('Failed to check burst limit:', error);
255
- return {
256
- allowed: false,
257
- burst: {
258
- hourBucket,
259
- count: 0,
260
- limit: 0,
261
- remaining: 0,
262
- resetsIn: this.getTimeUntilNextHour(),
263
- },
264
- };
265
- }
266
- }
267
- /**
268
- * Get weekly usage info for an API key with rollover calculation
269
- */
270
- async getUsage(key) {
271
- const keyHash = this.hashKey(key);
272
- const currentWeek = this.getCurrentWeek();
273
- const previousWeek = this.getPreviousWeek();
274
- try {
275
- const result = await this.pool.query(`SELECT
276
- u.weekly_limit,
277
- COALESCE(curr.basic_count, 0) as basic_count,
278
- COALESCE(curr.stealth_count, 0) as stealth_count,
279
- COALESCE(curr.captcha_count, 0) as captcha_count,
280
- COALESCE(curr.search_count, 0) as search_count,
281
- COALESCE(curr.total_count, 0) as current_used,
282
- COALESCE(prev.total_count, 0) as prev_used,
283
- COALESCE(curr.rollover_credits, 0) as rollover_credits
284
- FROM api_keys ak
285
- JOIN users u ON ak.user_id = u.id
286
- LEFT JOIN weekly_usage curr ON curr.api_key_id = ak.id AND curr.week = $2
287
- LEFT JOIN weekly_usage prev ON prev.api_key_id = ak.id AND prev.week = $3
288
- WHERE ak.key_hash = $1`, [keyHash, currentWeek, previousWeek]);
289
- if (result.rows.length === 0) {
290
- return null;
291
- }
292
- const row = result.rows[0];
293
- const weeklyLimit = row.weekly_limit;
294
- const currentUsed = row.current_used;
295
- const prevUsed = row.prev_used;
296
- const rolloverCredits = row.rollover_credits;
297
- // Calculate rollover: MIN(unused_last_week, weekly_limit)
298
- const prevUnused = Math.max(0, weeklyLimit - prevUsed);
299
- const calculatedRollover = Math.min(prevUnused, weeklyLimit);
300
- // Update rollover if it's the first access this week
301
- if (rolloverCredits === 0 && calculatedRollover > 0) {
302
- await this.pool.query(`INSERT INTO weekly_usage (user_id, api_key_id, week, rollover_credits, updated_at)
303
- SELECT user_id, id, $2, $3, now()
304
- FROM api_keys WHERE key_hash = $1
305
- ON CONFLICT (api_key_id, week)
306
- DO UPDATE SET rollover_credits = $3`, [keyHash, currentWeek, calculatedRollover]);
307
- }
308
- const effectiveRollover = rolloverCredits > 0 ? rolloverCredits : calculatedRollover;
309
- const totalAvailable = weeklyLimit + effectiveRollover;
310
- const remaining = Math.max(0, totalAvailable - currentUsed);
311
- const percentUsed = totalAvailable > 0 ? Math.round((currentUsed / totalAvailable) * 100) : 0;
312
- return {
313
- week: currentWeek,
314
- basicCount: row.basic_count,
315
- stealthCount: row.stealth_count,
316
- captchaCount: row.captcha_count,
317
- searchCount: row.search_count,
318
- totalUsed: currentUsed,
319
- weeklyLimit,
320
- rolloverCredits: effectiveRollover,
321
- totalAvailable,
322
- remaining,
323
- percentUsed,
324
- resetsAt: this.getWeekResetTime().toISOString(),
325
- };
326
- }
327
- catch (error) {
328
- console.error('Failed to get usage:', error);
329
- return null;
330
- }
331
- }
332
- /**
333
- * Check if API key has exceeded weekly limit
334
- */
335
- async checkLimit(key) {
336
- const usage = await this.getUsage(key);
337
- if (!usage) {
338
- return { allowed: false };
339
- }
340
- const allowed = usage.remaining > 0;
341
- return { allowed, usage };
342
- }
343
- /**
344
- * Get extra usage info for a user
345
- */
346
- async getExtraUsageInfo(key) {
347
- const keyHash = this.hashKey(key);
348
- try {
349
- const result = await this.pool.query(`SELECT
350
- u.extra_usage_enabled,
351
- u.extra_usage_balance,
352
- u.extra_usage_spent,
353
- u.extra_usage_spending_limit,
354
- u.auto_reload_enabled,
355
- u.extra_usage_period_start
356
- FROM api_keys ak
357
- JOIN users u ON ak.user_id = u.id
358
- WHERE ak.key_hash = $1`, [keyHash]);
359
- if (result.rows.length === 0) {
360
- return null;
361
- }
362
- const row = result.rows[0];
363
- // Calculate next month reset (1st of next month, 00:00 UTC)
364
- const now = new Date();
365
- const nextMonth = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth() + 1, 1, 0, 0, 0, 0));
366
- const percentUsed = row.extra_usage_spending_limit > 0
367
- ? Math.round((parseFloat(row.extra_usage_spent) / parseFloat(row.extra_usage_spending_limit)) * 100)
368
- : 0;
369
- return {
370
- enabled: row.extra_usage_enabled,
371
- balance: parseFloat(row.extra_usage_balance),
372
- spent: parseFloat(row.extra_usage_spent),
373
- spendingLimit: parseFloat(row.extra_usage_spending_limit),
374
- autoReload: row.auto_reload_enabled,
375
- percentUsed,
376
- resetsAt: nextMonth.toISOString(),
377
- };
378
- }
379
- catch (error) {
380
- console.error('Failed to get extra usage info:', error);
381
- return null;
382
- }
383
- }
384
- /**
385
- * Check if extra usage can be used
386
- */
387
- async canUseExtraUsage(key) {
388
- const info = await this.getExtraUsageInfo(key);
389
- if (!info || !info.enabled) {
390
- return false;
391
- }
392
- // Check if under spending limit and has balance
393
- return info.balance > 0 && info.spent < info.spendingLimit;
394
- }
395
- /**
396
- * Track extra usage and deduct from balance
397
- */
398
- async trackExtraUsage(key, fetchType, url, processingTimeMs, statusCode) {
399
- const keyHash = this.hashKey(key);
400
- const cost = EXTRA_USAGE_RATES[fetchType];
401
- try {
402
- // Get API key and user info
403
- const keyResult = await this.pool.query(`SELECT
404
- ak.id as api_key_id,
405
- ak.user_id,
406
- u.extra_usage_balance,
407
- u.extra_usage_spent
408
- FROM api_keys ak
409
- JOIN users u ON ak.user_id = u.id
410
- WHERE ak.key_hash = $1`, [keyHash]);
411
- if (keyResult.rows.length === 0) {
412
- return { success: false, cost: 0, newBalance: 0 };
413
- }
414
- const { api_key_id, user_id, extra_usage_balance } = keyResult.rows[0];
415
- const currentBalance = parseFloat(extra_usage_balance);
416
- if (currentBalance < cost) {
417
- return { success: false, cost, newBalance: currentBalance };
418
- }
419
- // Start transaction
420
- const client = await this.pool.connect();
421
- try {
422
- await client.query('BEGIN');
423
- // Deduct from balance and add to spent
424
- const updateResult = await client.query(`UPDATE users
425
- SET
426
- extra_usage_balance = extra_usage_balance - $1,
427
- extra_usage_spent = extra_usage_spent + $1,
428
- updated_at = now()
429
- WHERE id = $2
430
- RETURNING extra_usage_balance`, [cost, user_id]);
431
- const newBalance = parseFloat(updateResult.rows[0].extra_usage_balance);
432
- // Log to extra_usage_logs
433
- await client.query(`INSERT INTO extra_usage_logs
434
- (user_id, api_key_id, fetch_type, url, cost, processing_time_ms, status_code)
435
- VALUES ($1, $2, $3, $4, $5, $6, $7)`, [user_id, api_key_id, fetchType, url, cost, processingTimeMs, statusCode]);
436
- await client.query('COMMIT');
437
- return { success: true, cost, newBalance };
438
- }
439
- catch (error) {
440
- await client.query('ROLLBACK');
441
- throw error;
442
- }
443
- finally {
444
- client.release();
445
- }
446
- }
447
- catch (error) {
448
- console.error('Failed to track extra usage:', error);
449
- return { success: false, cost, newBalance: 0 };
450
- }
451
- }
452
- /**
453
- * Generate a cryptographically secure API key
454
- * Format: wp_live_ + 32 random hex chars (total 40 chars)
455
- */
456
- static generateApiKey() {
457
- const randomBytes = crypto.randomBytes(16).toString('hex');
458
- return `wp_live_${randomBytes}`;
459
- }
460
- /**
461
- * Get key prefix (first 12 characters for display)
462
- */
463
- static getKeyPrefix(key) {
464
- return key.substring(0, 12);
465
- }
466
- /**
467
- * Close the database pool
468
- */
469
- async close() {
470
- await this.pool.end();
471
- }
472
- }
473
- //# sourceMappingURL=pg-auth-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pg-auth-store.js","sourceRoot":"","sources":["../../src/server/pg-auth-store.ts"],"names":[],"mappings":"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"}