xtrawl 0.1.2 → 0.1.3

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 (285) hide show
  1. package/dist/auth/bootstrap.d.ts +1 -1
  2. package/dist/auth/bootstrap.d.ts.map +1 -1
  3. package/dist/auth/bootstrap.js +27 -14
  4. package/dist/auth/bootstrap.js.map +1 -1
  5. package/dist/cli/main.d.ts.map +1 -1
  6. package/dist/cli/main.js +13 -12
  7. package/dist/cli/main.js.map +1 -1
  8. package/dist/cli/parser.d.ts +2 -14
  9. package/dist/cli/parser.d.ts.map +1 -1
  10. package/dist/cli/parser.js +26 -30
  11. package/dist/cli/parser.js.map +1 -1
  12. package/dist/cli/types.d.ts +17 -0
  13. package/dist/cli/types.d.ts.map +1 -0
  14. package/dist/cli/types.js +2 -0
  15. package/dist/cli/types.js.map +1 -0
  16. package/dist/client/accounts.d.ts.map +1 -1
  17. package/dist/client/accounts.js +13 -6
  18. package/dist/client/accounts.js.map +1 -1
  19. package/dist/client/client.d.ts +13 -1
  20. package/dist/client/client.d.ts.map +1 -1
  21. package/dist/client/client.js +93 -38
  22. package/dist/client/client.js.map +1 -1
  23. package/dist/client/collectors.d.ts +2 -10
  24. package/dist/client/collectors.d.ts.map +1 -1
  25. package/dist/client/collectors.js +122 -57
  26. package/dist/client/collectors.js.map +1 -1
  27. package/dist/client/database.d.ts +6 -18
  28. package/dist/client/database.d.ts.map +1 -1
  29. package/dist/client/database.js +4 -21
  30. package/dist/client/database.js.map +1 -1
  31. package/dist/client/page-commit.d.ts +15 -0
  32. package/dist/client/page-commit.d.ts.map +1 -0
  33. package/dist/client/page-commit.js +19 -0
  34. package/dist/client/page-commit.js.map +1 -0
  35. package/dist/client/profiles.d.ts +1 -1
  36. package/dist/client/profiles.d.ts.map +1 -1
  37. package/dist/client/profiles.js +10 -3
  38. package/dist/client/profiles.js.map +1 -1
  39. package/dist/client/search.d.ts +2 -15
  40. package/dist/client/search.d.ts.map +1 -1
  41. package/dist/client/search.js +64 -25
  42. package/dist/client/search.js.map +1 -1
  43. package/dist/client/types.d.ts +40 -2
  44. package/dist/client/types.d.ts.map +1 -1
  45. package/dist/config/defaults.d.ts.map +1 -1
  46. package/dist/config/defaults.js +5 -2
  47. package/dist/config/defaults.js.map +1 -1
  48. package/dist/config/types.d.ts +5 -2
  49. package/dist/config/types.d.ts.map +1 -1
  50. package/dist/config/validation.d.ts +1 -1
  51. package/dist/config/validation.d.ts.map +1 -1
  52. package/dist/config/validation.js +27 -11
  53. package/dist/config/validation.js.map +1 -1
  54. package/dist/constants/accounts.d.ts +16 -0
  55. package/dist/constants/accounts.d.ts.map +1 -0
  56. package/dist/constants/accounts.js +16 -0
  57. package/dist/constants/accounts.js.map +1 -0
  58. package/dist/constants/cli.d.ts +10 -0
  59. package/dist/constants/cli.d.ts.map +1 -0
  60. package/dist/constants/cli.js +10 -0
  61. package/dist/constants/cli.js.map +1 -0
  62. package/dist/constants/collection.d.ts +9 -0
  63. package/dist/constants/collection.d.ts.map +1 -0
  64. package/dist/constants/collection.js +9 -0
  65. package/dist/constants/collection.js.map +1 -0
  66. package/dist/constants/config.d.ts +6 -0
  67. package/dist/constants/config.d.ts.map +1 -0
  68. package/dist/constants/config.js +6 -0
  69. package/dist/constants/config.js.map +1 -0
  70. package/dist/constants/errors.d.ts +9 -0
  71. package/dist/constants/errors.d.ts.map +1 -0
  72. package/dist/constants/errors.js +9 -0
  73. package/dist/constants/errors.js.map +1 -0
  74. package/dist/constants/output.d.ts +7 -0
  75. package/dist/constants/output.d.ts.map +1 -0
  76. package/dist/constants/output.js +7 -0
  77. package/dist/constants/output.js.map +1 -0
  78. package/dist/constants/pages.d.ts +5 -0
  79. package/dist/constants/pages.d.ts.map +1 -0
  80. package/dist/constants/pages.js +5 -0
  81. package/dist/constants/pages.js.map +1 -0
  82. package/dist/constants/requests.d.ts +18 -0
  83. package/dist/constants/requests.d.ts.map +1 -0
  84. package/dist/constants/requests.js +18 -0
  85. package/dist/constants/requests.js.map +1 -0
  86. package/dist/constants/runner.d.ts +8 -0
  87. package/dist/constants/runner.d.ts.map +1 -0
  88. package/dist/constants/runner.js +8 -0
  89. package/dist/constants/runner.js.map +1 -0
  90. package/dist/constants/runs.d.ts +8 -0
  91. package/dist/constants/runs.d.ts.map +1 -0
  92. package/dist/constants/runs.js +8 -0
  93. package/dist/constants/runs.js.map +1 -0
  94. package/dist/domain/accounts.d.ts +4 -2
  95. package/dist/domain/accounts.d.ts.map +1 -1
  96. package/dist/domain/collection.d.ts +27 -0
  97. package/dist/domain/collection.d.ts.map +1 -0
  98. package/dist/domain/collection.js +2 -0
  99. package/dist/domain/collection.js.map +1 -0
  100. package/dist/domain/diagnostics.d.ts +11 -0
  101. package/dist/domain/diagnostics.d.ts.map +1 -0
  102. package/dist/domain/diagnostics.js +2 -0
  103. package/dist/domain/diagnostics.js.map +1 -0
  104. package/dist/domain/errors.d.ts +2 -1
  105. package/dist/domain/errors.d.ts.map +1 -1
  106. package/dist/domain/errors.js +10 -9
  107. package/dist/domain/errors.js.map +1 -1
  108. package/dist/domain/http.d.ts +7 -1
  109. package/dist/domain/http.d.ts.map +1 -1
  110. package/dist/domain/manifest.d.ts +8 -0
  111. package/dist/domain/manifest.d.ts.map +1 -1
  112. package/dist/domain/output.d.ts +3 -0
  113. package/dist/domain/output.d.ts.map +1 -0
  114. package/dist/domain/output.js +2 -0
  115. package/dist/domain/output.js.map +1 -0
  116. package/dist/domain/pages.d.ts +20 -0
  117. package/dist/domain/pages.d.ts.map +1 -0
  118. package/dist/domain/pages.js +2 -0
  119. package/dist/domain/pages.js.map +1 -0
  120. package/dist/domain/pool.d.ts +22 -0
  121. package/dist/domain/pool.d.ts.map +1 -0
  122. package/dist/domain/pool.js +2 -0
  123. package/dist/domain/pool.js.map +1 -0
  124. package/dist/domain/records.d.ts +2 -1
  125. package/dist/domain/records.d.ts.map +1 -1
  126. package/dist/domain/requests.d.ts +15 -10
  127. package/dist/domain/requests.d.ts.map +1 -1
  128. package/dist/domain/runner.d.ts +30 -0
  129. package/dist/domain/runner.d.ts.map +1 -0
  130. package/dist/domain/runner.js +2 -0
  131. package/dist/domain/runner.js.map +1 -0
  132. package/dist/domain/runs.d.ts +12 -0
  133. package/dist/domain/runs.d.ts.map +1 -0
  134. package/dist/domain/runs.js +2 -0
  135. package/dist/domain/runs.js.map +1 -0
  136. package/dist/engine/api-engine.d.ts +7 -7
  137. package/dist/engine/api-engine.d.ts.map +1 -1
  138. package/dist/engine/api-engine.js +42 -19
  139. package/dist/engine/api-engine.js.map +1 -1
  140. package/dist/engine/extractors.d.ts +2 -8
  141. package/dist/engine/extractors.d.ts.map +1 -1
  142. package/dist/engine/extractors.js +30 -11
  143. package/dist/engine/extractors.js.map +1 -1
  144. package/dist/index.d.ts +2 -2
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/manifest/destinations.d.ts +4 -0
  147. package/dist/manifest/destinations.d.ts.map +1 -0
  148. package/dist/manifest/destinations.js +47 -0
  149. package/dist/manifest/destinations.js.map +1 -0
  150. package/dist/manifest/model.d.ts +3 -2
  151. package/dist/manifest/model.d.ts.map +1 -1
  152. package/dist/manifest/model.js +6 -1
  153. package/dist/manifest/model.js.map +1 -1
  154. package/dist/manifest/provider.d.ts +10 -3
  155. package/dist/manifest/provider.d.ts.map +1 -1
  156. package/dist/manifest/provider.js +86 -34
  157. package/dist/manifest/provider.js.map +1 -1
  158. package/dist/manifest/scraper.d.ts +2 -6
  159. package/dist/manifest/scraper.d.ts.map +1 -1
  160. package/dist/manifest/scraper.js +46 -15
  161. package/dist/manifest/scraper.js.map +1 -1
  162. package/dist/output/csv-writer.d.ts.map +1 -1
  163. package/dist/output/csv-writer.js +32 -10
  164. package/dist/output/csv-writer.js.map +1 -1
  165. package/dist/output/json-writer.d.ts +1 -0
  166. package/dist/output/json-writer.d.ts.map +1 -1
  167. package/dist/output/json-writer.js +36 -11
  168. package/dist/output/json-writer.js.map +1 -1
  169. package/dist/output/lock.d.ts +2 -0
  170. package/dist/output/lock.d.ts.map +1 -0
  171. package/dist/output/lock.js +18 -0
  172. package/dist/output/lock.js.map +1 -0
  173. package/dist/output/writer.d.ts +2 -1
  174. package/dist/output/writer.d.ts.map +1 -1
  175. package/dist/output/writer.js +6 -3
  176. package/dist/output/writer.js.map +1 -1
  177. package/dist/pool/account-pool.d.ts +3 -12
  178. package/dist/pool/account-pool.d.ts.map +1 -1
  179. package/dist/pool/account-pool.js +54 -16
  180. package/dist/pool/account-pool.js.map +1 -1
  181. package/dist/pool/cooldown.d.ts +3 -7
  182. package/dist/pool/cooldown.d.ts.map +1 -1
  183. package/dist/pool/cooldown.js +10 -7
  184. package/dist/pool/cooldown.js.map +1 -1
  185. package/dist/pool/limiter.d.ts +3 -3
  186. package/dist/pool/limiter.d.ts.map +1 -1
  187. package/dist/pool/limiter.js +5 -6
  188. package/dist/pool/limiter.js.map +1 -1
  189. package/dist/query/builder.d.ts +1 -1
  190. package/dist/query/builder.d.ts.map +1 -1
  191. package/dist/query/builder.js +10 -4
  192. package/dist/query/builder.js.map +1 -1
  193. package/dist/query/collection-id.d.ts +3 -0
  194. package/dist/query/collection-id.d.ts.map +1 -0
  195. package/dist/query/collection-id.js +21 -0
  196. package/dist/query/collection-id.js.map +1 -0
  197. package/dist/query/normalize.d.ts +3 -32
  198. package/dist/query/normalize.d.ts.map +1 -1
  199. package/dist/query/normalize.js +10 -16
  200. package/dist/query/normalize.js.map +1 -1
  201. package/dist/query/targets.d.ts +2 -7
  202. package/dist/query/targets.d.ts.map +1 -1
  203. package/dist/query/targets.js.map +1 -1
  204. package/dist/query/types.d.ts +40 -0
  205. package/dist/query/types.d.ts.map +1 -0
  206. package/dist/query/types.js +2 -0
  207. package/dist/query/types.js.map +1 -0
  208. package/dist/runner/index.d.ts +3 -0
  209. package/dist/runner/index.d.ts.map +1 -1
  210. package/dist/runner/index.js.map +1 -1
  211. package/dist/runner/retry.d.ts +3 -6
  212. package/dist/runner/retry.d.ts.map +1 -1
  213. package/dist/runner/retry.js +5 -3
  214. package/dist/runner/retry.js.map +1 -1
  215. package/dist/runner/runner.d.ts +2 -14
  216. package/dist/runner/runner.d.ts.map +1 -1
  217. package/dist/runner/runner.js +11 -7
  218. package/dist/runner/runner.js.map +1 -1
  219. package/dist/runner/task-queue.d.ts +9 -11
  220. package/dist/runner/task-queue.d.ts.map +1 -1
  221. package/dist/runner/task-queue.js +79 -32
  222. package/dist/runner/task-queue.js.map +1 -1
  223. package/dist/storage/account-repository.d.ts +2 -15
  224. package/dist/storage/account-repository.d.ts.map +1 -1
  225. package/dist/storage/account-repository.js +65 -35
  226. package/dist/storage/account-repository.js.map +1 -1
  227. package/dist/storage/database.d.ts +3 -1
  228. package/dist/storage/database.d.ts.map +1 -1
  229. package/dist/storage/database.js +10 -4
  230. package/dist/storage/database.js.map +1 -1
  231. package/dist/storage/index.d.ts +3 -1
  232. package/dist/storage/index.d.ts.map +1 -1
  233. package/dist/storage/index.js +2 -0
  234. package/dist/storage/index.js.map +1 -1
  235. package/dist/storage/progress-repository.d.ts +12 -0
  236. package/dist/storage/progress-repository.d.ts.map +1 -0
  237. package/dist/storage/progress-repository.js +76 -0
  238. package/dist/storage/progress-repository.js.map +1 -0
  239. package/dist/storage/run-repository.d.ts +4 -10
  240. package/dist/storage/run-repository.d.ts.map +1 -1
  241. package/dist/storage/run-repository.js +4 -2
  242. package/dist/storage/run-repository.js.map +1 -1
  243. package/dist/storage/schema.d.ts.map +1 -1
  244. package/dist/storage/schema.js +19 -0
  245. package/dist/storage/schema.js.map +1 -1
  246. package/dist/storage/types.d.ts +15 -0
  247. package/dist/storage/types.d.ts.map +1 -0
  248. package/dist/storage/types.js +2 -0
  249. package/dist/storage/types.js.map +1 -0
  250. package/dist/transport/body.d.ts +15 -0
  251. package/dist/transport/body.d.ts.map +1 -0
  252. package/dist/transport/body.js +61 -0
  253. package/dist/transport/body.js.map +1 -0
  254. package/dist/transport/dispatcher-pool.d.ts +13 -0
  255. package/dist/transport/dispatcher-pool.d.ts.map +1 -0
  256. package/dist/transport/dispatcher-pool.js +47 -0
  257. package/dist/transport/dispatcher-pool.js.map +1 -0
  258. package/dist/transport/graphql.d.ts +1 -1
  259. package/dist/transport/graphql.d.ts.map +1 -1
  260. package/dist/transport/graphql.js +36 -19
  261. package/dist/transport/graphql.js.map +1 -1
  262. package/dist/transport/session.d.ts +8 -11
  263. package/dist/transport/session.d.ts.map +1 -1
  264. package/dist/transport/session.js +71 -26
  265. package/dist/transport/session.js.map +1 -1
  266. package/dist/transport/transaction-id.d.ts +2 -7
  267. package/dist/transport/transaction-id.d.ts.map +1 -1
  268. package/dist/transport/transaction-id.js +20 -16
  269. package/dist/transport/transaction-id.js.map +1 -1
  270. package/dist/transport/types.d.ts +28 -0
  271. package/dist/transport/types.d.ts.map +1 -0
  272. package/dist/transport/types.js +2 -0
  273. package/dist/transport/types.js.map +1 -0
  274. package/dist/utils/abort.d.ts +6 -0
  275. package/dist/utils/abort.d.ts.map +1 -0
  276. package/dist/utils/abort.js +45 -0
  277. package/dist/utils/abort.js.map +1 -0
  278. package/dist/utils/redact.d.ts +5 -0
  279. package/dist/utils/redact.d.ts.map +1 -0
  280. package/dist/utils/redact.js +42 -0
  281. package/dist/utils/redact.js.map +1 -0
  282. package/docs/architecture/overview.md +6 -4
  283. package/docs/product/specification.md +10 -9
  284. package/docs/security/data-boundary.md +3 -0
  285. package/package.json +5 -4
