@crawlee/core 4.0.0-beta.6 → 4.0.0-beta.60

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 (196) hide show
  1. package/README.md +9 -5
  2. package/autoscaling/autoscaled_pool.d.ts +3 -5
  3. package/autoscaling/autoscaled_pool.d.ts.map +1 -1
  4. package/autoscaling/autoscaled_pool.js +3 -9
  5. package/autoscaling/autoscaled_pool.js.map +1 -1
  6. package/autoscaling/snapshotter.d.ts +3 -13
  7. package/autoscaling/snapshotter.d.ts.map +1 -1
  8. package/autoscaling/snapshotter.js +18 -29
  9. package/autoscaling/snapshotter.js.map +1 -1
  10. package/autoscaling/system_status.d.ts +0 -3
  11. package/autoscaling/system_status.d.ts.map +1 -1
  12. package/autoscaling/system_status.js +2 -3
  13. package/autoscaling/system_status.js.map +1 -1
  14. package/configuration.d.ts +85 -227
  15. package/configuration.d.ts.map +1 -1
  16. package/configuration.js +159 -223
  17. package/configuration.js.map +1 -1
  18. package/cookie_utils.d.ts +4 -2
  19. package/cookie_utils.d.ts.map +1 -1
  20. package/cookie_utils.js +18 -12
  21. package/cookie_utils.js.map +1 -1
  22. package/crawlers/context_pipeline.d.ts +71 -0
  23. package/crawlers/context_pipeline.d.ts.map +1 -0
  24. package/crawlers/context_pipeline.js +123 -0
  25. package/crawlers/context_pipeline.js.map +1 -0
  26. package/crawlers/crawler_commons.d.ts +19 -28
  27. package/crawlers/crawler_commons.d.ts.map +1 -1
  28. package/crawlers/crawler_commons.js +12 -20
  29. package/crawlers/crawler_commons.js.map +1 -1
  30. package/crawlers/crawler_utils.d.ts +2 -2
  31. package/crawlers/crawler_utils.d.ts.map +1 -1
  32. package/crawlers/crawler_utils.js +1 -1
  33. package/crawlers/crawler_utils.js.map +1 -1
  34. package/crawlers/error_snapshotter.d.ts +3 -2
  35. package/crawlers/error_snapshotter.d.ts.map +1 -1
  36. package/crawlers/error_snapshotter.js +2 -2
  37. package/crawlers/error_snapshotter.js.map +1 -1
  38. package/crawlers/error_tracker.d.ts +2 -1
  39. package/crawlers/error_tracker.d.ts.map +1 -1
  40. package/crawlers/error_tracker.js.map +1 -1
  41. package/crawlers/index.d.ts +1 -1
  42. package/crawlers/index.d.ts.map +1 -1
  43. package/crawlers/index.js +1 -1
  44. package/crawlers/index.js.map +1 -1
  45. package/crawlers/internals/types.d.ts +8 -0
  46. package/crawlers/internals/types.d.ts.map +1 -0
  47. package/crawlers/internals/types.js +2 -0
  48. package/crawlers/internals/types.js.map +1 -0
  49. package/crawlers/statistics.d.ts +15 -15
  50. package/crawlers/statistics.d.ts.map +1 -1
  51. package/crawlers/statistics.js +21 -18
  52. package/crawlers/statistics.js.map +1 -1
  53. package/enqueue_links/enqueue_links.d.ts +32 -18
  54. package/enqueue_links/enqueue_links.d.ts.map +1 -1
  55. package/enqueue_links/enqueue_links.js +45 -24
  56. package/enqueue_links/enqueue_links.js.map +1 -1
  57. package/enqueue_links/shared.d.ts +25 -8
  58. package/enqueue_links/shared.d.ts.map +1 -1
  59. package/enqueue_links/shared.js +69 -37
  60. package/enqueue_links/shared.js.map +1 -1
  61. package/errors.d.ts +33 -3
  62. package/errors.d.ts.map +1 -1
  63. package/errors.js +48 -4
  64. package/errors.js.map +1 -1
  65. package/events/event_manager.d.ts +8 -5
  66. package/events/event_manager.d.ts.map +1 -1
  67. package/events/event_manager.js +7 -9
  68. package/events/event_manager.js.map +1 -1
  69. package/events/local_event_manager.d.ts +14 -4
  70. package/events/local_event_manager.d.ts.map +1 -1
  71. package/events/local_event_manager.js +33 -39
  72. package/events/local_event_manager.js.map +1 -1
  73. package/index.d.ts +3 -2
  74. package/index.d.ts.map +1 -1
  75. package/index.js +2 -1
  76. package/index.js.map +1 -1
  77. package/log.d.ts +82 -2
  78. package/log.d.ts.map +1 -1
  79. package/log.js +102 -0
  80. package/log.js.map +1 -1
  81. package/package.json +9 -10
  82. package/proxy_configuration.d.ts +14 -148
  83. package/proxy_configuration.d.ts.map +1 -1
  84. package/proxy_configuration.js +19 -167
  85. package/proxy_configuration.js.map +1 -1
  86. package/recoverable_state.d.ts +121 -0
  87. package/recoverable_state.d.ts.map +1 -0
  88. package/recoverable_state.js +142 -0
  89. package/recoverable_state.js.map +1 -0
  90. package/request.d.ts +74 -10
  91. package/request.d.ts.map +1 -1
  92. package/request.js +85 -23
  93. package/request.js.map +1 -1
  94. package/router.d.ts.map +1 -1
  95. package/router.js.map +1 -1
  96. package/serialization.js +1 -1
  97. package/serialization.js.map +1 -1
  98. package/service_locator.d.ts +157 -0
  99. package/service_locator.d.ts.map +1 -0
  100. package/service_locator.js +234 -0
  101. package/service_locator.js.map +1 -0
  102. package/session_pool/index.d.ts +0 -1
  103. package/session_pool/index.d.ts.map +1 -1
  104. package/session_pool/index.js +0 -1
  105. package/session_pool/index.js.map +1 -1
  106. package/session_pool/session.d.ts +26 -72
  107. package/session_pool/session.d.ts.map +1 -1
  108. package/session_pool/session.js +36 -98
  109. package/session_pool/session.js.map +1 -1
  110. package/session_pool/session_pool.d.ts +65 -71
  111. package/session_pool/session_pool.d.ts.map +1 -1
  112. package/session_pool/session_pool.js +102 -95
  113. package/session_pool/session_pool.js.map +1 -1
  114. package/storages/dataset.d.ts +64 -19
  115. package/storages/dataset.d.ts.map +1 -1
  116. package/storages/dataset.js +92 -25
  117. package/storages/dataset.js.map +1 -1
  118. package/storages/index.d.ts +3 -1
  119. package/storages/index.d.ts.map +1 -1
  120. package/storages/index.js +3 -1
  121. package/storages/index.js.map +1 -1
  122. package/storages/key_value_store.d.ts +80 -10
  123. package/storages/key_value_store.d.ts.map +1 -1
  124. package/storages/key_value_store.js +110 -26
  125. package/storages/key_value_store.js.map +1 -1
  126. package/storages/request_list.d.ts +9 -9
  127. package/storages/request_list.d.ts.map +1 -1
  128. package/storages/request_list.js +13 -8
  129. package/storages/request_list.js.map +1 -1
  130. package/storages/request_list_adapter.d.ts +58 -0
  131. package/storages/request_list_adapter.d.ts.map +1 -0
  132. package/storages/request_list_adapter.js +81 -0
  133. package/storages/request_list_adapter.js.map +1 -0
  134. package/storages/request_manager_tandem.d.ts +68 -0
  135. package/storages/request_manager_tandem.d.ts.map +1 -0
  136. package/storages/request_manager_tandem.js +124 -0
  137. package/storages/request_manager_tandem.js.map +1 -0
  138. package/storages/request_provider.d.ts +87 -22
  139. package/storages/request_provider.d.ts.map +1 -1
  140. package/storages/request_provider.js +126 -76
  141. package/storages/request_provider.js.map +1 -1
  142. package/storages/request_queue.d.ts +1 -3
  143. package/storages/request_queue.d.ts.map +1 -1
  144. package/storages/request_queue.js +2 -4
  145. package/storages/request_queue.js.map +1 -1
  146. package/storages/request_queue_v2.d.ts +3 -3
  147. package/storages/request_queue_v2.d.ts.map +1 -1
  148. package/storages/request_queue_v2.js +4 -5
  149. package/storages/request_queue_v2.js.map +1 -1
  150. package/storages/sitemap_request_list.d.ts +5 -5
  151. package/storages/sitemap_request_list.d.ts.map +1 -1
  152. package/storages/sitemap_request_list.js +10 -7
  153. package/storages/sitemap_request_list.js.map +1 -1
  154. package/storages/storage_instance_manager.d.ts +91 -0
  155. package/storages/storage_instance_manager.d.ts.map +1 -0
  156. package/storages/storage_instance_manager.js +236 -0
  157. package/storages/storage_instance_manager.js.map +1 -0
  158. package/storages/utils.d.ts +25 -1
  159. package/storages/utils.d.ts.map +1 -1
  160. package/storages/utils.js +6 -5
  161. package/storages/utils.js.map +1 -1
  162. package/typedefs.d.ts +1 -1
  163. package/typedefs.d.ts.map +1 -1
  164. package/validators.d.ts +4 -0
  165. package/validators.d.ts.map +1 -1
  166. package/validators.js +4 -0
  167. package/validators.js.map +1 -1
  168. package/crawlers/crawler_extension.d.ts +0 -12
  169. package/crawlers/crawler_extension.d.ts.map +0 -1
  170. package/crawlers/crawler_extension.js +0 -14
  171. package/crawlers/crawler_extension.js.map +0 -1
  172. package/http_clients/base-http-client.d.ts +0 -134
  173. package/http_clients/base-http-client.d.ts.map +0 -1
  174. package/http_clients/base-http-client.js +0 -33
  175. package/http_clients/base-http-client.js.map +0 -1
  176. package/http_clients/form-data-like.d.ts +0 -67
  177. package/http_clients/form-data-like.d.ts.map +0 -1
  178. package/http_clients/form-data-like.js +0 -5
  179. package/http_clients/form-data-like.js.map +0 -1
  180. package/http_clients/got-scraping-http-client.d.ts +0 -15
  181. package/http_clients/got-scraping-http-client.d.ts.map +0 -1
  182. package/http_clients/got-scraping-http-client.js +0 -69
  183. package/http_clients/got-scraping-http-client.js.map +0 -1
  184. package/http_clients/index.d.ts +0 -3
  185. package/http_clients/index.d.ts.map +0 -1
  186. package/http_clients/index.js +0 -3
  187. package/http_clients/index.js.map +0 -1
  188. package/session_pool/events.d.ts +0 -3
  189. package/session_pool/events.d.ts.map +0 -1
  190. package/session_pool/events.js +0 -3
  191. package/session_pool/events.js.map +0 -1
  192. package/storages/storage_manager.d.ts +0 -58
  193. package/storages/storage_manager.d.ts.map +0 -1
  194. package/storages/storage_manager.js +0 -105
  195. package/storages/storage_manager.js.map +0 -1
  196. package/tsconfig.build.tsbuildinfo +0 -1
