@wenathlan/saddle 2.0.5 → 2.0.150

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 (282) hide show
  1. package/Dockerfile +47 -21
  2. package/LICENSE +0 -0
  3. package/README.md +19 -3
  4. package/alternatives.ts +0 -0
  5. package/boards.json +2 -2
  6. package/compute.ts +4 -4
  7. package/cores.json +2 -2
  8. package/docker.config +3 -3
  9. package/docs/.gitkeep +0 -0
  10. package/docs/CONVERSA.txt +0 -0
  11. package/docs/actionrecorder.md +0 -0
  12. package/docs/actionsincident.md +0 -0
  13. package/docs/alternatives.md +0 -0
  14. package/docs/architecture-1.8.19.md +0 -0
  15. package/docs/architecture-1.8.19.mmd +0 -0
  16. package/docs/architecture-1.8.19.png +0 -0
  17. package/docs/architecture.md +3 -3
  18. package/docs/artifactavailability.md +0 -0
  19. package/docs/artifactresearch-1.8.9.md +0 -0
  20. package/docs/assets/architecture.svg +0 -0
  21. package/docs/assets/saddle-browser-trace.webp +0 -0
  22. package/docs/assets/saddle-hero-bridge.webp +0 -0
  23. package/docs/assets/saddle-mark.webp +0 -0
  24. package/docs/assets/saddle-runtime-map.webp +0 -0
  25. package/docs/assets/saddlemark.svg +0 -0
  26. package/docs/batches-1816-1820.md +0 -0
  27. package/docs/brancharchive-2026-08-18.md +0 -0
  28. package/docs/branchaudit.md +0 -0
  29. package/docs/browser.md +0 -0
  30. package/docs/capabilityreport.md +0 -0
  31. package/docs/comparativeaudit.md +0 -0
  32. package/docs/consolidation.md +0 -0
  33. package/docs/containerplatforms-1.8.17.md +0 -0
  34. package/docs/containerplatforms-2.1.0.md +73 -0
  35. package/docs/documentmap-1.8.12.md +0 -0
  36. package/docs/e2ugh-engine.md +0 -0
  37. package/docs/ecosystemplan.md +0 -0
  38. package/docs/enginearchitecture.md +0 -0
  39. package/docs/example-localjob.ts +0 -0
  40. package/docs/example-publicapi.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 +14 -15
  122. package/manifest.json +20 -0
  123. package/media.ts +0 -0
  124. package/mttg.config +1 -1
  125. package/orchestrator.ts +5 -2
  126. package/package.json +142 -91
  127. package/passage.config +2 -2
  128. package/performance.ts +0 -0
  129. package/processors.json +1 -1
  130. package/qemu.config +2 -2
  131. package/qemubridge.py +0 -0
  132. package/quantum.ts +0 -0
  133. package/render.ts +0 -0
  134. package/scheduler.ts +0 -0
  135. package/security.ts +0 -0
  136. package/tiers.ts +9 -3
  137. package/tsconfig.json +22 -17
  138. package/virtualcpu.ts +1 -0
  139. package/virtualgpu.ts +1 -0
  140. package/virtualhardware.c +0 -0
  141. package/virtualhardware.json +2 -2
  142. package/virtualization.ts +0 -0
  143. package/virtualizationcore.cpp +0 -0
  144. package/virtualmemory.ts +0 -0
  145. package/vm.config.json +3 -3
  146. package/biome.json +0 -153
  147. package/dist/acquisition.d.ts +0 -359
  148. package/dist/acquisition.d.ts.map +0 -1
  149. package/dist/acquisition.js +0 -629
  150. package/dist/acquisition.js.map +0 -1
  151. package/dist/alternatives.d.ts +0 -509
  152. package/dist/alternatives.d.ts.map +0 -1
  153. package/dist/alternatives.js +0 -951
  154. package/dist/alternatives.js.map +0 -1
  155. package/dist/automation.d.ts +0 -426
  156. package/dist/automation.d.ts.map +0 -1
  157. package/dist/automation.js +0 -561
  158. package/dist/automation.js.map +0 -1
  159. package/dist/browser.d.ts +0 -562
  160. package/dist/browser.d.ts.map +0 -1
  161. package/dist/browser.js +0 -1057
  162. package/dist/browser.js.map +0 -1
  163. package/dist/capacitor.config.d.ts +0 -13
  164. package/dist/capacitor.config.d.ts.map +0 -1
  165. package/dist/capacitor.config.js +0 -26
  166. package/dist/capacitor.config.js.map +0 -1
  167. package/dist/cli.d.ts +0 -17
  168. package/dist/cli.d.ts.map +0 -1
  169. package/dist/cli.js +0 -111
  170. package/dist/cli.js.map +0 -1
  171. package/dist/communication.d.ts +0 -192
  172. package/dist/communication.d.ts.map +0 -1
  173. package/dist/communication.js +0 -418
  174. package/dist/communication.js.map +0 -1
  175. package/dist/compute.d.ts +0 -1161
  176. package/dist/compute.d.ts.map +0 -1
  177. package/dist/compute.js +0 -2273
  178. package/dist/compute.js.map +0 -1
  179. package/dist/distribution.d.ts +0 -529
  180. package/dist/distribution.d.ts.map +0 -1
  181. package/dist/distribution.js +0 -811
  182. package/dist/distribution.js.map +0 -1
  183. package/dist/execution.d.ts +0 -530
  184. package/dist/execution.d.ts.map +0 -1
  185. package/dist/execution.js +0 -761
  186. package/dist/execution.js.map +0 -1
  187. package/dist/format.d.ts +0 -19
  188. package/dist/format.d.ts.map +0 -1
  189. package/dist/format.js +0 -60
  190. package/dist/format.js.map +0 -1
  191. package/dist/foundation.d.ts +0 -176
  192. package/dist/foundation.d.ts.map +0 -1
  193. package/dist/foundation.js +0 -309
  194. package/dist/foundation.js.map +0 -1
  195. package/dist/index.d.ts +0 -735
  196. package/dist/index.d.ts.map +0 -1
  197. package/dist/index.js +0 -1020
  198. package/dist/index.js.map +0 -1
  199. package/dist/integration.d.ts +0 -236
  200. package/dist/integration.d.ts.map +0 -1
  201. package/dist/integration.js +0 -236
  202. package/dist/integration.js.map +0 -1
  203. package/dist/intelligence.d.ts +0 -94
  204. package/dist/intelligence.d.ts.map +0 -1
  205. package/dist/intelligence.js +0 -145
  206. package/dist/intelligence.js.map +0 -1
  207. package/dist/isolation.d.ts +0 -129
  208. package/dist/isolation.d.ts.map +0 -1
  209. package/dist/isolation.js +0 -96
  210. package/dist/isolation.js.map +0 -1
  211. package/dist/media.d.ts +0 -344
  212. package/dist/media.d.ts.map +0 -1
  213. package/dist/media.js +0 -986
  214. package/dist/media.js.map +0 -1
  215. package/dist/modes.d.ts +0 -359
  216. package/dist/modes.d.ts.map +0 -1
  217. package/dist/modes.js +0 -134
  218. package/dist/modes.js.map +0 -1
  219. package/dist/operations.d.ts +0 -67
  220. package/dist/operations.d.ts.map +0 -1
  221. package/dist/operations.js +0 -94
  222. package/dist/operations.js.map +0 -1
  223. package/dist/orchestrator.d.ts +0 -1339
  224. package/dist/orchestrator.d.ts.map +0 -1
  225. package/dist/orchestrator.js +0 -4308
  226. package/dist/orchestrator.js.map +0 -1
  227. package/dist/packager/targetcli.js +0 -4
  228. package/dist/performance.d.ts +0 -416
  229. package/dist/performance.d.ts.map +0 -1
  230. package/dist/performance.js +0 -827
  231. package/dist/performance.js.map +0 -1
  232. package/dist/quantum.d.ts +0 -810
  233. package/dist/quantum.d.ts.map +0 -1
  234. package/dist/quantum.js +0 -2073
  235. package/dist/quantum.js.map +0 -1
  236. package/dist/render.d.ts +0 -381
  237. package/dist/render.d.ts.map +0 -1
  238. package/dist/render.js +0 -1073
  239. package/dist/render.js.map +0 -1
  240. package/dist/scheduler.d.ts +0 -596
  241. package/dist/scheduler.d.ts.map +0 -1
  242. package/dist/scheduler.js +0 -1259
  243. package/dist/scheduler.js.map +0 -1
  244. package/dist/security.d.ts +0 -501
  245. package/dist/security.d.ts.map +0 -1
  246. package/dist/security.js +0 -1170
  247. package/dist/security.js.map +0 -1
  248. package/dist/server.d.ts +0 -21
  249. package/dist/server.d.ts.map +0 -1
  250. package/dist/server.js +0 -52
  251. package/dist/server.js.map +0 -1
  252. package/dist/tiers.d.ts +0 -1002
  253. package/dist/tiers.d.ts.map +0 -1
  254. package/dist/tiers.js +0 -2165
  255. package/dist/tiers.js.map +0 -1
  256. package/dist/virtual.d.ts +0 -641
  257. package/dist/virtual.d.ts.map +0 -1
  258. package/dist/virtual.js +0 -1285
  259. package/dist/virtual.js.map +0 -1
  260. package/dist/virtualcpu.d.ts +0 -316
  261. package/dist/virtualcpu.d.ts.map +0 -1
  262. package/dist/virtualcpu.js +0 -1180
  263. package/dist/virtualcpu.js.map +0 -1
  264. package/dist/virtualgpu.d.ts +0 -345
  265. package/dist/virtualgpu.d.ts.map +0 -1
  266. package/dist/virtualgpu.js +0 -1000
  267. package/dist/virtualgpu.js.map +0 -1
  268. package/dist/virtualization.d.ts +0 -607
  269. package/dist/virtualization.d.ts.map +0 -1
  270. package/dist/virtualization.js +0 -1187
  271. package/dist/virtualization.js.map +0 -1
  272. package/dist/virtualmemory.d.ts +0 -818
  273. package/dist/virtualmemory.d.ts.map +0 -1
  274. package/dist/virtualmemory.js +0 -1796
  275. package/dist/virtualmemory.js.map +0 -1
  276. package/dist/webscrape.d.ts +0 -720
  277. package/dist/webscrape.d.ts.map +0 -1
  278. package/dist/webscrape.js +0 -2697
  279. package/dist/webscrape.js.map +0 -1
  280. package/web/extension/manifest.json +0 -23
  281. package/web/readme.md +0 -382
  282. 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