pipework 0.212.0 → 0.243.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 (318) hide show
  1. package/CHANGELOG.md +140 -0
  2. package/REFERENCE.md +94 -2
  3. package/dist/REFERENCE.md +472 -16
  4. package/dist/cli/commands/openapi.d.ts +8 -0
  5. package/dist/cli/commands/openapi.d.ts.map +1 -0
  6. package/dist/cli/commands/openapi.js +49 -0
  7. package/dist/cli/commands/openapi.js.map +1 -0
  8. package/dist/cli/commands/serve.d.ts +8 -0
  9. package/dist/cli/commands/serve.d.ts.map +1 -1
  10. package/dist/cli/commands/serve.js +22 -3
  11. package/dist/cli/commands/serve.js.map +1 -1
  12. package/dist/cli/dev-bootstrap.js +6 -1
  13. package/dist/cli/dev-bootstrap.js.map +1 -1
  14. package/dist/cli/index.d.ts.map +1 -1
  15. package/dist/cli/index.js +15 -1
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/cli/surface-kinds.d.ts +5 -0
  18. package/dist/cli/surface-kinds.d.ts.map +1 -0
  19. package/dist/cli/surface-kinds.js +15 -0
  20. package/dist/cli/surface-kinds.js.map +1 -0
  21. package/dist/core/config/load.d.ts +1 -0
  22. package/dist/core/config/load.d.ts.map +1 -1
  23. package/dist/core/config/load.js +1 -0
  24. package/dist/core/config/load.js.map +1 -1
  25. package/dist/core/config/namespace.d.ts +6 -0
  26. package/dist/core/config/namespace.d.ts.map +1 -1
  27. package/dist/core/config/schema.d.ts +15 -0
  28. package/dist/core/config/schema.d.ts.map +1 -1
  29. package/dist/core/config/schema.js +11 -2
  30. package/dist/core/config/schema.js.map +1 -1
  31. package/dist/core/lifecycle/health.js +2 -2
  32. package/dist/core/lifecycle/health.js.map +1 -1
  33. package/dist/core/lifecycle/types.d.ts +2 -0
  34. package/dist/core/lifecycle/types.d.ts.map +1 -1
  35. package/dist/core/pipework.d.ts +14 -1
  36. package/dist/core/pipework.d.ts.map +1 -1
  37. package/dist/core/pipework.js +18 -2
  38. package/dist/core/pipework.js.map +1 -1
  39. package/dist/core/surface/http.d.ts +3 -0
  40. package/dist/core/surface/http.d.ts.map +1 -1
  41. package/dist/core/surface/http.js +27 -8
  42. package/dist/core/surface/http.js.map +1 -1
  43. package/dist/core/surface/start.d.ts.map +1 -1
  44. package/dist/core/surface/start.js +19 -3
  45. package/dist/core/surface/start.js.map +1 -1
  46. package/dist/core/surface/types.d.ts +8 -0
  47. package/dist/core/surface/types.d.ts.map +1 -1
  48. package/dist/data/db/filter.d.ts +3 -0
  49. package/dist/data/db/filter.d.ts.map +1 -1
  50. package/dist/data/db/filter.js +3 -0
  51. package/dist/data/db/filter.js.map +1 -1
  52. package/dist/data/db/in-list.d.ts +15 -0
  53. package/dist/data/db/in-list.d.ts.map +1 -0
  54. package/dist/data/db/in-list.js +51 -0
  55. package/dist/data/db/in-list.js.map +1 -0
  56. package/dist/data/db/namespace.d.ts +2 -0
  57. package/dist/data/db/namespace.d.ts.map +1 -1
  58. package/dist/data/db/pool.d.ts +1 -1
  59. package/dist/data/db/pool.d.ts.map +1 -1
  60. package/dist/data/db/pool.js +4 -2
  61. package/dist/data/db/pool.js.map +1 -1
  62. package/dist/data/db/reservation.d.ts +40 -0
  63. package/dist/data/db/reservation.d.ts.map +1 -0
  64. package/dist/data/db/reservation.js +108 -0
  65. package/dist/data/db/reservation.js.map +1 -0
  66. package/dist/data/domain/build-table.js +32 -1
  67. package/dist/data/domain/build-table.js.map +1 -1
  68. package/dist/data/domain/index.d.ts +2 -1
  69. package/dist/data/domain/index.d.ts.map +1 -1
  70. package/dist/data/domain/types.d.ts +9 -1
  71. package/dist/data/domain/types.d.ts.map +1 -1
  72. package/dist/data/domain/types.js.map +1 -1
  73. package/dist/data/migrate/apply.d.ts +14 -0
  74. package/dist/data/migrate/apply.d.ts.map +1 -1
  75. package/dist/data/migrate/apply.js +13 -13
  76. package/dist/data/migrate/apply.js.map +1 -1
  77. package/dist/data/migrate/check.d.ts.map +1 -1
  78. package/dist/data/migrate/check.js +3 -6
  79. package/dist/data/migrate/check.js.map +1 -1
  80. package/dist/data/migrate/diff.d.ts +16 -0
  81. package/dist/data/migrate/diff.d.ts.map +1 -1
  82. package/dist/data/migrate/diff.js +44 -4
  83. package/dist/data/migrate/diff.js.map +1 -1
  84. package/dist/data/migrate/generate.d.ts +1 -1
  85. package/dist/data/migrate/generate.d.ts.map +1 -1
  86. package/dist/data/migrate/generate.js +19 -51
  87. package/dist/data/migrate/generate.js.map +1 -1
  88. package/dist/data/migrate/history.d.ts +36 -0
  89. package/dist/data/migrate/history.d.ts.map +1 -0
  90. package/dist/data/migrate/history.js +185 -0
  91. package/dist/data/migrate/history.js.map +1 -0
  92. package/dist/data/migrate/internal-definitions.d.ts.map +1 -1
  93. package/dist/data/migrate/internal-definitions.js +22 -1
  94. package/dist/data/migrate/internal-definitions.js.map +1 -1
  95. package/dist/data/migrate/provision-framework.d.ts +2 -0
  96. package/dist/data/migrate/provision-framework.d.ts.map +1 -1
  97. package/dist/data/migrate/provision-framework.js +17 -5
  98. package/dist/data/migrate/provision-framework.js.map +1 -1
  99. package/dist/data/migrate/snapshot.d.ts +4 -0
  100. package/dist/data/migrate/snapshot.d.ts.map +1 -1
  101. package/dist/data/migrate/snapshot.js +2 -0
  102. package/dist/data/migrate/snapshot.js.map +1 -1
  103. package/dist/data/migrate/sql-emit.js +66 -12
  104. package/dist/data/migrate/sql-emit.js.map +1 -1
  105. package/dist/data/query/pg-core/foreign-keys.d.ts +5 -0
  106. package/dist/data/query/pg-core/foreign-keys.d.ts.map +1 -1
  107. package/dist/data/query/pg-core/foreign-keys.js +9 -0
  108. package/dist/data/query/pg-core/foreign-keys.js.map +1 -1
  109. package/dist/data/query/pg-core/indexes.d.ts +5 -0
  110. package/dist/data/query/pg-core/indexes.d.ts.map +1 -1
  111. package/dist/data/query/pg-core/indexes.js +7 -0
  112. package/dist/data/query/pg-core/indexes.js.map +1 -1
  113. package/dist/data/schema/json-schema.js +29 -1
  114. package/dist/data/schema/json-schema.js.map +1 -1
  115. package/dist/data/schema/types.d.ts +2 -2
  116. package/dist/data/schema/types.d.ts.map +1 -1
  117. package/dist/index.d.ts +18 -9
  118. package/dist/index.d.ts.map +1 -1
  119. package/dist/index.js +5 -1
  120. package/dist/index.js.map +1 -1
  121. package/dist/infra/alerts/handle.d.ts +33 -5
  122. package/dist/infra/alerts/handle.d.ts.map +1 -1
  123. package/dist/infra/alerts/handle.js +56 -12
  124. package/dist/infra/alerts/handle.js.map +1 -1
  125. package/dist/infra/alerts/http.d.ts +2 -2
  126. package/dist/infra/alerts/http.d.ts.map +1 -1
  127. package/dist/infra/alerts/http.js +21 -3
  128. package/dist/infra/alerts/http.js.map +1 -1
  129. package/dist/infra/alerts/index.d.ts +1 -1
  130. package/dist/infra/alerts/index.d.ts.map +1 -1
  131. package/dist/infra/alerts/schema.d.ts +5 -0
  132. package/dist/infra/alerts/schema.d.ts.map +1 -1
  133. package/dist/infra/alerts/schema.js +1 -0
  134. package/dist/infra/alerts/schema.js.map +1 -1
  135. package/dist/infra/crawl/audit.d.ts +6 -0
  136. package/dist/infra/crawl/audit.d.ts.map +1 -0
  137. package/dist/infra/crawl/audit.js +38 -0
  138. package/dist/infra/crawl/audit.js.map +1 -0
  139. package/dist/infra/crawl/errors.d.ts +14 -0
  140. package/dist/infra/crawl/errors.d.ts.map +1 -0
  141. package/dist/infra/crawl/errors.js +22 -0
  142. package/dist/infra/crawl/errors.js.map +1 -0
  143. package/dist/infra/crawl/handle.d.ts +149 -0
  144. package/dist/infra/crawl/handle.d.ts.map +1 -0
  145. package/dist/infra/crawl/handle.js +550 -0
  146. package/dist/infra/crawl/handle.js.map +1 -0
  147. package/dist/infra/crawl/index.d.ts +7 -0
  148. package/dist/infra/crawl/index.d.ts.map +1 -0
  149. package/dist/infra/crawl/index.js +5 -0
  150. package/dist/infra/crawl/index.js.map +1 -0
  151. package/dist/infra/crawl/links.d.ts +9 -0
  152. package/dist/infra/crawl/links.d.ts.map +1 -0
  153. package/dist/infra/crawl/links.js +194 -0
  154. package/dist/infra/crawl/links.js.map +1 -0
  155. package/dist/infra/crawl/namespace.d.ts +36 -0
  156. package/dist/infra/crawl/namespace.d.ts.map +1 -0
  157. package/dist/infra/crawl/namespace.js +36 -0
  158. package/dist/infra/crawl/namespace.js.map +1 -0
  159. package/dist/infra/crawl/robots.d.ts +16 -0
  160. package/dist/infra/crawl/robots.d.ts.map +1 -0
  161. package/dist/infra/crawl/robots.js +98 -0
  162. package/dist/infra/crawl/robots.js.map +1 -0
  163. package/dist/infra/crawl/schema.d.ts +222 -0
  164. package/dist/infra/crawl/schema.d.ts.map +1 -0
  165. package/dist/infra/crawl/schema.js +84 -0
  166. package/dist/infra/crawl/schema.js.map +1 -0
  167. package/dist/infra/credit-line/handle.d.ts +250 -0
  168. package/dist/infra/credit-line/handle.d.ts.map +1 -0
  169. package/dist/infra/credit-line/handle.js +618 -0
  170. package/dist/infra/credit-line/handle.js.map +1 -0
  171. package/dist/infra/credit-line/index.d.ts +3 -0
  172. package/dist/infra/credit-line/index.d.ts.map +1 -0
  173. package/dist/infra/credit-line/index.js +2 -0
  174. package/dist/infra/credit-line/index.js.map +1 -0
  175. package/dist/infra/credit-line/namespace.d.ts +7 -0
  176. package/dist/infra/credit-line/namespace.d.ts.map +1 -0
  177. package/dist/infra/credit-line/namespace.js +7 -0
  178. package/dist/infra/credit-line/namespace.js.map +1 -0
  179. package/dist/infra/credit-line/schema.d.ts +194 -0
  180. package/dist/infra/credit-line/schema.d.ts.map +1 -0
  181. package/dist/infra/credit-line/schema.js +89 -0
  182. package/dist/infra/credit-line/schema.js.map +1 -0
  183. package/dist/infra/email/inbound.d.ts +14 -2
  184. package/dist/infra/email/inbound.d.ts.map +1 -1
  185. package/dist/infra/email/inbound.js +5 -1
  186. package/dist/infra/email/inbound.js.map +1 -1
  187. package/dist/infra/email/index.d.ts +2 -2
  188. package/dist/infra/email/index.d.ts.map +1 -1
  189. package/dist/infra/email/index.js.map +1 -1
  190. package/dist/infra/email/mail.d.ts +43 -5
  191. package/dist/infra/email/mail.d.ts.map +1 -1
  192. package/dist/infra/email/mail.js +124 -9
  193. package/dist/infra/email/mail.js.map +1 -1
  194. package/dist/infra/email/mime.d.ts +6 -0
  195. package/dist/infra/email/mime.d.ts.map +1 -1
  196. package/dist/infra/email/mime.js +10 -2
  197. package/dist/infra/email/mime.js.map +1 -1
  198. package/dist/infra/email/schema.d.ts +17 -3
  199. package/dist/infra/email/schema.d.ts.map +1 -1
  200. package/dist/infra/email/schema.js +15 -4
  201. package/dist/infra/email/schema.js.map +1 -1
  202. package/dist/infra/email/sns.js +2 -2
  203. package/dist/infra/email/sns.js.map +1 -1
  204. package/dist/infra/email/unsubscribe.d.ts +13 -0
  205. package/dist/infra/email/unsubscribe.d.ts.map +1 -0
  206. package/dist/infra/email/unsubscribe.js +43 -0
  207. package/dist/infra/email/unsubscribe.js.map +1 -0
  208. package/dist/infra/fetch/handle.d.ts +20 -1
  209. package/dist/infra/fetch/handle.d.ts.map +1 -1
  210. package/dist/infra/fetch/handle.js +60 -28
  211. package/dist/infra/fetch/handle.js.map +1 -1
  212. package/dist/infra/fetch/index.d.ts +2 -2
  213. package/dist/infra/fetch/index.d.ts.map +1 -1
  214. package/dist/infra/fetch/index.js +1 -1
  215. package/dist/infra/fetch/index.js.map +1 -1
  216. package/dist/infra/fetch/namespace.d.ts +20 -2
  217. package/dist/infra/fetch/namespace.d.ts.map +1 -1
  218. package/dist/infra/fetch/namespace.js +20 -2
  219. package/dist/infra/fetch/namespace.js.map +1 -1
  220. package/dist/infra/join-requests/handle.d.ts +86 -0
  221. package/dist/infra/join-requests/handle.d.ts.map +1 -0
  222. package/dist/infra/join-requests/handle.js +233 -0
  223. package/dist/infra/join-requests/handle.js.map +1 -0
  224. package/dist/infra/join-requests/index.d.ts +3 -0
  225. package/dist/infra/join-requests/index.d.ts.map +1 -0
  226. package/dist/infra/join-requests/index.js +2 -0
  227. package/dist/infra/join-requests/index.js.map +1 -0
  228. package/dist/infra/join-requests/namespace.d.ts +7 -0
  229. package/dist/infra/join-requests/namespace.d.ts.map +1 -0
  230. package/dist/infra/join-requests/namespace.js +7 -0
  231. package/dist/infra/join-requests/namespace.js.map +1 -0
  232. package/dist/infra/join-requests/schema.d.ts +58 -0
  233. package/dist/infra/join-requests/schema.d.ts.map +1 -0
  234. package/dist/infra/join-requests/schema.js +31 -0
  235. package/dist/infra/join-requests/schema.js.map +1 -0
  236. package/dist/infra/outbox/core.d.ts +9 -0
  237. package/dist/infra/outbox/core.d.ts.map +1 -1
  238. package/dist/infra/outbox/core.js +14 -0
  239. package/dist/infra/outbox/core.js.map +1 -1
  240. package/dist/infra/support/handle.d.ts +43 -0
  241. package/dist/infra/support/handle.d.ts.map +1 -1
  242. package/dist/infra/support/handle.js +35 -7
  243. package/dist/infra/support/handle.js.map +1 -1
  244. package/dist/infra/support/http.d.ts +28 -0
  245. package/dist/infra/support/http.d.ts.map +1 -0
  246. package/dist/infra/support/http.js +217 -0
  247. package/dist/infra/support/http.js.map +1 -0
  248. package/dist/infra/support/index.d.ts +2 -0
  249. package/dist/infra/support/index.d.ts.map +1 -1
  250. package/dist/infra/support/index.js +1 -0
  251. package/dist/infra/support/index.js.map +1 -1
  252. package/dist/infra/support/namespace.d.ts +3 -0
  253. package/dist/infra/support/namespace.d.ts.map +1 -1
  254. package/dist/infra/support/namespace.js +3 -0
  255. package/dist/infra/support/namespace.js.map +1 -1
  256. package/dist/infra/support/schema.d.ts +4 -4
  257. package/dist/infra/webhook/outbound.d.ts +16 -0
  258. package/dist/infra/webhook/outbound.d.ts.map +1 -1
  259. package/dist/infra/webhook/outbound.js +78 -27
  260. package/dist/infra/webhook/outbound.js.map +1 -1
  261. package/dist/request/di/builder.d.ts +24 -1
  262. package/dist/request/di/builder.d.ts.map +1 -1
  263. package/dist/request/di/builder.js +35 -0
  264. package/dist/request/di/builder.js.map +1 -1
  265. package/dist/request/di/types.d.ts +30 -0
  266. package/dist/request/di/types.d.ts.map +1 -1
  267. package/dist/request/http/server.d.ts.map +1 -1
  268. package/dist/request/http/server.js +111 -20
  269. package/dist/request/http/server.js.map +1 -1
  270. package/dist/test/auto-setup.js +2 -2
  271. package/dist/test/auto-setup.js.map +1 -1
  272. package/dist/test/crawl-fixture.d.ts +53 -0
  273. package/dist/test/crawl-fixture.d.ts.map +1 -0
  274. package/dist/test/crawl-fixture.js +130 -0
  275. package/dist/test/crawl-fixture.js.map +1 -0
  276. package/dist/test/index.d.ts +2 -1
  277. package/dist/test/index.d.ts.map +1 -1
  278. package/dist/test/index.js +2 -1
  279. package/dist/test/index.js.map +1 -1
  280. package/dist/test/progress.d.ts +7 -1
  281. package/dist/test/progress.d.ts.map +1 -1
  282. package/dist/test/progress.js +6 -0
  283. package/dist/test/progress.js.map +1 -1
  284. package/dist/test/reap-after-run.d.ts +3 -0
  285. package/dist/test/reap-after-run.d.ts.map +1 -0
  286. package/dist/test/reap-after-run.js +29 -0
  287. package/dist/test/reap-after-run.js.map +1 -0
  288. package/dist/test/reap.d.ts +11 -2
  289. package/dist/test/reap.d.ts.map +1 -1
  290. package/dist/test/reap.js +19 -12
  291. package/dist/test/reap.js.map +1 -1
  292. package/dist/test/setup.d.ts +2 -0
  293. package/dist/test/setup.d.ts.map +1 -1
  294. package/dist/test/setup.js +97 -31
  295. package/dist/test/setup.js.map +1 -1
  296. package/dist/test/vitest-plugin.d.ts.map +1 -1
  297. package/dist/test/vitest-plugin.js +8 -1
  298. package/dist/test/vitest-plugin.js.map +1 -1
  299. package/dist/test/vitest-workspace.d.ts +1 -0
  300. package/dist/test/vitest-workspace.d.ts.map +1 -1
  301. package/dist/test/vitest-workspace.js +1 -1
  302. package/dist/test/vitest-workspace.js.map +1 -1
  303. package/dist/test/vitest.d.ts +20 -0
  304. package/dist/test/vitest.d.ts.map +1 -1
  305. package/dist/test/vitest.js +41 -1
  306. package/dist/test/vitest.js.map +1 -1
  307. package/dist/trace/partition/sync.d.ts +8 -2
  308. package/dist/trace/partition/sync.d.ts.map +1 -1
  309. package/dist/trace/partition/sync.js +6 -3
  310. package/dist/trace/partition/sync.js.map +1 -1
  311. package/dist/workspace/generate.d.ts.map +1 -1
  312. package/dist/workspace/generate.js +1 -0
  313. package/dist/workspace/generate.js.map +1 -1
  314. package/package.json +1 -1
  315. package/dist/infra/email/sigv4.d.ts +0 -24
  316. package/dist/infra/email/sigv4.d.ts.map +0 -1
  317. package/dist/infra/email/sigv4.js +0 -55
  318. package/dist/infra/email/sigv4.js.map +0 -1
