@crawlee/core 3.0.0-beta.6 → 3.0.0-beta.62
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.
- package/README.md +77 -130
- package/autoscaling/autoscaled_pool.d.ts +3 -3
- package/autoscaling/autoscaled_pool.d.ts.map +1 -1
- package/autoscaling/autoscaled_pool.js +1 -1
- package/autoscaling/autoscaled_pool.js.map +1 -1
- package/autoscaling/snapshotter.d.ts +6 -6
- package/autoscaling/snapshotter.d.ts.map +1 -1
- package/autoscaling/snapshotter.js +12 -8
- package/autoscaling/snapshotter.js.map +1 -1
- package/autoscaling/system_status.d.ts +1 -1
- package/autoscaling/system_status.d.ts.map +1 -1
- package/configuration.d.ts +73 -62
- package/configuration.d.ts.map +1 -1
- package/configuration.js +75 -87
- package/configuration.js.map +1 -1
- package/crawlers/crawler_commons.d.ts +7 -12
- package/crawlers/crawler_commons.d.ts.map +1 -1
- package/crawlers/crawler_utils.d.ts +1 -1
- package/crawlers/crawler_utils.d.ts.map +1 -1
- package/crawlers/statistics.d.ts.map +1 -1
- package/crawlers/statistics.js +1 -1
- package/crawlers/statistics.js.map +1 -1
- package/enqueue_links/enqueue_links.d.ts +25 -23
- package/enqueue_links/enqueue_links.d.ts.map +1 -1
- package/enqueue_links/enqueue_links.js +23 -23
- package/enqueue_links/enqueue_links.js.map +1 -1
- package/enqueue_links/shared.d.ts +11 -6
- package/enqueue_links/shared.d.ts.map +1 -1
- package/enqueue_links/shared.js +7 -2
- package/enqueue_links/shared.js.map +1 -1
- package/errors.d.ts +16 -0
- package/errors.d.ts.map +1 -0
- package/errors.js +22 -0
- package/errors.js.map +1 -0
- package/events/event_manager.d.ts +12 -8
- package/events/event_manager.d.ts.map +1 -1
- package/events/event_manager.js +17 -6
- package/events/event_manager.js.map +1 -1
- package/events/local_event_manager.d.ts +3 -5
- package/events/local_event_manager.d.ts.map +1 -1
- package/events/local_event_manager.js +3 -5
- package/events/local_event_manager.js.map +1 -1
- package/index.d.ts +3 -0
- package/index.d.ts.map +1 -1
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/index.mjs +5 -0
- package/package.json +22 -27
- package/proxy_configuration.d.ts +7 -14
- package/proxy_configuration.d.ts.map +1 -1
- package/proxy_configuration.js +6 -15
- package/proxy_configuration.js.map +1 -1
- package/request.d.ts +11 -6
- package/request.d.ts.map +1 -1
- package/request.js +5 -1
- package/request.js.map +1 -1
- package/router.d.ts +93 -0
- package/router.d.ts.map +1 -0
- package/router.js +137 -0
- package/router.js.map +1 -0
- package/serialization.js +1 -1
- package/serialization.js.map +1 -1
- package/session_pool/session.d.ts +9 -13
- package/session_pool/session.d.ts.map +1 -1
- package/session_pool/session.js +16 -16
- package/session_pool/session.js.map +1 -1
- package/session_pool/session_pool.d.ts +3 -2
- package/session_pool/session_pool.d.ts.map +1 -1
- package/session_pool/session_pool.js +4 -5
- package/session_pool/session_pool.js.map +1 -1
- package/session_pool/session_utils.d.ts +6 -5
- package/session_pool/session_utils.d.ts.map +1 -1
- package/session_pool/session_utils.js +3 -0
- package/session_pool/session_utils.js.map +1 -1
- package/storages/dataset.d.ts +34 -12
- package/storages/dataset.d.ts.map +1 -1
- package/storages/dataset.js +44 -12
- package/storages/dataset.js.map +1 -1
- package/storages/index.d.ts +1 -0
- package/storages/index.d.ts.map +1 -1
- package/storages/index.js +1 -0
- package/storages/index.js.map +1 -1
- package/storages/key_value_store.d.ts +120 -22
- package/storages/key_value_store.d.ts.map +1 -1
- package/storages/key_value_store.js +178 -24
- package/storages/key_value_store.js.map +1 -1
- package/storages/request_list.d.ts +32 -35
- package/storages/request_list.d.ts.map +1 -1
- package/storages/request_list.js +31 -23
- package/storages/request_list.js.map +1 -1
- package/storages/request_queue.d.ts +12 -8
- package/storages/request_queue.d.ts.map +1 -1
- package/storages/request_queue.js +18 -6
- package/storages/request_queue.js.map +1 -1
- package/storages/storage_manager.d.ts +9 -5
- package/storages/storage_manager.d.ts.map +1 -1
- package/storages/storage_manager.js +28 -18
- package/storages/storage_manager.js.map +1 -1
- package/storages/utils.d.ts +16 -0
- package/storages/utils.d.ts.map +1 -0
- package/storages/utils.js +26 -0
- package/storages/utils.js.map +1 -0
- package/tsconfig.build.tsbuildinfo +1 -1
- package/typedefs.d.ts +0 -2
- package/typedefs.d.ts.map +1 -1
- package/typedefs.js.map +1 -1
- package/validators.d.ts +5 -5
- package/validators.d.ts.map +1 -1
- package/validators.js.map +1 -1
package/configuration.d.ts
CHANGED
|
@@ -1,98 +1,110 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import {
|
|
2
|
+
import type { MemoryStorageOptions } from '@crawlee/memory-storage';
|
|
3
|
+
import { MemoryStorage } from '@crawlee/memory-storage';
|
|
3
4
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
4
|
-
import { StorageClient } from '@crawlee/types';
|
|
5
|
-
import {
|
|
6
|
-
import { EventManager } from './events';
|
|
5
|
+
import type { Dictionary, StorageClient } from '@crawlee/types';
|
|
6
|
+
import type { EventManager } from './events';
|
|
7
7
|
export interface ConfigurationOptions {
|
|
8
8
|
storageClient?: StorageClient;
|
|
9
9
|
eventManager?: EventManager;
|
|
10
10
|
storageClientOptions?: Dictionary;
|
|
11
11
|
defaultDatasetId?: string;
|
|
12
|
+
purgeOnStart?: boolean;
|
|
12
13
|
defaultKeyValueStoreId?: string;
|
|
13
14
|
defaultRequestQueueId?: string;
|
|
14
15
|
maxUsedCpuRatio?: number;
|
|
15
16
|
availableMemoryRatio?: number;
|
|
17
|
+
memoryMbytes?: number;
|
|
16
18
|
persistStateIntervalMillis?: number;
|
|
17
19
|
systemInfoIntervalMillis?: number;
|
|
18
|
-
metamorphAfterSleepMillis?: number;
|
|
19
20
|
inputKey?: string;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
proxyHostname?: string;
|
|
26
|
-
proxyPassword?: string;
|
|
27
|
-
proxyPort?: number;
|
|
21
|
+
headless?: boolean;
|
|
22
|
+
xvfb?: boolean;
|
|
23
|
+
chromeExecutablePath?: string;
|
|
24
|
+
defaultBrowserPath?: string;
|
|
25
|
+
disableBrowserSandbox?: boolean;
|
|
28
26
|
}
|
|
29
27
|
/**
|
|
30
|
-
* `Configuration` is a value object holding
|
|
28
|
+
* `Configuration` is a value object holding Crawlee configuration. By default, there is a
|
|
29
|
+
* global singleton instance of this class available via `Configuration.getGlobalConfig()`.
|
|
30
|
+
* Places that depend on a configurable behaviour depend on this class as have the global
|
|
31
|
+
* instance as the default value.
|
|
31
32
|
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* const { Apify } = require('apify');
|
|
33
|
+
* ```js
|
|
34
|
+
* import { BasicCrawler, Configuration } from 'crawlee';
|
|
35
35
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
36
|
+
* const config = new Configuration({ persistStateIntervalMillis: 30_000 });
|
|
37
|
+
* const crawler = new BasicCrawler({ ... }, config);
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* The configuration provided via environment variables always takes precedence. We can also
|
|
41
|
+
* define the `crawlee.json` file in the project root directory which will serve as a baseline,
|
|
42
|
+
* so the options provided in constructor will override those.
|
|
43
|
+
*
|
|
44
|
+
* > In other words, the precedence is: crawlee.json < constructor options < environment variables.
|
|
44
45
|
*
|
|
45
46
|
* ## Supported Configuration Options
|
|
46
47
|
*
|
|
47
48
|
* Key | Environment Variable | Default Value
|
|
48
49
|
* ---|---|---
|
|
49
|
-
* `
|
|
50
|
-
* `
|
|
51
|
-
* `
|
|
52
|
-
* `
|
|
50
|
+
* `memoryMbytes` | `CRAWLEE_MEMORY_MBYTES` | -
|
|
51
|
+
* `headless` | `CRAWLEE_HEADLESS` | -
|
|
52
|
+
* `defaultDatasetId` | `CRAWLEE_DEFAULT_DATASET_ID` | `'default'`
|
|
53
|
+
* `defaultKeyValueStoreId` | `CRAWLEE_DEFAULT_KEY_VALUE_STORE_ID` | `'default'`
|
|
54
|
+
* `defaultRequestQueueId` | `CRAWLEE_DEFAULT_REQUEST_QUEUE_ID` | `'default'`
|
|
55
|
+
* `persistStateIntervalMillis` | `CRAWLEE_PERSIST_STATE_INTERVAL_MILLIS` | `60e3`
|
|
53
56
|
*
|
|
54
57
|
* ## Advanced Configuration Options
|
|
55
58
|
*
|
|
56
59
|
* Key | Environment Variable | Default Value
|
|
57
60
|
* ---|---|---
|
|
58
|
-
* `
|
|
59
|
-
* `
|
|
60
|
-
* `
|
|
61
|
-
* `
|
|
62
|
-
* `containerUrl` | `APIFY_CONTAINER_URL` | `'http://localhost:4321'`
|
|
63
|
-
* `inputKey` | `APIFY_INPUT_KEY` | `'INPUT'`
|
|
64
|
-
* `metamorphAfterSleepMillis` | `APIFY_METAMORPH_AFTER_SLEEP_MILLIS` | `300e3`
|
|
65
|
-
* `proxyHostname` | `APIFY_PROXY_HOSTNAME` | `'proxy.apify.com'`
|
|
66
|
-
* `proxyPassword` | `APIFY_PROXY_PASSWORD` | -
|
|
67
|
-
* `proxyPort` | `APIFY_PROXY_PORT` | `8000`
|
|
68
|
-
*
|
|
69
|
-
* ## Not Supported environment variables
|
|
70
|
-
*
|
|
71
|
-
* - `MEMORY_MBYTES`
|
|
72
|
-
* - `HEADLESS`
|
|
73
|
-
* - `XVFB`
|
|
74
|
-
* - `CHROME_EXECUTABLE_PATH`
|
|
61
|
+
* `inputKey` | `CRAWLEE_INPUT_KEY` | `'INPUT'`
|
|
62
|
+
* `xvfb` | `CRAWLEE_XVFB` | -
|
|
63
|
+
* `chromeExecutablePath` | `CRAWLEE_CHROME_EXECUTABLE_PATH` | -
|
|
64
|
+
* `defaultBrowserPath` | `CRAWLEE_DEFAULT_BROWSER_PATH` | -
|
|
75
65
|
*/
|
|
76
66
|
export declare class Configuration {
|
|
77
67
|
/**
|
|
78
|
-
* Maps environment variables to config keys (e.g. `
|
|
68
|
+
* Maps environment variables to config keys (e.g. `CRAWLEE_MEMORY_MBYTES` to `memoryMbytes`)
|
|
79
69
|
*/
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
70
|
+
protected static ENV_MAP: {
|
|
71
|
+
CRAWLEE_AVAILABLE_MEMORY_RATIO: string;
|
|
72
|
+
CRAWLEE_PURGE_ON_START: string;
|
|
73
|
+
CRAWLEE_MEMORY_MBYTES: string;
|
|
74
|
+
CRAWLEE_DEFAULT_DATASET_ID: string;
|
|
75
|
+
CRAWLEE_DEFAULT_KEY_VALUE_STORE_ID: string;
|
|
76
|
+
CRAWLEE_DEFAULT_REQUEST_QUEUE_ID: string;
|
|
77
|
+
CRAWLEE_INPUT_KEY: string;
|
|
78
|
+
CRAWLEE_PERSIST_STATE_INTERVAL_MILLIS: string;
|
|
79
|
+
CRAWLEE_HEADLESS: string;
|
|
80
|
+
CRAWLEE_XVFB: string;
|
|
81
|
+
CRAWLEE_CHROME_EXECUTABLE_PATH: string;
|
|
82
|
+
CRAWLEE_DEFAULT_BROWSER_PATH: string;
|
|
83
|
+
CRAWLEE_DISABLE_BROWSER_SANDBOX: string;
|
|
84
|
+
};
|
|
85
|
+
protected static BOOLEAN_VARS: string[];
|
|
86
|
+
protected static INTEGER_VARS: string[];
|
|
87
|
+
protected static DEFAULTS: {
|
|
88
|
+
defaultKeyValueStoreId: string;
|
|
89
|
+
defaultDatasetId: string;
|
|
90
|
+
defaultRequestQueueId: string;
|
|
91
|
+
inputKey: string;
|
|
92
|
+
maxUsedCpuRatio: number;
|
|
93
|
+
availableMemoryRatio: number;
|
|
94
|
+
storageClientOptions: {};
|
|
95
|
+
purgeOnStart: boolean;
|
|
96
|
+
persistStateIntervalMillis: number;
|
|
97
|
+
systemInfoIntervalMillis: number;
|
|
98
|
+
};
|
|
88
99
|
/**
|
|
89
100
|
* Provides access to the current-instance-scoped Configuration without passing it around in parameters.
|
|
90
101
|
* @internal
|
|
91
102
|
*/
|
|
92
103
|
static storage: AsyncLocalStorage<Configuration>;
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
104
|
+
protected options: Map<keyof ConfigurationOptions, ConfigurationOptions[keyof ConfigurationOptions]>;
|
|
105
|
+
protected services: Map<string, unknown>;
|
|
106
|
+
/** @internal */
|
|
107
|
+
static globalConfig?: Configuration;
|
|
96
108
|
/**
|
|
97
109
|
* Creates new `Configuration` instance with provided options. Env vars will have precedence over those.
|
|
98
110
|
*/
|
|
@@ -103,7 +115,7 @@ export declare class Configuration {
|
|
|
103
115
|
* in the above section.
|
|
104
116
|
*/
|
|
105
117
|
get<T extends keyof ConfigurationOptions, U extends ConfigurationOptions[T]>(key: T, defaultValue?: U): U;
|
|
106
|
-
|
|
118
|
+
protected _castEnvValue(key: keyof ConfigurationOptions, value: number | string | boolean): string | number | boolean;
|
|
107
119
|
/**
|
|
108
120
|
* Sets value for given option. Only affects this `Configuration` instance, the value will not be propagated down to the env var.
|
|
109
121
|
* To reset a value, we can omit the `value` argument or pass `undefined` there.
|
|
@@ -114,7 +126,7 @@ export declare class Configuration {
|
|
|
114
126
|
* this {@link Configuration} instance. Only first call of this method will create the client, following calls will
|
|
115
127
|
* return the same client instance.
|
|
116
128
|
*
|
|
117
|
-
* Caching works based on the
|
|
129
|
+
* Caching works based on the `storageClientOptions`, so calling this method with different options will return
|
|
118
130
|
* multiple instances, one for each variant of the options.
|
|
119
131
|
* @internal
|
|
120
132
|
*/
|
|
@@ -129,8 +141,6 @@ export declare class Configuration {
|
|
|
129
141
|
useEventManager(events: EventManager): void;
|
|
130
142
|
/**
|
|
131
143
|
* Returns the global configuration instance. It will respect the environment variables.
|
|
132
|
-
* When used inside SDK instance (`sdk.main()`), the return value is equal to `sdk.config`.
|
|
133
|
-
*
|
|
134
144
|
*/
|
|
135
145
|
static getGlobalConfig(): Configuration;
|
|
136
146
|
/**
|
|
@@ -146,5 +156,6 @@ export declare class Configuration {
|
|
|
146
156
|
* if we want to change them, we need to first reset the global state. Used mainly for testing purposes.
|
|
147
157
|
*/
|
|
148
158
|
static resetGlobalState(): void;
|
|
159
|
+
protected buildOptions(options: ConfigurationOptions): void;
|
|
149
160
|
}
|
|
150
161
|
//# sourceMappingURL=configuration.d.ts.map
|
package/configuration.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"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"}
|
package/configuration.js
CHANGED
|
@@ -1,58 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Configuration = void 0;
|
|
4
|
-
const consts_1 = require("@apify/consts");
|
|
5
4
|
const memory_storage_1 = require("@crawlee/memory-storage");
|
|
5
|
+
const fs_extra_1 = require("fs-extra");
|
|
6
|
+
const node_path_1 = require("node:path");
|
|
6
7
|
const node_async_hooks_1 = require("node:async_hooks");
|
|
7
8
|
const node_events_1 = require("node:events");
|
|
8
9
|
const typedefs_1 = require("./typedefs");
|
|
9
10
|
const events_1 = require("./events");
|
|
10
11
|
/**
|
|
11
|
-
* `Configuration` is a value object holding
|
|
12
|
+
* `Configuration` is a value object holding Crawlee configuration. By default, there is a
|
|
13
|
+
* global singleton instance of this class available via `Configuration.getGlobalConfig()`.
|
|
14
|
+
* Places that depend on a configurable behaviour depend on this class as have the global
|
|
15
|
+
* instance as the default value.
|
|
12
16
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* const { Apify } = require('apify');
|
|
17
|
+
* ```js
|
|
18
|
+
* import { BasicCrawler, Configuration } from 'crawlee';
|
|
16
19
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
20
|
+
* const config = new Configuration({ persistStateIntervalMillis: 30_000 });
|
|
21
|
+
* const crawler = new BasicCrawler({ ... }, config);
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* The configuration provided via environment variables always takes precedence. We can also
|
|
25
|
+
* define the `crawlee.json` file in the project root directory which will serve as a baseline,
|
|
26
|
+
* so the options provided in constructor will override those.
|
|
27
|
+
*
|
|
28
|
+
* > In other words, the precedence is: crawlee.json < constructor options < environment variables.
|
|
25
29
|
*
|
|
26
30
|
* ## Supported Configuration Options
|
|
27
31
|
*
|
|
28
32
|
* Key | Environment Variable | Default Value
|
|
29
33
|
* ---|---|---
|
|
30
|
-
* `
|
|
31
|
-
* `
|
|
32
|
-
* `
|
|
33
|
-
* `
|
|
34
|
+
* `memoryMbytes` | `CRAWLEE_MEMORY_MBYTES` | -
|
|
35
|
+
* `headless` | `CRAWLEE_HEADLESS` | -
|
|
36
|
+
* `defaultDatasetId` | `CRAWLEE_DEFAULT_DATASET_ID` | `'default'`
|
|
37
|
+
* `defaultKeyValueStoreId` | `CRAWLEE_DEFAULT_KEY_VALUE_STORE_ID` | `'default'`
|
|
38
|
+
* `defaultRequestQueueId` | `CRAWLEE_DEFAULT_REQUEST_QUEUE_ID` | `'default'`
|
|
39
|
+
* `persistStateIntervalMillis` | `CRAWLEE_PERSIST_STATE_INTERVAL_MILLIS` | `60e3`
|
|
34
40
|
*
|
|
35
41
|
* ## Advanced Configuration Options
|
|
36
42
|
*
|
|
37
43
|
* Key | Environment Variable | Default Value
|
|
38
44
|
* ---|---|---
|
|
39
|
-
* `
|
|
40
|
-
* `
|
|
41
|
-
* `
|
|
42
|
-
* `
|
|
43
|
-
* `containerUrl` | `APIFY_CONTAINER_URL` | `'http://localhost:4321'`
|
|
44
|
-
* `inputKey` | `APIFY_INPUT_KEY` | `'INPUT'`
|
|
45
|
-
* `metamorphAfterSleepMillis` | `APIFY_METAMORPH_AFTER_SLEEP_MILLIS` | `300e3`
|
|
46
|
-
* `proxyHostname` | `APIFY_PROXY_HOSTNAME` | `'proxy.apify.com'`
|
|
47
|
-
* `proxyPassword` | `APIFY_PROXY_PASSWORD` | -
|
|
48
|
-
* `proxyPort` | `APIFY_PROXY_PORT` | `8000`
|
|
49
|
-
*
|
|
50
|
-
* ## Not Supported environment variables
|
|
51
|
-
*
|
|
52
|
-
* - `MEMORY_MBYTES`
|
|
53
|
-
* - `HEADLESS`
|
|
54
|
-
* - `XVFB`
|
|
55
|
-
* - `CHROME_EXECUTABLE_PATH`
|
|
45
|
+
* `inputKey` | `CRAWLEE_INPUT_KEY` | `'INPUT'`
|
|
46
|
+
* `xvfb` | `CRAWLEE_XVFB` | -
|
|
47
|
+
* `chromeExecutablePath` | `CRAWLEE_CHROME_EXECUTABLE_PATH` | -
|
|
48
|
+
* `defaultBrowserPath` | `CRAWLEE_DEFAULT_BROWSER_PATH` | -
|
|
56
49
|
*/
|
|
57
50
|
class Configuration {
|
|
58
51
|
/**
|
|
@@ -71,7 +64,7 @@ class Configuration {
|
|
|
71
64
|
writable: true,
|
|
72
65
|
value: new Map()
|
|
73
66
|
});
|
|
74
|
-
this.
|
|
67
|
+
this.buildOptions(options);
|
|
75
68
|
// Increase the global limit for event emitter memory leak warnings.
|
|
76
69
|
node_events_1.EventEmitter.defaultMaxListeners = 50;
|
|
77
70
|
}
|
|
@@ -81,9 +74,16 @@ class Configuration {
|
|
|
81
74
|
* in the above section.
|
|
82
75
|
*/
|
|
83
76
|
get(key, defaultValue) {
|
|
84
|
-
// prefer env vars
|
|
85
|
-
|
|
86
|
-
const
|
|
77
|
+
// prefer env vars, always iterate through the whole map as there might be duplicate env vars for the same option
|
|
78
|
+
let envValue;
|
|
79
|
+
for (const [k, v] of (0, typedefs_1.entries)(Configuration.ENV_MAP)) {
|
|
80
|
+
if (key === v) {
|
|
81
|
+
envValue = process.env[k];
|
|
82
|
+
if (envValue) {
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
87
|
if (envValue != null) {
|
|
88
88
|
return this._castEnvValue(key, envValue);
|
|
89
89
|
}
|
|
@@ -116,7 +116,7 @@ class Configuration {
|
|
|
116
116
|
* this {@link Configuration} instance. Only first call of this method will create the client, following calls will
|
|
117
117
|
* return the same client instance.
|
|
118
118
|
*
|
|
119
|
-
* Caching works based on the
|
|
119
|
+
* Caching works based on the `storageClientOptions`, so calling this method with different options will return
|
|
120
120
|
* multiple instances, one for each variant of the options.
|
|
121
121
|
* @internal
|
|
122
122
|
*/
|
|
@@ -159,8 +159,6 @@ class Configuration {
|
|
|
159
159
|
}
|
|
160
160
|
/**
|
|
161
161
|
* Returns the global configuration instance. It will respect the environment variables.
|
|
162
|
-
* When used inside SDK instance (`sdk.main()`), the return value is equal to `sdk.config`.
|
|
163
|
-
*
|
|
164
162
|
*/
|
|
165
163
|
static getGlobalConfig() {
|
|
166
164
|
if (Configuration.storage.getStore()) {
|
|
@@ -188,81 +186,71 @@ class Configuration {
|
|
|
188
186
|
static resetGlobalState() {
|
|
189
187
|
delete this.globalConfig;
|
|
190
188
|
}
|
|
189
|
+
buildOptions(options) {
|
|
190
|
+
// try to load configuration from crawlee.json as the baseline
|
|
191
|
+
const path = (0, node_path_1.join)(process.cwd(), 'crawlee.json');
|
|
192
|
+
if ((0, fs_extra_1.pathExistsSync)(path)) {
|
|
193
|
+
try {
|
|
194
|
+
const file = (0, fs_extra_1.readFileSync)(path);
|
|
195
|
+
const optionsFromFileConfig = JSON.parse(file.toString());
|
|
196
|
+
Object.assign(options, optionsFromFileConfig);
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
// ignore
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
this.options = new Map((0, typedefs_1.entries)(options));
|
|
203
|
+
}
|
|
191
204
|
}
|
|
192
205
|
exports.Configuration = Configuration;
|
|
193
206
|
/**
|
|
194
|
-
* Maps environment variables to config keys (e.g. `
|
|
207
|
+
* Maps environment variables to config keys (e.g. `CRAWLEE_MEMORY_MBYTES` to `memoryMbytes`)
|
|
195
208
|
*/
|
|
196
209
|
Object.defineProperty(Configuration, "ENV_MAP", {
|
|
197
210
|
enumerable: true,
|
|
198
211
|
configurable: true,
|
|
199
212
|
writable: true,
|
|
200
213
|
value: {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
APIFY_CONTAINER_URL: 'containerUrl',
|
|
215
|
-
APIFY_PROXY_HOSTNAME: 'proxyHostname',
|
|
216
|
-
APIFY_PROXY_PASSWORD: 'proxyPassword',
|
|
217
|
-
APIFY_PROXY_PORT: 'proxyPort',
|
|
218
|
-
// not supported, use env vars directly:
|
|
219
|
-
// APIFY_MEMORY_MBYTES: 'memoryMbytes',
|
|
220
|
-
// APIFY_HEADLESS: 'headless',
|
|
221
|
-
// APIFY_XVFB: 'xvfb',
|
|
222
|
-
// APIFY_CHROME_EXECUTABLE_PATH: 'chromeExecutablePath',
|
|
214
|
+
CRAWLEE_AVAILABLE_MEMORY_RATIO: 'availableMemoryRatio',
|
|
215
|
+
CRAWLEE_PURGE_ON_START: 'purgeOnStart',
|
|
216
|
+
CRAWLEE_MEMORY_MBYTES: 'memoryMbytes',
|
|
217
|
+
CRAWLEE_DEFAULT_DATASET_ID: 'defaultDatasetId',
|
|
218
|
+
CRAWLEE_DEFAULT_KEY_VALUE_STORE_ID: 'defaultKeyValueStoreId',
|
|
219
|
+
CRAWLEE_DEFAULT_REQUEST_QUEUE_ID: 'defaultRequestQueueId',
|
|
220
|
+
CRAWLEE_INPUT_KEY: 'inputKey',
|
|
221
|
+
CRAWLEE_PERSIST_STATE_INTERVAL_MILLIS: 'persistStateIntervalMillis',
|
|
222
|
+
CRAWLEE_HEADLESS: 'headless',
|
|
223
|
+
CRAWLEE_XVFB: 'xvfb',
|
|
224
|
+
CRAWLEE_CHROME_EXECUTABLE_PATH: 'chromeExecutablePath',
|
|
225
|
+
CRAWLEE_DEFAULT_BROWSER_PATH: 'defaultBrowserPath',
|
|
226
|
+
CRAWLEE_DISABLE_BROWSER_SANDBOX: 'disableBrowserSandbox',
|
|
223
227
|
}
|
|
224
228
|
});
|
|
225
|
-
/**
|
|
226
|
-
* Maps config keys to environment variables (e.g. `proxyPort` to `APIFY_PROXY_PORT`).
|
|
227
|
-
*/
|
|
228
|
-
Object.defineProperty(Configuration, "ENV_MAP_REVERSED", {
|
|
229
|
-
enumerable: true,
|
|
230
|
-
configurable: true,
|
|
231
|
-
writable: true,
|
|
232
|
-
value: (0, typedefs_1.entries)(Configuration.ENV_MAP).reduce((obj, [key, value]) => {
|
|
233
|
-
obj[value] = key;
|
|
234
|
-
return obj;
|
|
235
|
-
}, {})
|
|
236
|
-
});
|
|
237
229
|
Object.defineProperty(Configuration, "BOOLEAN_VARS", {
|
|
238
230
|
enumerable: true,
|
|
239
231
|
configurable: true,
|
|
240
232
|
writable: true,
|
|
241
|
-
value: []
|
|
233
|
+
value: ['purgeOnStart', 'headless', 'xvfb', 'disableBrowserSandbox']
|
|
242
234
|
});
|
|
243
235
|
Object.defineProperty(Configuration, "INTEGER_VARS", {
|
|
244
236
|
enumerable: true,
|
|
245
237
|
configurable: true,
|
|
246
238
|
writable: true,
|
|
247
|
-
value: ['
|
|
239
|
+
value: ['memoryMbytes', 'persistStateIntervalMillis', 'systemInfoIntervalMillis']
|
|
248
240
|
});
|
|
249
241
|
Object.defineProperty(Configuration, "DEFAULTS", {
|
|
250
242
|
enumerable: true,
|
|
251
243
|
configurable: true,
|
|
252
244
|
writable: true,
|
|
253
245
|
value: {
|
|
254
|
-
defaultKeyValueStoreId:
|
|
255
|
-
defaultDatasetId:
|
|
256
|
-
defaultRequestQueueId:
|
|
246
|
+
defaultKeyValueStoreId: 'default',
|
|
247
|
+
defaultDatasetId: 'default',
|
|
248
|
+
defaultRequestQueueId: 'default',
|
|
249
|
+
inputKey: 'INPUT',
|
|
257
250
|
maxUsedCpuRatio: 0.95,
|
|
258
251
|
availableMemoryRatio: 0.25,
|
|
259
252
|
storageClientOptions: {},
|
|
260
|
-
|
|
261
|
-
proxyHostname: consts_1.LOCAL_ENV_VARS[consts_1.ENV_VARS.PROXY_HOSTNAME],
|
|
262
|
-
proxyPort: +consts_1.LOCAL_ENV_VARS[consts_1.ENV_VARS.PROXY_PORT],
|
|
263
|
-
containerPort: +consts_1.LOCAL_ENV_VARS[consts_1.ENV_VARS.CONTAINER_PORT],
|
|
264
|
-
containerUrl: consts_1.LOCAL_ENV_VARS[consts_1.ENV_VARS.CONTAINER_URL],
|
|
265
|
-
metamorphAfterSleepMillis: 300000,
|
|
253
|
+
purgeOnStart: true,
|
|
266
254
|
persistStateIntervalMillis: 60000,
|
|
267
255
|
systemInfoIntervalMillis: 60000,
|
|
268
256
|
}
|
package/configuration.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
1
|
+
import type { Dictionary } from '@crawlee/types';
|
|
2
|
+
import type { Log } from '../log';
|
|
3
|
+
import type { ProxyInfo } from '../proxy_configuration';
|
|
4
|
+
import type { Request } from '../request';
|
|
5
|
+
import type { Session } from '../session_pool/session';
|
|
6
|
+
export interface CrawlingContext<UserData extends Dictionary = Dictionary> extends Record<PropertyKey, unknown> {
|
|
6
7
|
id: string;
|
|
7
8
|
/**
|
|
8
9
|
* The original {@link Request} object.
|
|
9
10
|
*/
|
|
10
|
-
request: Request
|
|
11
|
+
request: Request<UserData>;
|
|
11
12
|
session?: Session;
|
|
12
13
|
/**
|
|
13
14
|
* An object with information about currently used proxy by the crawler
|
|
@@ -16,10 +17,4 @@ export interface CrawlingContext extends Record<PropertyKey, unknown> {
|
|
|
16
17
|
proxyInfo?: ProxyInfo;
|
|
17
18
|
log: Log;
|
|
18
19
|
}
|
|
19
|
-
export interface CrawlerHandleFailedRequestInput extends CrawlingContext {
|
|
20
|
-
/**
|
|
21
|
-
* The Error thrown by `requestHandler`.
|
|
22
|
-
*/
|
|
23
|
-
error: Error;
|
|
24
|
-
}
|
|
25
20
|
//# sourceMappingURL=crawler_commons.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crawler_commons.d.ts","sourceRoot":"","sources":["../../src/crawlers/crawler_commons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"crawler_commons.d.ts","sourceRoot":"","sources":["../../src/crawlers/crawler_commons.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,WAAW,eAAe,CAAC,QAAQ,SAAS,UAAU,GAAG,UAAU,CAAE,SAAQ,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC;IAC3G,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,GAAG,EAAE,GAAG,CAAC;CACZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crawler_utils.d.ts","sourceRoot":"","sources":["../../src/crawlers/crawler_utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"crawler_utils.d.ts","sourceRoot":"","sources":["../../src/crawlers/crawler_utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,QAK1G;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,CAsBzE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,SAAK,EAAE,aAAa,SAAK,GAAG,MAAM,CAmBvF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statistics.d.ts","sourceRoot":"","sources":["../../src/crawlers/statistics.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"statistics.d.ts","sourceRoot":"","sources":["../../src/crawlers/statistics.ts"],"names":[],"mappings":"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"}
|
package/crawlers/statistics.js
CHANGED
|
@@ -299,7 +299,7 @@ class Statistics {
|
|
|
299
299
|
if (!savedState)
|
|
300
300
|
return;
|
|
301
301
|
// We saw a run where the requestRetryHistogram was not iterable and crashed
|
|
302
|
-
// the
|
|
302
|
+
// the crawler. Adding some logging to monitor this problem in the future.
|
|
303
303
|
if (!Array.isArray(savedState.requestRetryHistogram)) {
|
|
304
304
|
this.log.warning('Received invalid state from Key-value store.', {
|
|
305
305
|
persistStateKey: this.persistStateKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statistics.js","sourceRoot":"","sources":["../../src/crawlers/statistics.ts"],"names":[],"mappings":";;;;AAAA,oDAAoB;AACpB,gCAA2C;AAC3C,iEAA4D;
|
|
1
|
+
{"version":3,"file":"statistics.js","sourceRoot":"","sources":["../../src/crawlers/statistics.ts"],"names":[],"mappings":"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"}
|