@crawlee/core 4.0.0-beta.17 → 4.0.0-beta.170
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 +14 -14
- package/autoscaling/autoscaled_pool.d.ts +73 -177
- package/autoscaling/autoscaled_pool.js +182 -329
- package/autoscaling/concurrency_system.d.ts +268 -0
- package/autoscaling/concurrency_system.js +364 -0
- package/autoscaling/cpu_load_signal.d.ts +43 -0
- package/autoscaling/cpu_load_signal.js +47 -0
- package/autoscaling/event_loop_load_signal.d.ts +51 -0
- package/autoscaling/event_loop_load_signal.js +60 -0
- package/autoscaling/index.d.ts +6 -1
- package/autoscaling/index.js +6 -1
- package/autoscaling/load_signal.d.ts +98 -0
- package/autoscaling/load_signal.js +103 -0
- package/autoscaling/memory_load_signal.d.ts +47 -0
- package/autoscaling/memory_load_signal.js +106 -0
- package/autoscaling/snapshotter.d.ts +58 -163
- package/autoscaling/snapshotter.js +45 -263
- package/autoscaling/storage_backend_load_signal.d.ts +56 -0
- package/autoscaling/storage_backend_load_signal.js +73 -0
- package/autoscaling/system_status.d.ts +70 -92
- package/autoscaling/system_status.js +92 -122
- package/autoscaling/weighted_avg.d.ts +5 -0
- package/autoscaling/weighted_avg.js +14 -0
- package/byte_utils.d.ts +17 -0
- package/byte_utils.js +42 -0
- package/configuration.d.ts +96 -223
- package/configuration.js +170 -222
- package/cookie_utils.d.ts +3 -2
- package/cookie_utils.js +18 -7
- package/crawlers/context_pipeline.d.ts +10 -1
- package/crawlers/context_pipeline.js +31 -8
- package/crawlers/crawler_commons.d.ts +128 -124
- package/crawlers/crawler_commons.js +1 -108
- package/crawlers/error_snapshotter.d.ts +2 -5
- package/crawlers/error_snapshotter.js +5 -6
- package/crawlers/error_tracker.d.ts +0 -1
- package/crawlers/error_tracker.js +0 -1
- package/crawlers/index.d.ts +1 -3
- package/crawlers/index.js +0 -3
- package/crawlers/internals/types.d.ts +0 -1
- package/crawlers/internals/types.js +0 -1
- package/crawlers/statistics.d.ts +194 -79
- package/crawlers/statistics.js +382 -201
- package/debug.d.ts +36 -0
- package/debug.js +70 -0
- package/enqueue_links/enqueue_links.d.ts +61 -154
- package/enqueue_links/enqueue_links.js +40 -232
- package/enqueue_links/index.d.ts +0 -1
- package/enqueue_links/index.js +0 -1
- package/enqueue_links/shared.d.ts +55 -28
- package/enqueue_links/shared.js +116 -69
- package/errors.d.ts +82 -4
- package/errors.js +101 -5
- package/events/event_manager.d.ts +35 -9
- package/events/event_manager.js +12 -13
- package/events/index.d.ts +0 -1
- package/events/index.js +0 -1
- package/events/local_event_manager.d.ts +15 -3
- package/events/local_event_manager.js +39 -13
- package/http.d.ts +9 -0
- package/http.js +28 -0
- package/index.d.ts +7 -5
- package/index.js +8 -4
- package/iterables.d.ts +79 -0
- package/iterables.js +134 -0
- package/log.d.ts +77 -1
- package/log.js +134 -1
- package/memory-storage/consts.d.ts +4 -0
- package/memory-storage/consts.js +4 -0
- package/memory-storage/index.d.ts +1 -0
- package/memory-storage/index.js +1 -0
- package/memory-storage/memory-storage.d.ts +44 -0
- package/memory-storage/memory-storage.js +160 -0
- package/memory-storage/resource-clients/common/base-client.d.ts +4 -0
- package/memory-storage/resource-clients/common/base-client.js +6 -0
- package/memory-storage/resource-clients/dataset.d.ts +40 -0
- package/memory-storage/resource-clients/dataset.js +106 -0
- package/memory-storage/resource-clients/key-value-store.d.ts +63 -0
- package/memory-storage/resource-clients/key-value-store.js +199 -0
- package/memory-storage/resource-clients/request-queue.d.ts +77 -0
- package/memory-storage/resource-clients/request-queue.js +414 -0
- package/memory-storage/utils.d.ts +16 -0
- package/memory-storage/utils.js +41 -0
- package/owned_or_injected.d.ts +58 -0
- package/owned_or_injected.js +98 -0
- package/package.json +17 -16
- package/proxy_configuration.d.ts +22 -128
- package/proxy_configuration.js +32 -144
- package/recoverable_state.d.ts +84 -51
- package/recoverable_state.js +175 -72
- package/request.d.ts +57 -16
- package/request.js +130 -69
- package/router.d.ts +193 -21
- package/router.js +188 -43
- package/serialization.d.ts +0 -1
- package/serialization.js +15 -15
- package/service_locator.d.ts +165 -0
- package/service_locator.js +253 -0
- package/session_pool/consts.d.ts +1 -2
- package/session_pool/consts.js +1 -2
- package/session_pool/errors.d.ts +0 -1
- package/session_pool/errors.js +0 -1
- package/session_pool/fingerprint.d.ts +9 -0
- package/session_pool/fingerprint.js +30 -0
- package/session_pool/index.d.ts +0 -2
- package/session_pool/index.js +0 -2
- package/session_pool/session.d.ts +40 -90
- package/session_pool/session.js +103 -160
- package/session_pool/session_pool.d.ts +85 -101
- package/session_pool/session_pool.js +254 -210
- package/storages/batched_adds.d.ts +37 -0
- package/storages/batched_adds.js +73 -0
- package/storages/dataset.d.ts +114 -56
- package/storages/dataset.js +292 -149
- package/storages/index.d.ts +9 -9
- package/storages/index.js +7 -9
- package/storages/key_value_store.d.ts +186 -48
- package/storages/key_value_store.js +452 -170
- package/storages/key_value_store_codec.d.ts +32 -0
- package/storages/key_value_store_codec.js +113 -0
- package/storages/request_dedup_cache.d.ts +22 -0
- package/storages/request_dedup_cache.js +48 -0
- package/storages/request_list.d.ts +54 -129
- package/storages/request_list.js +272 -245
- package/storages/request_loader.d.ts +133 -0
- package/storages/request_loader.js +36 -0
- package/storages/request_manager.d.ts +109 -0
- package/storages/request_manager.js +1 -0
- package/storages/request_manager_tandem.d.ts +55 -23
- package/storages/request_manager_tandem.js +139 -57
- package/storages/request_queue.d.ts +286 -48
- package/storages/request_queue.js +757 -218
- package/storages/{sitemap_request_list.d.ts → sitemap_request_loader.d.ts} +43 -91
- package/storages/sitemap_request_loader.js +439 -0
- package/storages/storage_instance_manager.d.ts +87 -0
- package/storages/storage_instance_manager.js +256 -0
- package/storages/storage_stats.d.ts +48 -0
- package/storages/storage_stats.js +29 -0
- package/storages/throttling_request_manager.d.ts +223 -0
- package/storages/throttling_request_manager.js +835 -0
- package/storages/transaction.d.ts +260 -0
- package/storages/transaction.js +287 -0
- package/storages/utils.d.ts +59 -11
- package/storages/utils.js +75 -15
- package/system-info/cpu-info.d.ts +67 -0
- package/system-info/cpu-info.js +216 -0
- package/system-info/memory-info.d.ts +31 -0
- package/system-info/memory-info.js +115 -0
- package/system-info/ps-tree.d.ts +17 -0
- package/system-info/ps-tree.js +144 -0
- package/system-info/runtime.d.ts +14 -0
- package/system-info/runtime.js +80 -0
- package/typedefs.d.ts +0 -6
- package/typedefs.js +0 -1
- package/url.d.ts +9 -0
- package/url.js +11 -0
- package/validators.d.ts +23 -18
- package/validators.js +14 -18
- package/autoscaling/autoscaled_pool.d.ts.map +0 -1
- package/autoscaling/autoscaled_pool.js.map +0 -1
- package/autoscaling/index.d.ts.map +0 -1
- package/autoscaling/index.js.map +0 -1
- package/autoscaling/snapshotter.d.ts.map +0 -1
- package/autoscaling/snapshotter.js.map +0 -1
- package/autoscaling/system_status.d.ts.map +0 -1
- package/autoscaling/system_status.js.map +0 -1
- package/configuration.d.ts.map +0 -1
- package/configuration.js.map +0 -1
- package/cookie_utils.d.ts.map +0 -1
- package/cookie_utils.js.map +0 -1
- package/crawlers/context_pipeline.d.ts.map +0 -1
- package/crawlers/context_pipeline.js.map +0 -1
- package/crawlers/crawler_commons.d.ts.map +0 -1
- package/crawlers/crawler_commons.js.map +0 -1
- package/crawlers/crawler_utils.d.ts +0 -10
- package/crawlers/crawler_utils.d.ts.map +0 -1
- package/crawlers/crawler_utils.js +0 -12
- package/crawlers/crawler_utils.js.map +0 -1
- package/crawlers/error_snapshotter.d.ts.map +0 -1
- package/crawlers/error_snapshotter.js.map +0 -1
- package/crawlers/error_tracker.d.ts.map +0 -1
- package/crawlers/error_tracker.js.map +0 -1
- package/crawlers/index.d.ts.map +0 -1
- package/crawlers/index.js.map +0 -1
- package/crawlers/internals/types.d.ts.map +0 -1
- package/crawlers/internals/types.js.map +0 -1
- package/crawlers/statistics.d.ts.map +0 -1
- package/crawlers/statistics.js.map +0 -1
- package/enqueue_links/enqueue_links.d.ts.map +0 -1
- package/enqueue_links/enqueue_links.js.map +0 -1
- package/enqueue_links/index.d.ts.map +0 -1
- package/enqueue_links/index.js.map +0 -1
- package/enqueue_links/shared.d.ts.map +0 -1
- package/enqueue_links/shared.js.map +0 -1
- package/errors.d.ts.map +0 -1
- package/errors.js.map +0 -1
- package/events/event_manager.d.ts.map +0 -1
- package/events/event_manager.js.map +0 -1
- package/events/index.d.ts.map +0 -1
- package/events/index.js.map +0 -1
- package/events/local_event_manager.d.ts.map +0 -1
- package/events/local_event_manager.js.map +0 -1
- package/http_clients/base-http-client.d.ts +0 -140
- package/http_clients/base-http-client.d.ts.map +0 -1
- package/http_clients/base-http-client.js +0 -40
- package/http_clients/base-http-client.js.map +0 -1
- package/http_clients/form-data-like.d.ts +0 -67
- package/http_clients/form-data-like.d.ts.map +0 -1
- package/http_clients/form-data-like.js +0 -5
- package/http_clients/form-data-like.js.map +0 -1
- package/http_clients/got-scraping-http-client.d.ts +0 -20
- package/http_clients/got-scraping-http-client.d.ts.map +0 -1
- package/http_clients/got-scraping-http-client.js +0 -85
- package/http_clients/got-scraping-http-client.js.map +0 -1
- package/http_clients/index.d.ts +0 -3
- package/http_clients/index.d.ts.map +0 -1
- package/http_clients/index.js +0 -3
- package/http_clients/index.js.map +0 -1
- package/index.d.ts.map +0 -1
- package/index.js.map +0 -1
- package/log.d.ts.map +0 -1
- package/log.js.map +0 -1
- package/proxy_configuration.d.ts.map +0 -1
- package/proxy_configuration.js.map +0 -1
- package/recoverable_state.d.ts.map +0 -1
- package/recoverable_state.js.map +0 -1
- package/request.d.ts.map +0 -1
- package/request.js.map +0 -1
- package/router.d.ts.map +0 -1
- package/router.js.map +0 -1
- package/serialization.d.ts.map +0 -1
- package/serialization.js.map +0 -1
- package/session_pool/consts.d.ts.map +0 -1
- package/session_pool/consts.js.map +0 -1
- package/session_pool/errors.d.ts.map +0 -1
- package/session_pool/errors.js.map +0 -1
- package/session_pool/events.d.ts +0 -3
- package/session_pool/events.d.ts.map +0 -1
- package/session_pool/events.js +0 -3
- package/session_pool/events.js.map +0 -1
- package/session_pool/index.d.ts.map +0 -1
- package/session_pool/index.js.map +0 -1
- package/session_pool/session.d.ts.map +0 -1
- package/session_pool/session.js.map +0 -1
- package/session_pool/session_pool.d.ts.map +0 -1
- package/session_pool/session_pool.js.map +0 -1
- package/storages/access_checking.d.ts +0 -13
- package/storages/access_checking.d.ts.map +0 -1
- package/storages/access_checking.js +0 -14
- package/storages/access_checking.js.map +0 -1
- package/storages/dataset.d.ts.map +0 -1
- package/storages/dataset.js.map +0 -1
- package/storages/index.d.ts.map +0 -1
- package/storages/index.js.map +0 -1
- package/storages/key_value_store.d.ts.map +0 -1
- package/storages/key_value_store.js.map +0 -1
- package/storages/request_list.d.ts.map +0 -1
- package/storages/request_list.js.map +0 -1
- package/storages/request_list_adapter.d.ts +0 -58
- package/storages/request_list_adapter.d.ts.map +0 -1
- package/storages/request_list_adapter.js +0 -81
- package/storages/request_list_adapter.js.map +0 -1
- package/storages/request_manager_tandem.d.ts.map +0 -1
- package/storages/request_manager_tandem.js.map +0 -1
- package/storages/request_provider.d.ts +0 -371
- package/storages/request_provider.d.ts.map +0 -1
- package/storages/request_provider.js +0 -585
- package/storages/request_provider.js.map +0 -1
- package/storages/request_queue.d.ts.map +0 -1
- package/storages/request_queue.js.map +0 -1
- package/storages/request_queue_v2.d.ts +0 -87
- package/storages/request_queue_v2.d.ts.map +0 -1
- package/storages/request_queue_v2.js +0 -438
- package/storages/request_queue_v2.js.map +0 -1
- package/storages/sitemap_request_list.d.ts.map +0 -1
- package/storages/sitemap_request_list.js +0 -430
- package/storages/sitemap_request_list.js.map +0 -1
- package/storages/storage_manager.d.ts +0 -58
- package/storages/storage_manager.d.ts.map +0 -1
- package/storages/storage_manager.js +0 -105
- package/storages/storage_manager.js.map +0 -1
- package/storages/utils.d.ts.map +0 -1
- package/storages/utils.js.map +0 -1
- package/typedefs.d.ts.map +0 -1
- package/typedefs.js.map +0 -1
- package/validators.d.ts.map +0 -1
- package/validators.js.map +0 -1
|
@@ -1,24 +1,39 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import { Configuration } from '../configuration.js';
|
|
1
|
+
import type { ISessionPool, SessionState } from '@crawlee/types';
|
|
2
|
+
import { z } from 'zod';
|
|
4
3
|
import type { PersistenceOptions } from '../crawlers/statistics.js';
|
|
5
|
-
import type {
|
|
6
|
-
import { KeyValueStore } from '../storages/key_value_store.js';
|
|
4
|
+
import type { CrawleeLogger } from '../log.js';
|
|
7
5
|
import type { SessionOptions } from './session.js';
|
|
8
6
|
import { Session } from './session.js';
|
|
7
|
+
declare const SESSION_REUSE_STRATEGIES: readonly ['random', 'round-robin', 'use-until-failure'];
|
|
8
|
+
export type SessionReuseStrategy = (typeof SESSION_REUSE_STRATEGIES)[number];
|
|
9
|
+
declare const persistedSessionPoolState: z.ZodObject<{
|
|
10
|
+
usableSessionsCount: z.ZodNumber;
|
|
11
|
+
retiredSessionsCount: z.ZodNumber;
|
|
12
|
+
sessions: z.ZodArray<z.ZodCustom<SessionState, SessionState>>;
|
|
13
|
+
}, z.core.$strip>;
|
|
14
|
+
/**
|
|
15
|
+
* The shape of the persisted {@link SessionPool} record, as returned by {@link SessionPool.getState}.
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
export type SessionPoolPersistedState = z.infer<typeof persistedSessionPoolState>;
|
|
9
19
|
/**
|
|
10
20
|
* Factory user-function which creates customized {@link Session} instances.
|
|
11
21
|
*/
|
|
12
22
|
export interface CreateSession {
|
|
13
23
|
/**
|
|
14
|
-
* @param
|
|
15
|
-
* @param options
|
|
24
|
+
* @param options.sessionOptions Per-call session options already merged with the pool-wide defaults.
|
|
16
25
|
*/
|
|
17
|
-
(
|
|
26
|
+
(options?: {
|
|
18
27
|
sessionOptions?: SessionOptions;
|
|
19
28
|
}): Session | Promise<Session>;
|
|
20
29
|
}
|
|
21
30
|
export interface SessionPoolOptions {
|
|
31
|
+
/**
|
|
32
|
+
* Unique identifier for this session pool instance. Used to generate a unique
|
|
33
|
+
* persistence key when `persistStateKey` is not provided.
|
|
34
|
+
* If not provided, an auto-incrementing ID is used.
|
|
35
|
+
*/
|
|
36
|
+
id?: string | number;
|
|
22
37
|
/**
|
|
23
38
|
* Maximum size of the pool. Indicates how many sessions are rotated.
|
|
24
39
|
* @default 1000
|
|
@@ -29,24 +44,26 @@ export interface SessionPoolOptions {
|
|
|
29
44
|
/** Name or Id of `KeyValueStore` where is the `SessionPool` state stored. */
|
|
30
45
|
persistStateKeyValueStoreId?: string;
|
|
31
46
|
/**
|
|
32
|
-
* Session pool persists
|
|
33
|
-
* @default
|
|
47
|
+
* Session pool persists its state under this key in Key value store.
|
|
48
|
+
* @default CRAWLEE_SESSION_POOL_STATE_{id}
|
|
34
49
|
*/
|
|
35
50
|
persistStateKey?: string;
|
|
36
51
|
/**
|
|
37
52
|
* Custom function that should return a `Session` instance, or a promise resolving to such instance.
|
|
38
|
-
* Any error thrown from this function will terminate the process.
|
|
39
|
-
*
|
|
53
|
+
* Any error thrown from this function will terminate the process. Receives `{ sessionOptions }`
|
|
54
|
+
* already merged from the pool-wide defaults and the per-call overrides.
|
|
40
55
|
*/
|
|
41
56
|
createSessionFunction?: CreateSession;
|
|
42
57
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
58
|
+
* Strategy for picking sessions from the pool.
|
|
59
|
+
* - `'random'` (default): fills the pool up to `maxPoolSize`, then picks a random usable session
|
|
60
|
+
* - `'round-robin'`: fills the pool up to `maxPoolSize`, then reuses sessions cycling through them in order
|
|
61
|
+
* - `'use-until-failure'`: always reuses the same session until it is retired, then moves to the next one
|
|
62
|
+
* @default 'random'
|
|
46
63
|
*/
|
|
47
|
-
|
|
64
|
+
sessionReuseStrategy?: SessionReuseStrategy;
|
|
48
65
|
/** @internal */
|
|
49
|
-
log?:
|
|
66
|
+
log?: CrawleeLogger;
|
|
50
67
|
/**
|
|
51
68
|
* Control how and when to persist the state of the session pool.
|
|
52
69
|
*/
|
|
@@ -58,20 +75,8 @@ export interface SessionPoolOptions {
|
|
|
58
75
|
* When some session is marked as blocked, it is removed and new one is created instead (the pool never returns an unusable session).
|
|
59
76
|
* Learn more in the {@doclink guides/session-management | Session management guide}.
|
|
60
77
|
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* Session pool is already integrated into crawlers, and it can significantly improve your scraper
|
|
64
|
-
* performance with just 2 lines of code.
|
|
65
|
-
*
|
|
66
|
-
* **Example usage:**
|
|
67
|
-
*
|
|
68
|
-
* ```javascript
|
|
69
|
-
* const crawler = new CheerioCrawler({
|
|
70
|
-
* useSessionPool: true,
|
|
71
|
-
* persistCookiesPerSession: true,
|
|
72
|
-
* // ...
|
|
73
|
-
* })
|
|
74
|
-
* ```
|
|
78
|
+
* Session pool is already integrated into crawlers and is always active.
|
|
79
|
+
* All public methods are lazy-initialized — the pool initializes itself on first use.
|
|
75
80
|
*
|
|
76
81
|
* You can configure the pool with many options. See the {@link SessionPoolOptions}.
|
|
77
82
|
* Session pool is by default persisted in default {@link KeyValueStore}.
|
|
@@ -81,7 +86,7 @@ export interface SessionPoolOptions {
|
|
|
81
86
|
* **Advanced usage:**
|
|
82
87
|
*
|
|
83
88
|
* ```javascript
|
|
84
|
-
* const sessionPool =
|
|
89
|
+
* const sessionPool = new SessionPool({
|
|
85
90
|
* maxPoolSize: 25,
|
|
86
91
|
* sessionOptions:{
|
|
87
92
|
* maxAgeSecs: 10,
|
|
@@ -117,40 +122,24 @@ export interface SessionPoolOptions {
|
|
|
117
122
|
*
|
|
118
123
|
* @category Scaling
|
|
119
124
|
*/
|
|
120
|
-
export declare class SessionPool
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
protected createSessionFunction: CreateSession;
|
|
125
|
-
protected keyValueStore: KeyValueStore;
|
|
126
|
-
protected sessions: Session[];
|
|
127
|
-
protected sessionMap: Map<string, Session>;
|
|
128
|
-
protected sessionOptions: SessionOptions;
|
|
129
|
-
protected persistStateKeyValueStoreId?: string;
|
|
130
|
-
protected persistStateKey: string;
|
|
131
|
-
protected _listener: () => Promise<void>;
|
|
132
|
-
protected events: EventManager;
|
|
133
|
-
protected readonly blockedStatusCodes: number[];
|
|
134
|
-
protected persistenceOptions: PersistenceOptions;
|
|
135
|
-
protected isInitialized: boolean;
|
|
136
|
-
private queue;
|
|
137
|
-
/**
|
|
138
|
-
* @internal
|
|
139
|
-
*/
|
|
140
|
-
constructor(options?: SessionPoolOptions, config?: Configuration);
|
|
125
|
+
export declare class SessionPool implements ISessionPool {
|
|
126
|
+
#private;
|
|
127
|
+
readonly id: string;
|
|
128
|
+
constructor(options?: SessionPoolOptions);
|
|
141
129
|
/**
|
|
142
130
|
* Gets count of usable sessions in the pool.
|
|
143
131
|
*/
|
|
144
|
-
|
|
132
|
+
usableSessionsCount(): Promise<number>;
|
|
145
133
|
/**
|
|
146
134
|
* Gets count of retired sessions in the pool.
|
|
147
135
|
*/
|
|
148
|
-
|
|
136
|
+
retiredSessionsCount(): Promise<number>;
|
|
149
137
|
/**
|
|
150
138
|
* Starts periodic state persistence and potentially loads SessionPool state from {@link KeyValueStore}.
|
|
151
|
-
*
|
|
139
|
+
* Called automatically on first use of any public method.
|
|
152
140
|
*/
|
|
153
|
-
|
|
141
|
+
private ensureInitialized;
|
|
142
|
+
private setupPool;
|
|
154
143
|
/**
|
|
155
144
|
* Adds a new session to the session pool. The pool automatically creates sessions up to the maximum size of the pool,
|
|
156
145
|
* but this allows you to add more sessions once the max pool size is reached.
|
|
@@ -170,89 +159,84 @@ export declare class SessionPool extends EventEmitter {
|
|
|
170
159
|
* If there is space for new session, it creates and returns new session.
|
|
171
160
|
* If the session pool is full, it picks a session from the pool,
|
|
172
161
|
* If the picked session is usable it is returned, otherwise it creates and returns a new one.
|
|
162
|
+
* @param [sessionId] If provided, it returns the usable session with this id, `undefined` otherwise.
|
|
173
163
|
*/
|
|
174
|
-
getSession(): Promise<Session>;
|
|
164
|
+
getSession(sessionId?: string): Promise<Session | undefined>;
|
|
175
165
|
/**
|
|
176
|
-
*
|
|
166
|
+
* Discards all sessions in the pool, both usable and retired, resetting it to a blank state.
|
|
167
|
+
*
|
|
168
|
+
* The persisted record is left alone - use {@link SessionPool.resetStore} to clear that as well.
|
|
177
169
|
*/
|
|
178
|
-
|
|
170
|
+
reset(): void;
|
|
179
171
|
/**
|
|
180
|
-
*
|
|
172
|
+
* Clears the persisted pool record, leaving the in-memory sessions alone.
|
|
173
|
+
*
|
|
174
|
+
* Throws while the state is still being persisted periodically - the next PERSIST_STATE event would write
|
|
175
|
+
* the record straight back. Call {@link SessionPool.teardown} first, or use {@link SessionPool.reset}
|
|
176
|
+
* to discard the sessions themselves. A no-op if persistence is disabled.
|
|
181
177
|
*/
|
|
182
|
-
resetStore(
|
|
178
|
+
resetStore(): Promise<void>;
|
|
183
179
|
/**
|
|
184
180
|
* Returns an object representing the internal state of the `SessionPool` instance.
|
|
185
|
-
*
|
|
181
|
+
* @internal
|
|
186
182
|
*/
|
|
187
|
-
getState():
|
|
188
|
-
usableSessionsCount: number;
|
|
189
|
-
retiredSessionsCount: number;
|
|
190
|
-
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
191
|
-
sessions: import("./session.js").SessionState[];
|
|
192
|
-
};
|
|
183
|
+
getState(): Promise<SessionPoolPersistedState>;
|
|
193
184
|
/**
|
|
194
185
|
* Persists the current state of the `SessionPool` into the default {@link KeyValueStore}.
|
|
195
186
|
* The state is persisted automatically in regular intervals.
|
|
196
|
-
* @param options - Override the persistence options provided in the constructor
|
|
197
187
|
*/
|
|
198
|
-
persistState(
|
|
188
|
+
persistState(): Promise<void>;
|
|
189
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
199
190
|
/**
|
|
200
|
-
*
|
|
191
|
+
* Stops the periodic state persistence and persists the state one last time.
|
|
201
192
|
* This function should be called after you are done with using the `SessionPool` instance.
|
|
193
|
+
* Using the pool again afterwards initializes it anew.
|
|
202
194
|
*/
|
|
203
195
|
teardown(): Promise<void>;
|
|
204
|
-
/**
|
|
205
|
-
* SessionPool should not work before initialization.
|
|
206
|
-
*/
|
|
207
|
-
protected _throwIfNotInitialized(): void;
|
|
208
196
|
/**
|
|
209
197
|
* Removes retired `Session` instances from `SessionPool`.
|
|
210
198
|
*/
|
|
211
|
-
|
|
199
|
+
private removeRetiredSessions;
|
|
212
200
|
/**
|
|
213
201
|
* Adds `Session` instance to `SessionPool`.
|
|
214
202
|
* @param newSession `Session` instance to be added.
|
|
215
203
|
*/
|
|
216
|
-
|
|
204
|
+
private registerSession;
|
|
217
205
|
/**
|
|
218
206
|
* Gets random index.
|
|
219
207
|
*/
|
|
220
|
-
|
|
208
|
+
private getRandomIndex;
|
|
221
209
|
/**
|
|
222
210
|
* Creates new session without any extra behavior.
|
|
223
|
-
* @param sessionPool
|
|
224
211
|
* @param [options]
|
|
225
212
|
* @param [options.sessionOptions] The configuration options for the session being created.
|
|
226
213
|
* @returns New session.
|
|
227
214
|
*/
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
215
|
+
private defaultCreateSessionFunction;
|
|
216
|
+
/**
|
|
217
|
+
* Invokes `createSessionFunction` with `sessionOptions` already merged from pool-wide defaults and
|
|
218
|
+
* the supplied per-call overrides, so custom implementations don't need to spread `pool.sessionOptions` themselves.
|
|
219
|
+
*
|
|
220
|
+
* A default {@link SessionFingerprint} is generated up front (host OS as
|
|
221
|
+
* `platform`, a random valid `browser`/`device` for that platform). Pool-wide
|
|
222
|
+
* and per-call options override it, and a persisted fingerprint coming
|
|
223
|
+
* through `maybeLoadSessionPool` naturally wins because it arrives in
|
|
224
|
+
* `perCallOptions`.
|
|
225
|
+
*/
|
|
226
|
+
private invokeCreateSessionFunction;
|
|
231
227
|
/**
|
|
232
228
|
* Creates new session and adds it to the pool.
|
|
233
229
|
* @returns Newly created `Session` instance.
|
|
234
230
|
*/
|
|
235
|
-
|
|
231
|
+
private createSession;
|
|
236
232
|
/**
|
|
237
233
|
* Decides whether there is enough space for creating new session.
|
|
238
234
|
*/
|
|
239
|
-
|
|
240
|
-
/**
|
|
241
|
-
* Picks random session from the `SessionPool`.
|
|
242
|
-
* @returns Picked `Session`.
|
|
243
|
-
*/
|
|
244
|
-
protected _pickSession(): Session;
|
|
235
|
+
private hasSpaceForSession;
|
|
245
236
|
/**
|
|
246
|
-
*
|
|
247
|
-
*
|
|
248
|
-
*/
|
|
249
|
-
protected _maybeLoadSessionPool(): Promise<void>;
|
|
250
|
-
/**
|
|
251
|
-
* Opens a SessionPool and returns a promise resolving to an instance
|
|
252
|
-
* of the {@link SessionPool} class that is already initialized.
|
|
253
|
-
*
|
|
254
|
-
* For more details and code examples, see the {@link SessionPool} class.
|
|
237
|
+
* Picks a session from the `SessionPool` according to the configured `sessionReuseStrategy`.
|
|
238
|
+
* Returns `undefined` when no session should be reused and a new one should be created instead.
|
|
255
239
|
*/
|
|
256
|
-
|
|
240
|
+
private pickSession;
|
|
257
241
|
}
|
|
258
|
-
|
|
242
|
+
export {};
|