import { RequestError } from "@octokit/request-error"; import type { WebhookEventMap, WebhookEventName } from "@octokit/webhooks-types"; import { Logger } from "./createLogger"; import type { emitterEventNames } from "./generated/webhook-names"; export type EmitterWebhookEventName = (typeof emitterEventNames)[number]; export type EmitterWebhookEvent = TEmitterEvent extends `${infer TWebhookEvent}.${infer TAction}` ? BaseWebhookEvent> & { payload: { action: TAction; }; } : BaseWebhookEvent>; export type EmitterWebhookEventWithStringPayloadAndSignature = { id: string; name: EmitterWebhookEventName; payload: string; signature: string; }; /** @deprecated */ export type EmitterWebhookEventWithSignature = EmitterWebhookEvent & { signature: string; }; interface BaseWebhookEvent { id: string; name: TName; payload: WebhookEventMap[TName]; } export interface Options { secret?: string; transform?: TransformMethod; log?: Partial; } type TransformMethod = (event: EmitterWebhookEvent) => T | PromiseLike; export type HandlerFunction = (event: EmitterWebhookEvent & TTransformed) => any; export type RemoveHandlerFunction = (event: EmitterWebhookEvent> & TTransformed) => any; type Hooks = { [key: string]: Function[]; }; export interface State extends Options { eventHandler?: any; hooks: Hooks; log: Logger; } /** * Error object with optional properties coming from `octokit.request` errors */ export type WebhookError = Error & Partial; export interface WebhookEventHandlerError extends AggregateError { event: EmitterWebhookEvent; } /** * Workaround for TypeScript incompatibility with types exported by aggregate-error. * Credit: https://git.io/JUEEr * @copyright Sindre Sorhus * @license MIT (https://git.io/JUEEK) * @see https://github.com/octokit/webhooks.js/pull/270/files */ declare class AggregateError extends Error implements Iterable { readonly name: "AggregateError"; constructor(errors: ReadonlyArray); [Symbol.iterator](): IterableIterator; } export {};