fix: explicit HTTPRequest.resourceType type defs (#6882)
We can use the new `Lowercase` util in TS4 to avoid duplicating the type and instead lowercase it. Note we still need to do the work so callbacks are typed correctly: ```ts page.on('request', request => { }) ``` Right now `request` is `any`, whereas it should be a `puppeteer.HTTPRequest`. You can manually set the type for now, and I will work on adding types for events so that this is done automatically by the compiler in a future release. Fixes #6854.
This commit is contained in:
parent
8adf5b467d
commit
ff26c62647
@ -45,6 +45,13 @@ export interface ResponseForRequest {
|
||||
body: string | Buffer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Resource types for HTTPRequests as perceived by the rendering engine.
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export type ResourceType = Lowercase<Protocol.Network.ResourceType>;
|
||||
|
||||
/**
|
||||
*
|
||||
* Represents an HTTP request sent by a page.
|
||||
@ -108,7 +115,7 @@ export class HTTPRequest {
|
||||
private _allowInterception: boolean;
|
||||
private _interceptionHandled = false;
|
||||
private _url: string;
|
||||
private _resourceType: string;
|
||||
private _resourceType: ResourceType;
|
||||
|
||||
private _method: string;
|
||||
private _postData?: string;
|
||||
@ -133,7 +140,7 @@ export class HTTPRequest {
|
||||
this._interceptionId = interceptionId;
|
||||
this._allowInterception = allowInterception;
|
||||
this._url = event.request.url;
|
||||
this._resourceType = event.type.toLowerCase();
|
||||
this._resourceType = event.type.toLowerCase() as ResourceType;
|
||||
this._method = event.request.method;
|
||||
this._postData = event.request.postData;
|
||||
this._frame = frame;
|
||||
@ -153,17 +160,8 @@ export class HTTPRequest {
|
||||
/**
|
||||
* Contains the request's resource type as it was perceived by the rendering
|
||||
* engine.
|
||||
* @remarks
|
||||
* @returns one of the following: `document`, `stylesheet`, `image`, `media`,
|
||||
* `font`, `script`, `texttrack`, `xhr`, `fetch`, `eventsource`, `websocket`,
|
||||
* `manifest`, `other`.
|
||||
*/
|
||||
resourceType(): string {
|
||||
// TODO (@jackfranklin): protocol.d.ts has a type for this, but all the
|
||||
// string values are uppercase. The Puppeteer docs explicitly say the
|
||||
// potential values are all lower case, and the constructor takes the event
|
||||
// type and calls toLowerCase() on it, so we can't reuse the type from the
|
||||
// protocol.d.ts. Why do we lower case?
|
||||
resourceType(): ResourceType {
|
||||
return this._resourceType;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user