67 lines
2.1 KiB
TypeScript
67 lines
2.1 KiB
TypeScript
|
import { type Update } from "../types.js";
|
||
|
/**
|
||
|
* HTTP Web frameworks for which grammY provides compatible callback out of the
|
||
|
* box.
|
||
|
*/
|
||
|
export type SupportedFrameworks = keyof typeof adapters;
|
||
|
/**
|
||
|
* Abstraction over a request-response cycle, providing access to the update, as
|
||
|
* well as a mechanism for responding to the request and to end it.
|
||
|
*/
|
||
|
export interface ReqResHandler {
|
||
|
/**
|
||
|
* The update object sent from Telegram, usually resolves the request's JSON
|
||
|
* body
|
||
|
*/
|
||
|
update: Promise<Update>;
|
||
|
/**
|
||
|
* X-Telegram-Bot-Api-Secret-Token header of the request, or undefined if
|
||
|
* not present
|
||
|
*/
|
||
|
header?: string;
|
||
|
/**
|
||
|
* Ends the request immediately without body, called after every request
|
||
|
* unless a webhook reply was performed
|
||
|
*/
|
||
|
end?: () => void;
|
||
|
/**
|
||
|
* Sends the specified JSON as a payload in the body, used for webhook
|
||
|
* replies
|
||
|
*/
|
||
|
respond: (json: string) => unknown | Promise<unknown>;
|
||
|
/**
|
||
|
* Responds that the request is unauthorized due to mismatching
|
||
|
* X-Telegram-Bot-Api-Secret-Token headers
|
||
|
*/
|
||
|
unauthorized: () => unknown | Promise<unknown>;
|
||
|
/**
|
||
|
* Some frameworks (e.g. Deno's std/http `listenAndServe`) assume that
|
||
|
* handler returns something
|
||
|
*/
|
||
|
handlerReturn?: any;
|
||
|
}
|
||
|
/**
|
||
|
* Middleware for a web framework. Creates a request-response handler for a
|
||
|
* request. The handler will be used to integrate with the compatible framework.
|
||
|
*/
|
||
|
export type FrameworkAdapter = (...args: any[]) => ReqResHandler;
|
||
|
export declare const adapters: {
|
||
|
express: FrameworkAdapter;
|
||
|
koa: FrameworkAdapter;
|
||
|
fastify: FrameworkAdapter;
|
||
|
serveHttp: FrameworkAdapter;
|
||
|
"std/http": FrameworkAdapter;
|
||
|
oak: FrameworkAdapter;
|
||
|
http: FrameworkAdapter;
|
||
|
https: FrameworkAdapter;
|
||
|
"aws-lambda": FrameworkAdapter;
|
||
|
"aws-lambda-async": FrameworkAdapter;
|
||
|
azure: FrameworkAdapter;
|
||
|
"next-js": FrameworkAdapter;
|
||
|
sveltekit: FrameworkAdapter;
|
||
|
cloudflare: FrameworkAdapter;
|
||
|
"cloudflare-mod": FrameworkAdapter;
|
||
|
hono: FrameworkAdapter;
|
||
|
worktop: FrameworkAdapter;
|
||
|
};
|