webhooks.js
webhooks.js copied to clipboard
Project: Extract events logic from `@octokit/webhooks` into `@octokit/events`
Not all GitHub Events are sent via webhooks. Some are only available to GitHub Actions, such as the schedule event.
I would like to move all event-related logic into a new @octokit/events package. It will essentially be EventHandler class from /src/event-handler
@octokit/webhooks should only care about webhooks-specific logic
- sign an event payload using a secret
- verifying an event payload with a signature
- Handle http request lifecycles
With that change, we should rename the @octokit/webhooks-definitions to @octokit/events-defintions, too. The definitions should include a flag whether an event is also sent as a Webhook request by GitHub.
This is also a good opportunity to clean up the code base. @octokit/webhooks is one of the olders @octokit modules, a lot has change since, most importantly the rewrite to TypeScript. When creating @octokit/events, we can start with a blank page and do not need to worry about breaking any APIs. Once the module is done, we will be able to remove a big chunk of the code in @octokit/webhooks and instead replace it with the @octokit/events dependency. We can release a breaking change for @octokit/webhooks if necessary at this point.
This will be a larger effort that I need to be involved in, but it's not time critical. If anyone would like to take a lead on the effort, let's discuss in the comments
Can you create the repository so we can plan things there and send an initial implementation
I would like to get involved if possible :)
important note: it seems that not only the events but also the payload schemas may differ between webhooks and GitHub Actions events. I found that while the push webhook event includes commits[][added]/commits[][modified]/commits[][removed] the same properties are not present when handling a push event in GitHub Actions. I've contacted support to find out if this is a mistake or intentionally, but I think it's something we should consider when creating @octokit/events
Update: the payload difference between actions and webhook is indeed by design:
