protect-scr
Version:
Comprehensive client-side security protection for React applications against screenshots, printing, and unauthorized access
89 lines • 3.48 kB
JavaScript
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