1 | import type { Dictionary } from '@crawlee/types';
|
2 | import type { CrawlingContext } from './crawlers/crawler_commons';
|
3 | import type { Awaitable } from './typedefs';
|
4 | import type { Request } from './request';
|
5 | import type { Except } from './except';
|
6 | export interface RouterHandler<Context extends CrawlingContext = CrawlingContext> extends Router<Context> {
|
7 | (ctx: Context): Awaitable<void>;
|
8 | }
|
9 | declare type GetUserDataFromRequest<T> = T extends Request<infer Y> ? Y : never;
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
|
59 |
|
60 |
|
61 | export declare class Router<Context extends CrawlingContext> {
|
62 | private readonly routes;
|
63 | private readonly middlewares;
|
64 | |
65 |
|
66 |
|
67 |
|
68 | protected constructor();
|
69 | /**
|
70 | * Registers new route handler for given label.
|
71 | */
|
72 | addHandler<UserData extends Dictionary = GetUserDataFromRequest<Context['request']>>(label: string | symbol, handler: (ctx: Except<Context, 'request'> & {
|
73 | request: Request<UserData>;
|
74 | }) => Awaitable<void>): void;
|
75 | /**
|
76 | * Registers default route handler.
|
77 | */
|
78 | addDefaultHandler<UserData extends Dictionary = GetUserDataFromRequest<Context['request']>>(handler: (ctx: Except<Context, 'request'> & {
|
79 | request: Request<UserData>;
|
80 | }) => Awaitable<void>): void;
|
81 | /**
|
82 | * Registers a middleware that will be fired before the matching route handler.
|
83 | * Multiple middlewares can be registered, they will be fired in the same order.
|
84 | */
|
85 | use(middleware: (ctx: Context) => Awaitable<void>): void;
|
86 | /**
|
87 | * Returns route handler for given label. If no label is provided, the default request handler will be returned.
|
88 | */
|
89 | getHandler(label?: string | symbol): (ctx: Context) => Awaitable<void>;
|
90 | /**
|
91 | * Throws when the label already exists in our registry.
|
92 | */
|
93 | private validate;
|
94 | /**
|
95 | * Creates new router instance. This instance can then serve as a `requestHandler` of your crawler.
|
96 | *
|
97 | * ```ts
|
98 | * import { Router, CheerioCrawler, CheerioCrawlingContext } from 'crawlee';
|
99 | *
|
100 | * const router = Router.create<CheerioCrawlingContext>();
|
101 | * router.addHandler('label-a', async (ctx) => {
|
102 | * ctx.log.info('...');
|
103 | * });
|
104 | * router.addDefaultHandler(async (ctx) => {
|
105 | * ctx.log.info('...');
|
106 | * });
|
107 | *
|
108 | * const crawler = new CheerioCrawler({
|
109 | * requestHandler: router,
|
110 | * });
|
111 | * await crawler.run();
|
112 | * ```
|
113 | */
|
114 | static create<Context extends CrawlingContext = CrawlingContext>(): RouterHandler<Context>;
|
115 | }
|
116 | export {};
|
117 | //# sourceMappingURL=router.d.ts.map |
\ | No newline at end of file |