UNPKG

2.46 kBTypeScriptView Raw
1import type { RequestError } from "@octokit/request-error";
2import type { WebhookEventMap, WebhookEventName } from "@octokit/webhooks-types";
3import type { Logger } from "./createLogger";
4import type { emitterEventNames } from "./generated/webhook-names";
5export type EmitterWebhookEventName = (typeof emitterEventNames)[number];
6export type EmitterWebhookEvent<TEmitterEvent extends EmitterWebhookEventName = EmitterWebhookEventName> = TEmitterEvent extends `${infer TWebhookEvent}.${infer TAction}` ? BaseWebhookEvent<Extract<TWebhookEvent, WebhookEventName>> & {
7 payload: {
8 action: TAction;
9 };
10} : BaseWebhookEvent<Extract<TEmitterEvent, WebhookEventName>>;
11export type EmitterWebhookEventWithStringPayloadAndSignature = {
12 id: string;
13 name: EmitterWebhookEventName;
14 payload: string;
15 signature: string;
16};
17interface BaseWebhookEvent<TName extends WebhookEventName> {
18 id: string;
19 name: TName;
20 payload: WebhookEventMap[TName];
21}
22export interface Options<TTransformed = unknown> {
23 secret?: string;
24 transform?: TransformMethod<TTransformed>;
25 log?: Partial<Logger>;
26}
27type TransformMethod<T> = (event: EmitterWebhookEvent) => T | PromiseLike<T>;
28export type HandlerFunction<TName extends EmitterWebhookEventName, TTransformed> = (event: EmitterWebhookEvent<TName> & TTransformed) => any;
29export type RemoveHandlerFunction<TName extends EmitterWebhookEventName | "*", TTransformed> = (event: EmitterWebhookEvent<Exclude<TName, "*">> & TTransformed) => any;
30type Hooks = {
31 [key: string]: Function[];
32};
33export interface State extends Options<any> {
34 eventHandler?: any;
35 hooks: Hooks;
36 log: Logger;
37}
38/**
39 * Error object with optional properties coming from `octokit.request` errors
40 */
41export type WebhookError = Error & Partial<RequestError>;
42export interface WebhookEventHandlerError extends AggregateError<WebhookError> {
43 event: EmitterWebhookEvent;
44}
45/**
46 * Workaround for TypeScript incompatibility with types exported by aggregate-error.
47 * Credit: https://git.io/JUEEr
48 * @copyright Sindre Sorhus
49 * @license MIT (https://git.io/JUEEK)
50 * @see https://github.com/octokit/webhooks.js/pull/270/files
51 */
52declare class AggregateError<T extends Error = Error> extends Error implements Iterable<T> {
53 readonly name: "AggregateError";
54 constructor(errors: ReadonlyArray<T | {
55 [key: string]: any;
56 } | string>);
57 [Symbol.iterator](): IterableIterator<T>;
58}
59export {};