@hookflo/tern
Version:
A robust, scalable webhook verification framework supporting multiple platforms and signature algorithms
79 lines (78 loc) • 2.62 kB
TypeScript
import { WebhookPlatform, SignatureConfig } from './types';
/**
* Utility functions for the scalable webhook verification framework
*/
/**
* Get the recommended algorithm for a platform
*/
export declare function getRecommendedAlgorithm(platform: WebhookPlatform): string;
/**
* Check if a platform supports a specific algorithm
*/
export declare function platformSupportsAlgorithm(platform: WebhookPlatform, algorithm: string): boolean;
/**
* Get all platforms that support a specific algorithm
*/
export declare function getPlatformsByAlgorithm(algorithm: string): WebhookPlatform[];
/**
* Create a signature config for a platform
*/
export declare function createSignatureConfigForPlatform(platform: WebhookPlatform): SignatureConfig;
/**
* Validate a signature config
*/
export declare function isValidSignatureConfig(config: SignatureConfig): boolean;
/**
* Get platform description
*/
export declare function getPlatformDescription(platform: WebhookPlatform): string;
/**
* Check if a platform uses custom algorithm
*/
export declare function isCustomAlgorithm(platform: WebhookPlatform): boolean;
/**
* Get algorithm statistics
*/
export declare function getAlgorithmStats(): Record<string, number>;
/**
* Get most common algorithm
*/
export declare function getMostCommonAlgorithm(): string;
/**
* Check if a request matches a platform's signature pattern
*/
export declare function detectPlatformFromHeaders(headers: Headers): WebhookPlatform | null;
/**
* Get platform configuration summary
*/
export declare function getPlatformSummary(): Array<{
platform: WebhookPlatform;
algorithm: string;
description: string;
isCustom: boolean;
}>;
/**
* Compare two signature configs
*/
export declare function compareSignatureConfigs(config1: SignatureConfig, config2: SignatureConfig): boolean;
/**
* Clone a signature config
*/
export declare function cloneSignatureConfig(config: SignatureConfig): SignatureConfig;
/**
* Merge signature configs (config2 overrides config1)
*/
export declare function mergeSignatureConfigs(config1: SignatureConfig, config2: Partial<SignatureConfig>): SignatureConfig;
/**
* Validate platform configuration
*/
export declare function validatePlatformConfig(platform: WebhookPlatform): boolean;
/**
* Get all valid platforms
*/
export declare function getValidPlatforms(): WebhookPlatform[];
/**
* Get platforms by algorithm type
*/
export declare function getPlatformsByAlgorithmType(): Record<string, WebhookPlatform[]>;
export declare function cleanHeaders(headers: Record<string, string | undefined>): Record<string, string>;