notification-kit
Version:
A unified notification library for React + Capacitor apps. One API for push notifications, in-app notifications, and local notifications across Web, iOS, and Android.
144 lines • 4.14 kB
TypeScript
import { CSSProperties } from 'react';
import { InAppConfig } from './in-app';
import { FirebaseConfig, OneSignalConfig } from './providers';
export interface NotificationConfig {
provider: 'firebase' | 'onesignal';
config: FirebaseConfig | OneSignalConfig;
inApp?: InAppConfig;
styles?: StyleConfig;
debug?: boolean;
autoInit?: boolean;
serviceWorker?: ServiceWorkerConfig;
storage?: StorageConfig;
analytics?: AnalyticsConfig;
}
export interface StyleConfig {
container?: CSSProperties;
notification?: CSSProperties;
title?: CSSProperties;
message?: CSSProperties;
action?: CSSProperties;
closeButton?: CSSProperties;
zIndex?: number;
fontFamily?: string;
borderRadius?: string;
boxShadow?: string;
backdropFilter?: string;
animation?: AnimationConfig;
}
export interface AnimationConfig {
enter?: string;
exit?: string;
duration?: number;
easing?: string;
}
export interface ServiceWorkerConfig {
path?: string;
scope?: string;
updateViaCache?: 'imports' | 'all' | 'none';
auto?: boolean;
immediate?: boolean;
}
export interface StorageConfig {
prefix?: string;
adapter?: 'preferences' | 'localStorage' | 'sessionStorage';
encryption?: boolean;
ttl?: number;
}
export interface AnalyticsConfig {
enabled?: boolean;
provider?: 'firebase' | 'custom';
customProvider?: AnalyticsProvider;
events?: AnalyticsEvents;
}
export interface AnalyticsProvider {
track: (event: string, data?: Record<string, any>) => void;
identify: (userId: string, traits?: Record<string, any>) => void;
group: (groupId: string, traits?: Record<string, any>) => void;
}
export interface AnalyticsEvents {
notificationSent?: boolean;
notificationDelivered?: boolean;
notificationOpened?: boolean;
notificationDismissed?: boolean;
permissionRequested?: boolean;
permissionGranted?: boolean;
permissionDenied?: boolean;
tokenGenerated?: boolean;
subscriptionChanged?: boolean;
}
export interface InitOptions {
skipCapacitorCheck?: boolean;
skipServiceWorkerCheck?: boolean;
skipPermissionCheck?: boolean;
silent?: boolean;
retryAttempts?: number;
retryDelay?: number;
}
export interface EnvironmentConfig {
development?: Partial<NotificationConfig>;
production?: Partial<NotificationConfig>;
test?: Partial<NotificationConfig>;
}
export interface FeatureFlags {
pushNotifications?: boolean;
localNotifications?: boolean;
inAppNotifications?: boolean;
analytics?: boolean;
channels?: boolean;
actions?: boolean;
richMedia?: boolean;
quietHours?: boolean;
grouping?: boolean;
badging?: boolean;
}
export interface LocalizationConfig {
defaultLanguage?: string;
languages?: Record<string, LocalizationStrings>;
fallbackLanguage?: string;
autoDetect?: boolean;
}
export interface LocalizationStrings {
permissionTitle?: string;
permissionMessage?: string;
permissionAllow?: string;
permissionDeny?: string;
errorTitle?: string;
errorMessage?: string;
successTitle?: string;
successMessage?: string;
retryButton?: string;
dismissButton?: string;
settingsButton?: string;
}
export interface SecurityConfig {
validateOrigin?: boolean;
allowedOrigins?: string[];
requireHttps?: boolean;
validatePayload?: boolean;
sanitizeContent?: boolean;
maxPayloadSize?: number;
rateLimiting?: RateLimitConfig;
}
export interface RateLimitConfig {
enabled?: boolean;
maxRequests?: number;
windowMs?: number;
skipSuccessfulRequests?: boolean;
skipFailedRequests?: boolean;
}
export interface BackupConfig {
enabled?: boolean;
provider?: 'firebase' | 'custom';
customProvider?: BackupProvider;
schedule?: string;
retention?: number;
compression?: boolean;
}
export interface BackupProvider {
backup: (data: any) => Promise<void>;
restore: () => Promise<any>;
delete: (id: string) => Promise<void>;
list: () => Promise<string[]>;
}
//# sourceMappingURL=config.d.ts.map