@crawlee/core 4.0.0-beta.2 → 4.0.0-beta.20

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 (129) hide show
  1. package/README.md +5 -1
  2. package/autoscaling/snapshotter.d.ts.map +1 -1
  3. package/autoscaling/snapshotter.js +4 -11
  4. package/autoscaling/snapshotter.js.map +1 -1
  5. package/configuration.d.ts +0 -7
  6. package/configuration.d.ts.map +1 -1
  7. package/configuration.js +0 -4
  8. package/configuration.js.map +1 -1
  9. package/cookie_utils.d.ts +1 -1
  10. package/cookie_utils.d.ts.map +1 -1
  11. package/cookie_utils.js +4 -6
  12. package/cookie_utils.js.map +1 -1
  13. package/crawlers/context_pipeline.d.ts +61 -0
  14. package/crawlers/context_pipeline.d.ts.map +1 -0
  15. package/crawlers/context_pipeline.js +99 -0
  16. package/crawlers/context_pipeline.js.map +1 -0
  17. package/crawlers/crawler_commons.d.ts +12 -16
  18. package/crawlers/crawler_commons.d.ts.map +1 -1
  19. package/crawlers/crawler_commons.js +0 -8
  20. package/crawlers/crawler_commons.js.map +1 -1
  21. package/crawlers/error_snapshotter.d.ts +3 -2
  22. package/crawlers/error_snapshotter.d.ts.map +1 -1
  23. package/crawlers/error_snapshotter.js +2 -2
  24. package/crawlers/error_snapshotter.js.map +1 -1
  25. package/crawlers/error_tracker.d.ts +2 -1
  26. package/crawlers/error_tracker.d.ts.map +1 -1
  27. package/crawlers/error_tracker.js.map +1 -1
  28. package/crawlers/index.d.ts +1 -1
  29. package/crawlers/index.d.ts.map +1 -1
  30. package/crawlers/index.js +1 -1
  31. package/crawlers/index.js.map +1 -1
  32. package/crawlers/internals/types.d.ts +8 -0
  33. package/crawlers/internals/types.d.ts.map +1 -0
  34. package/crawlers/internals/types.js +2 -0
  35. package/crawlers/internals/types.js.map +1 -0
  36. package/enqueue_links/enqueue_links.d.ts +22 -15
  37. package/enqueue_links/enqueue_links.d.ts.map +1 -1
  38. package/enqueue_links/enqueue_links.js +33 -14
  39. package/enqueue_links/enqueue_links.js.map +1 -1
  40. package/enqueue_links/shared.d.ts +8 -2
  41. package/enqueue_links/shared.d.ts.map +1 -1
  42. package/enqueue_links/shared.js +40 -18
  43. package/enqueue_links/shared.js.map +1 -1
  44. package/errors.d.ts +12 -0
  45. package/errors.d.ts.map +1 -1
  46. package/errors.js +20 -0
  47. package/errors.js.map +1 -1
  48. package/events/local_event_manager.d.ts +0 -2
  49. package/events/local_event_manager.d.ts.map +1 -1
  50. package/events/local_event_manager.js +3 -32
  51. package/events/local_event_manager.js.map +1 -1
  52. package/http_clients/base-http-client.d.ts +26 -69
  53. package/http_clients/base-http-client.d.ts.map +1 -1
  54. package/http_clients/base-http-client.js +20 -9
  55. package/http_clients/base-http-client.js.map +1 -1
  56. package/http_clients/got-scraping-http-client.d.ts +10 -3
  57. package/http_clients/got-scraping-http-client.d.ts.map +1 -1
  58. package/http_clients/got-scraping-http-client.js +86 -39
  59. package/http_clients/got-scraping-http-client.js.map +1 -1
  60. package/index.d.ts +1 -0
  61. package/index.d.ts.map +1 -1
  62. package/index.js +1 -0
  63. package/index.js.map +1 -1
  64. package/log.d.ts +4 -2
  65. package/log.d.ts.map +1 -1
  66. package/log.js.map +1 -1
  67. package/package.json +6 -6
  68. package/proxy_configuration.d.ts +21 -40
  69. package/proxy_configuration.d.ts.map +1 -1
  70. package/proxy_configuration.js +15 -51
  71. package/proxy_configuration.js.map +1 -1
  72. package/recoverable_state.d.ts +123 -0
  73. package/recoverable_state.d.ts.map +1 -0
  74. package/recoverable_state.js +140 -0
  75. package/recoverable_state.js.map +1 -0
  76. package/request.d.ts +31 -5
  77. package/request.d.ts.map +1 -1
  78. package/request.js +35 -12
  79. package/request.js.map +1 -1
  80. package/session_pool/session.d.ts +6 -2
  81. package/session_pool/session.d.ts.map +1 -1
  82. package/session_pool/session.js +9 -2
  83. package/session_pool/session.js.map +1 -1
  84. package/session_pool/session_pool.d.ts +9 -2
  85. package/session_pool/session_pool.d.ts.map +1 -1
  86. package/session_pool/session_pool.js +13 -1
  87. package/session_pool/session_pool.js.map +1 -1
  88. package/storages/dataset.d.ts +7 -0
  89. package/storages/dataset.d.ts.map +1 -1
  90. package/storages/dataset.js +10 -1
  91. package/storages/dataset.js.map +1 -1
  92. package/storages/index.d.ts +2 -0
  93. package/storages/index.d.ts.map +1 -1
  94. package/storages/index.js +2 -0
  95. package/storages/index.js.map +1 -1
  96. package/storages/key_value_store.d.ts +13 -1
  97. package/storages/key_value_store.d.ts.map +1 -1
  98. package/storages/key_value_store.js +11 -6
  99. package/storages/key_value_store.js.map +1 -1
  100. package/storages/request_list.d.ts +0 -6
  101. package/storages/request_list.d.ts.map +1 -1
  102. package/storages/request_list.js.map +1 -1
  103. package/storages/request_list_adapter.d.ts +58 -0
  104. package/storages/request_list_adapter.d.ts.map +1 -0
  105. package/storages/request_list_adapter.js +81 -0
  106. package/storages/request_list_adapter.js.map +1 -0
  107. package/storages/request_manager_tandem.d.ts +68 -0
  108. package/storages/request_manager_tandem.d.ts.map +1 -0
  109. package/storages/request_manager_tandem.js +124 -0
  110. package/storages/request_manager_tandem.js.map +1 -0
  111. package/storages/request_provider.d.ts +68 -4
  112. package/storages/request_provider.d.ts.map +1 -1
  113. package/storages/request_provider.js +74 -44
  114. package/storages/request_provider.js.map +1 -1
  115. package/storages/request_queue_v2.d.ts +2 -2
  116. package/storages/request_queue_v2.d.ts.map +1 -1
  117. package/storages/request_queue_v2.js.map +1 -1
  118. package/storages/sitemap_request_list.d.ts.map +1 -1
  119. package/storages/sitemap_request_list.js.map +1 -1
  120. package/storages/storage_manager.d.ts.map +1 -1
  121. package/storages/storage_manager.js +1 -1
  122. package/storages/storage_manager.js.map +1 -1
  123. package/typedefs.d.ts +1 -1
  124. package/typedefs.d.ts.map +1 -1
  125. package/crawlers/crawler_extension.d.ts +0 -12
  126. package/crawlers/crawler_extension.d.ts.map +0 -1
  127. package/crawlers/crawler_extension.js +0 -14
  128. package/crawlers/crawler_extension.js.map +0 -1
  129. package/tsconfig.build.tsbuildinfo +0 -1
