@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
text/typescript
/**
* @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';