UNPKG

@newgenesis/vision

Version:

Professional bot and AI detection library with behavioral analysis, fingerprinting, and adaptive challenges

1 lines 3.52 kB
{"version":3,"sources":["../src/lib/config/VisionConfig.ts"],"names":["VisionConfigManager","theme","enabled","callback","visionConfig","value"],"mappings":";AAYA,IAAMA,CAAAA,CAAN,KAA0B,CAA1B,WAAA,EAAA,CACE,KAAQ,MAAA,CAA6B,CACnC,KAAA,CAAO,OAAA,CACP,WAAY,IACd,CAAA,CAEA,IAAA,CAAQ,SAAA,CAAuD,IAAI,IAAA,CAEnE,SAAA,EAAgC,CAC9B,OAAO,CAAE,GAAG,IAAA,CAAK,MAAO,CAC1B,CAEA,QAAA,CAASC,CAAAA,CAAoB,CAC3B,KAAK,MAAA,CAAO,KAAA,CAAQA,CAAAA,CACpB,IAAA,CAAK,OAAO,UAAA,CAAa,KAAA,CACzB,IAAA,CAAK,eAAA,GACP,CAEA,aAAA,CAAcC,CAAAA,CAAkB,CAC9B,IAAA,CAAK,MAAA,CAAO,UAAA,CAAaA,CAAAA,CACzB,KAAK,eAAA,GACP,CAEA,SAAA,CAAUC,EAAgD,CACxD,OAAA,IAAA,CAAK,SAAA,CAAU,GAAA,CAAIA,CAAQ,CAAA,CACpB,IAAM,IAAA,CAAK,SAAA,CAAU,OAAOA,CAAQ,CAC7C,CAEQ,eAAA,EAAkB,CACxB,IAAA,CAAK,SAAA,CAAU,OAAA,CAAQA,CAAAA,EAAYA,EAAS,IAAA,CAAK,SAAA,EAAW,CAAC,EAC/D,CAGA,iBAAA,EAAiC,CAC/B,OAAK,IAAA,CAAK,MAAA,CAAO,UAAA,CAKb,OAAO,OAAW,GAAA,EACA,MAAA,CAAO,UAAA,CAAW,8BAA8B,EAAE,OAAA,EACnD,IAAA,CAAK,MAAA,CAAO,KAAA,GAAU,OAAA,CAChC,OAAA,CAIJ,IAAA,CAAK,MAAA,CAAO,MAXV,IAAA,CAAK,MAAA,CAAO,KAYvB,CACF,EAEaC,CAAAA,CAAe,IAAIJ,EAG5B,OAAO,OAAW,GAAA,GACnB,MAAA,CAAe,MAAA,CAAS,CACvB,IAAI,KAAA,EAAQ,CACV,OAAOI,EAAa,SAAA,EAAU,CAAE,KAClC,CAAA,CACA,IAAI,KAAA,CAAMC,CAAAA,CAAoB,CAC5BD,CAAAA,CAAa,SAASC,CAAK,EAC7B,CAAA,CACA,IAAI,YAAa,CACf,OAAOD,CAAAA,CAAa,SAAA,GAAY,UAClC,CAAA,CACA,IAAI,UAAA,CAAWC,EAAgB,CAC7BD,CAAAA,CAAa,aAAA,CAAcC,CAAK,EAClC,CACF,CAAA,CAAA","file":"config.mjs","sourcesContent":["/**\n * Vision Global Configuration\n * @package @newgenesis/vision\n */\n\nexport type VisionTheme = 'light' | 'dark' | 'glass';\n\nexport interface VisionGlobalConfig {\n theme: VisionTheme;\n autoDetect: boolean; // Auto-detect system theme\n}\n\nclass VisionConfigManager {\n private config: VisionGlobalConfig = {\n theme: 'glass', // Default theme\n autoDetect: true\n };\n\n private listeners: Set<(config: VisionGlobalConfig) => void> = new Set();\n\n getConfig(): VisionGlobalConfig {\n return { ...this.config };\n }\n\n setTheme(theme: VisionTheme) {\n this.config.theme = theme;\n this.config.autoDetect = false; // Disable auto-detect when manually set\n this.notifyListeners();\n }\n\n setAutoDetect(enabled: boolean) {\n this.config.autoDetect = enabled;\n this.notifyListeners();\n }\n\n subscribe(callback: (config: VisionGlobalConfig) => void) {\n this.listeners.add(callback);\n return () => this.listeners.delete(callback);\n }\n\n private notifyListeners() {\n this.listeners.forEach(callback => callback(this.getConfig()));\n }\n\n // Get effective theme (considering auto-detect)\n getEffectiveTheme(): VisionTheme {\n if (!this.config.autoDetect) {\n return this.config.theme;\n }\n\n // Auto-detect system preference\n if (typeof window !== 'undefined') {\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n if (prefersDark && this.config.theme === 'glass') {\n return 'glass'; // Keep glass in dark mode\n }\n }\n\n return this.config.theme;\n }\n}\n\nexport const visionConfig = new VisionConfigManager();\n\n// Global Vision object for npm usage\nif (typeof window !== 'undefined') {\n (window as any).Vision = {\n get theme() {\n return visionConfig.getConfig().theme;\n },\n set theme(value: VisionTheme) {\n visionConfig.setTheme(value);\n },\n get autoDetect() {\n return visionConfig.getConfig().autoDetect;\n },\n set autoDetect(value: boolean) {\n visionConfig.setAutoDetect(value);\n }\n };\n}\n"]}