@octokit/webhooks
Version:
GitHub webhook events toolset for Node.js
63 lines (62 loc) • 2.61 kB
TypeScript
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 declare type EmitterWebhookEventName = typeof emitterEventNames[number];
export declare type EmitterWebhookEvent<TEmitterEvent extends EmitterWebhookEventName = EmitterWebhookEventName> = TEmitterEvent extends `${infer TWebhookEvent}.${infer TAction}` ? BaseWebhookEvent<Extract<TWebhookEvent, WebhookEventName>> & {
payload: {
action: TAction;
};
} : BaseWebhookEvent<Extract<TEmitterEvent, WebhookEventName>>;
export declare type EmitterWebhookEventWithStringPayloadAndSignature = {
id: string;
name: EmitterWebhookEventName;
payload: string;
signature: string;
};
export declare type EmitterWebhookEventWithSignature = EmitterWebhookEvent & {
signature: string;
};
interface BaseWebhookEvent<TName extends WebhookEventName> {
id: string;
name: TName;
payload: WebhookEventMap[TName];
}
export interface Options<TTransformed = unknown> {
secret?: string;
transform?: TransformMethod<TTransformed>;
log?: Partial<Logger>;
}
declare type TransformMethod<T> = (event: EmitterWebhookEvent) => T | PromiseLike<T>;
export declare type HandlerFunction<TName extends EmitterWebhookEventName, TTransformed> = (event: EmitterWebhookEvent<TName> & TTransformed) => any;
export declare type RemoveHandlerFunction<TName extends EmitterWebhookEventName | "*", TTransformed> = (event: EmitterWebhookEvent<Exclude<TName, "*">> & TTransformed) => any;
declare type Hooks = {
[key: string]: Function[];
};
export interface State extends Options<any> {
eventHandler?: any;
hooks: Hooks;
log: Logger;
}
/**
* Error object with optional properties coming from `octokit.request` errors
*/
export declare type WebhookError = Error & Partial<RequestError>;
export interface WebhookEventHandlerError extends AggregateError<WebhookError> {
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<T extends Error = Error> extends Error implements Iterable<T> {
readonly name: "AggregateError";
constructor(errors: ReadonlyArray<T | {
[key: string]: any;
} | string>);
[Symbol.iterator](): IterableIterator<T>;
}
export {};