package/errors.js CHANGED
@@ -34,4 +34,24 @@ export class SessionError extends RetryRequestError {
34
34
  super(`Detected a session error, rotating session... ${message ? `\n${message}` : ''}`);
35
35
  }
36
36
  }
37
+ export class ContextPipelineInterruptedError extends Error {
38
+ constructor(message) {
39
+ super(`Request handling was interrupted during context initialization ${message ? ` - ${message}` : ''}`);
40
+ }
41
+ }
42
+ export class ContextPipelineInitializationError extends Error {
43
+ constructor(error, options) {
44
+ super(undefined, { cause: error, ...options });
45
+ }
46
+ }
47
+ export class ContextPipelineCleanupError extends CriticalError {
48
+ constructor(error, options) {
49
+ super(undefined, { cause: error, ...options });
50
+ }
51
+ }
52
+ export class RequestHandlerError extends Error {
53
+ constructor(error, options) {
54
+ super(undefined, { cause: error, ...options });
55
+ }
56
+ }
37
57
  //# sourceMappingURL=errors.js.map
package/errors.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;CAAG;AAE/C;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,iBAAiB;CAAG;AAEvD;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,aAAa;CAAG;AAEvD;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACxC,YAAY,OAAgB;QACxB,KAAK,CAAC,OAAO,IAAI,gDAAgD,CAAC,CAAC;IACvE,CAAC;CACJ;AAED;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,iBAAiB;IAC/C,YAAY,OAAgB;QACxB,KAAK,CAAC,iDAAiD,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5F,CAAC;CACJ"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;CAAG;AAE/C;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,iBAAiB;CAAG;AAEvD;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,aAAa;CAAG;AAEvD;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACxC,YAAY,OAAgB;QACxB,KAAK,CAAC,OAAO,IAAI,gDAAgD,CAAC,CAAC;IACvE,CAAC;CACJ;AAED;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,iBAAiB;IAC/C,YAAY,OAAgB;QACxB,KAAK,CAAC,iDAAiD,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5F,CAAC;CACJ;AAED,MAAM,OAAO,+BAAgC,SAAQ,KAAK;IACtD,YAAY,OAAgB;QACxB,KAAK,CAAC,kEAAkE,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9G,CAAC;CACJ;AAED,MAAM,OAAO,kCAAmC,SAAQ,KAAK;IACzD,YAAY,KAAc,EAAE,OAAsB;QAC9C,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;CACJ;AAED,MAAM,OAAO,2BAA4B,SAAQ,aAAa;IAC1D,YAAY,KAAc,EAAE,OAAsB;QAC9C,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;CACJ;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC1C,YAAY,KAAc,EAAE,OAAsB;QAC9C,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;CACJ"}
@@ -1,6 +1,5 @@
1
1
  import { EventManager } from './event_manager.js';
