diff --git a/src/types.ts b/src/types.ts index 5716b8e7..d177850f 100644 --- a/src/types.ts +++ b/src/types.ts @@ -68,7 +68,10 @@ export interface State extends Options { /** * Error object with optional properties coming from `octokit.request` errors */ -export type WebhookError = Error & Partial; +export type WebhookError = Error & + Partial & { + event?: EmitterWebhookEventWithStringPayloadAndSignature | undefined; + }; export interface AggregateWebhookError extends AggregateError { errors: WebhookError[]; diff --git a/src/verify-and-receive.ts b/src/verify-and-receive.ts index f89ae19e..31ef5edb 100644 --- a/src/verify-and-receive.ts +++ b/src/verify-and-receive.ts @@ -23,11 +23,12 @@ export async function verifyAndReceive( if (!matchesSignature) { const error = new Error( "[@octokit/webhooks] signature does not match event payload and secret", - ); + ) as WebhookError; - return state.eventHandler.receive( - Object.assign(error, { event, status: 400 }) as WebhookError, - ); + error.event = event; + error.status = 400; + + return state.eventHandler.receive(error); } let payload: EmitterWebhookEvent["payload"];