@crawlee/core 4.0.0-beta.13 → 4.0.0-beta.131
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 +17 -13
- package/autoscaling/autoscaled_pool.d.ts +67 -172
- package/autoscaling/autoscaled_pool.js +182 -329
- package/autoscaling/concurrency_system.d.ts +268 -0
- package/autoscaling/concurrency_system.js +362 -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 +100 -0
- package/autoscaling/load_signal.js +105 -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 +67 -89
- 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 +90 -129
- package/crawlers/crawler_commons.js +1 -116
- package/crawlers/error_snapshotter.d.ts +2 -5
- package/crawlers/error_snapshotter.js +7 -8
- 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 +187 -63
- package/crawlers/statistics.js +354 -164
- package/debug.d.ts +36 -0
- package/debug.js +70 -0
- package/enqueue_links/enqueue_links.d.ts +68 -154
- package/enqueue_links/enqueue_links.js +38 -210
- package/enqueue_links/index.d.ts +0 -1
- package/enqueue_links/index.js +0 -1
- package/enqueue_links/shared.d.ts +52 -26
- package/enqueue_links/shared.js +115 -66
- package/errors.d.ts +72 -4
- package/errors.js +89 -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 -4
- package/index.js +6 -3
- package/iterables.d.ts +79 -0
- package/iterables.js +134 -0
- package/log.d.ts +82 -3
- package/log.js +106 -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 +38 -0
- package/memory-storage/memory-storage.js +130 -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 +108 -0
- package/memory-storage/resource-clients/key-value-store.d.ts +63 -0
- package/memory-storage/resource-clients/key-value-store.js +201 -0
- package/memory-storage/resource-clients/request-queue.d.ts +77 -0
- package/memory-storage/resource-clients/request-queue.js +409 -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 +14 -13
- package/proxy_configuration.d.ts +24 -132
- package/proxy_configuration.js +32 -147
- package/recoverable_state.d.ts +155 -0
- package/recoverable_state.js +231 -0
- package/request.d.ts +80 -16
- package/request.js +147 -68
- 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 +35 -88
- package/session_pool/session.js +101 -159
- package/session_pool/session_pool.d.ts +73 -91
- package/session_pool/session_pool.js +172 -165
- package/storages/batched_adds.d.ts +37 -0
- package/storages/batched_adds.js +73 -0
- package/storages/dataset.d.ts +114 -54
- package/storages/dataset.js +291 -148
- package/storages/index.d.ts +10 -8
- package/storages/index.js +8 -8
- package/storages/key_value_store.d.ts +185 -42
- package/storages/key_value_store.js +445 -169
- 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 +52 -115
- package/storages/request_list.js +183 -152
- package/storages/request_loader.d.ts +101 -0
- package/storages/request_loader.js +1 -0
- package/storages/request_manager.d.ts +33 -0
- package/storages/request_manager.js +1 -0
- package/storages/request_manager_tandem.d.ts +97 -0
- package/storages/request_manager_tandem.js +197 -0
- package/storages/request_queue.d.ts +290 -47
- package/storages/request_queue.js +762 -216
- package/storages/{sitemap_request_list.d.ts → sitemap_request_loader.d.ts} +45 -89
- package/storages/sitemap_request_loader.js +438 -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 +239 -0
- package/storages/throttling_request_manager.js +646 -0
- package/storages/transaction.d.ts +252 -0
- package/storages/transaction.js +251 -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 +22 -18
- package/validators.js +13 -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 -82
- 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/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_provider.d.ts +0 -308
- package/storages/request_provider.d.ts.map +0 -1
- package/storages/request_provider.js +0 -555
- 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/tsconfig.build.tsbuildinfo +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,430 +0,0 @@
|
|
|
1
|
-
import { Transform } from 'node:stream';
|
|
2
|
-
import { parseSitemap } from '@crawlee/utils';
|
|
3
|
-
import { minimatch } from 'minimatch';
|
|
4
|
-
import ow from 'ow';
|
|
5
|
-
import defaultLog from '@apify/log';
|
|
6
|
-
import { Configuration } from '../configuration.js';
|
|
7
|
-
import { constructGlobObjectsFromGlobs, constructRegExpObjectsFromRegExps } from '../enqueue_links/shared.js';
|
|
8
|
-
import { Request } from '../request.js';
|
|
9
|
-
import { KeyValueStore } from './key_value_store.js';
|
|
10
|
-
import { purgeDefaultStorages } from './utils.js';
|
|
11
|
-
/** @internal */
|
|
12
|
-
const STATE_PERSISTENCE_KEY = 'SITEMAP_REQUEST_LIST_STATE';
|
|
13
|
-
/**
|
|
14
|
-
* A list of URLs to crawl parsed from a sitemap.
|
|
15
|
-
*
|
|
16
|
-
* The loading of the sitemap is performed in the background so that crawling can start before the sitemap is fully loaded.
|
|
17
|
-
*/
|
|
18
|
-
export class SitemapRequestList {
|
|
19
|
-
/**
|
|
20
|
-
* Set of URLs that were returned by `fetchNextRequest()` and not marked as handled yet.
|
|
21
|
-
* @internal
|
|
22
|
-
*/
|
|
23
|
-
inProgress = new Set();
|
|
24
|
-
/** Set of URLs for which `reclaimRequest()` was called. */
|
|
25
|
-
reclaimed = new Set();
|
|
26
|
-
/**
|
|
27
|
-
* Map of returned Request objects that have not been marked as handled yet.
|
|
28
|
-
*
|
|
29
|
-
* We use this to persist custom user fields on the in-progress (or reclaimed) requests.
|
|
30
|
-
*/
|
|
31
|
-
requestData = new Map();
|
|
32
|
-
/**
|
|
33
|
-
* Object for keeping track of the sitemap parsing progress.
|
|
34
|
-
*/
|
|
35
|
-
sitemapParsingProgress = {
|
|
36
|
-
/**
|
|
37
|
-
* URL of the sitemap that is currently being parsed. `null` if no sitemap is being parsed.
|
|
38
|
-
*/
|
|
39
|
-
inProgressSitemapUrl: null,
|
|
40
|
-
/**
|
|
41
|
-
* Buffer for URLs from the currently parsed sitemap. Used for tracking partially loaded sitemaps across migrations.
|
|
42
|
-
*/
|
|
43
|
-
inProgressEntries: new Set(),
|
|
44
|
-
/**
|
|
45
|
-
* Set of sitemap URLs that have not been parsed yet. If the set is empty and `inProgressSitemapUrl` is `null`, the sitemap loading is finished.
|
|
46
|
-
*/
|
|
47
|
-
pendingSitemapUrls: new Set(),
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* Object stream of URLs parsed from the sitemaps.
|
|
51
|
-
* Using `highWaterMark`, this can manage the speed of the sitemap loading.
|
|
52
|
-
*
|
|
53
|
-
* Fetch the next URL to be processed using `fetchNextRequest()`.
|
|
54
|
-
*/
|
|
55
|
-
urlQueueStream;
|
|
56
|
-
/**
|
|
57
|
-
* Indicates whether the request list sitemap loading was aborted.
|
|
58
|
-
*
|
|
59
|
-
* If the loading was aborted before the sitemaps were fully loaded, the request list might be missing some URLs.
|
|
60
|
-
* The `isSitemapFullyLoaded` method can be used to check if the sitemaps were fully loaded.
|
|
61
|
-
*
|
|
62
|
-
* If the loading is aborted and all the requests are handled, `isFinished()` will return `true`.
|
|
63
|
-
*/
|
|
64
|
-
abortLoading = false;
|
|
65
|
-
/** Number of URLs that were marked as handled */
|
|
66
|
-
handledUrlCount = 0;
|
|
67
|
-
persistStateKey;
|
|
68
|
-
store;
|
|
69
|
-
closed = false;
|
|
70
|
-
/**
|
|
71
|
-
* Proxy URL to be used for sitemap loading.
|
|
72
|
-
*/
|
|
73
|
-
proxyUrl;
|
|
74
|
-
/**
|
|
75
|
-
* Logger instance.
|
|
76
|
-
*/
|
|
77
|
-
log = defaultLog.child({ prefix: 'SitemapRequestList' });
|
|
78
|
-
urlExcludePatternObjects = [];
|
|
79
|
-
urlPatternObjects = [];
|
|
80
|
-
/** EventManager used to handle persistence */
|
|
81
|
-
events;
|
|
82
|
-
persistenceOptions;
|
|
83
|
-
/** @internal */
|
|
84
|
-
constructor(options) {
|
|
85
|
-
ow(options, ow.object.exactShape({
|
|
86
|
-
sitemapUrls: ow.array.ofType(ow.string),
|
|
87
|
-
proxyUrl: ow.optional.string,
|
|
88
|
-
persistStateKey: ow.optional.string,
|
|
89
|
-
signal: ow.optional.any(),
|
|
90
|
-
timeoutMillis: ow.optional.number,
|
|
91
|
-
maxBufferSize: ow.optional.number,
|
|
92
|
-
parseSitemapOptions: ow.optional.object,
|
|
93
|
-
globs: ow.optional.array.ofType(ow.any(ow.string, ow.object.hasKeys('glob'))),
|
|
94
|
-
exclude: ow.optional.array.ofType(ow.any(ow.string, ow.regExp, ow.object.hasKeys('glob'), ow.object.hasKeys('regexp'))),
|
|
95
|
-
regexps: ow.optional.array.ofType(ow.any(ow.regExp, ow.object.hasKeys('regexp'))),
|
|
96
|
-
config: ow.optional.object,
|
|
97
|
-
persistenceOptions: ow.optional.object,
|
|
98
|
-
}));
|
|
99
|
-
const { globs, exclude, regexps, config = Configuration.getGlobalConfig() } = options;
|
|
100
|
-
if (exclude?.length) {
|
|
101
|
-
for (const excl of exclude) {
|
|
102
|
-
if (typeof excl === 'string' || 'glob' in excl) {
|
|
103
|
-
this.urlExcludePatternObjects.push(...constructGlobObjectsFromGlobs([excl]));
|
|
104
|
-
}
|
|
105
|
-
else if (excl instanceof RegExp || 'regexp' in excl) {
|
|
106
|
-
this.urlExcludePatternObjects.push(...constructRegExpObjectsFromRegExps([excl]));
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
if (globs?.length) {
|
|
111
|
-
this.urlPatternObjects.push(...constructGlobObjectsFromGlobs(globs));
|
|
112
|
-
}
|
|
113
|
-
if (regexps?.length) {
|
|
114
|
-
this.urlPatternObjects.push(...constructRegExpObjectsFromRegExps(regexps));
|
|
115
|
-
}
|
|
116
|
-
this.persistStateKey = options.persistStateKey;
|
|
117
|
-
this.persistenceOptions = { enable: true, ...options.persistenceOptions };
|
|
118
|
-
this.proxyUrl = options.proxyUrl;
|
|
119
|
-
this.urlQueueStream = this.createNewStream(options.maxBufferSize ?? 200);
|
|
120
|
-
this.sitemapParsingProgress.pendingSitemapUrls = new Set(options.sitemapUrls);
|
|
121
|
-
this.events = config.getEventManager();
|
|
122
|
-
this.persistState = this.persistState.bind(this);
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Creates a new object stream with the specified highWaterMark.
|
|
126
|
-
* @param highWaterMark High water mark for the stream (the maximum number of objects the stream will buffer).
|
|
127
|
-
* @returns A new object stream.
|
|
128
|
-
*/
|
|
129
|
-
createNewStream(highWaterMark) {
|
|
130
|
-
return new Transform({
|
|
131
|
-
objectMode: true,
|
|
132
|
-
highWaterMark,
|
|
133
|
-
}).pause();
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Returns a function that checks whether the provided pattern matches the closure URL.
|
|
137
|
-
* @param url URL to be checked.
|
|
138
|
-
* @returns A matcher function that checks whether the pattern matches the closure URL.
|
|
139
|
-
*/
|
|
140
|
-
matchesUrl(url) {
|
|
141
|
-
return (patternObject) => {
|
|
142
|
-
const { regexp, glob } = patternObject;
|
|
143
|
-
const matchesRegex = (regexp && url.match(regexp)) || false;
|
|
144
|
-
const matchesGlob = (glob && minimatch(url, glob, { nocase: true })) || false;
|
|
145
|
-
return Boolean(matchesRegex || matchesGlob);
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Checks whether the URL matches the `globs` / `regexps` / `exclude` provided in the `options`.
|
|
150
|
-
* @param url URL to be checked.
|
|
151
|
-
* @returns `true` if the URL matches the patterns, `false` otherwise.
|
|
152
|
-
*/
|
|
153
|
-
isUrlMatchingPatterns(url) {
|
|
154
|
-
return (!this.urlExcludePatternObjects.some(this.matchesUrl(url)) &&
|
|
155
|
-
(this.urlPatternObjects.length === 0 || this.urlPatternObjects.some(this.matchesUrl(url))));
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Adds a URL to the queue of parsed URLs.
|
|
159
|
-
*
|
|
160
|
-
* Blocks if the stream is full until it is drained.
|
|
161
|
-
*/
|
|
162
|
-
async pushNextUrl(url) {
|
|
163
|
-
return new Promise((resolve) => {
|
|
164
|
-
if (this.closed || (url && !this.isUrlMatchingPatterns(url))) {
|
|
165
|
-
resolve();
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
if (!this.urlQueueStream.push(url)) {
|
|
169
|
-
// This doesn't work with the 'drain' event (it's not emitted for some reason).
|
|
170
|
-
this.urlQueueStream.once('readdata', () => {
|
|
171
|
-
resolve();
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
resolve();
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Reads the next URL from the queue of parsed URLs.
|
|
181
|
-
*
|
|
182
|
-
* If the stream is empty, blocks until a new URL is pushed.
|
|
183
|
-
* @returns The next URL from the queue or `null` if we have read all URLs.
|
|
184
|
-
*/
|
|
185
|
-
async readNextUrl() {
|
|
186
|
-
return new Promise((resolve) => {
|
|
187
|
-
if (this.closed) {
|
|
188
|
-
resolve(null);
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
const result = this.urlQueueStream.read();
|
|
192
|
-
if (!result && !this.isSitemapFullyLoaded()) {
|
|
193
|
-
this.urlQueueStream.once('readable', () => {
|
|
194
|
-
const nextUrl = this.urlQueueStream.read();
|
|
195
|
-
resolve(nextUrl);
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
resolve(result);
|
|
200
|
-
}
|
|
201
|
-
this.urlQueueStream.emit('readdata');
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Indicates whether the background processing of sitemap contents has successfully finished.
|
|
206
|
-
*
|
|
207
|
-
* If this is `false`, the background processing is either still in progress or was aborted.
|
|
208
|
-
*/
|
|
209
|
-
isSitemapFullyLoaded() {
|
|
210
|
-
return (this.sitemapParsingProgress.inProgressSitemapUrl === null &&
|
|
211
|
-
this.sitemapParsingProgress.pendingSitemapUrls.size === 0);
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Start processing the sitemaps and loading the URLs.
|
|
215
|
-
*
|
|
216
|
-
* Resolves once all the sitemaps URLs have been fully loaded (sets `isSitemapFullyLoaded` to `true`).
|
|
217
|
-
*/
|
|
218
|
-
async load({ parseSitemapOptions, }) {
|
|
219
|
-
while (!this.isSitemapFullyLoaded() && !this.abortLoading) {
|
|
220
|
-
const sitemapUrl = this.sitemapParsingProgress.inProgressSitemapUrl ??
|
|
221
|
-
this.sitemapParsingProgress.pendingSitemapUrls.values().next().value;
|
|
222
|
-
try {
|
|
223
|
-
for await (const item of parseSitemap([{ type: 'url', url: sitemapUrl }], this.proxyUrl, {
|
|
224
|
-
...parseSitemapOptions,
|
|
225
|
-
maxDepth: 0,
|
|
226
|
-
emitNestedSitemaps: true,
|
|
227
|
-
})) {
|
|
228
|
-
if (!item.originSitemapUrl) {
|
|
229
|
-
// This is a nested sitemap
|
|
230
|
-
this.sitemapParsingProgress.pendingSitemapUrls.add(item.loc);
|
|
231
|
-
continue;
|
|
232
|
-
}
|
|
233
|
-
if (!this.sitemapParsingProgress.inProgressEntries.has(item.loc)) {
|
|
234
|
-
await this.pushNextUrl(item.loc);
|
|
235
|
-
this.sitemapParsingProgress.inProgressEntries.add(item.loc);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
catch (e) {
|
|
240
|
-
this.log.error('Error loading sitemap contents:', e);
|
|
241
|
-
}
|
|
242
|
-
this.sitemapParsingProgress.pendingSitemapUrls.delete(sitemapUrl);
|
|
243
|
-
this.sitemapParsingProgress.inProgressEntries.clear();
|
|
244
|
-
this.sitemapParsingProgress.inProgressSitemapUrl = null;
|
|
245
|
-
}
|
|
246
|
-
this.urlQueueStream.end();
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Open a sitemap and start processing it.
|
|
250
|
-
*
|
|
251
|
-
* Resolves to a new instance of `SitemapRequestList`, which **might not be fully loaded yet** - i.e. the sitemap might still be loading in the background.
|
|
252
|
-
*
|
|
253
|
-
* Track the loading progress using the `isSitemapFullyLoaded` property.
|
|
254
|
-
*/
|
|
255
|
-
static async open(options) {
|
|
256
|
-
const requestList = new SitemapRequestList({
|
|
257
|
-
...options,
|
|
258
|
-
persistStateKey: options.persistStateKey ?? STATE_PERSISTENCE_KEY,
|
|
259
|
-
});
|
|
260
|
-
await requestList.restoreState();
|
|
261
|
-
void requestList.load({ parseSitemapOptions: options.parseSitemapOptions });
|
|
262
|
-
if (requestList.persistenceOptions.enable) {
|
|
263
|
-
requestList.events.on("persistState" /* EventType.PERSIST_STATE */, requestList.persistState);
|
|
264
|
-
}
|
|
265
|
-
options?.signal?.addEventListener('abort', () => {
|
|
266
|
-
requestList.abortLoading = true;
|
|
267
|
-
});
|
|
268
|
-
if (options.timeoutMillis) {
|
|
269
|
-
setTimeout(() => {
|
|
270
|
-
requestList.abortLoading = true;
|
|
271
|
-
}, options.timeoutMillis);
|
|
272
|
-
}
|
|
273
|
-
return requestList;
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* @inheritDoc
|
|
277
|
-
*/
|
|
278
|
-
length() {
|
|
279
|
-
return this.urlQueueStream.readableLength + this.handledUrlCount - this.inProgress.size - this.reclaimed.size;
|
|
280
|
-
}
|
|
281
|
-
/**
|
|
282
|
-
* @inheritDoc
|
|
283
|
-
*/
|
|
284
|
-
async isFinished() {
|
|
285
|
-
return ((await this.isEmpty()) && this.inProgress.size === 0 && (this.isSitemapFullyLoaded() || this.abortLoading));
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* @inheritDoc
|
|
289
|
-
*/
|
|
290
|
-
async isEmpty() {
|
|
291
|
-
return this.reclaimed.size === 0 && this.urlQueueStream.readableLength === 0;
|
|
292
|
-
}
|
|
293
|
-
/**
|
|
294
|
-
* @inheritDoc
|
|
295
|
-
*/
|
|
296
|
-
handledCount() {
|
|
297
|
-
return this.handledUrlCount;
|
|
298
|
-
}
|
|
299
|
-
/**
|
|
300
|
-
* @inheritDoc
|
|
301
|
-
*/
|
|
302
|
-
async persistState() {
|
|
303
|
-
if (this.persistStateKey === undefined) {
|
|
304
|
-
return;
|
|
305
|
-
}
|
|
306
|
-
this.store ??= await KeyValueStore.open();
|
|
307
|
-
const urlQueue = [];
|
|
308
|
-
while (this.urlQueueStream.readableLength > 0) {
|
|
309
|
-
const url = this.urlQueueStream.read();
|
|
310
|
-
if (url === null) {
|
|
311
|
-
break;
|
|
312
|
-
}
|
|
313
|
-
urlQueue.push(url);
|
|
314
|
-
}
|
|
315
|
-
// Create a new stream, as we have read all the URLs from the current one.
|
|
316
|
-
// Pushing the urls back to the original stream might not be possible if it has been ended.
|
|
317
|
-
const newStream = this.createNewStream(this.urlQueueStream.readableHighWaterMark);
|
|
318
|
-
for (const url of urlQueue) {
|
|
319
|
-
newStream.push(url);
|
|
320
|
-
}
|
|
321
|
-
if (this.urlQueueStream.writableEnded) {
|
|
322
|
-
newStream.end();
|
|
323
|
-
}
|
|
324
|
-
this.urlQueueStream = newStream;
|
|
325
|
-
await this.store.setValue(this.persistStateKey, {
|
|
326
|
-
sitemapParsingProgress: {
|
|
327
|
-
pendingSitemapUrls: Array.from(this.sitemapParsingProgress.pendingSitemapUrls),
|
|
328
|
-
inProgressSitemapUrl: this.sitemapParsingProgress.inProgressSitemapUrl,
|
|
329
|
-
inProgressEntries: Array.from(this.sitemapParsingProgress.inProgressEntries),
|
|
330
|
-
},
|
|
331
|
-
urlQueue,
|
|
332
|
-
reclaimed: [...this.inProgress, ...this.reclaimed], // In-progress and reclaimed requests will be both retried if state is restored
|
|
333
|
-
requestData: Array.from(this.requestData.entries()),
|
|
334
|
-
abortLoading: this.abortLoading,
|
|
335
|
-
closed: this.closed,
|
|
336
|
-
});
|
|
337
|
-
}
|
|
338
|
-
async restoreState() {
|
|
339
|
-
await purgeDefaultStorages({ onlyPurgeOnce: true });
|
|
340
|
-
if (this.persistStateKey === undefined) {
|
|
341
|
-
return;
|
|
342
|
-
}
|
|
343
|
-
this.store ??= await KeyValueStore.open();
|
|
344
|
-
const state = await this.store.getValue(this.persistStateKey);
|
|
345
|
-
if (state === null) {
|
|
346
|
-
return;
|
|
347
|
-
}
|
|
348
|
-
this.reclaimed = new Set(state.reclaimed);
|
|
349
|
-
this.sitemapParsingProgress = {
|
|
350
|
-
pendingSitemapUrls: new Set(state.sitemapParsingProgress.pendingSitemapUrls),
|
|
351
|
-
inProgressSitemapUrl: state.sitemapParsingProgress.inProgressSitemapUrl,
|
|
352
|
-
inProgressEntries: new Set(state.sitemapParsingProgress.inProgressEntries),
|
|
353
|
-
};
|
|
354
|
-
this.requestData = new Map(state.requestData ?? []);
|
|
355
|
-
for (const url of state.urlQueue) {
|
|
356
|
-
this.urlQueueStream.push(url);
|
|
357
|
-
}
|
|
358
|
-
this.abortLoading = state.abortLoading;
|
|
359
|
-
this.closed = state.closed;
|
|
360
|
-
}
|
|
361
|
-
/**
|
|
362
|
-
* @inheritDoc
|
|
363
|
-
*/
|
|
364
|
-
async fetchNextRequest() {
|
|
365
|
-
// Try to return a reclaimed request first
|
|
366
|
-
let nextUrl = this.reclaimed.values().next().value;
|
|
367
|
-
if (nextUrl) {
|
|
368
|
-
this.reclaimed.delete(nextUrl);
|
|
369
|
-
}
|
|
370
|
-
else {
|
|
371
|
-
// Otherwise read next url from the stream
|
|
372
|
-
nextUrl = await this.readNextUrl();
|
|
373
|
-
if (!nextUrl) {
|
|
374
|
-
return null;
|
|
375
|
-
}
|
|
376
|
-
this.requestData.set(nextUrl, new Request({ url: nextUrl }));
|
|
377
|
-
}
|
|
378
|
-
this.inProgress.add(nextUrl);
|
|
379
|
-
return this.requestData.get(nextUrl);
|
|
380
|
-
}
|
|
381
|
-
/**
|
|
382
|
-
* @inheritDoc
|
|
383
|
-
*/
|
|
384
|
-
async *[Symbol.asyncIterator]() {
|
|
385
|
-
while (!(await this.isFinished())) {
|
|
386
|
-
const request = await this.fetchNextRequest();
|
|
387
|
-
if (!request)
|
|
388
|
-
break;
|
|
389
|
-
yield request;
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
/**
|
|
393
|
-
* @inheritDoc
|
|
394
|
-
*/
|
|
395
|
-
async reclaimRequest(request) {
|
|
396
|
-
this.ensureInProgressAndNotReclaimed(request.url);
|
|
397
|
-
this.reclaimed.add(request.url);
|
|
398
|
-
this.inProgress.delete(request.url);
|
|
399
|
-
}
|
|
400
|
-
/**
|
|
401
|
-
* Aborts the internal sitemap loading, stops the processing of the sitemap contents and drops all the pending URLs.
|
|
402
|
-
*
|
|
403
|
-
* Calling `fetchNextRequest()` after this method will always return `null`.
|
|
404
|
-
*/
|
|
405
|
-
async teardown() {
|
|
406
|
-
this.closed = true;
|
|
407
|
-
this.abortLoading = true;
|
|
408
|
-
this.events.off("persistState" /* EventType.PERSIST_STATE */, this.persistState);
|
|
409
|
-
await this.persistState();
|
|
410
|
-
this.urlQueueStream.emit('readdata'); // unblocks the potentially waiting `pushNextUrl` call
|
|
411
|
-
}
|
|
412
|
-
/**
|
|
413
|
-
* @inheritDoc
|
|
414
|
-
*/
|
|
415
|
-
async markRequestHandled(request) {
|
|
416
|
-
this.handledUrlCount += 1;
|
|
417
|
-
this.ensureInProgressAndNotReclaimed(request.url);
|
|
418
|
-
this.inProgress.delete(request.url);
|
|
419
|
-
this.requestData.delete(request.url);
|
|
420
|
-
}
|
|
421
|
-
ensureInProgressAndNotReclaimed(url) {
|
|
422
|
-
if (!this.inProgress.has(url)) {
|
|
423
|
-
throw new Error(`The request is not being processed (url: ${url})`);
|
|
424
|
-
}
|
|
425
|
-
if (this.reclaimed.has(url)) {
|
|
426
|
-
throw new Error(`The request was already reclaimed (url: ${url})`);
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
//# sourceMappingURL=sitemap_request_list.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sitemap_request_list.js","sourceRoot":"","sources":["../../src/storages/sitemap_request_list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import type { StorageClient } from '@crawlee/types';
|
|
2
|
-
import { Configuration } from '../configuration.js';
|
|
3
|
-
import type { ProxyConfiguration } from '../proxy_configuration.js';
|
|
4
|
-
import type { Constructor } from '../typedefs.js';
|
|
5
|
-
export interface IStorage {
|
|
6
|
-
id: string;
|
|
7
|
-
name?: string;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* StorageManager takes care of opening remote or local storages.
|
|
11
|
-
* @ignore
|
|
12
|
-
*/
|
|
13
|
-
export declare class StorageManager<T extends IStorage = IStorage> {
|
|
14
|
-
private readonly config;
|
|
15
|
-
private readonly name;
|
|
16
|
-
private readonly StorageConstructor;
|
|
17
|
-
private readonly cache;
|
|
18
|
-
private readonly storageOpenQueue;
|
|
19
|
-
constructor(StorageConstructor: Constructor<T>, config?: Configuration);
|
|
20
|
-
static openStorage<T extends IStorage>(storageClass: Constructor<T>, idOrName?: string, client?: StorageClient, config?: Configuration): Promise<T>;
|
|
21
|
-
static getManager<T extends IStorage>(storageClass: Constructor<T>, config?: Configuration): StorageManager<T>;
|
|
22
|
-
/** @internal */
|
|
23
|
-
static clearCache(config?: Configuration): void;
|
|
24
|
-
openStorage(idOrName?: string | null, client?: StorageClient): Promise<T>;
|
|
25
|
-
closeStorage(storage: {
|
|
26
|
-
id: string;
|
|
27
|
-
name?: string;
|
|
28
|
-
}): void;
|
|
29
|
-
/**
|
|
30
|
-
* Helper function that first requests storage by ID and if storage doesn't exist then gets it by name.
|
|
31
|
-
*/
|
|
32
|
-
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
33
|
-
protected _getOrCreateStorage(storageIdOrName: string, storageConstructorName: string, apiClient: StorageClient): Promise<import("@crawlee/types").DatasetCollectionData>;
|
|
34
|
-
protected _getStorageClientFactories(client: StorageClient, storageConstructorName: string): {
|
|
35
|
-
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
36
|
-
createStorageClient: ((id: string) => import("@crawlee/types").DatasetClient) | ((id: string) => import("@crawlee/types").KeyValueStoreClient) | ((id: string, options?: import("@crawlee/types").RequestQueueOptions) => import("@crawlee/types").RequestQueueClient);
|
|
37
|
-
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
38
|
-
createStorageCollectionClient: (() => import("@crawlee/types").DatasetCollectionClient) | (() => import("@crawlee/types").KeyValueStoreCollectionClient) | (() => import("@crawlee/types").RequestQueueCollectionClient);
|
|
39
|
-
};
|
|
40
|
-
protected _addStorageToCache(storage: T): void;
|
|
41
|
-
}
|
|
42
|
-
export interface StorageManagerOptions {
|
|
43
|
-
/**
|
|
44
|
-
* SDK configuration instance, defaults to the static register.
|
|
45
|
-
*/
|
|
46
|
-
config?: Configuration;
|
|
47
|
-
/**
|
|
48
|
-
* Optional storage client that should be used to open storages.
|
|
49
|
-
*/
|
|
50
|
-
storageClient?: StorageClient;
|
|
51
|
-
/**
|
|
52
|
-
* Used to pass the proxy configuration for the `requestsFromUrl` objects.
|
|
53
|
-
* Takes advantage of the internal address rotation and authentication process.
|
|
54
|
-
* If undefined, the `requestsFromUrl` requests will be made without proxy.
|
|
55
|
-
*/
|
|
56
|
-
proxyConfiguration?: ProxyConfiguration;
|
|
57
|
-
}
|
|
58
|
-
//# sourceMappingURL=storage_manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage_manager.d.ts","sourceRoot":"","sources":["../../src/storages/storage_manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGhE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAQlD,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ;IAQjD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAP3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA+C;IACpE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoC;IACvE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;gBAGjD,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAC,EACjB,MAAM,gBAAkC;WAMhD,WAAW,CAAC,CAAC,SAAS,QAAQ,EACvC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,EAC5B,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,aAAa,EACtB,MAAM,gBAAkC,GACzC,OAAO,CAAC,CAAC,CAAC;IAIb,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,QAAQ,EAChC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,EAC5B,MAAM,gBAAkC,GACzC,cAAc,CAAC,CAAC,CAAC;IASpB,gBAAgB;IAChB,MAAM,CAAC,UAAU,CAAC,MAAM,gBAAkC,GAAG,IAAI;IAW3D,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IA6B/E,YAAY,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAU1D;;OAEG;cACa,mBAAmB,CAC/B,eAAe,EAAE,MAAM,EACvB,sBAAsB,EAAE,MAAM,EAC9B,SAAS,EAAE,aAAa;IAe5B,SAAS,CAAC,0BAA0B,CAAC,MAAM,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM;;;;IAY1F,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI;CASjD;AAKD,MAAM,WAAW,qBAAqB;IAClC;;OAEG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;IAEvB;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAE9B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CAC3C"}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { AsyncQueue } from '@sapphire/async-queue';
|
|
2
|
-
import { Configuration } from '../configuration.js';
|
|
3
|
-
const DEFAULT_ID_CONFIG_KEYS = {
|
|
4
|
-
Dataset: 'defaultDatasetId',
|
|
5
|
-
KeyValueStore: 'defaultKeyValueStoreId',
|
|
6
|
-
RequestQueue: 'defaultRequestQueueId',
|
|
7
|
-
};
|
|
8
|
-
/**
|
|
9
|
-
* StorageManager takes care of opening remote or local storages.
|
|
10
|
-
* @ignore
|
|
11
|
-
*/
|
|
12
|
-
export class StorageManager {
|
|
13
|
-
config;
|
|
14
|
-
name;
|
|
15
|
-
StorageConstructor;
|
|
16
|
-
cache = new Map();
|
|
17
|
-
storageOpenQueue = new AsyncQueue();
|
|
18
|
-
constructor(StorageConstructor, config = Configuration.getGlobalConfig()) {
|
|
19
|
-
this.config = config;
|
|
20
|
-
this.StorageConstructor = StorageConstructor;
|
|
21
|
-
this.name = this.StorageConstructor.name;
|
|
22
|
-
}
|
|
23
|
-
static async openStorage(storageClass, idOrName, client, config = Configuration.getGlobalConfig()) {
|
|
24
|
-
return this.getManager(storageClass, config).openStorage(idOrName, client);
|
|
25
|
-
}
|
|
26
|
-
static getManager(storageClass, config = Configuration.getGlobalConfig()) {
|
|
27
|
-
if (!config.storageManagers.has(storageClass)) {
|
|
28
|
-
const manager = new StorageManager(storageClass, config);
|
|
29
|
-
config.storageManagers.set(storageClass, manager);
|
|
30
|
-
}
|
|
31
|
-
return config.storageManagers.get(storageClass);
|
|
32
|
-
}
|
|
33
|
-
/** @internal */
|
|
34
|
-
static clearCache(config = Configuration.getGlobalConfig()) {
|
|
35
|
-
config.storageManagers.forEach((manager) => {
|
|
36
|
-
if (manager.name === 'KeyValueStore') {
|
|
37
|
-
manager.cache.forEach((item) => {
|
|
38
|
-
item.clearCache?.();
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
config.storageManagers.clear();
|
|
43
|
-
}
|
|
44
|
-
async openStorage(idOrName, client) {
|
|
45
|
-
await this.storageOpenQueue.wait();
|
|
46
|
-
if (!idOrName) {
|
|
47
|
-
const defaultIdConfigKey = DEFAULT_ID_CONFIG_KEYS[this.name];
|
|
48
|
-
idOrName = this.config.get(defaultIdConfigKey);
|
|
49
|
-
}
|
|
50
|
-
const cacheKey = idOrName;
|
|
51
|
-
let storage = this.cache.get(cacheKey);
|
|
52
|
-
if (!storage) {
|
|
53
|
-
client ??= this.config.getStorageClient();
|
|
54
|
-
const storageObject = await this._getOrCreateStorage(idOrName, this.name, client);
|
|
55
|
-
storage = new this.StorageConstructor({
|
|
56
|
-
id: storageObject.id,
|
|
57
|
-
name: storageObject.name,
|
|
58
|
-
storageObject,
|
|
59
|
-
client,
|
|
60
|
-
});
|
|
61
|
-
this._addStorageToCache(storage);
|
|
62
|
-
}
|
|
63
|
-
this.storageOpenQueue.shift();
|
|
64
|
-
return storage;
|
|
65
|
-
}
|
|
66
|
-
closeStorage(storage) {
|
|
67
|
-
const idKey = storage.id;
|
|
68
|
-
this.cache.delete(idKey);
|
|
69
|
-
if (storage.name) {
|
|
70
|
-
const nameKey = storage.name;
|
|
71
|
-
this.cache.delete(nameKey);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Helper function that first requests storage by ID and if storage doesn't exist then gets it by name.
|
|
76
|
-
*/
|
|
77
|
-
async _getOrCreateStorage(storageIdOrName, storageConstructorName, apiClient) {
|
|
78
|
-
const { createStorageClient, createStorageCollectionClient } = this._getStorageClientFactories(apiClient, storageConstructorName);
|
|
79
|
-
const storageClient = createStorageClient(storageIdOrName);
|
|
80
|
-
const existingStorage = await storageClient.get();
|
|
81
|
-
if (existingStorage)
|
|
82
|
-
return existingStorage;
|
|
83
|
-
const storageCollectionClient = createStorageCollectionClient();
|
|
84
|
-
return storageCollectionClient.getOrCreate(storageIdOrName);
|
|
85
|
-
}
|
|
86
|
-
_getStorageClientFactories(client, storageConstructorName) {
|
|
87
|
-
// Dataset => dataset
|
|
88
|
-
const clientName = (storageConstructorName[0].toLowerCase() + storageConstructorName.slice(1));
|
|
89
|
-
// dataset => datasets
|
|
90
|
-
const collectionClientName = `${clientName}s`;
|
|
91
|
-
return {
|
|
92
|
-
createStorageClient: client[clientName].bind(client),
|
|
93
|
-
createStorageCollectionClient: client[collectionClientName].bind(client),
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
_addStorageToCache(storage) {
|
|
97
|
-
const idKey = storage.id;
|
|
98
|
-
this.cache.set(idKey, storage);
|
|
99
|
-
if (storage.name) {
|
|
100
|
-
const nameKey = storage.name;
|
|
101
|
-
this.cache.set(nameKey, storage);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=storage_manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage_manager.js","sourceRoot":"","sources":["../../src/storages/storage_manager.ts"],"names":[],"mappings":"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"}
|
package/storages/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/storages/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;GAEG;AACH,UAAU,0BAA0B;IAChC;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,CAAC,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAChG;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAwB1G,MAAM,WAAW,eAAe;IAC5B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EAChE,IAAI,CAAC,EAAE,MAAM,EACb,YAAY,GAAS,KAAK,EAC1B,OAAO,CAAC,EAAE,eAAe,kBAM5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,UAI7C;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,OAAO,CAAC;AAErD,gBAAgB;AAChB,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,QAAS,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,2BAA2B,IAAI,CAAC"}
|
package/storages/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/storages/utils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAIjC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAwCrD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACtC,eAA4D,EAC5D,MAAsB;IAEtB,MAAM,OAAO,GACT,eAAe,YAAY,aAAa;QACpC,CAAC,CAAC;YACI,MAAM;YACN,MAAM,EAAE,eAAe;SAC1B;QACH,CAAC,CAAC,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC,eAAe,EAAE,EAAE,aAAa,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IACpF,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,MAAgD,CAAC;IAEhE,oGAAoG;IACpG,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,MAAM,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;IAC3B,CAAC;AACL,CAAC;AAWD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC1B,IAAa,EACb,eAAe,EAAW,EAC1B,OAAyB;IAEzB,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE;QACjE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE;KAC7D,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,iBAAiB,CAAQ,IAAI,IAAI,sBAAsB,EAAE,YAAY,CAAC,CAAC;AAC1F,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEjG,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,IAAI,CAAC;AAErD,gBAAgB;AAChB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,MAAM,CAAC;AAE1D;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC"}
|