UNPKG

protect-scr

Version:

Comprehensive client-side security protection for React applications against screenshots, printing, and unauthorized access

89 lines 3.48 kB
import { SecurityManager } from './core/SecurityManager'; import { getPresetConfig } from './presets'; // Core classes export { SecurityManager } from './core/SecurityManager'; export { DevToolsDetector } from './core/DevToolsDetector'; export { ScreenshotProtector } from './core/ScreenshotProtector'; export { KeyboardProtector } from './core/KeyboardProtector'; export { PrintProtector } from './core/PrintProtector'; export { WatermarkManager } from './core/WatermarkManager'; // React hooks export { useSecurityShield, useRouteSecurityShield, useConditionalSecurityShield, useSecurityEvents } from './react/hooks'; // React components export { SecurityProvider, RouteSecurityProvider, SecurePage, SecurityStatus, SecurityToggle, WatermarkOverlay, SecurityWarning } from './react/components'; // Presets export { securityPresets, getPresetConfig, listAvailablePresets } from './presets'; // Utility functions export const createSecurityManager = (config) => { return new SecurityManager(config); }; export const enableGlobalSecurity = (config) => { const manager = new SecurityManager(config); manager.enable(); return manager; }; export const disableGlobalSecurity = (manager) => { manager.disable(); }; // Quick setup functions export const setupBasicSecurity = () => enableGlobalSecurity(getPresetConfig('basic')); export const setupStandardSecurity = () => enableGlobalSecurity(getPresetConfig('standard')); export const setupMaximumSecurity = () => enableGlobalSecurity(getPresetConfig('maximum')); export const setupKioskMode = () => enableGlobalSecurity(getPresetConfig('kiosk')); export const setupPresentationMode = () => enableGlobalSecurity(getPresetConfig('presentation')); export const setupExamMode = () => enableGlobalSecurity(getPresetConfig('exam')); // Browser detection utilities export const getBrowserInfo = () => { const userAgent = navigator.userAgent; const isChrome = /Chrome/.test(userAgent) && /Google Inc/.test(navigator.vendor); const isFirefox = /Firefox/.test(userAgent); const isSafari = /Safari/.test(userAgent) && /Apple Computer/.test(navigator.vendor); const isEdge = /Edg/.test(userAgent); const isOpera = /OPR/.test(userAgent); const isMobile = /Mobi|Android/i.test(userAgent); const isIOS = /iPad|iPhone|iPod/.test(userAgent); const isAndroid = /Android/.test(userAgent); return { isChrome, isFirefox, isSafari, isEdge, isOpera, isMobile, isIOS, isAndroid, userAgent }; }; // Configuration helpers export const mergeConfigs = (...configs) => { return configs.reduce((merged, config) => ({ ...merged, ...config }), {}); }; export const validateConfig = (config) => { // Basic validation if (typeof config !== 'object' || config === null) { return false; } // Check for required types const booleanFields = [ 'disableRightClick', 'disableTextSelection', 'disableKeyboardShortcuts', 'preventScreenshots', 'preventPrinting', 'preventPDFGeneration', 'preventDevTools', 'blurOnFocusLoss', 'showWarningOnProtectedAction' ]; for (const field of booleanFields) { if (config[field] !== undefined && typeof config[field] !== 'boolean') { return false; } } return true; }; // Version info export const version = '1.0.0'; //# sourceMappingURL=index.js.map