@crawlee/cheerio 3.17.1-beta.8 → 3.17.1-beta.80

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/index.mjs CHANGED
@@ -53,6 +53,7 @@ export const RequestQueue = mod.RequestQueue;
53
53
  export const RequestQueueV1 = mod.RequestQueueV1;
54
54
  export const RequestQueueV2 = mod.RequestQueueV2;
55
55
  export const RequestState = mod.RequestState;
56
+ export const RequestValidationError = mod.RequestValidationError;
56
57
  export const RetryRequestError = mod.RetryRequestError;
57
58
  export const Router = mod.Router;
58
59
  export const STATE_PERSISTENCE_KEY = mod.STATE_PERSISTENCE_KEY;
@@ -85,6 +86,7 @@ export const createFileRouter = mod.createFileRouter;
85
86
  export const createHttpRouter = mod.createHttpRouter;
86
87
  export const createRequestOptions = mod.createRequestOptions;
87
88
  export const createRequests = mod.createRequests;
89
+ export const defaultRoute = mod.defaultRoute;
88
90
  export const deserializeArray = mod.deserializeArray;
89
91
  export const enqueueLinks = mod.enqueueLinks;
90
92
  export const evaluateLoadSignalSample = mod.evaluateLoadSignalSample;
@@ -105,5 +107,6 @@ export const tryAbsoluteURL = mod.tryAbsoluteURL;
105
107
  export const updateEnqueueLinksPatternCache = mod.updateEnqueueLinksPatternCache;
106
108
  export const useState = mod.useState;
107
109
  export const validateGlobPattern = mod.validateGlobPattern;
110
+ export const validateUserData = mod.validateUserData;
108
111
  export const validators = mod.validators;
109
112
  export const withCheckedStorageAccess = mod.withCheckedStorageAccess;
@@ -1,5 +1,5 @@
1
1
  import type { IncomingMessage } from 'node:http';
2
- import type { BasicCrawlingContext, Configuration, EnqueueLinksOptions, ErrorHandler, GetUserDataFromRequest, HttpCrawlerOptions, InternalHttpCrawlingContext, InternalHttpHook, RequestHandler, RequestProvider, RouterRoutes, SkippedRequestCallback } from '@crawlee/http';
2
+ import type { BasicCrawlingContext, Configuration, EnqueueLinksOptions, ErrorHandler, GetUserDataFromRequest, HttpCrawlerOptions, InternalHttpCrawlingContext, InternalHttpHook, RequestHandler, RequestProvider, RouterHandler, RouterRoutes, RouteSchemas, RoutesFromSchemas, SkippedRequestCallback } from '@crawlee/http';
3
3
  import { HttpCrawler } from '@crawlee/http';
4
4
  import type { Dictionary } from '@crawlee/types';
5
5
  import { type CheerioRoot, type RobotsTxtFile } from '@crawlee/utils';
