@wenathlan/saddle 2.0.6 → 2.0.151

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 (284) hide show
  1. package/Dockerfile +70 -24
  2. package/LICENSE +0 -0
  3. package/README.md +19 -3
  4. package/alternatives.ts +0 -0
  5. package/biome.jsonc +127 -0
  6. package/boards.json +2 -2
  7. package/compute.ts +4 -4
  8. package/cores.json +2 -2
  9. package/docker.config +16 -9
  10. package/docs/.gitkeep +0 -0
  11. package/docs/CONVERSA.txt +0 -0
  12. package/docs/actionrecorder.md +0 -0
  13. package/docs/actionsincident.md +0 -0
  14. package/docs/alternatives.md +0 -0
  15. package/docs/architecture-1.8.19.md +0 -0
  16. package/docs/architecture-1.8.19.mmd +0 -0
  17. package/docs/architecture-1.8.19.png +0 -0
  18. package/docs/architecture.md +3 -3
  19. package/docs/artifactavailability.md +0 -0
  20. package/docs/artifactresearch-1.8.9.md +0 -0
  21. package/docs/assets/architecture.svg +0 -0
  22. package/docs/assets/saddle-browser-trace.webp +0 -0
  23. package/docs/assets/saddle-hero-bridge.webp +0 -0
  24. package/docs/assets/saddle-mark.webp +0 -0
  25. package/docs/assets/saddle-runtime-map.webp +0 -0
  26. package/docs/assets/saddlemark.svg +0 -0
  27. package/docs/batches-1816-1820.md +0 -0
  28. package/docs/brancharchive-2026-08-18.md +0 -0
  29. package/docs/branchaudit.md +0 -0
  30. package/docs/browser.md +0 -0
  31. package/docs/capabilityreport.md +0 -0
  32. package/docs/comparativeaudit.md +0 -0
  33. package/docs/consolidation.md +0 -0
  34. package/docs/containerplatforms-1.8.17.md +0 -0
  35. package/docs/containerplatforms-2.1.0.md +73 -0
  36. package/docs/documentmap-1.8.12.md +0 -0
  37. package/docs/e2ugh-engine.md +0 -0
  38. package/docs/ecosystemplan.md +0 -0
  39. package/docs/enginearchitecture.md +0 -0
  40. package/docs/example-localjob.ts +0 -0
  41. package/docs/extension.md +0 -0
  42. package/docs/featureaudit.md +0 -0
  43. package/docs/flatbuildresearch-1.8.11.md +0 -0
  44. package/docs/gapmatrix.md +0 -0
  45. package/docs/hardware.md +0 -0
  46. package/docs/libraryapi.md +0 -0
  47. package/docs/licenseaudit-1.8.12.md +0 -0
  48. package/docs/logs/examplesession.json +54 -0
  49. package/docs/memoryengine.md +0 -0
  50. package/docs/mobileconversionresearch-1.8.10.md +0 -0
  51. package/docs/modes.md +0 -0
  52. package/docs/native-wrappers.md +38 -0
  53. package/docs/nativeidentityresearch-1.8.11.md +0 -0
  54. package/docs/optimization.md +0 -0
  55. package/docs/packageaudit185.md +0 -0
  56. package/docs/performance.md +0 -0
  57. package/docs/planning.1.8.18.md +0 -0
  58. package/docs/planning.1.8.19.md +0 -0
  59. package/docs/planning.engine.md +186 -0
  60. package/docs/platformpipelineaudit.md +0 -0
  61. package/docs/platformpipelines.md +0 -0
  62. package/docs/productindex.md +0 -0
  63. package/docs/registryresearch.md +0 -0
  64. package/docs/release.md +0 -0
  65. package/docs/release17notes.md +0 -0
  66. package/docs/release181notes.md +0 -0
  67. package/docs/release182notes.md +0 -0
  68. package/docs/release184notes.md +0 -0
  69. package/docs/release185notes.md +0 -0
  70. package/docs/release18notes.md +0 -0
  71. package/docs/releaseassets.md +0 -0
  72. package/docs/releasenotes-1.8.12.md +0 -0
  73. package/docs/releasenotes-1.8.13.md +0 -0
  74. package/docs/releasenotes-1.8.14.md +0 -0
  75. package/docs/releasenotes-1.8.15.md +0 -0
  76. package/docs/releasenotes-1.8.16.md +0 -0
  77. package/docs/releasenotes-1.8.17.md +0 -0
  78. package/docs/releasenotes-1.8.18.md +0 -0
  79. package/docs/releasenotes-1.8.19.md +0 -0
  80. package/docs/reorganization-1.8.8.md +0 -0
  81. package/docs/reorganization-1.8.9.md +0 -0
  82. package/docs/repo-analysis-1.8.21.json +0 -0
  83. package/docs/repo-candidates-1.8.21.jsonl +0 -0
  84. package/docs/repo-research-1.8.16.md +0 -0
  85. package/docs/repo-research-1.8.21.md +0 -0
  86. package/docs/repo-selected-1.8.21.json +0 -0
  87. package/docs/repo-synthesis-1.8.16.md +0 -0
  88. package/docs/repo-synthesis-1.8.21.md +0 -0
  89. package/docs/research-1.8.18-isolation.md +0 -0
  90. package/docs/research-1.8.19-virtual-browser.md +0 -0
  91. package/docs/roadmapp2p3.md +0 -0
  92. package/docs/s3compatible.md +0 -0
  93. package/docs/saddle.archive.1.8.17.tar.gz.gpg +0 -0
  94. package/docs/scanningresearch-1.8.11.md +0 -0
  95. package/docs/security.md +0 -0
  96. package/docs/securityaudit-1.8.7.md +0 -0
  97. package/docs/securityreferences-1.8.11.md +0 -0
  98. package/docs/securityresearch-1.8.11.md +0 -0
  99. package/docs/signingresearch-1.8.12.md +0 -0
  100. package/docs/signingwithoutcertificates.md +0 -0
  101. package/docs/signpathapplication.md +0 -0
  102. package/docs/sitemap.md +0 -0
  103. package/docs/tauri-glib-risk-1.8.11.md +0 -0
  104. package/docs/todo-1.8.15.md +0 -0
  105. package/docs/todo-1.8.16.md +0 -0
  106. package/docs/todo-1.8.18.md +0 -0
  107. package/docs/todo-1.8.19.md +0 -0
  108. package/docs/todo.md +0 -0
  109. package/docs/toolchainresearch-1.8.9.md +0 -0
  110. package/docs/toolchains.md +0 -0
  111. package/docs/usage.md +0 -0
  112. package/docs/viability.md +0 -0
  113. package/docs/virtualization.md +0 -0
  114. package/docs/web-duplicatecleanup.md +0 -0
  115. package/docs/web-ideas.md +0 -0
  116. package/docs/workflowimprovements-2026-08-19.md +0 -0
  117. package/docs/workflowinputs.md +0 -0
  118. package/docs/workflowoperations.md +0 -0
  119. package/gpumonitor.cpp +0 -0
  120. package/gpus.json +1 -1
  121. package/index.ts +15 -15
  122. package/manifest.json +20 -0
  123. package/media.ts +0 -0
  124. package/modalityregistry.ts +156 -0
  125. package/mttg.config +1 -1
  126. package/orchestrator.ts +5 -2
  127. package/package.json +147 -97
  128. package/passage.config +2 -2
  129. package/performance.ts +0 -0
  130. package/processors.json +1 -1
  131. package/qemu.config +2 -2
  132. package/qemubridge.py +0 -0
  133. package/quantum.ts +0 -0
  134. package/render.ts +0 -0
  135. package/scheduler.ts +0 -0
  136. package/security.ts +0 -0
  137. package/tiers.ts +9 -3
  138. package/tsconfig.json +22 -17
  139. package/virtualcpu.ts +1 -0
  140. package/virtualgpu.ts +1 -0
  141. package/virtualhardware.c +0 -0
  142. package/virtualhardware.json +2 -2
  143. package/virtualization.ts +0 -0
  144. package/virtualizationcore.cpp +0 -0
  145. package/virtualmemory.ts +0 -0
  146. package/vm.config.json +3 -3
  147. package/biome.json +0 -153
  148. package/dist/acquisition.d.ts +0 -359
  149. package/dist/acquisition.d.ts.map +0 -1
  150. package/dist/acquisition.js +0 -629
  151. package/dist/acquisition.js.map +0 -1
  152. package/dist/alternatives.d.ts +0 -509
  153. package/dist/alternatives.d.ts.map +0 -1
  154. package/dist/alternatives.js +0 -951
  155. package/dist/alternatives.js.map +0 -1
  156. package/dist/automation.d.ts +0 -426
  157. package/dist/automation.d.ts.map +0 -1
  158. package/dist/automation.js +0 -561
  159. package/dist/automation.js.map +0 -1
  160. package/dist/browser.d.ts +0 -562
  161. package/dist/browser.d.ts.map +0 -1
  162. package/dist/browser.js +0 -1057
  163. package/dist/browser.js.map +0 -1
  164. package/dist/capacitor.config.d.ts +0 -13
  165. package/dist/capacitor.config.d.ts.map +0 -1
  166. package/dist/capacitor.config.js +0 -26
  167. package/dist/capacitor.config.js.map +0 -1
  168. package/dist/cli.d.ts +0 -17
  169. package/dist/cli.d.ts.map +0 -1
  170. package/dist/cli.js +0 -111
  171. package/dist/cli.js.map +0 -1
  172. package/dist/communication.d.ts +0 -192
  173. package/dist/communication.d.ts.map +0 -1
  174. package/dist/communication.js +0 -418
  175. package/dist/communication.js.map +0 -1
  176. package/dist/compute.d.ts +0 -1161
  177. package/dist/compute.d.ts.map +0 -1
  178. package/dist/compute.js +0 -2273
  179. package/dist/compute.js.map +0 -1
  180. package/dist/distribution.d.ts +0 -529
  181. package/dist/distribution.d.ts.map +0 -1
  182. package/dist/distribution.js +0 -811
  183. package/dist/distribution.js.map +0 -1
  184. package/dist/execution.d.ts +0 -530
  185. package/dist/execution.d.ts.map +0 -1
  186. package/dist/execution.js +0 -761
  187. package/dist/execution.js.map +0 -1
  188. package/dist/format.d.ts +0 -19
  189. package/dist/format.d.ts.map +0 -1
  190. package/dist/format.js +0 -60
  191. package/dist/format.js.map +0 -1
  192. package/dist/foundation.d.ts +0 -176
  193. package/dist/foundation.d.ts.map +0 -1
  194. package/dist/foundation.js +0 -309
  195. package/dist/foundation.js.map +0 -1
  196. package/dist/index.d.ts +0 -735
  197. package/dist/index.d.ts.map +0 -1
  198. package/dist/index.js +0 -1020
  199. package/dist/index.js.map +0 -1
  200. package/dist/integration.d.ts +0 -236
  201. package/dist/integration.d.ts.map +0 -1
  202. package/dist/integration.js +0 -236
  203. package/dist/integration.js.map +0 -1
  204. package/dist/intelligence.d.ts +0 -94
  205. package/dist/intelligence.d.ts.map +0 -1
  206. package/dist/intelligence.js +0 -145
  207. package/dist/intelligence.js.map +0 -1
  208. package/dist/isolation.d.ts +0 -129
  209. package/dist/isolation.d.ts.map +0 -1
  210. package/dist/isolation.js +0 -96
  211. package/dist/isolation.js.map +0 -1
  212. package/dist/media.d.ts +0 -344
  213. package/dist/media.d.ts.map +0 -1
  214. package/dist/media.js +0 -986
  215. package/dist/media.js.map +0 -1
  216. package/dist/modes.d.ts +0 -359
  217. package/dist/modes.d.ts.map +0 -1
  218. package/dist/modes.js +0 -134
  219. package/dist/modes.js.map +0 -1
  220. package/dist/operations.d.ts +0 -67
  221. package/dist/operations.d.ts.map +0 -1
  222. package/dist/operations.js +0 -94
  223. package/dist/operations.js.map +0 -1
  224. package/dist/orchestrator.d.ts +0 -1339
  225. package/dist/orchestrator.d.ts.map +0 -1
  226. package/dist/orchestrator.js +0 -4308
  227. package/dist/orchestrator.js.map +0 -1
  228. package/dist/packager/targetcli.js +0 -4
  229. package/dist/performance.d.ts +0 -416
  230. package/dist/performance.d.ts.map +0 -1
  231. package/dist/performance.js +0 -827
  232. package/dist/performance.js.map +0 -1
  233. package/dist/quantum.d.ts +0 -810
  234. package/dist/quantum.d.ts.map +0 -1
  235. package/dist/quantum.js +0 -2073
  236. package/dist/quantum.js.map +0 -1
  237. package/dist/render.d.ts +0 -381
  238. package/dist/render.d.ts.map +0 -1
  239. package/dist/render.js +0 -1073
  240. package/dist/render.js.map +0 -1
  241. package/dist/scheduler.d.ts +0 -596
  242. package/dist/scheduler.d.ts.map +0 -1
  243. package/dist/scheduler.js +0 -1259
  244. package/dist/scheduler.js.map +0 -1
  245. package/dist/security.d.ts +0 -501
  246. package/dist/security.d.ts.map +0 -1
  247. package/dist/security.js +0 -1170
  248. package/dist/security.js.map +0 -1
  249. package/dist/server.d.ts +0 -21
  250. package/dist/server.d.ts.map +0 -1
  251. package/dist/server.js +0 -52
  252. package/dist/server.js.map +0 -1
  253. package/dist/tiers.d.ts +0 -1002
  254. package/dist/tiers.d.ts.map +0 -1
  255. package/dist/tiers.js +0 -2165
  256. package/dist/tiers.js.map +0 -1
  257. package/dist/virtual.d.ts +0 -641
  258. package/dist/virtual.d.ts.map +0 -1
  259. package/dist/virtual.js +0 -1285
  260. package/dist/virtual.js.map +0 -1
  261. package/dist/virtualcpu.d.ts +0 -316
  262. package/dist/virtualcpu.d.ts.map +0 -1
  263. package/dist/virtualcpu.js +0 -1180
  264. package/dist/virtualcpu.js.map +0 -1
  265. package/dist/virtualgpu.d.ts +0 -345
  266. package/dist/virtualgpu.d.ts.map +0 -1
  267. package/dist/virtualgpu.js +0 -1000
  268. package/dist/virtualgpu.js.map +0 -1
  269. package/dist/virtualization.d.ts +0 -607
  270. package/dist/virtualization.d.ts.map +0 -1
  271. package/dist/virtualization.js +0 -1187
  272. package/dist/virtualization.js.map +0 -1
  273. package/dist/virtualmemory.d.ts +0 -818
  274. package/dist/virtualmemory.d.ts.map +0 -1
  275. package/dist/virtualmemory.js +0 -1796
  276. package/dist/virtualmemory.js.map +0 -1
  277. package/dist/webscrape.d.ts +0 -720
  278. package/dist/webscrape.d.ts.map +0 -1
  279. package/dist/webscrape.js +0 -2697
  280. package/dist/webscrape.js.map +0 -1
  281. package/docs/example-publicapi.ts +0 -7
  282. package/web/extension/manifest.json +0 -23
  283. package/web/readme.md +0 -382
  284. package/web/tsconfig.json +0 -25