package/validators.js CHANGED
@@ -18,5 +18,9 @@ export const validators = {
18
18
  validator: ow.isValid(value, ow.object.hasKeys('fetchNextRequest', 'addRequest')),
19
19
  message: (label) => `Expected argument '${label}' to be a RequestQueue, got something else.`,
20
20
  }),
21
+ sessionPool: (value) => ({
22
+ validator: ow.isValid(value, ow.object.hasKeys('getSession')),
23
+ message: (label) => `Expected argument '${label}' to implement the ISessionPool interface (missing 'getSession'), got something else.`,
24
+ }),
21
25
  };
22
26
  //# sourceMappingURL=validators.js.map
package/validators.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,gBAAgB;AAChB,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,6DAA6D;IAC7D,WAAW,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,CAAC;QACjC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9E,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,sBAAsB,KAAK,+CAA+C;KACzG,CAAC;IACF,kBAAkB,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,CAAC;QACxC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACzE,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,sBAAsB,KAAK,mDAAmD;KAC7G,CAAC;IACF,WAAW,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,CAAC;QACjC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;QACnF,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,sBAAsB,KAAK,4CAA4C;KACtG,CAAC;IACF,YAAY,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,CAAC;QAClC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;QACjF,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,sBAAsB,KAAK,6CAA6C;KACvG,CAAC;CACL,CAAC"}
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,gBAAgB;AAChB,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,6DAA6D;IAC7D,WAAW,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,CAAC;QACjC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9E,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,sBAAsB,KAAK,+CAA+C;KACzG,CAAC;IACF,kBAAkB,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,CAAC;QACxC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACzE,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,sBAAsB,KAAK,mDAAmD;KAC7G,CAAC;IACF,WAAW,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,CAAC;QACjC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;QACnF,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,sBAAsB,KAAK,4CAA4C;KACtG,CAAC;IACF,YAAY,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,CAAC;QAClC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;QACjF,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,sBAAsB,KAAK,6CAA6C;KACvG,CAAC;IACF,WAAW,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,CAAC;QACjC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7D,OAAO,EAAE,CAAC,KAAa,EAAE,EAAE,CACvB,sBAAsB,KAAK,uFAAuF;KACzH,CAAC;CACL,CAAC"}
@@ -1,12 +0,0 @@
1
- import { type Log } from '../log.js';
2
- /**
3
- * Abstract class with pre-defined method to connect to the Crawlers class by the "use" crawler method.
4
- * @category Crawlers
5
- * @ignore
6
- */
7
- export declare abstract class CrawlerExtension {
8
- name: string;
9
- log: Log;
10
- getCrawlerOptions(): Record<string, unknown>;
11
- }
12
- //# sourceMappingURL=crawler_extension.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crawler_extension.d.ts","sourceRoot":"","sources":["../../src/crawlers/crawler_extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAqB,MAAM,WAAW,CAAC;AAExD;;;;GAIG;AACH,8BAAsB,gBAAgB;IAClC,IAAI,SAAyB;IAC7B,GAAG,EAAE,GAAG,CAA2C;IAEnD,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAG/C"}
@@ -1,14 +0,0 @@
1
- import { log as defaultLog } from '../log.js';
2
- /**
3
- * Abstract class with pre-defined method to connect to the Crawlers class by the "use" crawler method.
4
- * @category Crawlers
5
- * @ignore
6
- */
7
- export class CrawlerExtension {
8
- name = this.constructor.name;
9
- log = defaultLog.child({ prefix: this.name });
10
- getCrawlerOptions() {
11
- throw new Error(`${this.name} has not implemented "getCrawlerOptions" method.`);
12
- }
13
- }
14
- //# sourceMappingURL=crawler_extension.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crawler_extension.js","sourceRoot":"","sources":["../../src/crawlers/crawler_extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,GAAG,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AAExD;;;;GAIG;AACH,MAAM,OAAgB,gBAAgB;IAClC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC7B,GAAG,GAAQ,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAEnD,iBAAiB;QACb,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,kDAAkD,CAAC,CAAC;IACpF,CAAC;CACJ"}
@@ -1,134 +0,0 @@
1
- import type { Readable } from 'node:stream';
2
- import { type SearchParams } from '@crawlee/utils';
3
- import type { FormDataLike } from './form-data-like.js';
4
- type Timeout = {
5
- lookup: number;
6
- connect: number;
7
- secureConnect: number;
8
- socket: number;
9
- send: number;
10
- response: number;
11
- } | {
12
- request: number;
13
- };
14
- type Method = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'HEAD' | 'DELETE' | 'OPTIONS' | 'TRACE' | 'get' | 'post' | 'put' | 'patch' | 'head' | 'delete' | 'options' | 'trace';
15
- /**
16
- * Maps permitted values of the `responseType` option on {@link HttpRequest} to the types that they produce.
17
- */
18
- export interface ResponseTypes {
19
- 'json': unknown;
20
- 'text': string;
21
- 'buffer': Buffer;
22
- }
23
- interface Progress {
24
- percent: number;
25
- transferred: number;
26
- total?: number;
27
- }
28
- interface ToughCookieJar {
29
- getCookieString: ((currentUrl: string, options: Record<string, unknown>, callback: (error: Error | null, cookies: string) => void) => string) & ((url: string, callback: (error: Error | null, cookieHeader: string) => void) => string);
30
- setCookie: ((cookieOrString: unknown, currentUrl: string, options: Record<string, unknown>, callback: (error: Error | null, cookie: unknown) => void) => void) & ((rawCookie: string, url: string, callback: (error: Error | null, result: unknown) => void) => void);
31
- }
32
- interface PromiseCookieJar {
33
- getCookieString: (url: string) => Promise<string>;
34
- setCookie: (rawCookie: string, url: string) => Promise<unknown>;
35
- }
36
- type SimpleHeaders = Record<string, string | string[] | undefined>;
37
- /**
38
- * HTTP Request as accepted by {@link BaseHttpClient} methods.
39
- */
40
- export interface HttpRequest<TResponseType extends keyof ResponseTypes = 'text'> {
41
- [k: string]: unknown;
42
- url: string | URL;
43
- method?: Method;
44
- headers?: SimpleHeaders;
45
- body?: string | Buffer | Readable | Generator | AsyncGenerator | FormDataLike;
46
- signal?: AbortSignal;
47
- timeout?: Partial<Timeout>;
48
- cookieJar?: ToughCookieJar | PromiseCookieJar;
49
- followRedirect?: boolean | ((response: any) => boolean);
50
- maxRedirects?: number;
51
- encoding?: BufferEncoding;
52
- responseType?: TResponseType;
53
- throwHttpErrors?: boolean;
54
- proxyUrl?: string;
55
- headerGeneratorOptions?: Record<string, unknown>;
56
- useHeaderGenerator?: boolean;
57
- headerGenerator?: {
58
- getHeaders: (options: Record<string, unknown>) => Record<string, string>;
59
- };
60
- insecureHTTPParser?: boolean;
61
- sessionToken?: object;
62
- }
63
- /**
64
- * Additional options for HTTP requests that need to be handled separately before passing to {@link BaseHttpClient}.
65
- */
66
- export interface HttpRequestOptions<TResponseType extends keyof ResponseTypes = 'text'> extends HttpRequest<TResponseType> {
67
- /** Search (query string) parameters to be appended to the request URL */
68
- searchParams?: SearchParams;
69
- /** A form to be sent in the HTTP request body (URL encoding will be used) */
70
- form?: Record<string, string>;
71
- /** Artbitrary object to be JSON-serialized and sent as the HTTP request body */
72
- json?: unknown;
73
- /** Basic HTTP Auth username */
74
- username?: string;
75
- /** Basic HTTP Auth password */
76
- password?: string;
77
- }
78
- /**
79
- * HTTP response data, without a body, as returned by {@link BaseHttpClient} methods.
80
- */
81
- export interface BaseHttpResponseData {
82
- redirectUrls: URL[];
83
- url: string;
84
- ip?: string;
85
- statusCode: number;
86
- statusMessage?: string;
87
- headers: SimpleHeaders;
88
- trailers: SimpleHeaders;
89
- complete: boolean;
90
- }
91
- interface HttpResponseWithoutBody<TResponseType extends keyof ResponseTypes = keyof ResponseTypes> extends BaseHttpResponseData {
92
- request: HttpRequest<TResponseType>;
93
- }
94
- /**
95
- * HTTP response data as returned by the {@link BaseHttpClient.sendRequest} method.
96
- */
97
- export interface HttpResponse<TResponseType extends keyof ResponseTypes = keyof ResponseTypes> extends HttpResponseWithoutBody<TResponseType> {
98
- [k: string]: any;
99
- body: ResponseTypes[TResponseType];
100
- }
101
- /**
102
- * HTTP response data as returned by the {@link BaseHttpClient.stream} method.
103
- */
104
- export interface StreamingHttpResponse extends HttpResponseWithoutBody {
105
- stream: Readable;
106
- readonly downloadProgress: Progress;
107
- readonly uploadProgress: Progress;
108
- }
109
- /**
110
- * Type of a function called when an HTTP redirect takes place. It is allowed to mutate the `updatedRequest` argument.
111
- */
112
- export type RedirectHandler = (redirectResponse: BaseHttpResponseData, updatedRequest: {
113
- url?: string | URL;
114
- headers: SimpleHeaders;
115
- }) => void;
116
- /**
117
- * Interface for user-defined HTTP clients to be used for plain HTTP crawling and for sending additional requests during a crawl.
118
- */
119
- export interface BaseHttpClient {
120
- /**
121
- * Perform an HTTP Request and return the complete response.
122
- */
123
- sendRequest<TResponseType extends keyof ResponseTypes = 'text'>(request: HttpRequest<TResponseType>): Promise<HttpResponse<TResponseType>>;
124
- /**
125
- * Perform an HTTP Request and return after the response headers are received. The body may be read from a stream contained in the response.
126
- */
127
- stream(request: HttpRequest, onRedirect?: RedirectHandler): Promise<StreamingHttpResponse>;
128
- }
129
- /**
130
- * Converts {@link HttpRequestOptions} to a {@link HttpRequest}.
131
- */
132
- export declare function processHttpRequestOptions<TResponseType extends keyof ResponseTypes = 'text'>({ searchParams, form, json, username, password, ...request }: HttpRequestOptions<TResponseType>): HttpRequest<TResponseType>;
133
- export {};
134
- //# sourceMappingURL=base-http-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-http-client.d.ts","sourceRoot":"","sources":["../../src/http_clients/base-http-client.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- import { applySearchParams } from '@crawlee/utils';
2
- /**
3
- * Converts {@link HttpRequestOptions} to a {@link HttpRequest}.
4
- */
5
- export function processHttpRequestOptions({ searchParams, form, json, username, password, ...request }) {
6
- const url = new URL(request.url);
7
- const headers = { ...request.headers };
8
- applySearchParams(url, searchParams);
9
- if ([request.body, form, json].filter((value) => value !== undefined).length > 1) {
10
- throw new Error('At most one of `body`, `form` and `json` may be specified in sendRequest arguments');
11
- }
12
- const body = (() => {
13
- if (form !== undefined) {
14
- return new URLSearchParams(form).toString();
15
- }
16
- if (json !== undefined) {
17
- return JSON.stringify(json);
18
- }
19
- return request.body;
20
- })();
21
- if (form !== undefined) {
22
- headers['content-type'] ??= 'application/x-www-form-urlencoded';
23
- }
24
- if (json !== undefined) {
25
- headers['content-type'] ??= 'application/json';
26
- }
27
- if (username !== undefined || password !== undefined) {
28
- const encodedAuth = Buffer.from(`${username ?? ''}:${password ?? ''}`).toString('base64');
29
- headers.authorization = `Basic ${encodedAuth}`;
30
- }
31
- return { ...request, body, url, headers };
32
- }
33
- //# sourceMappingURL=base-http-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-http-client.js","sourceRoot":"","sources":["../../src/http_clients/base-http-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAqB,MAAM,gBAAgB,CAAC;AA8LtE;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAqD,EAC1F,YAAY,EACZ,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,GAAG,OAAO,EACsB;IAChC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAEvC,iBAAiB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAErC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC,CAAC;IAC1G,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;QACf,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChD,CAAC;QAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC;IAEL,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,CAAC,cAAc,CAAC,KAAK,mCAAmC,CAAC;IACpE,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,CAAC,cAAc,CAAC,KAAK,kBAAkB,CAAC;IACnD,CAAC;IAED,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,EAAE,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1F,OAAO,CAAC,aAAa,GAAG,SAAS,WAAW,EAAE,CAAC;IACnD,CAAC;IAED,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC9C,CAAC"}
@@ -1,67 +0,0 @@
1
- /**
2
- * This is copied from https://github.com/octet-stream/form-data-encoder
3
- */
4
- interface FileLike {
5
- /**
6
- * Name of the file referenced by the File object.
7
- */
8
- readonly name: string;
9
- /**
10
- * Returns the media type ([`MIME`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types)) of the file represented by a `File` object.
11
- */
12
- readonly type: string;
13
- /**
14
- * Size of the file parts in bytes
15
- */
16
- readonly size: number;
17
- /**
18
- * The last modified date of the file as the number of milliseconds since the Unix epoch (January 1, 1970 at midnight). Files without a known last modified date return the current date.
19
- */
20
- readonly lastModified: number;
21
- /**
22
- * Returns a [`ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream) which upon reading returns the data contained within the [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File).
23
- */
24
- stream(): ReadableStream<Uint8Array> | AsyncIterable<Uint8Array>;
25
- readonly [Symbol.toStringTag]?: string;
26
- }
27
- /**
28
- * A `string` or `File` that represents a single value from a set of `FormData` key-value pairs.
29
- */
30
- type FormDataEntryValue = string | FileLike;
31
- /**
32
- * This interface reflects minimal shape of the FormData
33
- */
34
- export interface FormDataLike {
35
- /**
36
- * Appends a new value onto an existing key inside a FormData object,
37
- * or adds the key if it does not already exist.
38
- *
39
- * The difference between `set()` and `append()` is that if the specified key already exists, `set()` will overwrite all existing values with the new one, whereas `append()` will append the new value onto the end of the existing set of values.
40
- *
41
- * @param name The name of the field whose data is contained in `value`.
42
- * @param value The field's value. This can be [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob)
43
- or [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File). If none of these are specified the value is converted to a string.
44
- * @param fileName The filename reported to the server, when a Blob or File is passed as the second parameter. The default filename for Blob objects is "blob". The default filename for File objects is the file's filename.
45
- */
46
- append(name: string, value: unknown, fileName?: string): void;
47
- /**
48
- * Returns all the values associated with a given key from within a `FormData` object.
49
- *
50
- * @param {string} name A name of the value you want to retrieve.
51
- *
52
- * @returns An array of `FormDataEntryValue` whose key matches the value passed in the `name` parameter. If the key doesn't exist, the method returns an empty list.
53
- */
54
- getAll(name: string): FormDataEntryValue[];
55
- /**
56
- * Returns an [`iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols) allowing to go through the `FormData` key/value pairs.
57
- * The key of each pair is a string; the value is a [`FormDataValue`](https://developer.mozilla.org/en-US/docs/Web/API/FormDataEntryValue).
58
- */
59
- entries(): IterableIterator<[string, FormDataEntryValue]>;
60
- /**
61
- * An alias for FormDataLike#entries()
62
- */
63
- [Symbol.iterator](): IterableIterator<[string, FormDataEntryValue]>;
64
- readonly [Symbol.toStringTag]?: string;
65
- }
66
- export {};
67
- //# sourceMappingURL=form-data-like.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"form-data-like.d.ts","sourceRoot":"","sources":["../../src/http_clients/form-data-like.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,UAAU,QAAQ;IACd;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;OAEG;IACH,MAAM,IAAI,cAAc,CAAC,UAAU,CAAC,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IACjE,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC;CAC1C;AAED;;GAEG;AACH,KAAK,kBAAkB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC5C;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB;;;;;;;;;;OAUG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9D;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAC3C;;;OAGG;IACH,OAAO,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC1D;;OAEG;IACH,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACpE,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC;CAC1C"}
@@ -1,5 +0,0 @@
1
- /**
2
- * This is copied from https://github.com/octet-stream/form-data-encoder
3
- */
4
- export {};
5
- //# sourceMappingURL=form-data-like.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"form-data-like.js","sourceRoot":"","sources":["../../src/http_clients/form-data-like.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,15 +0,0 @@
1
- import type { BaseHttpClient, HttpRequest, HttpResponse, RedirectHandler, ResponseTypes, StreamingHttpResponse } from './base-http-client.js';
2
- /**
3
- * A HTTP client implementation based on the `got-scraping` library.
4
- */
5
- export declare class GotScrapingHttpClient implements BaseHttpClient {
6
- /**
7
- * @inheritDoc
8
- */
9
- sendRequest<TResponseType extends keyof ResponseTypes>(request: HttpRequest<TResponseType>): Promise<HttpResponse<TResponseType>>;
10
- /**
11
- * @inheritDoc
12
- */
13
- stream(request: HttpRequest, handleRedirect?: RedirectHandler): Promise<StreamingHttpResponse>;
14
- }
15
- //# sourceMappingURL=got-scraping-http-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"got-scraping-http-client.d.ts","sourceRoot":"","sources":["../../src/http_clients/got-scraping-http-client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,cAAc,EACd,WAAW,EACX,YAAY,EACZ,eAAe,EACf,aAAa,EACb,qBAAqB,EACxB,MAAM,uBAAuB,CAAC;AAE/B;;GAEG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IACxD;;OAEG;IACG,WAAW,CAAC,aAAa,SAAS,MAAM,aAAa,EACvD,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,GACpC,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAgBvC;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,cAAc,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAmDvG"}
@@ -1,69 +0,0 @@
1
- import { gotScraping } from 'got-scraping';
2
- /**
3
- * A HTTP client implementation based on the `got-scraping` library.
4
- */
5
- export class GotScrapingHttpClient {
6
- /**
7
- * @inheritDoc
8
- */
9
- async sendRequest(request) {
10
- const gotResult = await gotScraping({
11
- ...request,
12
- retry: {
13
- limit: 0,
14
- ...request.retry,
15
- },
16
- });
17
- return {
18
- ...gotResult,
19
- body: gotResult.body,
20
- request: { url: request.url, ...gotResult.request },
21
- };
22
- }
23
- /**
24
- * @inheritDoc
25
- */
26
- async stream(request, handleRedirect) {
27
- // eslint-disable-next-line no-async-promise-executor
28
- return new Promise(async (resolve, reject) => {
29
- const stream = gotScraping({ ...request, isStream: true });
30
- stream.on('redirect', (updatedOptions, redirectResponse) => {
31
- handleRedirect?.(redirectResponse, updatedOptions);
32
- });
33
- // We need to end the stream for DELETE requests, otherwise it will hang.
34
- if (request.method && ['DELETE', 'delete'].includes(request.method)) {
35
- stream.end();
36
- }
37
- stream.on('error', reject);
38
- stream.on('response', (response) => {
39
- const result = {
40
- stream,
41
- request,
42
- redirectUrls: response.redirectUrls,
43
- url: response.url,
44
- ip: response.ip,
45
- statusCode: response.statusCode,
46
- headers: response.headers,
47
- trailers: response.trailers,
48
- complete: response.complete,
49
- get downloadProgress() {
50
- return stream.downloadProgress;
51
- },
52
- get uploadProgress() {
53
- return stream.uploadProgress;
54
- },
55
- };
56
- Object.assign(result, response); // TODO BC - remove in 4.0
57
- resolve(result);
58
- stream.on('end', () => {
59
- result.complete = response.complete;
60
- result.trailers ??= {};
61
- Object.assign(result.trailers, response.trailers);
62
- result.rawTrailers ??= []; // TODO BC - remove in 4.0
63
- Object.assign(result.rawTrailers, response.rawTrailers);
64
- });
65
- });
66
- });
67
- }
68
- }
69
- //# sourceMappingURL=got-scraping-http-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"got-scraping-http-client.js","sourceRoot":"","sources":["../../src/http_clients/got-scraping-http-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAW3C;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAC9B;;OAEG;IACH,KAAK,CAAC,WAAW,CACb,OAAmC;QAEnC,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC;YAChC,GAAG,OAAO;YACV,KAAK,EAAE;gBACH,KAAK,EAAE,CAAC;gBACR,GAAI,OAAO,CAAC,KAA6C;aAC5D;SACJ,CAAC,CAAC;QAEH,OAAO;YACH,GAAG,SAAS;YACZ,IAAI,EAAE,SAAS,CAAC,IAAoC;YACpD,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE;SACtD,CAAC;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,OAAoB,EAAE,cAAgC;QAC/D,qDAAqD;QACrD,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAE3D,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,cAAuB,EAAE,gBAA+B,EAAE,EAAE;gBAC/E,cAAc,EAAE,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;YAEH,yEAAyE;YACzE,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClE,MAAM,CAAC,GAAG,EAAE,CAAC;YACjB,CAAC;YAED,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAE3B,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAuB,EAAE,EAAE;gBAC9C,MAAM,MAAM,GAA0B;oBAClC,MAAM;oBACN,OAAO;oBACP,YAAY,EAAE,QAAQ,CAAC,YAAY;oBACnC,GAAG,EAAE,QAAQ,CAAC,GAAG;oBACjB,EAAE,EAAE,QAAQ,CAAC,EAAE;oBACf,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;oBACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,IAAI,gBAAgB;wBAChB,OAAO,MAAM,CAAC,gBAAgB,CAAC;oBACnC,CAAC;oBACD,IAAI,cAAc;wBACd,OAAO,MAAM,CAAC,cAAc,CAAC;oBACjC,CAAC;iBACJ,CAAC;gBAEF,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,0BAA0B;gBAE3D,OAAO,CAAC,MAAM,CAAC,CAAC;gBAEhB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;oBAClB,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;oBAEpC,MAAM,CAAC,QAAQ,KAAK,EAAE,CAAC;oBACvB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAEjD,MAAc,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC,0BAA0B;oBAC9D,MAAM,CAAC,MAAM,CAAE,MAAc,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACrE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -1,3 +0,0 @@
1
- export * from './base-http-client.js';
2
- export * from './got-scraping-http-client.js';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/http_clients/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from './base-http-client.js';
2
- export * from './got-scraping-http-client.js';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/http_clients/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC"}
@@ -1,3 +0,0 @@
1
- /** @internal */
2
- export declare const EVENT_SESSION_RETIRED = "sessionRetired";
3
- //# sourceMappingURL=events.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/session_pool/events.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,eAAO,MAAM,qBAAqB,mBAAmB,CAAC"}
@@ -1,3 +0,0 @@
1
- /** @internal */
2
- export const EVENT_SESSION_RETIRED = 'sessionRetired';
3
- //# sourceMappingURL=events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/session_pool/events.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,MAAM,CAAC,MAAM,qBAAqB,GAAG,gBAAgB,CAAC"}
@@ -1,58 +0,0 @@
1
- import type { StorageClient } from '@crawlee/types';
2
- import { Configuration } from '../configuration.js';
3
- import type { ProxyConfiguration } from '../proxy_configuration.js';
4
- import type { Constructor } from '../typedefs.js';
5
- export interface IStorage {
6
- id: string;
7
- name?: string;
8
- }
9
- /**
10
- * StorageManager takes care of opening remote or local storages.
11
- * @ignore
12
- */
13
- export declare class StorageManager<T extends IStorage = IStorage> {
14
- private readonly config;
15
- private readonly name;
16
- private readonly StorageConstructor;
17
- private readonly cache;
18
- private readonly storageOpenQueue;
19
- constructor(StorageConstructor: Constructor<T>, config?: Configuration);
20
- static openStorage<T extends IStorage>(storageClass: Constructor<T>, idOrName?: string, client?: StorageClient, config?: Configuration): Promise<T>;
21
- static getManager<T extends IStorage>(storageClass: Constructor<T>, config?: Configuration): StorageManager<T>;
22
- /** @internal */
23
- static clearCache(config?: Configuration): void;
24
- openStorage(idOrName?: string | null, client?: StorageClient): Promise<T>;
25
- closeStorage(storage: {
26
- id: string;
27
- name?: string;
28
- }): void;
29
- /**
30
- * Helper function that first requests storage by ID and if storage doesn't exist then gets it by name.
31
- */
32
- // @ts-ignore optional peer dependency or compatibility with es2022
33
- protected _getOrCreateStorage(storageIdOrName: string, storageConstructorName: string, apiClient: StorageClient): Promise<import("@crawlee/types").DatasetCollectionData>;
34
- protected _getStorageClientFactories(client: StorageClient, storageConstructorName: string): {
35
- // @ts-ignore optional peer dependency or compatibility with es2022
36
- createStorageClient: ((id: string) => import("@crawlee/types").DatasetClient) | ((id: string) => import("@crawlee/types").KeyValueStoreClient) | ((id: string, options?: import("@crawlee/types").RequestQueueOptions) => import("@crawlee/types").RequestQueueClient);
37
- // @ts-ignore optional peer dependency or compatibility with es2022
38
- createStorageCollectionClient: (() => import("@crawlee/types").DatasetCollectionClient) | (() => import("@crawlee/types").KeyValueStoreCollectionClient) | (() => import("@crawlee/types").RequestQueueCollectionClient);
39
- };
40
- protected _addStorageToCache(storage: T): void;
41
- }
42
- export interface StorageManagerOptions {
43
- /**
44
- * SDK configuration instance, defaults to the static register.
45
- */
46
- config?: Configuration;
47
- /**
48
- * Optional storage client that should be used to open storages.
49
- */
50
- storageClient?: StorageClient;
51
- /**
52
- * Used to pass the proxy configuration for the `requestsFromUrl` objects.
53
- * Takes advantage of the internal address rotation and authentication process.
54
- * If undefined, the `requestsFromUrl` requests will be made without proxy.
55
- */
56
- proxyConfiguration?: ProxyConfiguration;
57
- }
58
- //# sourceMappingURL=storage_manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage_manager.d.ts","sourceRoot":"","sources":["../../src/storages/storage_manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGhE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAQlD,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IAQjD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAP3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA+C;IACpE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoC;IACvE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;gBAGjD,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAC,EACjB,MAAM,gBAAkC;WAMhD,WAAW,CAAC,CAAC,SAAS,QAAQ,EACvC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,EAC5B,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,aAAa,EACtB,MAAM,gBAAkC,GACzC,OAAO,CAAC,CAAC,CAAC;IAIb,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,QAAQ,EAChC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,EAC5B,MAAM,gBAAkC,GACzC,cAAc,CAAC,CAAC,CAAC;IASpB,gBAAgB;IAChB,MAAM,CAAC,UAAU,CAAC,MAAM,gBAAkC,GAAG,IAAI;IAW3D,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IA6B/E,YAAY,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAU1D;;OAEG;cACa,mBAAmB,CAC/B,eAAe,EAAE,MAAM,EACvB,sBAAsB,EAAE,MAAM,EAC9B,SAAS,EAAE,aAAa;IAe5B,SAAS,CAAC,0BAA0B,CAAC,MAAM,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM;;;;IAY1F,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI;CASjD;AAKD,MAAM,WAAW,qBAAqB;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IAEvB;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CAC3C"}
@@ -1,105 +0,0 @@
1
- import { AsyncQueue } from '@sapphire/async-queue';
2
- import { Configuration } from '../configuration.js';
3
- const DEFAULT_ID_CONFIG_KEYS = {
4
- Dataset: 'defaultDatasetId',
5
- KeyValueStore: 'defaultKeyValueStoreId',
6
- RequestQueue: 'defaultRequestQueueId',
7
- };
8
- /**
9
- * StorageManager takes care of opening remote or local storages.
10
- * @ignore
11
- */
12
- export class StorageManager {
13
- config;
14
- name;
15
- StorageConstructor;
16
- cache = new Map();
17
- storageOpenQueue = new AsyncQueue();
18
- constructor(StorageConstructor, config = Configuration.getGlobalConfig()) {
19
- this.config = config;
20
- this.StorageConstructor = StorageConstructor;
21
- this.name = this.StorageConstructor.name;
22
- }
23
- static async openStorage(storageClass, idOrName, client, config = Configuration.getGlobalConfig()) {
24
- return this.getManager(storageClass, config).openStorage(idOrName, client);
25
- }
26
- static getManager(storageClass, config = Configuration.getGlobalConfig()) {
27
- if (!config.storageManagers.has(storageClass)) {
28
- const manager = new StorageManager(storageClass, config);
29
- config.storageManagers.set(storageClass, manager);
30
- }
31
- return config.storageManagers.get(storageClass);
32
- }
33
- /** @internal */
34
- static clearCache(config = Configuration.getGlobalConfig()) {
35
- config.storageManagers.forEach((manager) => {
36
- if (manager.name === 'KeyValueStore') {
37
- manager.cache.forEach((item) => {
38
- item.clearCache?.();
39
- });
40
- }
41
- });
42
- config.storageManagers.clear();
43
- }
44
- async openStorage(idOrName, client) {
45
- await this.storageOpenQueue.wait();
46
- if (!idOrName) {
47
- const defaultIdConfigKey = DEFAULT_ID_CONFIG_KEYS[this.name];
48
- idOrName = this.config.get(defaultIdConfigKey);
49
- }
50
- const cacheKey = idOrName;
51
- let storage = this.cache.get(cacheKey);
52
- if (!storage) {
53
- client ??= this.config.getStorageClient();
54
- const storageObject = await this._getOrCreateStorage(idOrName, this.name, client);
55
- storage = new this.StorageConstructor({
56
- id: storageObject.id,
57
- name: storageObject.name,
58
- storageObject,
59
- client,
60
- });
61
- this._addStorageToCache(storage);
62
- }
63
- this.storageOpenQueue.shift();
64
- return storage;
65
- }
66
- closeStorage(storage) {
67
- const idKey = storage.id;
68
- this.cache.delete(idKey);
69
- if (storage.name) {
70
- const nameKey = storage.name;
71
- this.cache.delete(nameKey);
72
- }
73
- }
74
- /**
75
- * Helper function that first requests storage by ID and if storage doesn't exist then gets it by name.
76
- */
77
- async _getOrCreateStorage(storageIdOrName, storageConstructorName, apiClient) {
78
- const { createStorageClient, createStorageCollectionClient } = this._getStorageClientFactories(apiClient, storageConstructorName);
79
- const storageClient = createStorageClient(storageIdOrName);
80
- const existingStorage = await storageClient.get();
81
- if (existingStorage)
82
- return existingStorage;
83
- const storageCollectionClient = createStorageCollectionClient();
84
- return storageCollectionClient.getOrCreate(storageIdOrName);
85
- }
86
- _getStorageClientFactories(client, storageConstructorName) {
87
- // Dataset => dataset
88
- const clientName = (storageConstructorName[0].toLowerCase() + storageConstructorName.slice(1));
89
- // dataset => datasets
90
- const collectionClientName = `${clientName}s`;
91
- return {
92
- createStorageClient: client[clientName].bind(client),
93
- createStorageCollectionClient: client[collectionClientName].bind(client),
94
- };
95
- }
96
- _addStorageToCache(storage) {
97
- const idKey = storage.id;
98
- this.cache.set(idKey, storage);
99
- if (storage.name) {
100
- const nameKey = storage.name;
101
- this.cache.set(nameKey, storage);
102
- }
103
- }
104
- }
105
- //# sourceMappingURL=storage_manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage_manager.js","sourceRoot":"","sources":["../../src/storages/storage_manager.ts"],"names":[],"mappings":"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"}