@@ -184,6 +184,7 @@ export declare function cheerioCrawlerEnqueueLinks(options: EnqueueLinksInternal
184
184
  * await crawler.run();
185
185
  * ```
186
186
  */
187
- // @ts-ignore optional peer dependency or compatibility with es2022
188
- export declare function createCheerioRouter<Context extends CheerioCrawlingContext = CheerioCrawlingContext, UserData extends Dictionary = GetUserDataFromRequest<Context['request']>>(routes?: RouterRoutes<Context, UserData>): import("@crawlee/http").RouterHandler<Context>;
187
+ export declare function createCheerioRouter<Context extends CheerioCrawlingContext = CheerioCrawlingContext, Routes extends Record<keyof Routes, Dictionary> = Record<string, GetUserDataFromRequest<Context['request']>>>(routes?: RouterRoutes<Context, Routes>): RouterHandler<Context, Routes>;
188
+ export declare function createCheerioRouter<Context extends CheerioCrawlingContext = CheerioCrawlingContext, UserData extends Dictionary = GetUserDataFromRequest<Context['request']>>(routes?: RouterRoutes<Context, Record<string, UserData>>): RouterHandler<Context, Record<string, UserData>>;
189
+ export declare function createCheerioRouter<Context extends CheerioCrawlingContext = CheerioCrawlingContext, const Schemas extends RouteSchemas = RouteSchemas>(schemas: Schemas): RouterHandler<Context, RoutesFromSchemas<Schemas>>;
189
190
  export {};
@@ -112,7 +112,9 @@ class CheerioCrawler extends http_1.HttpCrawler {
112
112
  body,
113
113
  enqueueLinks: async (enqueueOptions) => {
114
114
  return cheerioCrawlerEnqueueLinks({
115
- options: { ...enqueueOptions, limit: this.calculateEnqueuedRequestLimit(enqueueOptions?.limit) },
115
+ // `originalEnqueueLinks` clamps `limit` by the remaining `maxRequestsPerCrawl` budget itself;
116
+ // pre-clamping it here would make the crawler log the internal limit as a user-provided one
117
+ options: enqueueOptions,
116
118
  $,
117
119
  requestQueue: await this.getRequestQueue(),
118
120
  robotsTxtFile: await this.getRobotsTxtFileForUrl(crawlingContext.request.url),
@@ -174,8 +176,8 @@ async function cheerioCrawlerEnqueueLinks(options) {
174
176
  if (containsEnqueueLinks(options)) {
175
177
  return options.enqueueLinks({
176
178
  urls,
177
- baseUrl,
178
179
  ...enqueueLinksOptions,
180
+ baseUrl,
179
181
  });
180
182
  }
181
183
  return (0, http_1.enqueueLinks)({
@@ -183,34 +185,10 @@ async function cheerioCrawlerEnqueueLinks(options) {
183
185
  robotsTxtFile: options.robotsTxtFile,
184
186
  onSkippedRequest: options.onSkippedRequest,
185
187
  urls,
186
- baseUrl,
187
188
  ...enqueueLinksOptions,
189
+ baseUrl,
188
190
  });
189
191
  }
190
- /**
191
- * Creates new {@link Router} instance that works based on request labels.
192
- * This instance can then serve as a `requestHandler` of your {@link CheerioCrawler}.
193
- * Defaults to the {@link CheerioCrawlingContext}.
194
- *
195
- * > Serves as a shortcut for using `Router.create<CheerioCrawlingContext>()`.
196
- *
197
- * ```ts
198
- * import { CheerioCrawler, createCheerioRouter } from 'crawlee';
199
- *
200
- * const router = createCheerioRouter();
201
- * router.addHandler('label-a', async (ctx) => {
202
- * ctx.log.info('...');
203
- * });
204
- * router.addDefaultHandler(async (ctx) => {
205
- * ctx.log.info('...');
206
- * });
207
- *
208
- * const crawler = new CheerioCrawler({
209
- * requestHandler: router,
210
- * });
211
- * await crawler.run();
212
- * ```
213
- */
214
- function createCheerioRouter(routes) {
215
- return http_1.Router.create(routes);
192
+ function createCheerioRouter(routesOrSchemas) {
193
+ return http_1.Router.create(routesOrSchemas);
216
194
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crawlee/cheerio",
3
- "version": "3.17.1-beta.8",
3
+ "version": "3.17.1-beta.80",
4
4
  "description": "The scalable web crawling and scraping library for JavaScript/Node.js. Enables development of data extraction and web automation jobs (not only) with headless Chrome and Puppeteer.",
5
5
  "engines": {
6
6
  "node": ">=16.0.0"
@@ -53,9 +53,9 @@
53
53
  "access": "public"
54
54
  },
55
55
  "dependencies": {
56
- "@crawlee/http": "3.17.1-beta.8",
57
- "@crawlee/types": "3.17.1-beta.8",
58
- "@crawlee/utils": "3.17.1-beta.8",
56
+ "@crawlee/http": "3.17.1-beta.80",
57
+ "@crawlee/types": "3.17.1-beta.80",
58
+ "@crawlee/utils": "3.17.1-beta.80",
59
59
  "cheerio": "1.0.0-rc.12",
60
60
  "htmlparser2": "^9.0.0",
61
61
  "tslib": "^2.4.0"
@@ -67,5 +67,5 @@
67
67
  }
68
68
  }
69
69
  },
70
- "gitHead": "4f4b8c1d53b9185095ac68017aff0ef2b8182b6b"
70
+ "gitHead": "5b3c2d52f128643de6f515e87eeb531d55a187f0"
71
71
  }