@@ -1,720 +0,0 @@
1
- /**
2
- * webscrape.ts — the legacy WebScrape toolkit generation.
3
- *
4
- * This file carries the complete legacy scrape sub-project of the former
5
- * repository (thirty sections: types, errors, utils, port, tokens,
6
- * chunking, formats, serialize, headers, session, pool, proxy, proxypool,
7
- * rate-limiter, retry, middleware, events, renderer, sitemap, agent,
8
- * llms-txt, fetch, batch, browser, scrape, crawler, server, cli and
9
- * dev-server) consolidated into the single root-level file of the grand
10
- * merge. The optional npm runtimes of the toolkit (emittery, p-limit,
11
- * p-retry, cheerio, playwright, hono, commander) load lazily so nothing is
12
- * required at module load that the package does not ship; the CLI,
13
- * dev-server and hono API bootstraps are exported factories.
14
- */
15
- import { z } from "zod";
16
- import type Emittery from "emittery";
17
- export declare const ScrapeFormatSchema: z.ZodEnum<{
18
- html: "html";
19
- json: "json";
20
- markdown: "markdown";
21
- redis: "redis";
22
- text: "text";
23
- xml: "xml";
24
- }>;
25
- export type ScrapeFormat = z.infer<typeof ScrapeFormatSchema>;
26
- export declare const SerializeTargetSchema: z.ZodEnum<{
27
- json: "json";
28
- markdown: "markdown";
29
- redis: "redis";
30
- text: "text";
31
- xml: "xml";
32
- }>;
33
- export type SerializeTarget = z.infer<typeof SerializeTargetSchema>;
34
- export declare const ScrapeOptionsSchema: z.ZodObject<{
35
- url: z.ZodOptional<z.ZodString>;
36
- html: z.ZodOptional<z.ZodString>;
37
- mode: z.ZodOptional<z.ZodPrefault<z.ZodEnum<{
38
- auto: "auto";
39
- browser: "browser";
40
- fetch: "fetch";
41
- }>>>;
42
- waitUntil: z.ZodOptional<z.ZodPrefault<z.ZodEnum<{
43
- commit: "commit";
44
- domcontentloaded: "domcontentloaded";
45
- load: "load";
46
- networkidle: "networkidle";
47
- }>>>;
48
- timeout: z.ZodOptional<z.ZodPrefault<z.ZodNumber>>;
49
- scroll: z.ZodOptional<z.ZodPrefault<z.ZodBoolean>>;
50
- scrollDelay: z.ZodOptional<z.ZodPrefault<z.ZodNumber>>;
51
- maxScrolls: z.ZodOptional<z.ZodPrefault<z.ZodNumber>>;
52
- removeSelectors: z.ZodOptional<z.ZodPrefault<z.ZodArray<z.ZodString>>>;
53
- extractImages: z.ZodOptional<z.ZodPrefault<z.ZodBoolean>>;
54
- extractLinks: z.ZodOptional<z.ZodPrefault<z.ZodBoolean>>;
55
- extractTables: z.ZodOptional<z.ZodPrefault<z.ZodBoolean>>;
56
- maxContentLength: z.ZodOptional<z.ZodNumber>;
57
- format: z.ZodOptional<z.ZodPrefault<z.ZodEnum<{
58
- html: "html";
59
- json: "json";
60
- markdown: "markdown";
61
- redis: "redis";
62
- text: "text";
63
- xml: "xml";
64
- }>>>;
65
- language: z.ZodOptional<z.ZodString>;
66
- proxy: z.ZodOptional<z.ZodString>;
67
- retries: z.ZodOptional<z.ZodPrefault<z.ZodNumber>>;
68
- retryDelay: z.ZodOptional<z.ZodPrefault<z.ZodNumber>>;
69
- userAgent: z.ZodOptional<z.ZodString>;
70
- headers: z.ZodOptional<z.ZodPrefault<z.ZodRecord<z.ZodString, z.ZodString>>>;
71
- cache: z.ZodOptional<z.ZodPrefault<z.ZodBoolean>>;
72
- cacheTtlMs: z.ZodOptional<z.ZodPrefault<z.ZodNumber>>;
73
- readable: z.ZodOptional<z.ZodBoolean>;
74
- }, z.core.$strict>;
75
- export type ScrapeOptions = z.infer<typeof ScrapeOptionsSchema>;
76
- export interface ScrapeResult {
77
- url: string;
78
- title: string;
79
- content: string;
80
- format: ScrapeFormat;
81
- text: string;
82
- links: LegacyLinkInfo[];
83
- images: LegacyImageInfo[];
84
- tables: LegacyTableInfo[];
85
- metadata: LegacyPageMetadata;
86
- extractedAt: string;
87
- duration: number;
88
- size: number;
89
- }
90
- export interface LegacyPageMetadata {
91
- title: string;
92
- description?: string;
93
- favicon?: string;
94
- charset?: string;
95
- language?: string;
96
- author?: string;
97
- publishedDate?: string;
98
- ogImage?: string;
99
- ogType?: string;
100
- keywords?: string[];
101
- }
102
- export interface LegacyLinkInfo {
103
- href: string;
104
- text: string;
105
- isInternal: boolean;
106
- isExternal: boolean;
107
- }
108
- export interface LegacyImageInfo {
109
- src: string;
110
- alt: string;
111
- width?: number;
112
- height?: number;
113
- }
114
- export interface LegacyTableInfo {
115
- headers: string[];
116
- rows: string[][];
117
- caption?: string;
118
- }
119
- export declare const BrowserAgentConfigSchema: z.ZodObject<{
120
- headless: z.ZodOptional<z.ZodPrefault<z.ZodBoolean>>;
121
- userAgent: z.ZodOptional<z.ZodString>;
122
- viewport: z.ZodOptional<z.ZodPrefault<z.ZodObject<{
123
- width: z.ZodPrefault<z.ZodNumber>;
124
- height: z.ZodPrefault<z.ZodNumber>;
125
- }, z.core.$strict>>>;
126
- locale: z.ZodOptional<z.ZodPrefault<z.ZodString>>;
127
- geolocation: z.ZodOptional<z.ZodObject<{
128
- latitude: z.ZodNumber;
129
- longitude: z.ZodNumber;
130
- }, z.core.$strict>>;
131
- timeout: z.ZodOptional<z.ZodPrefault<z.ZodNumber>>;
132
- recordVideo: z.ZodOptional<z.ZodPrefault<z.ZodBoolean>>;
133
- proxy: z.ZodOptional<z.ZodPrefault<z.ZodString>>;
134
- storageState: z.ZodOptional<z.ZodPrefault<z.ZodString>>;
135
- blockAds: z.ZodOptional<z.ZodPrefault<z.ZodBoolean>>;
136
- stealth: z.ZodOptional<z.ZodPrefault<z.ZodBoolean>>;
137
- }, z.core.$strict>;
138
- export type BrowserAgentConfig = z.infer<typeof BrowserAgentConfigSchema>;
139
- export interface LegacyExtractOptions {
140
- readable?: boolean;
141
- stripTags?: string[];
142
- preserveLinks?: boolean;
143
- preserveImages?: boolean;
144
- preserveTables?: boolean;
145
- maxLength?: number;
146
- removeSelectors?: string[];
147
- baseUrl?: string;
148
- }
149
- export interface SerializeOptions {
150
- format: SerializeTarget;
151
- pretty?: boolean;
152
- maxChunkSize?: number;
153
- includeMetadata?: boolean;
154
- redisKey?: string;
155
- xmlRoot?: string;
156
- }
157
- export interface SerializedOutput {
158
- format: SerializeTarget;
159
- content: string;
160
- chunks?: string[];
161
- size: number;
162
- metadata?: Record<string, unknown>;
163
- }
164
- export interface AgentOutput {
165
- summary: string;
166
- content: string;
167
- keyPoints: string[];
168
- relevantUrls: string[];
169
- structured?: Record<string, unknown>;
170
- tokens: number;
171
- }
172
- export interface RenderOptions {
173
- width?: number;
174
- height?: number;
175
- fullPage?: boolean;
176
- type?: 'png' | 'jpeg';
177
- quality?: number;
178
- output?: string;
179
- }
180
- export interface ChromeCommand {
181
- action: 'goto' | 'click' | 'type' | 'screenshot' | 'evaluate' | 'wait' | 'scroll' | 'extract';
182
- args?: Record<string, unknown>;
183
- }
184
- export interface CliOptions {
185
- url?: string;
186
- file?: string;
187
- format?: ScrapeFormat;
188
- output?: string;
189
- 'no-headless'?: boolean;
190
- timeout?: number;
191
- scroll?: boolean;
192
- readable?: boolean;
193
- agent?: boolean;
194
- pretty?: boolean;
195
- proxy?: string;
196
- retries?: number;
197
- mode?: 'auto' | 'fetch' | 'browser';
198
- }
199
- export interface RetryConfig {
200
- retries: number;
201
- delay: number;
202
- backoff: 'exponential' | 'linear' | 'constant';
203
- maxDelay?: number;
204
- statusCodes?: number[];
205
- }
206
- export interface ProxyConfig {
207
- url: string;
208
- username?: string;
209
- password?: string;
210
- }
211
- export interface LegacyCacheConfig {
212
- enabled: boolean;
213
- ttlMs?: number;
214
- maxEntries?: number;
215
- storage?: 'memory' | 'redis' | 'sqlite' | 'indexeddb';
216
- }
217
- export interface CrawlStats {
218
- totalUrls: number;
219
- successful: number;
220
- failed: number;
221
- skipped: number;
222
- duration: number;
223
- avgResponseTime: number;
224
- }
225
- export interface BatchOptions {
226
- urls: string[];
227
- concurrency?: number;
228
- mode?: 'auto' | 'fetch' | 'browser';
229
- format?: ScrapeFormat;
230
- onProgress?: (completed: number, total: number, currentUrl: string) => void;
231
- onError?: (url: string, error: Error) => void;
232
- }
233
- export declare const ErrorCode: {
234
- readonly VALIDATION_FAILED: 'VALIDATION_FAILED';
235
- readonly INVALID_URL: 'INVALID_URL';
236
- readonly TIMEOUT: 'TIMEOUT';
237
- readonly BLOCKED: 'BLOCKED';
238
- readonly RATE_LIMITED: 'RATE_LIMITED';
239
- readonly PROXY_ERROR: 'PROXY_ERROR';
240
- readonly PARSE_ERROR: 'PARSE_ERROR';
241
- readonly AUTH_REQUIRED: 'AUTH_REQUIRED';
242
- readonly NETWORK_ERROR: 'NETWORK_ERROR';
243
- readonly BROWSER_NOT_AVAILABLE: 'BROWSER_NOT_AVAILABLE';
244
- readonly CRAWL_DEPTH_EXCEEDED: 'CRAWL_DEPTH_EXCEEDED';
245
- readonly MAX_RETRIES_EXCEEDED: 'MAX_RETRIES_EXCEEDED';
246
- };
247
- export type ErrorCode = typeof ErrorCode[keyof typeof ErrorCode];
248
- export declare class WebScrapeError extends Error {
249
- readonly code: ErrorCode;
250
- readonly statusCode: number;
251
- readonly isRetryable: boolean;
252
- readonly timestamp: string;
253
- readonly details?: Record<string, unknown>;
254
- readonly cause?: Error;
255
- constructor(message: string, code: ErrorCode, statusCode: number, isRetryable: boolean, details?: Record<string, unknown>, cause?: Error);
256
- toJSON(): {
257
- error: {
258
- name: string;
259
- code: ErrorCode;
260
- message: string;
261
- statusCode: number;
262
- isRetryable: boolean;
263
- timestamp: string;
264
- details: Record<string, unknown>;
265
- };
266
- };
267
- }
268
- export declare class ValidationError extends WebScrapeError {
269
- constructor(message: string, details?: Record<string, unknown>, cause?: Error);
270
- }
271
- export declare class TimeoutError extends WebScrapeError {
272
- constructor(message: string, details?: Record<string, unknown>, cause?: Error);
273
- }
274
- export declare class BlockedError extends WebScrapeError {
275
- constructor(message: string, details?: Record<string, unknown>, cause?: Error);
276
- }
277
- export declare class RateLimitError extends WebScrapeError {
278
- readonly retryAfterMs?: number;
279
- constructor(message: string, retryAfterMs?: number, details?: Record<string, unknown>, cause?: Error);
280
- }
281
- export declare class ProxyError extends WebScrapeError {
282
- constructor(message: string, details?: Record<string, unknown>, cause?: Error);
283
- }
284
- export declare class ParseError extends WebScrapeError {
285
- constructor(message: string, details?: Record<string, unknown>, cause?: Error);
286
- }
287
- export declare class AuthError extends WebScrapeError {
288
- constructor(message: string, details?: Record<string, unknown>, cause?: Error);
289
- }
290
- export declare class NetworkError extends WebScrapeError {
291
- constructor(message: string, details?: Record<string, unknown>, cause?: Error);
292
- }
293
- export declare class BrowserNotAvailableError extends WebScrapeError {
294
- constructor(message?: string, details?: Record<string, unknown>);
295
- }
296
- export declare function ensureDir(path: string): void;
297
- export declare function writeOutput(path: string, content: string): void;
298
- export declare function slugify(text: string): string;
299
- export declare function truncate(text: string, max: number, suffix?: string): string;
300
- export declare function legacyestimatetokens(text: string): number;
301
- export declare function legacychunktext(text: string, chunkSize: number): string[];
302
- export declare function delay(ms: number): Promise<void>;
303
- export declare function isValidUrl(url: string): boolean;
304
- export declare function normalizeUrl(url: string, base?: string): string;
305
- export declare function isInternalUrl(href: string, base: string): boolean;
306
- export declare function randomPort(): number;
307
- /**
308
- * Reset the cached port (for testing).
309
- */
310
- export declare function resetPort(): void;
311
- export type ModelType = 'gpt-4o' | 'gpt-4' | 'gpt-3.5-turbo' | 'claude' | 'gemini' | 'default';
312
- export declare function estimateTokens(text: string, model?: ModelType): number;
313
- export declare function countTokens(text: string, model?: ModelType): number;
314
- export declare function fitsInContext(text: string, maxTokens: number, model?: ModelType): boolean;
315
- export declare function truncateToTokens(text: string, maxTokens: number, model?: ModelType): string;
316
- export declare function tokenCost(text: string, model: ModelType, pricePer1kTokens: number): number;
317
- export declare const MODEL_PRICES: Record<string, {
318
- input: number;
319
- output: number;
320
- }>;
321
- export interface ChunkOptions {
322
- maxTokens?: number;
323
- overlapTokens?: number;
324
- preserveCodeBlocks?: boolean;
325
- includeHeadingPath?: boolean;
326
- }
327
- export interface Chunk {
328
- content: string;
329
- headingPath: string[];
330
- tokenCount: number;
331
- index: number;
332
- }
333
- export declare function chunkMarkdown(markdown: string, options?: ChunkOptions): Chunk[];
334
- export declare function chunkText(text: string, options?: ChunkOptions): Chunk[];
335
- export declare function formatChunksForRAG(chunks: Chunk[]): string;
336
- export declare function resolveFormat(format: string): ScrapeFormat;
337
- export declare function formatFromExtension(ext: string): ScrapeFormat | null;
338
- export declare function extensionForFormat(format: ScrapeFormat): string;
339
- export declare function detectContentType(html: string): 'article' | 'list' | 'page' | 'other';
340
- export declare function buildSerializeOptions(format: ScrapeFormat, pretty?: boolean): SerializeOptions;
341
- export declare function convertResult(result: ScrapeResult, targetFormat: ScrapeFormat): Promise<ScrapeResult>;
342
- export declare function serializeResult(result: ScrapeResult, options: SerializeOptions): SerializedOutput;
343
- export declare function serializeHtml(html: string, options: SerializeOptions): SerializedOutput;
344
- export interface HeaderProfile {
345
- userAgent: string;
346
- accept: string;
347
- acceptLanguage: string;
348
- secChUa: string;
349
- secChUaPlatform: string;
350
- }
351
- export declare function getRandomProfile(): HeaderProfile;
352
- export declare function getHeaders(profile?: HeaderProfile): Record<string, string>;
353
- export declare function mergeHeaders(base: Record<string, string>, override: Record<string, string>): Record<string, string>;
354
- export interface Cookie {
355
- name: string;
356
- value: string;
357
- domain?: string;
358
- path?: string;
359
- expires?: number;
360
- httpOnly?: boolean;
361
- secure?: boolean;
362
- }
363
- export declare class CookieJar {
364
- private cookies;
365
- set(cookie: Cookie): void;
366
- get(name: string, domain?: string, _path?: string): Cookie | undefined;
367
- getAll(domain?: string): Cookie[];
368
- toString(domain?: string): string;
369
- parseSetCookie(header: string, defaultDomain?: string): void;
370
- clear(): void;
371
- }
372
- export declare class ScrapingSession {
373
- readonly cookieJar: CookieJar;
374
- readonly id: string;
375
- private data;
376
- constructor(id?: string);
377
- get<T = unknown>(key: string): T | undefined;
378
- set(key: string, value: unknown): void;
379
- clear(): void;
380
- }
381
- export declare function createSession(id?: string): ScrapingSession;
382
- export interface PoolConfig {
383
- maxSize?: number;
384
- acquireTimeoutMs?: number;
385
- }
386
- export declare class BrowserPool {
387
- private pool;
388
- private waitQueue;
389
- private config;
390
- private browserConfig;
391
- constructor(config?: PoolConfig, browserConfig?: BrowserAgentConfig);
392
- acquire(): Promise<AgentBrowser>;
393
- release(browser: AgentBrowser): void;
394
- destroy(): Promise<void>;
395
- getStatus(): {
396
- total: number;
397
- idle: number;
398
- inUse: number;
399
- waiting: number;
400
- };
401
- }
402
- export declare function createPool(config?: PoolConfig, browserConfig?: BrowserAgentConfig): BrowserPool;
403
- export type ProxyRotationStrategy = 'round-robin' | 'random';
404
- export interface ProxyPoolConfig {
405
- maxFailures?: number;
406
- reviveAfterMs?: number;
407
- strategy?: ProxyRotationStrategy;
408
- }
409
- export declare class ProxyPool {
410
- private proxies;
411
- private stats;
412
- private currentIndex;
413
- private config;
414
- constructor(proxies: ProxyConfig[], config?: Partial<ProxyPoolConfig>);
415
- private getActiveProxies;
416
- next(): ProxyConfig | null;
417
- reportSuccess(proxy: ProxyConfig): void;
418
- reportFailure(proxy: ProxyConfig): void;
419
- getStatus(): {
420
- total: number;
421
- active: number;
422
- disabled: number;
423
- };
424
- }
425
- export declare function createProxyPool(proxies: ProxyConfig[], config?: Partial<ProxyPoolConfig>): ProxyPool;
426
- /**
427
- * proxy pool chooses healthy least used entries and never rotates blindly.
428
- */
429
- export declare function proxypool(options?: {}): {
430
- choose: () => any;
431
- report: (id: any, result?: {}) => any;
432
- list(): any;
433
- };
434
- export interface RateLimiterConfig {
435
- maxTokensPerInterval: number;
436
- intervalMs: number;
437
- maxConcurrent?: number;
438
- }
439
- export declare class RateLimiter {
440
- private buckets;
441
- private active;
442
- private config;
443
- constructor(config?: Partial<RateLimiterConfig>);
444
- private getBucket;
445
- private refill;
446
- acquire(key: string): Promise<void>;
447
- release(key: string): void;
448
- getStats(key: string): {
449
- tokens: number;
450
- active: number;
451
- };
452
- clear(): void;
453
- }
454
- export declare function createRateLimiter(config?: Partial<RateLimiterConfig>): RateLimiter;
455
- export declare const DEFAULT_RETRY_CONFIG: Required<RetryConfig>;
456
- export declare function isRetryableError(error: Error): boolean;
457
- export declare function withRetry<T>(fn: (attemptNumber: number) => Promise<T>, config?: Partial<RetryConfig>, onRetry?: (error: Error, attempt: number) => void): Promise<T>;
458
- /**
459
- * Loads the p-retry AbortError class lazily (the class was a value re-export
460
- * of the former scrape/retry.ts module; the grand merge keeps it reachable
461
- * without requiring p-retry at module load time).
462
- */
463
- export declare function loadaborterror(): Promise<any>;
464
- export interface MiddlewareContext<T = Record<string, unknown>> {
465
- data: T;
466
- state: Record<string, unknown>;
467
- startTime: number;
468
- aborted: boolean;
469
- abort(): void;
470
- }
471
- export type MiddlewareNext = () => Promise<void>;
472
- export type Middleware<T = Record<string, unknown>> = (ctx: MiddlewareContext<T>, next: MiddlewareNext) => Promise<void>;
473
- export declare class MiddlewarePipeline<T = Record<string, unknown>> {
474
- private middlewares;
475
- use(middleware: Middleware<T>): this;
476
- execute(initialData: T): Promise<MiddlewareContext<T>>;
477
- clear(): void;
478
- }
479
- export declare function loggingMiddleware(logger?: {
480
- info: (msg: string) => void;
481
- }): Middleware;
482
- export declare function timeoutMiddleware(timeoutMs: number): Middleware;
483
- export declare function retryMiddleware(maxRetries: number, delayMs: number): Middleware;
484
- export declare function createPipeline<T = Record<string, unknown>>(): MiddlewarePipeline<T>;
485
- export interface WebScrapeEvents {
486
- 'request:start': {
487
- url: string;
488
- options: ScrapeOptions;
489
- timestamp: number;
490
- };
491
- 'request:response': {
492
- url: string;
493
- status: number;
494
- attempt: number;
495
- duration: number;
496
- };
497
- 'request:error': {
498
- url: string;
499
- error: Error;
500
- attempt: number;
501
- };
502
- 'request:retry': {
503
- url: string;
504
- attempt: number;
505
- maxRetries: number;
506
- delayMs: number;
507
- };
508
- 'request:complete': {
509
- url: string;
510
- duration: number;
511
- success: boolean;
512
- };
513
- 'cache:hit': {
514
- key: string;
515
- };
516
- 'cache:miss': {
517
- key: string;
518
- };
519
- 'cache:set': {
520
- key: string;
521
- ttlMs?: number;
522
- };
523
- 'proxy:rotate': {
524
- proxy: string;
525
- reason: string;
526
- };
527
- 'proxy:error': {
528
- proxy: string;
529
- error: Error;
530
- };
531
- 'proxy:disabled': {
532
- proxy: string;
533
- reason: string;
534
- };
535
- 'crawl:discover': {
536
- url: string;
537
- depth: number;
538
- parentUrl?: string;
539
- };
540
- 'crawl:complete': {
541
- totalUrls: number;
542
- successful: number;
543
- failed: number;
544
- duration: number;
545
- };
546
- }
547
- export type EventEmitter = Emittery<WebScrapeEvents>;
548
- /**
549
- * Creates a fresh emittery event bus. Emittery joined the lazy-loading
550
- * contract of the grand merge: the optional runtime dependency is imported
551
- * on first use, so loading this module never requires it to be installed.
552
- */
553
- export declare function createEventEmitter(): Promise<EventEmitter>;
554
- export declare function globalEmitter(): any;
555
- interface PygameConfig {
556
- pythonPath?: string;
557
- width?: number;
558
- height?: number;
559
- fps?: number;
560
- fullscreen?: boolean;
561
- }
562
- export declare class PygameRenderer {
563
- private config;
564
- private process;
565
- private tempDir;
566
- private screenDir;
567
- constructor(config?: PygameConfig);
568
- renderScreenshot(imageBuffer: Buffer): Promise<void>;
569
- renderDoom(): Promise<void>;
570
- private runScript;
571
- close(): void;
572
- }
573
- export declare function createRenderer(config?: PygameConfig): PygameRenderer;
574
- export interface SitemapUrl {
575
- loc: string;
576
- lastmod?: string;
577
- changefreq?: string;
578
- priority?: number;
579
- }
580
- export interface SitemapResult {
581
- urls: SitemapUrl[];
582
- sitemaps: string[];
583
- duration: number;
584
- }
585
- export declare function fetchSitemap(url: string, options?: {
586
- timeout?: number;
587
- headers?: Record<string, string>;
588
- fetcher?: typeof fetch;
589
- }): Promise<SitemapResult>;
590
- export declare function discoverSitemaps(siteUrl: string): Promise<string[]>;
591
- export declare function parseSitemap(url: string, options?: {
592
- timeout?: number;
593
- headers?: Record<string, string>;
594
- fetcher?: typeof fetch;
595
- followIndexes?: boolean;
596
- maxUrls?: number;
597
- maxDepth?: number;
598
- }): Promise<SitemapUrl[]>;
599
- export interface AgentFormatOptions {
600
- includeSummary?: boolean;
601
- includeKeyPoints?: boolean;
602
- includeUrls?: boolean;
603
- includeRaw?: boolean;
604
- maxTokens?: number;
605
- chunkSize?: number;
606
- model?: 'gpt-4o' | 'gpt-4' | 'gpt-3.5-turbo' | 'claude' | 'gemini' | 'default';
607
- }
608
- export declare function formatForAgent(result: ScrapeResult, options?: AgentFormatOptions): AgentOutput;
609
- export declare function buildContext(result: ScrapeResult): string;
610
- export interface LlmsTxtOptions {
611
- siteName?: string;
612
- description?: string;
613
- includeOptional?: boolean;
614
- }
615
- export declare function generateLlmsTxt(results: ScrapeResult[], options?: LlmsTxtOptions): string;
616
- export declare function generateLlmsFullTxt(results: ScrapeResult[]): string;
617
- export interface FetchResult {
618
- html: string;
619
- url: string;
620
- status: number;
621
- headers: Record<string, string>;
622
- duration: number;
623
- }
624
- export declare function fetchHtml(url: string, options?: {
625
- timeout?: number;
626
- headers?: Record<string, string>;
627
- userAgent?: string;
628
- proxy?: string;
629
- signal?: AbortSignal;
630
- }): Promise<FetchResult>;
631
- export declare function fetchAndParse(url: string, options?: Partial<ScrapeOptions>): Promise<FetchResult>;
632
- export declare function detectRenderingMode(html: string): Promise<'static' | 'spa' | 'hydrated'>;
633
- export interface BatchResult {
634
- results: ScrapeResult[];
635
- errors: {
636
- url: string;
637
- error: Error;
638
- }[];
639
- successful: number;
640
- failed: number;
641
- duration: number;
642
- }
643
- export declare function batchScrape(options: BatchOptions, scrapeOpts?: ScrapeOptions): Promise<BatchResult>;
644
- export declare function batchScrapeSequential(urls: string[], options?: ScrapeOptions, callbacks?: {
645
- onResult?: (result: ScrapeResult, index: number) => void;
646
- onError?: (url: string, error: Error, index: number) => void;
647
- delayMs?: number;
648
- }): Promise<BatchResult>;
649
- export declare class AgentBrowser {
650
- private browser;
651
- private context;
652
- private page;
653
- private config;
654
- private static DEFAULTS;
655
- constructor(config?: Partial<BrowserAgentConfig>);
656
- launch(browserType?: 'chromium' | 'firefox' | 'webkit'): Promise<void>;
657
- navigate(url: string, waitUntil?: 'load' | 'domcontentloaded' | 'networkidle'): Promise<void>;
658
- screenshot(opts?: RenderOptions): Promise<Buffer>;
659
- evaluate<T = unknown>(fn: string | (() => T), args?: unknown[]): Promise<T>;
660
- click(selector: string): Promise<void>;
661
- type(selector: string, text: string, delayMs?: number): Promise<void>;
662
- scrollToBottom(step?: number, delayMs?: number, maxScrolls?: number): Promise<number>;
663
- scrollTo(x: number, y: number): Promise<void>;
664
- waitFor(selector: string, timeout?: number): Promise<void>;
665
- waitForLoad(): Promise<void>;
666
- html(): Promise<string>;
667
- text(): Promise<string>;
668
- title(): Promise<string>;
669
- url(): Promise<string>;
670
- executeCommands(commands: ChromeCommand[]): Promise<unknown[]>;
671
- close(): Promise<void>;
672
- isConnected(): boolean;
673
- }
674
- export declare function createBrowser(config?: BrowserAgentConfig): AgentBrowser;
675
- export declare function scrapeUrl(url: string, options?: ScrapeOptions): Promise<ScrapeResult>;
676
- export declare function scrapeHtml(html: string, options?: ScrapeOptions): Promise<ScrapeResult>;
677
- export declare function scrapeWithBrowser(browser: AgentBrowser, url: string, options?: ScrapeOptions): Promise<ScrapeResult>;
678
- export interface CrawlOptions extends ScrapeOptions {
679
- maxDepth?: number;
680
- maxPages?: number;
681
- maxConcurrent?: number;
682
- sameDomain?: boolean;
683
- delayMs?: number;
684
- onDiscover?: (url: string, depth: number) => void;
685
- onResult?: (result: ScrapeResult) => void;
686
- onError?: (url: string, error: Error) => void;
687
- }
688
- export declare function legacycrawl(startUrl: string, options?: CrawlOptions): Promise<{
689
- results: ScrapeResult[];
690
- stats: CrawlStats;
691
- }>;
692
- export interface ServerConfig {
693
- port?: number;
694
- host?: string;
695
- apiKey?: string;
696
- }
697
- /**
698
- * Creates the self-hosted scrape API surface. The factory became async with
699
- * the grand merge: the hono application is built on first call and the port
700
- * draw keeps using the process-wide random port helper.
701
- */
702
- export declare function createServer(config?: ServerConfig): Promise<{
703
- fetch: any;
704
- port: number;
705
- host: string;
706
- }>;
707
- /**
708
- * Runs the webscrape CLI. The former top-level commander construction of
709
- * scrape/cli.ts became this exported factory in the grand merge: commander
710
- * is imported on first call and loading the module never requires it.
711
- */
712
- export declare function runscrapecli(): Promise<void>;
713
- /**
714
- * Starts the local scrape API dev server. The former top-level bootstrap
715
- * of scrape/dev-server.ts became this exported factory in the grand merge
716
- * (a merged module must never bind a port as an import side effect).
717
- */
718
- export declare function startdevserver(): import("node:http").Server<typeof import("node:http").IncomingMessage, typeof import("node:http").ServerResponse>;
719
- export {};
720
- //# sourceMappingURL=webscrape.d.ts.map