prerender / prerender-node

Express middleware for prerendering javascript-rendered pages on the fly for SEO
914 stars 182 forks source link

Provide typescript type definitions #220

Open Sytten opened 2 years ago

Sytten commented 2 years ago

Hi! It would be nice if you could provide a .d.ts file for typescript folks like me :) Thanks

Sytten commented 2 years ago

I did a first pass:

declare module 'prerender-node' {
  import { NextFunction, Request, Response } from 'express';

  declare function prerender(
    req: Request,
    res: Response,
    next: NextFunction
  ): void;

  declare namespace prerender {
    type Done = (page?: { status: number; body: string | Buffer }) => void;
    type Set = {
      prerenderToken: string;
      beforeRender: (req: Request, done: Done) => void;
      afterRender: (err: any, req: Request, prerenderRes: any) => void;
      protocol: 'http' | 'https';
      host: string;
      forwardHeaders: boolean;
      prerenderServerRequestOptions: Record<string, any>;
    };
    declare function set<T extends keyof Set>(
      name: T,
      value: Set[T]
    ): typeof prerender;

    declare function whitelisted(
      whitelist: string | string[]
    ): typeof prerender;
    declare function blacklisted(
      blacklist: string | string[]
    ): typeof prerender;
  }

  export = prerender;
}
gzurbach commented 1 year ago

@Sytten thanks for providing these definitions 👍

Just a small correction:

type Done = (err?: Error | null, page?: { status?: number; body?: string | Buffer }) => void;