kwhitley / itty-router-extras

An assortment of delicious extras for the calorie-light itty-router.
MIT License
84 stars 12 forks source link

Correct type of request not recognized when using withCookies and withContent #19

Open RicardoViteriR opened 2 years ago

RicardoViteriR commented 2 years ago

I have the following function that I cannot get to recognize the request when using the withCookies and withContent middleware.

I tried using import { Request as IttyRequest} from 'itty-router' but I get Property 'content' does not exist on type 'Request'

export async function handleRefresh(req: any): Promise<Response> {
  const payload: RefreshTokenData = req.content ?? {};
}

Can someone tell me how I can get the right type?

mkuchak commented 2 years ago

I ran into this problem today and solved it like this:

Create a path and a file to track custom types src/@types/itty-router/index.d.ts:

interface Request {
  content?: any;
  cookies?: any;
  params?: any;
}

Add this line in tsconfig.json:

 {
   "compilerOptions": {
+    "typeRoots": ["./src/@types"],
   },
 }

For reference: https://github.com/mkuchak/cloudflare-workers-template/blob/main/src/%40types/itty-router/index.d.ts https://github.com/mkuchak/cloudflare-workers-template/blob/main/tsconfig.json#L15

RicardoViteriR commented 2 years ago

Hi @mkuchak, thanks for sharing. Do you know if this solution would extend or replace the Request interface?

mkuchak commented 2 years ago

This extends the interface Request