2
2
  export declare class LocalEventManager extends EventManager {
3
- private previousTicks;
4
3
  /**
5
4
  * Initializes the EventManager and sets up periodic `systemInfo` and `persistState` events.
6
5
  * This is automatically called at the beginning of `crawler.run()`.
@@ -18,7 +17,6 @@ export declare class LocalEventManager extends EventManager {
18
17
  * @internal
19
18
  */
20
19
  isContainerizedWrapper(): Promise<boolean>;
21
- private getCurrentCpuTicks;
22
20
  /**
23
21
  * Creates a SystemInfo object based on local metrics.
24
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"local_event_manager.d.ts","sourceRoot":"","sources":["../../src/events/local_event_manager.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAa,MAAM,oBAAoB,CAAC;AAE7D,qBAAa,iBAAkB,SAAQ,YAAY;IAC/C,OAAO,CAAC,aAAa,CAAyB;IAE9C;;;OAGG;IACY,IAAI;IAYnB;;OAEG;IACY,KAAK;IASpB;;OAEG;IACG,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,OAAO;IAQzD;;OAEG;IACG,sBAAsB;IAI5B,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;YACW,gBAAgB;YAQhB,aAAa;YAoBb,gBAAgB;CAiBjC"}
1
+ {"version":3,"file":"local_event_manager.d.ts","sourceRoot":"","sources":["../../src/events/local_event_manager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAa,MAAM,oBAAoB,CAAC;AAE7D,qBAAa,iBAAkB,SAAQ,YAAY;IAC/C;;;OAGG;IACY,IAAI;IAYnB;;OAEG;IACY,KAAK;IASpB;;OAEG;IACG,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,OAAO;IAQzD;;OAEG;IACG,sBAAsB;IAI5B;;OAEG;YACW,gBAAgB;YAQhB,aAAa;YAQb,gBAAgB;CAWjC"}
@@ -1,10 +1,8 @@
1
- import os from 'node:os';
2
- import { getCurrentCpuTicksV2, getMemoryInfo, getMemoryInfoV2, isContainerized } from '@crawlee/utils';
1
+ import { getCurrentCpuTicksV2, getMemoryInfo, isContainerized } from '@crawlee/utils';
3
2
  import log from '@apify/log';
4
3
  import { betterClearInterval, betterSetInterval } from '@apify/utilities';
5
4
  import { EventManager } from './event_manager.js';
6
5
  export class LocalEventManager extends EventManager {
7
- previousTicks = { idle: 0, total: 0 };
8
6
  /**
9
7
  * Initializes the EventManager and sets up periodic `systemInfo` and `persistState` events.
10
8
  * This is automatically called at the beginning of `crawler.run()`.
@@ -44,16 +42,6 @@ export class LocalEventManager extends EventManager {
44
42
  async isContainerizedWrapper() {
45
43
  return this.config.get('containerized', await isContainerized());
46
44
  }
47
- getCurrentCpuTicks() {
48
- const cpus = os.cpus();
49
- return cpus.reduce((acc, cpu) => {
50
- const cpuTimes = Object.values(cpu.times);
51
- return {
52
- idle: acc.idle + cpu.times.idle,
53
- total: acc.total + cpuTimes.reduce((sum, num) => sum + num),
54
- };
55
- }, { idle: 0, total: 0 });
56
- }
57
45
  /**
58
46
  * Creates a SystemInfo object based on local metrics.
59
47
  */
@@ -65,18 +53,7 @@ export class LocalEventManager extends EventManager {
65
53
  };
66
54
  }
