UNPKG

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