UNPKG

@jager-ai/holy-pwa

Version:

Progressive Web App (PWA) utilities and templates extracted from Holy Habit project with manifest generation, service worker management, and offline support

85 lines (68 loc) 2.49 kB
/** * @mvp-factory/holy-pwa * * Progressive Web App utilities and templates * Extracted from Holy Habit PWA implementation */ // Main classes export { ManifestGenerator } from './templates/ManifestGenerator'; export { ServiceWorkerGenerator } from './templates/ServiceWorkerGenerator'; export { PWAManager } from './utils/PWAManager'; // Types and interfaces export * from './types/PWA'; // Default exports for convenience import { ManifestGenerator } from './templates/ManifestGenerator'; import { ServiceWorkerGenerator } from './templates/ServiceWorkerGenerator'; import { PWAManager } from './utils/PWAManager'; export default { ManifestGenerator, ServiceWorkerGenerator, PWAManager }; // Factory functions for quick setup export function createManifest(config: any) { return new ManifestGenerator(config); } export function createServiceWorker(config: any) { return new ServiceWorkerGenerator(config); } export function createPWAManager(events?: any) { return new PWAManager(events); } // Quick setup for common PWA types export const HolyPWA = { // Create manifest generator with templates createManifest: (config: any) => new ManifestGenerator(config), // Create service worker generator with templates createServiceWorker: (config: any) => new ServiceWorkerGenerator(config), // Create PWA manager createManager: (events?: any) => new PWAManager(events), // Get manifest templates manifestTemplates: ManifestGenerator.createTemplates(), // Get service worker templates serviceWorkerTemplates: ServiceWorkerGenerator.createTemplates(), // Utility functions utils: { isStandalone: () => { return window.matchMedia('(display-mode: standalone)').matches || (window.navigator as any).standalone === true; }, isServiceWorkerSupported: () => { return 'serviceWorker' in navigator; }, isPWAInstallable: () => { return 'serviceWorker' in navigator && 'PushManager' in window && 'indexedDB' in window; }, getDisplayMode: () => { if (window.matchMedia('(display-mode: standalone)').matches) return 'standalone'; if (window.matchMedia('(display-mode: fullscreen)').matches) return 'fullscreen'; if (window.matchMedia('(display-mode: minimal-ui)').matches) return 'minimal-ui'; return 'browser'; } } }; // Version info export const version = '1.0.0'; export const name = '@mvp-factory/holy-pwa';