67
55
  async createCpuInfo(options) {
68
- if (this.config.get('systemInfoV2')) {
69
- const usedCpuRatio = await getCurrentCpuTicksV2(await this.isContainerizedWrapper());
70
- return {
71
- cpuCurrentUsage: usedCpuRatio * 100,
72
- isCpuOverloaded: usedCpuRatio > options.maxUsedCpuRatio,
73
- };
74
- }
75
- const ticks = this.getCurrentCpuTicks();
76
- const idleTicksDelta = ticks.idle - this.previousTicks.idle;
77
- const totalTicksDelta = ticks.total - this.previousTicks.total;
78
- const usedCpuRatio = totalTicksDelta ? 1 - idleTicksDelta / totalTicksDelta : 0;
79
- Object.assign(this.previousTicks, ticks);
56
+ const usedCpuRatio = await getCurrentCpuTicksV2(await this.isContainerizedWrapper());
80
57
  return {
81
58
  cpuCurrentUsage: usedCpuRatio * 100,
82
59
  isCpuOverloaded: usedCpuRatio > options.maxUsedCpuRatio,
@@ -84,13 +61,7 @@ export class LocalEventManager extends EventManager {
84
61
  }
85
62
  async createMemoryInfo() {
86
63
  try {
87
- if (this.config.get('systemInfoV2')) {
88
- const memInfo = await getMemoryInfoV2(await this.isContainerizedWrapper());
89
- return {
90
- memCurrentBytes: memInfo.mainProcessBytes + memInfo.childProcessesBytes,
91
- };
92
- }
93
- const memInfo = await getMemoryInfo();
64
+ const memInfo = await getMemoryInfo(await this.isContainerizedWrapper());
94
65
  return {
95
66
  memCurrentBytes: memInfo.mainProcessBytes + memInfo.childProcessesBytes,
96
67
  };
@@ -1 +1 @@
1
- {"version":3,"file":"local_event_manager.js","sourceRoot":"","sources":["../../src/events/local_event_manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local_event_manager.js","sourceRoot":"","sources":["../../src/events/local_event_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtF,OAAO,GAAG,MAAM,YAAY,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1E,OAAO,EAAE,YAAY,EAAa,MAAM,oBAAoB,CAAC;AAE7D,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IAC/C;;;OAGG;IACM,KAAK,CAAC,IAAI;QACf,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QAED,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QAEnB,MAAM,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAE,CAAC;QAC9E,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,wBAAwB,CAAC,CAAC;IACjH,CAAC;IAED;;OAEG;IACM,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,OAAO;QACX,CAAC;QAED,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,UAAW,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,gBAA+B;QACrD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC;YACrC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;SACtD,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,2CAAwB,IAAI,CAAC,CAAC;QAC9C,gBAAgB,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,eAAe,EAAE,CAAC,CAAC;IACrE,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,OAAoC;QAC/D,OAAO;YACH,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACtC,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACvB,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAAoC;QAC5D,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACrF,OAAO;YACH,eAAe,EAAE,YAAY,GAAG,GAAG;YACnC,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe;SAC1D,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC1B,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;YACzE,OAAO;gBACH,eAAe,EAAE,OAAO,CAAC,gBAAgB,GAAG,OAAO,CAAC,mBAAmB;aAC1E,CAAC;QACN,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,GAAG,CAAC,SAAS,CAAC,GAAY,EAAE,yBAAyB,CAAC,CAAC;YACvD,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;CACJ"}
@@ -1,30 +1,7 @@
1
- import type { Readable } from 'node:stream';
1
+ import { Readable } from 'node:stream';
2
+ import type { AllowedHttpMethods } from '@crawlee/types';
2
3
  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
- }
4
+ import type { Session } from '../session_pool/session.js';
28
5
  interface ToughCookieJar {
29
6
  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
7
  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);
@@ -33,23 +10,20 @@ interface PromiseCookieJar {
33
10
  getCookieString: (url: string) => Promise<string>;
34
11
  setCookie: (rawCookie: string, url: string) => Promise<unknown>;
35
12
  }
36
- type SimpleHeaders = Record<string, string | string[] | undefined>;
37
13
  /**
38
14
  * HTTP Request as accepted by {@link BaseHttpClient} methods.
39
15
  */
40
- export interface HttpRequest<TResponseType extends keyof ResponseTypes = 'text'> {
41
- [k: string]: unknown;
16
+ export interface HttpRequest {
42
17
  url: string | URL;
43
- method?: Method;
44
- headers?: SimpleHeaders;
45
- body?: string | Buffer | Readable | Generator | AsyncGenerator | FormDataLike;
18
+ method?: AllowedHttpMethods;
19
+ headers?: Headers;
20
+ body?: Readable;
46
21
  signal?: AbortSignal;
47
- timeout?: Partial<Timeout>;
22
+ timeout?: number;
48
23
  cookieJar?: ToughCookieJar | PromiseCookieJar;
49
24
  followRedirect?: boolean | ((response: any) => boolean);
50
25
  maxRedirects?: number;
51
26
  encoding?: BufferEncoding;
52
- responseType?: TResponseType;
53
27
  throwHttpErrors?: boolean;
54
28
  proxyUrl?: string;
55
29
  headerGeneratorOptions?: Record<string, unknown>;
@@ -63,7 +37,7 @@ export interface HttpRequest<TResponseType extends keyof ResponseTypes = 'text'>
63
37
  /**
64
38
  * Additional options for HTTP requests that need to be handled separately before passing to {@link BaseHttpClient}.
65
39
  */
66
- export interface HttpRequestOptions<TResponseType extends keyof ResponseTypes = 'text'> extends HttpRequest<TResponseType> {
40
+ export interface HttpRequestOptions extends HttpRequest {
67
41
  /** Search (query string) parameters to be appended to the request URL */
68
42
  searchParams?: SearchParams;
69
43
  /** A form to be sent in the HTTP request body (URL encoding will be used) */
@@ -75,44 +49,27 @@ export interface HttpRequestOptions<TResponseType extends keyof ResponseTypes =
75
49
  /** Basic HTTP Auth password */
76
50
  password?: string;
77
51
  }
78
- /**
79
- * HTTP response data, without a body, as returned by {@link BaseHttpClient} methods.
80
- */
81
- export interface BaseHttpResponseData {
82
- redirectUrls: URL[];
52
+ export declare class ResponseWithUrl extends Response {
83
53
  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;
54
+ constructor(body: BodyInit | null, init: ResponseInit & {
55
+ url?: string;
56
+ });
108
57
  }
109
58
  /**
110
59
  * Type of a function called when an HTTP redirect takes place. It is allowed to mutate the `updatedRequest` argument.
111
60
  */
112
- export type RedirectHandler = (redirectResponse: BaseHttpResponseData, updatedRequest: {
61
+ export type RedirectHandler = (redirectResponse: Response, updatedRequest: {
113
62
  url?: string | URL;
114
- headers: SimpleHeaders;
63
+ headers: Headers;
115
64
  }) => void;
65
+ export interface SendRequestOptions {
66
+ session?: Session;
67
+ cookieJar?: ToughCookieJar;
68
+ timeout?: number;
69
+ }
70
+ export interface StreamOptions extends SendRequestOptions {
71
+ onRedirect?: RedirectHandler;
72
+ }
116
73
  /**
117
74
  * Interface for user-defined HTTP clients to be used for plain HTTP crawling and for sending additional requests during a crawl.
118
75
  */
@@ -120,15 +77,15 @@ export interface BaseHttpClient {
120
77
  /**
121
78
  * Perform an HTTP Request and return the complete response.
122
79
  */
123
- sendRequest<TResponseType extends keyof ResponseTypes = 'text'>(request: HttpRequest<TResponseType>): Promise<HttpResponse<TResponseType>>;
80
+ sendRequest(request: Request, options?: SendRequestOptions): Promise<Response>;
124
81
  /**
125
82
  * 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
83
  */
127
- stream(request: HttpRequest, onRedirect?: RedirectHandler): Promise<StreamingHttpResponse>;
84
+ stream(request: Request, options?: StreamOptions): Promise<Response>;
128
85
  }
129
86
  /**
130
87
  * Converts {@link HttpRequestOptions} to a {@link HttpRequest}.
131
88
  */
132
- export declare function processHttpRequestOptions<TResponseType extends keyof ResponseTypes = 'text'>({ searchParams, form, json, username, password, ...request }: HttpRequestOptions<TResponseType>): HttpRequest<TResponseType>;
89
+ export declare function processHttpRequestOptions({ searchParams, form, json, username, password, ...request }: HttpRequestOptions): HttpRequest;
133
90
  export {};
134
91
  //# sourceMappingURL=base-http-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-http-client.d.ts","sourceRoot":"","sources":["../../src/http_clients/base-http-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,KAAK,OAAO,GACN;IACI,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CACpB,GACD;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1B,KAAK,MAAM,GACL,KAAK,GACL,MAAM,GACN,KAAK,GACL,OAAO,GACP,MAAM,GACN,QAAQ,GACR,SAAS,GACT,OAAO,GACP,KAAK,GACL,MAAM,GACN,KAAK,GACL,OAAO,GACP,MAAM,GACN,QAAQ,GACR,SAAS,GACT,OAAO,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,QAAQ;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD,UAAU,cAAc;IACpB,eAAe,EAAE,CAAC,CACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,KACvD,MAAM,CAAC,GACR,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,KAAK,MAAM,CAAC,CAAC;IAC7F,SAAS,EAAE,CAAC,CACR,cAAc,EAAE,OAAO,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,KACvD,IAAI,CAAC,GACN,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC;CAC5G;AAED,UAAU,gBAAgB;IACtB,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACnE;AAED,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,aAAa,SAAS,MAAM,aAAa,GAAG,MAAM;IAC3E,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAErB,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,cAAc,GAAG,YAAY,CAAC;IAE9E,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3B,SAAS,CAAC,EAAE,cAAc,GAAG,gBAAgB,CAAC;IAC9C,cAAc,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAG1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE;QACd,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC5E,CAAC;IACF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,aAAa,SAAS,MAAM,aAAa,GAAG,MAAM,CAClF,SAAQ,WAAW,CAAC,aAAa,CAAC;IAClC,yEAAyE;IACzE,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,gFAAgF;IAChF,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IAEZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,aAAa,CAAC;IAExB,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,uBAAuB,CAAC,aAAa,SAAS,MAAM,aAAa,GAAG,MAAM,aAAa,CAC7F,SAAQ,oBAAoB;IAC5B,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,aAAa,SAAS,MAAM,aAAa,GAAG,MAAM,aAAa,CACzF,SAAQ,uBAAuB,CAAC,aAAa,CAAC;IAC9C,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IAEjB,IAAI,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,uBAAuB;IAClE,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,CAAC,gBAAgB,EAAE,QAAQ,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAC1B,gBAAgB,EAAE,oBAAoB,EACtC,cAAc,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,KAC7D,IAAI,CAAC;AAEV;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B;;OAEG;IACH,WAAW,CAAC,aAAa,SAAS,MAAM,aAAa,GAAG,MAAM,EAC1D,OAAO,EAAE,WAAW,CAAC,aAAa,CAAC,GACpC,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC;IAExC;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC9F;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,aAAa,SAAS,MAAM,aAAa,GAAG,MAAM,EAAE,EAC1F,YAAY,EACZ,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,GAAG,OAAO,EACb,EAAE,kBAAkB,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,CAoChE"}
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,32 +1,43 @@
1
+ import { Readable } from 'node:stream';
1
2
  import { applySearchParams } from '@crawlee/utils';
3
+ export class ResponseWithUrl extends Response {
4
+ url;
5
+ constructor(body, init) {
6
+ super(body, init);
7
+ this.url = init.url ?? '';
8
+ }
9
+ }
2
10
  /**
3
11
  * Converts {@link HttpRequestOptions} to a {@link HttpRequest}.
4
12
  */
5
13
  export function processHttpRequestOptions({ searchParams, form, json, username, password, ...request }) {
6
14
  const url = new URL(request.url);
7
- const headers = { ...request.headers };
15
+ const headers = new Headers(request.headers);
8
16
  applySearchParams(url, searchParams);
9
17
  if ([request.body, form, json].filter((value) => value !== undefined).length > 1) {
10
18
  throw new Error('At most one of `body`, `form` and `json` may be specified in sendRequest arguments');
11
19
  }
12
20
  const body = (() => {
13
21
  if (form !== undefined) {
14
- return new URLSearchParams(form).toString();
22
+ return Readable.from(new URLSearchParams(form).toString());
15
23
  }
16
24
  if (json !== undefined) {
17
- return JSON.stringify(json);
25
+ return Readable.from(JSON.stringify(json));
26
+ }
27
+ if (request.body !== undefined) {
28
+ return Readable.from(request.body);
18
29
  }
19
- return request.body;
30
+ return undefined;
20
31
  })();
21
- if (form !== undefined) {
22
- headers['content-type'] ??= 'application/x-www-form-urlencoded';
32
+ if (form !== undefined && !headers.has('content-type')) {
33
+ headers.set('content-type', 'application/x-www-form-urlencoded');
23
34
  }
24
- if (json !== undefined) {
25
- headers['content-type'] ??= 'application/json';
35
+ if (json !== undefined && !headers.has('content-type')) {
36
+ headers.set('content-type', 'application/json');
26
37
  }
27
38
  if (username !== undefined || password !== undefined) {
28
39
  const encodedAuth = Buffer.from(`${username ?? ''}:${password ?? ''}`).toString('base64');
29
- headers.authorization = `Basic ${encodedAuth}`;
40
+ headers.set('authorization', `Basic ${encodedAuth}`);
30
41
  }
31
42
  return { ...request, body, url, headers };
32
43
  }
@@ -1 +1 @@
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
+ {"version":3,"file":"base-http-client.js","sourceRoot":"","sources":["../../src/http_clients/base-http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EAAE,iBAAiB,EAAqB,MAAM,gBAAgB,CAAC;AA0EtE,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAChC,GAAG,CAAS;IACrB,YAAY,IAAqB,EAAE,IAAqC;QACpE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;IAC9B,CAAC;CACJ;AAmCD;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,EACtC,YAAY,EACZ,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,GAAG,OAAO,EACO;IACjB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7C,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,QAAQ,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC,CAAC,EAAE,CAAC;IAEL,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,mCAAmC,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;IACpD,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,GAAG,CAAC,eAAe,EAAE,SAAS,WAAW,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC9C,CAAC"}
@@ -1,15 +1,22 @@
1
- import type { BaseHttpClient, HttpRequest, HttpResponse, RedirectHandler, ResponseTypes, StreamingHttpResponse } from './base-http-client.js';
1
+ import type { BaseHttpClient, SendRequestOptions, StreamOptions } from './base-http-client.js';
2
2
  /**
3
3
  * A HTTP client implementation based on the `got-scraping` library.
4
4
  */
5
5
  export declare class GotScrapingHttpClient implements BaseHttpClient {
6
+ /**
7
+ * Type guard that validates the HTTP method (excluding CONNECT).
8
+ * @param request - The HTTP request to validate
9
+ */
10
+ private validateRequest;
11
+ private iterateHeaders;
12
+ private parseHeaders;
6
13
  /**
7
14
  * @inheritDoc
8
15
  */
9
- sendRequest<TResponseType extends keyof ResponseTypes>(request: HttpRequest<TResponseType>): Promise<HttpResponse<TResponseType>>;
16
+ sendRequest(request: Request, options?: SendRequestOptions): Promise<Response>;
10
17
  /**
11
18
  * @inheritDoc
12
19
  */
13
- stream(request: HttpRequest, handleRedirect?: RedirectHandler): Promise<StreamingHttpResponse>;
20
+ stream(request: Request, options?: StreamOptions): Promise<Response>;
14
21
  }
15
22
  //# sourceMappingURL=got-scraping-http-client.d.ts.map
@@ -1 +1 @@
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
+ {"version":3,"file":"got-scraping-http-client.d.ts","sourceRoot":"","sources":["../../src/http_clients/got-scraping-http-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG/F;;GAEG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IACxD;;;OAGG;IACH,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAE,cAAc;IAmBvB,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;IA8BpF;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC;CA8D7E"}
@@ -1,34 +1,99 @@
1
+ import { Readable } from 'node:stream';
1
2
  import { gotScraping } from 'got-scraping';
3
+ import { ResponseWithUrl } from './base-http-client.js';
2
4
  /**
3
5
  * A HTTP client implementation based on the `got-scraping` library.
4
6
  */
5
7
  export class GotScrapingHttpClient {
8
+ /**
9
+ * Type guard that validates the HTTP method (excluding CONNECT).
10
+ * @param request - The HTTP request to validate
11
+ */
12
+ validateRequest(request) {
13
+ return !['CONNECT', 'connect'].includes(request.method);
14
+ }
15
+ *iterateHeaders(headers) {
16
+ for (const [key, value] of Object.entries(headers)) {
17
+ // Filter out pseudo-headers
18
+ if (key.startsWith(':') || value === undefined) {
19
+ continue;
20
+ }
21
+ if (Array.isArray(value)) {
22
+ for (const v of value) {
23
+ yield [key, v];
24
+ }
25
+ }
26
+ else {
27
+ yield [key, value];
28
+ }
29
+ }
30
+ }
31
+ parseHeaders(headers) {
32
+ return new Headers([...this.iterateHeaders(headers)]);
33
+ }
6
34
  /**
7
35
  * @inheritDoc
8
36
  */
9
- async sendRequest(request) {
37
+ async sendRequest(request, options) {
38
+ const { session, timeout } = options ?? {};
39
+ if (!this.validateRequest(request)) {
40
+ throw new Error(`The HTTP method CONNECT is not supported by the GotScrapingHttpClient.`);
41
+ }
10
42
  const gotResult = await gotScraping({
11
- ...request,
12
- retry: {
13
- limit: 0,
14
- ...request.retry,
15
- },
43
+ url: request.url,
44
+ method: request.method,
45
+ headers: Object.fromEntries(request.headers.entries()),
46
+ body: request.body ? Readable.fromWeb(request.body) : undefined,
47
+ proxyUrl: session?.proxyInfo?.url,
48
+ timeout: { request: timeout },
49
+ // We set cookieJar to undefined because
50
+ // `HttpCrawler` reads the cookies beforehand and sets them in `request.headers`.
51
+ // Using the `cookieJar` option directly would override that.
52
+ cookieJar: undefined,
53
+ });
54
+ const responseHeaders = this.parseHeaders(gotResult.headers);
55
+ return new ResponseWithUrl(new Uint8Array(gotResult.rawBody), {
56
+ headers: responseHeaders,
57
+ status: gotResult.statusCode,
58
+ statusText: gotResult.statusMessage ?? '',
59
+ url: gotResult.url,
16
60
  });
17
- return {
18
- ...gotResult,
19
- body: gotResult.body,
20
- request: { url: request.url, ...gotResult.request },
21
- };
22
61
  }
23
62
  /**
24
63
  * @inheritDoc
25
64
  */
26
- async stream(request, handleRedirect) {
65
+ async stream(request, options) {
66
+ const { session, timeout } = options ?? {};
67
+ if (!this.validateRequest(request)) {
68
+ throw new Error(`The HTTP method CONNECT is not supported by the GotScrapingHttpClient.`);
69
+ }
27
70
  // eslint-disable-next-line no-async-promise-executor
28
71
  return new Promise(async (resolve, reject) => {
29
- const stream = gotScraping({ ...request, isStream: true });
72
+ const stream = gotScraping({
73
+ url: request.url,
74
+ method: request.method,
75
+ headers: Object.fromEntries(request.headers.entries()),
76
+ body: request.body ? Readable.fromWeb(request.body) : undefined,
77
+ isStream: true,
78
+ proxyUrl: session?.proxyInfo?.url,
79
+ timeout: { request: timeout },
80
+ cookieJar: undefined,
81
+ });
30
82
  stream.on('redirect', (updatedOptions, redirectResponse) => {
31
- handleRedirect?.(redirectResponse, updatedOptions);
83
+ const nativeRedirectResponse = new ResponseWithUrl(redirectResponse.rawBody, {
84
+ headers: redirectResponse.headers,
85
+ status: redirectResponse.statusCode,
86
+ statusText: redirectResponse.statusMessage,
87
+ url: redirectResponse.url,
88
+ });
89
+ const nativeHeaders = new Headers(Object.entries(updatedOptions.headers)
90
+ .map(([key, value]) => (Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]))
91
+ .flat());
92
+ options?.onRedirect?.(nativeRedirectResponse, {
93
+ url: updatedOptions.url,
94
+ headers: nativeHeaders,
95
+ });
96
+ updatedOptions.headers = Object.fromEntries(nativeHeaders.entries());
32
97
  });
33
98
  // We need to end the stream for DELETE requests, otherwise it will hang.
34
99
  if (request.method && ['DELETE', 'delete'].includes(request.method)) {
@@ -36,32 +101,14 @@ export class GotScrapingHttpClient {
36
101
  }
37
102
  stream.on('error', reject);
38
103
  stream.on('response', (response) => {
39
- const result = {
40
- stream,
41
- request,
42
- redirectUrls: response.redirectUrls,
104
+ const headers = this.parseHeaders(response.headers);
105
+ // Cast shouldn't be needed here, undici might have a different `ReadableStream` type
106
+ resolve(new ResponseWithUrl(Readable.toWeb(stream), {
107
+ status: response.statusCode,
108
+ statusText: response.statusMessage ?? '',
109
+ headers,
43
110
  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
- });
111
+ }));
65
112
  });
66
113
  });
67
114
  }
@@ -1 +1 @@
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
+ {"version":3,"file":"got-scraping-http-client.js","sourceRoot":"","sources":["../../src/http_clients/got-scraping-http-client.ts"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export * from './session_pool/index.js';
14
14
  export * from './storages/index.js';
15
15
  export * from './validators.js';
16
16
  export * from './cookie_utils.js';
17
+ export * from './recoverable_state.js';
17
18
  export { PseudoUrl } from '@apify/pseudo_url';
18
19
  export { Dictionary, Awaitable, Constructor, StorageClient, Cookie, QueueOperationInfo } from '@crawlee/types';
19
20
  //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,UAAU,CAAC;AACzB,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,UAAU,CAAC;AACzB,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
package/index.js CHANGED
@@ -14,5 +14,6 @@ export * from './session_pool/index.js';
14
14
  export * from './storages/index.js';
15
15
  export * from './validators.js';
16
16
  export * from './cookie_utils.js';
17
+ export * from './recoverable_state.js';
17
18
  export { PseudoUrl } from '@apify/pseudo_url';
18
19
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,UAAU,CAAC;AACzB,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,UAAU,CAAC;AACzB,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
package/log.d.ts CHANGED
@@ -1,3 +1,5 @@
1
- import log, { Log, Logger, LoggerJson, LoggerOptions, LoggerText, LogLevel } from '@apify/log';
2
- export { log, Log, LoggerOptions, LogLevel, Logger, LoggerJson, LoggerText };
1
+ import type { LoggerOptions } from '@apify/log';
2
+ import log, { Log, Logger, LoggerJson, LoggerText, LogLevel } from '@apify/log';
3
+ export { log, Log, LogLevel, Logger, LoggerJson, LoggerText };
4
+ export type { LoggerOptions };
3
5
  //# sourceMappingURL=log.d.ts.map
package/log.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE/F,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEhF,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,CAAC"}