@@ -1,3 +1,4 @@
1
+ import { ERROR_CATEGORY } from "../constants/errors.js";
1
2
  export class XTrawlError extends Error {
2
3
  code;
3
4
  diagnostics;
@@ -41,22 +42,22 @@ export class RunFailed extends EngineError {
41
42
  }
42
43
  export class NetworkError extends RunFailed {
43
44
  constructor(message, diagnostics = {}) {
44
- super(message, { ...diagnostics, category: "network" });
45
+ super(message, { ...diagnostics, category: ERROR_CATEGORY.NETWORK });
45
46
  }
46
47
  }
47
48
  export class ProxyError extends RunFailed {
48
49
  constructor(message, diagnostics = {}) {
49
- super(message, { ...diagnostics, category: "proxy" });
50
+ super(message, { ...diagnostics, category: ERROR_CATEGORY.PROXY });
50
51
  }
51
52
  }
52
53
  export class RateLimitError extends RunFailed {
53
54
  constructor(message, diagnostics = {}) {
54
- super(message, { ...diagnostics, category: "rate_limit" });
55
+ super(message, { ...diagnostics, category: ERROR_CATEGORY.RATE_LIMIT });
55
56
  }
56
57
  }
57
58
  export class AuthError extends RunFailed {
58
59
  constructor(message, diagnostics = {}) {
59
- super(message, { ...diagnostics, category: "auth" });
60
+ super(message, { ...diagnostics, category: ERROR_CATEGORY.AUTH });
60
61
  }
61
62
  }
62
63
  export class ResumeError extends XTrawlError {
@@ -70,25 +71,25 @@ export class AccountSessionBuildError extends XTrawlError {
70
71
  constructor(code, reason, options = {}) {
71
72
  super(code, `${code}:${reason}`, {
72
73
  statusCode: options.statusCode ?? 599,
73
- category: options.category ?? "transient",
74
+ category: options.category ?? ERROR_CATEGORY.TRANSIENT,
74
75
  });
75
76
  this.statusCode = options.statusCode ?? 599;
76
- this.category = options.category ?? "transient";
77
+ this.category = options.category ?? ERROR_CATEGORY.TRANSIENT;
77
78
  }
78
79
  }
79
80
  export class AccountSessionAuthError extends AccountSessionBuildError {
80
81
  constructor(code, reason) {
81
- super(code, reason, { statusCode: 401, category: "auth" });
82
+ super(code, reason, { statusCode: 401, category: ERROR_CATEGORY.AUTH });
82
83
  }
83
84
  }
84
85
  export class AccountSessionRuntimeError extends AccountSessionBuildError {
85
86
  constructor(code, reason) {
86
- super(code, reason, { statusCode: 500, category: "runtime" });
87
+ super(code, reason, { statusCode: 500, category: ERROR_CATEGORY.RUNTIME });
87
88
  }
88
89
  }
89
90
  export class AccountSessionTransientError extends AccountSessionBuildError {
90
91
  constructor(code, reason) {
91
- super(code, reason, { statusCode: 599, category: "transient" });
92
+ super(code, reason, { statusCode: 599, category: ERROR_CATEGORY.TRANSIENT });
92
93
  }
93
94
  }
94
95
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/domain/errors.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpB,IAAI,CAAS;IACb,WAAW,CAA6B;IAExD,YAAmB,IAAY,EAAE,OAAe,EAAE,cAAgC,EAAE;QAClF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,WAAW;IAC1C,YAAmB,OAAe;QAChC,KAAK,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IAChD,YAAmB,OAAe,EAAE,cAAgC,EAAE;QACpE,KAAK,CAAC,qBAAqB,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACrD,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,WAAW;IAC5C,YAAmB,OAAe;QAChC,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,WAAW;IACnD,YAAmB,OAAO,GAAG,mCAAmC,EAAE,cAAgC,EAAE;QAClG,KAAK,CAAC,wBAAwB,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACxD,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,WAAW;IAC1C,YAAmB,OAAe,EAAE,cAAgC,EAAE;QACpE,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,WAAW;IACxC,YAAmB,OAAe,EAAE,cAAgC,EAAE;QACpE,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,YAAmB,OAAe,EAAE,cAAgC,EAAE;QACpE,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1D,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,SAAS;IACvC,YAAmB,OAAe,EAAE,cAAgC,EAAE;QACpE,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,SAAS;IAC3C,YAAmB,OAAe,EAAE,cAAgC,EAAE;QACpE,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,SAAS;IACtC,YAAmB,OAAe,EAAE,cAAgC,EAAE;QACpE,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,WAAW;IAC1C,YAAmB,OAAe;QAChC,KAAK,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,WAAW;IACvC,UAAU,CAAS;IACnB,QAAQ,CAAgB;IAExC,YACE,IAAY,EACZ,MAAc,EACd,UAA+E,EAAE;QAEjF,KAAK,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,MAAM,EAAE,EAAE;YAC/B,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,GAAG;YACrC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,WAAW;SAC1C,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC;IAClD,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,wBAAwB;IACnE,YAAmB,IAAY,EAAE,MAAc;QAC7C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,wBAAwB;IACtE,YAAmB,IAAY,EAAE,MAAc;QAC7C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IAChE,CAAC;CACF;AAED,MAAM,OAAO,4BAA6B,SAAQ,wBAAwB;IACxE,YAAmB,IAAY,EAAE,MAAc;QAC7C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;IAClE,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/domain/errors.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { API_HTTP_MODE } from "../constants/config.js";
1
2
  import type { CookieMap, ProxySettings } from "./accounts.js";
2
3
  export interface HttpResponse {
3
4
  readonly status: number;
@@ -16,6 +17,8 @@ export interface HttpRequestOptions {
16
17
  readonly headers?: Readonly<Record<string, string>>;
17
18
  readonly body?: unknown;
18
19
  readonly timeoutMs?: number;
20
+ readonly signal?: AbortSignal;
21
+ readonly maxBytes?: number;
19
22
  readonly redirect?: "follow" | "error" | "manual";
20
23
  }
21
24
  export interface SessionFactoryOptions {
@@ -24,7 +27,7 @@ export interface SessionFactoryOptions {
24
27
  readonly bearerToken?: string;
25
28
  readonly userAgent?: string;
26
29
  readonly impersonate?: string;
27
- readonly httpMode?: "auto" | "async" | "sync";
30
+ readonly httpMode?: (typeof API_HTTP_MODE)[keyof typeof API_HTTP_MODE];
28
31
  }
29
32
  export type SessionFactory = (options: SessionFactoryOptions) => HttpSession;
30
33
  export interface GraphqlResponse {
@@ -32,5 +35,8 @@ export interface GraphqlResponse {
32
35
  readonly status: number;
33
36
  readonly headers: Readonly<Record<string, string>>;
34
37
  readonly snippet: string;
38
+ readonly remaining?: number;
39
+ readonly resetAt?: number;
40
+ readonly quotaExhausted?: boolean;
35
41
  }
36
42
  //# sourceMappingURL=http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/domain/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACtE,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACxE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;CACnD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;CAC/C;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,qBAAqB,KAAK,WAAW,CAAC;AAE7E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/domain/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACtE,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACxE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;CACnD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;CACxE;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,qBAAqB,KAAK,WAAW,CAAC;AAE7E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACnC"}
@@ -9,6 +9,14 @@ export interface ManifestPayload {
9
9
  readonly operationFieldToggles?: Readonly<Record<string, FieldToggles>>;
10
10
  readonly timeoutSeconds?: number;
11
11
  }
12
+ export interface ManifestCreateOptions {
13
+ readonly allowedOrigins?: readonly string[];
14
+ }
15
+ export interface ManifestScrapeOptions {
16
+ readonly authToken?: string;
17
+ readonly fetcher?: typeof fetch;
18
+ readonly maxScripts?: number;
19
+ }
12
20
  export interface Manifest {
13
21
  readonly version: string;
14
22
  readonly queryIds: Readonly<Record<string, string>>;
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/domain/manifest.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7D,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IACpE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IACxE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IACnE,QAAQ,CAAC,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IACvE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC;IAC7C,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC;CAClD"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/domain/manifest.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7D,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IACpE,QAAQ,CAAC,qBAAqB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IACxE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IACnE,QAAQ,CAAC,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IACvE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC;IAC7C,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAAC;CAClD"}
@@ -0,0 +1,3 @@
1
+ import type { SAVE_FORMAT } from "../constants/output.js";
2
+ export type OutputFormat = (typeof SAVE_FORMAT)[keyof typeof SAVE_FORMAT];
3
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/domain/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/domain/output.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import type { EMPTY_REASON } from "../constants/pages.js";
2
+ import type { TweetRecord } from "./records.js";
3
+ export type EmptyReason = (typeof EMPTY_REASON)[keyof typeof EMPTY_REASON];
4
+ export interface RequestQuota {
5
+ readonly remaining?: number;
6
+ readonly resetAt?: number;
7
+ readonly exhausted?: boolean;
8
+ }
9
+ export interface TweetPage {
10
+ readonly tweets: readonly TweetRecord[];
11
+ readonly cursor?: string;
12
+ readonly quota?: RequestQuota;
13
+ readonly emptyReason?: EmptyReason;
14
+ }
15
+ export interface FollowPage {
16
+ readonly users: readonly Record<string, unknown>[];
17
+ readonly cursor?: string;
18
+ readonly quota?: RequestQuota;
19
+ }
20
+ //# sourceMappingURL=pages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/domain/pages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAE3E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;CACpC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;CAC/B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/domain/pages.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import type { AccountLease, AccountStatus } from "./accounts.js";
2
+ import type { HttpSession } from "./http.js";
3
+ export interface PoolExecutionContext {
4
+ readonly account: AccountLease;
5
+ readonly session: HttpSession;
6
+ readonly signal?: AbortSignal;
7
+ chargeRequest(): void;
8
+ }
9
+ export interface PoolExecutionOptions<T> {
10
+ readonly countTweets?: (value: T) => number;
11
+ readonly onRetry?: (error: unknown, attempt: number) => void;
12
+ readonly maxAccountSwitches?: number;
13
+ readonly signal?: AbortSignal;
14
+ }
15
+ export type AccountRepair = (account: AccountLease) => Promise<boolean>;
16
+ export interface CooldownDecision {
17
+ readonly status: AccountStatus;
18
+ readonly availableUntil: number;
19
+ readonly lastErrorCode?: number;
20
+ readonly reason?: string;
21
+ }
22
+ //# sourceMappingURL=pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../src/domain/pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,aAAa,IAAI,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAExE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/domain/pool.ts"],"names":[],"mappings":""}
@@ -1,3 +1,4 @@
1
+ import type { FollowType } from "./requests.js";
1
2
  export interface TweetUser {
2
3
  readonly screenName?: string;
3
4
  readonly name?: string;
@@ -59,7 +60,7 @@ export interface ProfileRecord {
59
60
  readonly raw?: Readonly<Record<string, unknown>>;
60
61
  }
61
62
  export interface FollowRecord extends Omit<ProfileRecord, "input"> {
62
- readonly type: "followers" | "following" | "verified_followers";
63
+ readonly type: FollowType;
63
64
  readonly target: {
64
65
  readonly raw?: string;
65
66
  readonly source?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../src/domain/records.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../src/domain/records.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
- export type TweetType = "all" | "originals_only" | "replies_only" | "retweets_only" | "exclude_replies" | "exclude_retweets";
2
- export type FollowType = "followers" | "following" | "verified_followers";
1
+ import type { FOLLOW_TYPE, SEARCH_DISPLAY, TWEET_TYPE } from "../constants/requests.js";
2
+ import type { OutputFormat } from "./output.js";
3
+ export type TweetType = (typeof TWEET_TYPE)[keyof typeof TWEET_TYPE];
4
+ export type FollowType = (typeof FOLLOW_TYPE)[keyof typeof FOLLOW_TYPE];
5
+ export type SearchDisplayType = (typeof SEARCH_DISPLAY)[keyof typeof SEARCH_DISPLAY];
3
6
  export interface SearchRequest {
4
7
  readonly since?: string;
5
8
  readonly until?: string;
@@ -30,17 +33,19 @@ export interface SearchRequest {
30
33
  readonly within?: string;
31
34
  readonly lang?: string;
32
35
  readonly limit?: number;
33
- readonly displayType?: "Top" | "Latest";
36
+ readonly displayType?: SearchDisplayType;
34
37
  readonly resume?: boolean;
35
38
  readonly save?: boolean;
36
- readonly saveFormat?: "csv" | "json" | "both";
39
+ readonly saveFormat?: OutputFormat;
37
40
  readonly saveDir?: string;
38
41
  readonly saveName?: string;
39
42
  readonly maxEmptyPages?: number;
43
+ readonly signal?: AbortSignal;
40
44
  }
41
45
  export type SearchPageRequest = Omit<SearchRequest, "limit" | "resume" | "save" | "saveFormat" | "saveDir" | "saveName" | "maxEmptyPages"> & {
42
46
  readonly cursor?: string;
43
47
  readonly maxAccountSwitches?: number;
48
+ readonly signal?: AbortSignal;
44
49
  };
45
50
  export interface TargetInput {
46
51
  readonly raw?: string;
@@ -51,9 +56,10 @@ export interface TargetInput {
51
56
  }
52
57
  export interface UserInfoRequest {
53
58
  readonly save?: boolean;
54
- readonly saveFormat?: "csv" | "json" | "both";
59
+ readonly saveFormat?: OutputFormat;
55
60
  readonly saveDir?: string;
56
61
  readonly saveName?: string;
62
+ readonly signal?: AbortSignal;
57
63
  }
58
64
  export interface ProfileTimelineRequest {
59
65
  readonly targets: readonly TargetInput[];
@@ -62,14 +68,13 @@ export interface ProfileTimelineRequest {
62
68
  readonly maxPagesPerProfile?: number;
63
69
  readonly resume?: boolean;
64
70
  readonly initialCursors?: Readonly<Record<string, string>>;
65
- readonly cursorHandoff?: boolean;
66
71
  readonly maxAccountSwitches?: number;
67
- readonly allowAnonymous?: boolean;
68
72
  readonly maxEmptyPages?: number;
69
73
  readonly save?: boolean;
70
- readonly saveFormat?: "csv" | "json" | "both";
74
+ readonly saveFormat?: OutputFormat;
71
75
  readonly saveDir?: string;
72
76
  readonly saveName?: string;
77
+ readonly signal?: AbortSignal;
73
78
  }
74
79
  export interface FollowsRequest {
75
80
  readonly targets: readonly TargetInput[];
@@ -79,13 +84,13 @@ export interface FollowsRequest {
79
84
  readonly maxPagesPerProfile?: number;
80
85
  readonly resume?: boolean;
81
86
  readonly initialCursors?: Readonly<Record<string, string>>;
82
- readonly cursorHandoff?: boolean;
83
87
  readonly maxAccountSwitches?: number;
84
88
  readonly maxEmptyPages?: number;
85
89
  readonly rawJson?: boolean;
86
90
  readonly save?: boolean;
87
- readonly saveFormat?: "csv" | "json" | "both";
91
+ readonly saveFormat?: OutputFormat;
88
92
  readonly saveDir?: string;
89
93
  readonly saveName?: string;
94
+ readonly signal?: AbortSignal;
90
95
  }
91
96
  //# sourceMappingURL=requests.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"requests.d.ts","sourceRoot":"","sources":["../../src/domain/requests.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"requests.d.ts","sourceRoot":"","sources":["../../src/domain/requests.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AACrE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AACxE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAErF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,aAAa,EACb,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,eAAe,CACtF,GAAG;IACF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B"}
@@ -0,0 +1,30 @@
1
+ import type { QUEUE_TASK_STATUS } from "../constants/runner.js";
2
+ export type QueueTaskStatus = (typeof QUEUE_TASK_STATUS)[keyof typeof QUEUE_TASK_STATUS];
3
+ export interface QueueTask<T> {
4
+ readonly id: string;
5
+ readonly payload: T;
6
+ readonly attempts: number;
7
+ readonly generation: number;
8
+ readonly status: QueueTaskStatus;
9
+ readonly leasedUntil?: number;
10
+ readonly error?: string;
11
+ }
12
+ export interface RunnerOptions {
13
+ readonly concurrency: number;
14
+ readonly leaseTtlMs?: number;
15
+ readonly maxAttempts?: number;
16
+ }
17
+ export interface RunnerResult<T> {
18
+ readonly complete: readonly T[];
19
+ readonly failed: readonly {
20
+ readonly task: QueueTask<T>;
21
+ readonly error: unknown;
22
+ }[];
23
+ readonly retries: number;
24
+ }
25
+ export interface RetryOptions {
26
+ readonly maxAttempts: number;
27
+ readonly baseMs: number;
28
+ readonly maxMs: number;
29
+ }
30
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/domain/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAEzF,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IACrF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/domain/runner.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import type { RUN_STATUS } from "../constants/runs.js";
2
+ export type RunStatus = (typeof RUN_STATUS)[keyof typeof RUN_STATUS];
3
+ export interface RunRecord {
4
+ readonly id: string;
5
+ readonly operation: string;
6
+ readonly queryHash?: string;
7
+ readonly startedAt: string;
8
+ readonly finishedAt?: string;
9
+ readonly status: RunStatus;
10
+ readonly error?: unknown;
11
+ }
12
+ //# sourceMappingURL=runs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../src/domain/runs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAErE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=runs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runs.js","sourceRoot":"","sources":["../../src/domain/runs.ts"],"names":[],"mappings":""}
@@ -2,7 +2,7 @@ import type { ClientConfig } from "../config/types.js";
2
2
  import type { HttpSession } from "../domain/http.js";
3
3
  import type { FollowType, ProfileTimelineRequest, SearchRequest, TargetInput } from "../domain/requests.js";
4
4
  import type { TweetRecord } from "../domain/records.js";
5
- import type { FollowPage, TweetPage } from "./extractors.js";
5
+ import type { FollowPage, TweetPage } from "../domain/pages.js";
6
6
  import type { ManifestProvider } from "../manifest/provider.js";
7
7
  import type { GraphqlTransport } from "../transport/graphql.js";
8
8
  export declare class ApiEngine {
@@ -10,13 +10,13 @@ export declare class ApiEngine {
10
10
  private readonly manifests;
11
11
  private readonly transport;
12
12
  constructor(config: ClientConfig, manifests: ManifestProvider, transport: GraphqlTransport);
13
- search(session: HttpSession, request: SearchRequest, cursor?: string): Promise<TweetPage>;
14
- lookupUser(session: HttpSession, username: string): Promise<Record<string, unknown>>;
15
- profilePage(session: HttpSession, userId: string, request: ProfileTimelineRequest, cursor?: string): Promise<TweetPage>;
16
- followsPage(session: HttpSession, userId: string, type: FollowType, cursor?: string): Promise<FollowPage>;
17
- tweetResult(session: HttpSession, tweetId: string): Promise<TweetRecord | undefined>;
13
+ search(session: HttpSession, request: SearchRequest, cursor?: string, signal?: AbortSignal, onAttempt?: () => void): Promise<TweetPage>;
14
+ lookupUser(session: HttpSession, username: string, signal?: AbortSignal, onAttempt?: () => void): Promise<Record<string, unknown>>;
15
+ profilePage(session: HttpSession, userId: string, request: ProfileTimelineRequest, cursor?: string, signal?: AbortSignal, onAttempt?: () => void): Promise<TweetPage>;
16
+ followsPage(session: HttpSession, userId: string, type: FollowType, cursor?: string, signal?: AbortSignal, onAttempt?: () => void): Promise<FollowPage>;
17
+ tweetResult(session: HttpSession, tweetId: string, signal?: AbortSignal, onAttempt?: () => void): Promise<TweetRecord | undefined>;
18
18
  private graphql;
19
- resolveTarget(session: HttpSession, target: TargetInput): Promise<{
19
+ resolveTarget(session: HttpSession, target: TargetInput, signal?: AbortSignal, onAttempt?: () => void): Promise<{
20
20
  readonly username: string;
21
21
  readonly userId: string;
22
22
  readonly raw: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"api-engine.d.ts","sourceRoot":"","sources":["../../src/engine/api-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAmB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC5G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQ7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAYhE,qBAAa,SAAS;IAElB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAFT,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,gBAAgB;IAGjC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAWzF,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAapF,WAAW,CACtB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,sBAAsB,EAC/B,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,SAAS,CAAC;IAWR,WAAW,CACtB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC;IAiBT,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;YAWnF,OAAO;IA2BR,aAAa,CACxB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CAW1G"}
1
+ {"version":3,"file":"api-engine.d.ts","sourceRoot":"","sources":["../../src/engine/api-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAmB,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC5G,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAgB,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAYhE,qBAAa,SAAS;IAElB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAFT,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,gBAAgB,EAC3B,SAAS,EAAE,gBAAgB;IAGjC,MAAM,CACjB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,aAAa,EACtB,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,OAAO,CAAC,SAAS,CAAC;IAkBR,UAAU,CACrB,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAiBtB,WAAW,CACtB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,sBAAsB,EAC/B,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,OAAO,CAAC,SAAS,CAAC;IAkBR,WAAW,CACtB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,OAAO,CAAC,UAAU,CAAC;IAqBT,WAAW,CACtB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;YAerB,OAAO;IAgCR,aAAa,CACxB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,OAAO,CAAC;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CAW1G"}
@@ -1,3 +1,5 @@
1
+ import { EMPTY_REASON } from "../constants/pages.js";
2
+ import { FOLLOW_TYPE } from "../constants/requests.js";
1
3
  import { extractFollows, extractProfileTweets, extractSearchTweets, extractTweetResult, extractUserResult, } from "./extractors.js";
2
4
  import { buildFollowsParams, buildProfileTimelineParams, buildSearchParams, buildTweetResultParams, buildUserLookupParams, endpointFor, OPERATION, } from "../query/builder.js";
3
5
  import { NetworkError } from "../domain/errors.js";
@@ -10,16 +12,19 @@ export class ApiEngine {
10
12
  this.manifests = manifests;
11
13
  this.transport = transport;
12
14
  }
13
- async search(session, request, cursor) {
14
- const response = await this.graphql(session, OPERATION.search, (manifest) => buildSearchParams(request, manifest, cursor, this.config.apiPageSize));
15
+ async search(session, request, cursor, signal, onAttempt) {
16
+ const response = await this.graphql(session, OPERATION.search, (manifest) => buildSearchParams(request, manifest, cursor, this.config.apiPageSize), signal, onAttempt);
15
17
  if (response.status !== 200 || !response.data)
16
18
  throw new NetworkError(`Search request returned status ${response.status}.`, {
17
19
  statusCode: response.status,
18
20
  });
19
- return extractSearchTweets(response.data);
21
+ const page = extractSearchTweets(response.data);
22
+ if (page.emptyReason === EMPTY_REASON.MALFORMED)
23
+ throw new NetworkError("Search response was malformed.", { statusCode: 502 });
24
+ return attachQuota(page, response);
20
25
  }
21
- async lookupUser(session, username) {
22
- const response = await this.graphql(session, OPERATION.userLookup, (manifest) => buildUserLookupParams(username, manifest));
26
+ async lookupUser(session, username, signal, onAttempt) {
27
+ const response = await this.graphql(session, OPERATION.userLookup, (manifest) => buildUserLookupParams(username, manifest), signal, onAttempt);
23
28
  if (response.status !== 200 || !response.data)
24
29
  throw new NetworkError(`User lookup returned status ${response.status}.`, {
25
30
  statusCode: response.status,
@@ -29,37 +34,43 @@ export class ApiEngine {
29
34
  throw new NetworkError(`User ${username} was not found.`, { statusCode: 404 });
30
35
  return user;
31
36
  }
32
- async profilePage(session, userId, request, cursor) {
33
- const response = await this.graphql(session, OPERATION.profileTimeline, (manifest) => buildProfileTimelineParams(userId, request, manifest, cursor, this.config.apiPageSize));
37
+ async profilePage(session, userId, request, cursor, signal, onAttempt) {
38
+ const response = await this.graphql(session, OPERATION.profileTimeline, (manifest) => buildProfileTimelineParams(userId, request, manifest, cursor, this.config.apiPageSize), signal, onAttempt);
34
39
  if (response.status !== 200 || !response.data)
35
40
  throw new NetworkError(`Profile timeline returned status ${response.status}.`, {
36
41
  statusCode: response.status,
37
42
  });
38
- return extractProfileTweets(response.data);
43
+ const page = extractProfileTweets(response.data);
44
+ if (page.emptyReason === EMPTY_REASON.MALFORMED)
45
+ throw new NetworkError("Profile timeline response was malformed.", { statusCode: 502 });
46
+ return attachQuota(page, response);
39
47
  }
40
- async followsPage(session, userId, type, cursor) {
41
- const operation = type === "followers"
48
+ async followsPage(session, userId, type, cursor, signal, onAttempt) {
49
+ const operation = type === FOLLOW_TYPE.FOLLOWERS
42
50
  ? OPERATION.followers
43
- : type === "verified_followers"
51
+ : type === FOLLOW_TYPE.VERIFIED_FOLLOWERS
44
52
  ? OPERATION.verifiedFollowers
45
53
  : OPERATION.following;
46
- const response = await this.graphql(session, operation, (manifest) => buildFollowsParams(userId, operation, manifest, cursor, this.config.apiPageSize));
54
+ const response = await this.graphql(session, operation, (manifest) => buildFollowsParams(userId, operation, manifest, cursor, this.config.apiPageSize), signal, onAttempt);
47
55
  if (response.status !== 200 || !response.data)
48
56
  throw new NetworkError(`Relationship request returned status ${response.status}.`, {
49
57
  statusCode: response.status,
50
58
  });
51
- return extractFollows(response.data);
59
+ return attachQuota(extractFollows(response.data), response);
52
60
  }
53
- async tweetResult(session, tweetId) {
54
- const response = await this.graphql(session, OPERATION.tweetResult, (manifest) => buildTweetResultParams(tweetId, manifest));
61
+ async tweetResult(session, tweetId, signal, onAttempt) {
62
+ const response = await this.graphql(session, OPERATION.tweetResult, (manifest) => buildTweetResultParams(tweetId, manifest), signal, onAttempt);
55
63
  if (response.status !== 200 || !response.data)
56
64
  throw new NetworkError(`Tweet lookup returned status ${response.status}.`, {
57
65
  statusCode: response.status,
58
66
  });
59
67
  return extractTweetResult(response.data);
60
68
  }
61
- async graphql(session, operation, buildParams) {
62
- const send = (manifest) => this.transport.get(session, endpointFor(manifest, operation), buildParams(manifest), manifest.timeoutSeconds * 1_000);
69
+ async graphql(session, operation, buildParams, signal, onAttempt) {
70
+ const send = (manifest) => {
71
+ onAttempt?.();
72
+ return this.transport.get(session, endpointFor(manifest, operation, this.config.allowedManifestOrigins), buildParams(manifest), manifest.timeoutSeconds * 1_000, signal);
73
+ };
63
74
  const manifest = await this.manifests.getManifest();
64
75
  try {
65
76
  return await send(manifest);
@@ -77,13 +88,13 @@ export class ApiEngine {
77
88
  return send(refreshed);
78
89
  }
79
90
  }
80
- async resolveTarget(session, target) {
91
+ async resolveTarget(session, target, signal, onAttempt) {
81
92
  const username = target.username?.replace(/^@/u, "") ?? target.profileUrl?.split("/").filter(Boolean).pop();
82
93
  if (target.userId && !username)
83
94
  return { username: target.userId, userId: target.userId, raw: {} };
84
95
  if (!username)
85
96
  throw new NetworkError("Target has no resolvable username or user ID.", { statusCode: 400 });
86
- const raw = target.userId ? {} : await this.lookupUser(session, username);
97
+ const raw = target.userId ? {} : await this.lookupUser(session, username, signal, onAttempt);
87
98
  const userId = target.userId ?? String(raw.rest_id ?? raw.id ?? "");
88
99
  if (!userId)
89
100
  throw new NetworkError(`Target ${username} has no user id.`, { statusCode: 404 });
@@ -95,4 +106,16 @@ function isOperationMismatch(error) {
95
106
  return false;
96
107
  return error.diagnostics.statusCode === 404 || error.diagnostics.statusCode === 422;
97
108
  }
109
+ function attachQuota(value, response) {
110
+ if (response.remaining === undefined && response.resetAt === undefined && !response.quotaExhausted)
111
+ return value;
112
+ return {
113
+ ...value,
114
+ quota: {
115
+ ...(response.remaining === undefined ? {} : { remaining: response.remaining }),
116
+ ...(response.resetAt === undefined ? {} : { resetAt: response.resetAt }),
117
+ ...(response.quotaExhausted ? { exhausted: true } : {}),
118
+ },
119
+ };
120
+ }
98
121
  //# sourceMappingURL=api-engine.js.map