@@ -0,0 +1,149 @@
1
+ import type { Handler } from '../../request/di/types.js';
2
+ import type { Manifold } from '../../core/pipework.js';
3
+ import type { Queue } from '../../async/jobs/queue.js';
4
+ import type { FetchTarget } from '../fetch/handle.js';
5
+ import type { Storage } from '../storage/handle.js';
6
+ import type { Socket } from 'node:net';
7
+ export type CrawlScope = 'host' | {
8
+ readonly domain: string;
9
+ };
10
+ export type CrawlState = 'awaiting_approval' | 'running' | 'done' | 'stopped' | 'failed';
11
+ export type CrawlStoppedBy = 'pages' | 'depth' | 'bytes' | 'wall' | 'robots_unreachable';
12
+ /** Limits of one crawl; each is optional and the default is in the field's description. */
13
+ export interface CrawlLimits {
14
+ /** Requests in flight at once to one host. Default 1. */
15
+ readonly perHostConcurrency?: number;
16
+ /** Least milliseconds between requests to a host; the gap used is the larger of this and the host's `Crawl-delay`. Default 1000. */
17
+ readonly minGapMs?: number;
18
+ /** Most pages and files requested (robots.txt not counted). Default 1000. */
19
+ readonly maxPages?: number;
20
+ /** Most links deep from the seed. Default 10. */
21
+ readonly maxDepth?: number;
22
+ /** Most body bytes fetched in all. Default 1 GiB. */
23
+ readonly maxBytes?: number;
24
+ /** Most bytes of one response; a larger one is refused as `too_large`. Default 25 MiB. */
25
+ readonly maxBytesPerResponse?: number;
26
+ /** Most milliseconds the crawl runs, counted from its start. Default one hour. */
27
+ readonly maxWallMs?: number;
28
+ /** Time limit of one request. Default 30 s. */
29
+ readonly requestTimeoutMs?: number;
30
+ /** Most redirects followed in a chain. Default 5. */
31
+ readonly maxRedirects?: number;
32
+ /** Time limit of one `onPage` call. Default 5000. */
33
+ readonly pageHookMs?: number;
34
+ }
35
+ export type ResolvedCrawlLimits = Required<CrawlLimits>;
36
+ export interface CrawlPage {
37
+ readonly url: string;
38
+ /** The page's html, already limited to `maxBytesPerResponse`. */
39
+ readonly html: string;
40
+ /** Aborted when the hook has overrun `pageHookMs`. */
41
+ readonly signal: AbortSignal;
42
+ }
43
+ export interface CrawlConfig {
44
+ /** The app's manifold; its Blueprint must have a `crawl` block. */
45
+ readonly instance: Manifold;
46
+ /** Names the site and its job type (`pipework.crawl.<name>`): letters, digits, `_`, `.` and `-`, starting with a letter. */
47
+ readonly name: string;
48
+ /** The queue the crawl job runs on; its worker surface must run `site.job`. */
49
+ readonly queue: Pick<Queue, 'enqueue'>;
50
+ /** Which resources are listed. In-scope `text/html` is followed for links whatever this says; any other type this refuses is not read. */
51
+ readonly accept: (resource: {
52
+ url: string;
53
+ contentType: string;
54
+ }) => boolean;
55
+ /** Called with each followed page's html. A hook that throws or overruns `pageHookMs` is recorded against the URL and the crawl goes on. */
56
+ readonly onPage?: (page: CrawlPage) => Promise<void> | void;
57
+ /** When given, each listed resource's bytes are put here (the job's tenant) and the row records the sha256 and file id. */
58
+ readonly store?: Storage;
59
+ /** Sent on every request; its product token (the leading letters) picks the robots.txt group. */
60
+ readonly userAgent: string;
61
+ /** For tests: replaces DNS and the socket, as in `untrustedFetch.get`. */
62
+ readonly network?: {
63
+ readonly resolve?: (hostname: string) => Promise<string[]>;
64
+ readonly connect?: (target: FetchTarget) => Socket;
65
+ };
66
+ /** Record the full URL in each request's trace step. Default true: crawled links are public. */
67
+ readonly traceUrls?: boolean;
68
+ /** Database holding the crawl tables; default the default database. */
69
+ readonly database?: string;
70
+ /** Attempts the queue gives the job: a job that dies or throws is retried and carries on from the queued URLs. Default 5. */
71
+ readonly maxAttempts?: number;
72
+ /** First wait before a robots.txt retry, doubling each time. Default 2000. */
73
+ readonly robotsRetryMs?: number;
74
+ }
75
+ export interface CrawlStartOptions {
76
+ readonly seed: string;
77
+ /** `'host'` (default): the seed's exact host. `{ domain: 'example.gov.uk' }`: that host and every host under it. */
78
+ readonly scope?: CrawlScope;
79
+ readonly limits?: CrawlLimits;
80
+ }
81
+ export interface CrawlCounts {
82
+ readonly queued: number;
83
+ readonly fetching: number;
84
+ readonly done: number;
85
+ readonly refused: number;
86
+ readonly listed: number;
87
+ readonly unchanged: number;
88
+ /** Body bytes fetched. */
89
+ readonly bytes: number;
90
+ }
91
+ export interface CrawlStatus {
92
+ readonly state: CrawlState;
93
+ /** What the crawl stays inside. A `'host'` scope moves to the new host when the seed's own redirect chain leaves the seed's host (example.gov.uk to www.example.gov.uk). */
94
+ readonly scope: {
95
+ readonly host: string;
96
+ } | {
97
+ readonly domain: string;
98
+ };
99
+ /** Present when `state` is `stopped`. */
100
+ readonly stoppedBy?: CrawlStoppedBy;
101
+ /** Present when `state` is `failed`. */
102
+ readonly error?: string;
103
+ readonly counts: CrawlCounts;
104
+ }
105
+ export interface CrawlResource {
106
+ readonly url: string;
107
+ /** The page that linked to it; null for the seed. */
108
+ readonly from: string | null;
109
+ readonly status: number;
110
+ readonly contentType: string | null;
111
+ readonly bytes: number;
112
+ readonly etag: string | null;
113
+ readonly lastModified: string | null;
114
+ readonly sha256: string | null;
115
+ readonly fileId: string | null;
116
+ /** True when the server answered a conditional request with 304; the other fields are those of the earlier crawl. */
117
+ readonly unchanged: boolean;
118
+ }
119
+ export interface CrawlRefusal {
120
+ readonly url: string;
121
+ readonly from: string | null;
122
+ /** `scope`, `robots`, `depth`, `page_hook`, or the `untrustedFetch.get` reason (`address`, `too_large`, `rejected`, `status`, ...). */
123
+ readonly reason: string;
124
+ readonly message: string;
125
+ }
126
+ export interface CrawlSite {
127
+ /** Add to a worker surface's `jobs`. */
128
+ readonly job: Handler<Record<string, unknown>, unknown>;
129
+ /** Job type of `job`. */
130
+ readonly jobType: string;
131
+ /**
132
+ * Records a crawl and, unless the Blueprint's `crawl.requireApproval` is true, queues its job. Needs a Flow. Throws
133
+ * `CrawlSeedError` for a seed that is not http(s) or not inside its own scope. One audit record: who, seed, scope, limits.
134
+ */
135
+ start(options: CrawlStartOptions): Promise<{
136
+ id: string;
137
+ }>;
138
+ /** Queues the job of a crawl that is `awaiting_approval`; one audit record. Throws `ConflictError` for a crawl in another state. */
139
+ approve(id: string): Promise<void>;
140
+ status(id: string): Promise<CrawlStatus>;
141
+ /** The listed resources, in the order they were found. */
142
+ resources(id: string): Promise<CrawlResource[]>;
143
+ /** Every URL the crawl declined to fetch or could not, and every `onPage` failure, with the reason. */
144
+ refusals(id: string): Promise<CrawlRefusal[]>;
145
+ }
146
+ export declare const DEFAULT_LIMITS: ResolvedCrawlLimits;
147
+ /** Creates a site crawler; see `crawl.create`. */
148
+ export declare function createCrawl(config: CrawlConfig): CrawlSite;
149
+ //# sourceMappingURL=handle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../../src/infra/crawl/handle.ts"],"names":[],"mappings":"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"}