UNPKG

@stardyn/angular-updater

Version:

Angular Version Tracker Package - Lightweight, configurable version tracking and update notification service for Angular applications with Service Worker support

1 lines 13.1 kB
{"version":3,"file":"index.mjs","sources":["../../../src/app-version-tracker.ts","../../../src/app-version-tracker-factory.ts","../../../src/public-api.ts","../../../src/index.ts"],"sourcesContent":["import {Injectable, NgZone, Optional} from \"@angular/core\";\r\nimport {interval} from \"rxjs\";\r\nimport {SwUpdate} from \"@angular/service-worker\";\r\nimport {ModuleConsoleService} from \"@stardyn/angular-console\";\r\nimport {ActionDialogType, ActionTheme, XConUIActionsService} from \"@stardyn/angular-ui-actions\";\r\n\r\nexport interface XconVersionTrackerConfig {\r\n debugMode?: boolean;\r\n checkInterval?: number;\r\n theme: ActionTheme\r\n}\r\n\r\n@Injectable()\r\nexport class XconVersionTrackerService {\r\n\r\n private config: XconVersionTrackerConfig = {\r\n checkInterval: 60,\r\n debugMode: false,\r\n theme: ActionTheme.LIGHT\r\n };\r\n\r\n private versionCheckIntervalSeconds = 60;\r\n private dconsole: ModuleConsoleService;\r\n\r\n constructor(private actionsService: XConUIActionsService,\r\n private swUpdate: SwUpdate,\r\n private zone: NgZone,\r\n @Optional() consoleService?: ModuleConsoleService) {\r\n\r\n if (!consoleService) {\r\n this.dconsole = {\r\n debug: (...args: any[]) => console.debug('[XconVersionTracker]', ...args),\r\n info: (...args: any[]) => console.info('[XconVersionTracker]', ...args),\r\n warn: (...args: any[]) => console.warn('[XconVersionTracker]', ...args),\r\n error: (...args: any[]) => console.error('[XconVersionTracker]', ...args),\r\n logError: (message: string, error?: Error) => console.error('[XconVersionTracker]', message, error),\r\n logServiceInit: (name: string, config?: any) => console.info(`[XconVersionTracker] Service initialized: ${name}`, config),\r\n isDebugEnabled: () => true\r\n } as any;\r\n } else {\r\n this.dconsole = consoleService;\r\n }\r\n\r\n this.dconsole?.debug('XconVersionTracker service initialized');\r\n }\r\n\r\n public configure(config: XconVersionTrackerConfig): void {\r\n this.config = {...this.config, ...config};\r\n this.dconsole.debug('XconVersionTracker configured', this.config);\r\n }\r\n\r\n initialize(): void {\r\n if (!this.swUpdate.isEnabled) return;\r\n\r\n const self = this;\r\n\r\n this.dconsole.info(`Version Tracker Initializing`);\r\n\r\n this.zone.runOutsideAngular(() => {\r\n interval(this.versionCheckIntervalSeconds * 1000).subscribe(() => {\r\n // console.log('Checking for SW Update');\r\n this.swUpdate\r\n .checkForUpdate()\r\n .then((versionFound) => {\r\n // console.log('CHECK RESULT:', versionFound);\r\n })\r\n .catch(() => this.dconsole.error('SW Update check failed?'));\r\n });\r\n });\r\n\r\n let upTheme = this.config.theme || this.actionsService.DefaultTheme;\r\n\r\n this.swUpdate.versionUpdates.subscribe((versionEvent) => {\r\n switch (versionEvent.type) {\r\n case 'VERSION_DETECTED':\r\n this.dconsole.info(`New application version found, beginning download: ${versionEvent.version.hash}`);\r\n break;\r\n case 'VERSION_READY':\r\n this.dconsole.info(`New app version ready: ${versionEvent.latestVersion.hash}`);\r\n\r\n self.actionsService.showMessage(\"New version available. Would you like to update?\", ActionDialogType.YesNo, (accept, item) => {\r\n if (!accept) {\r\n return;\r\n }\r\n window.location.reload();\r\n }, {theme: upTheme});\r\n break;\r\n }\r\n });\r\n }\r\n}","import {EnvironmentProviders, inject, NgZone, provideAppInitializer, Provider} from '@angular/core';\r\nimport {ModuleConsoleService} from \"@stardyn/angular-console\";\r\nimport {XconVersionTrackerConfig, XconVersionTrackerService} from \"./app-version-tracker\";\r\nimport {SwUpdate} from \"@angular/service-worker\";\r\nimport {ActionTheme, XConUIActionsService} from \"@stardyn/angular-ui-actions\";\r\n\r\n// Singleton instance to prevent multiple instances\r\nlet versionTrackerInstance: XconVersionTrackerService | null = null;\r\n\r\nfunction createXconVersionTrackerService(\r\n config: XconVersionTrackerConfig,\r\n actionsService: XConUIActionsService,\r\n swUpdate: SwUpdate,\r\n ngZone: NgZone\r\n): XconVersionTrackerService {\r\n // Return existing instance if available\r\n if (versionTrackerInstance) {\r\n console.debug('[VersionTrackerFactory] Returning existing XconVersionTracker instance');\r\n return versionTrackerInstance;\r\n }\r\n\r\n // Create ModuleConsoleService instance\r\n const moduleConsole = new ModuleConsoleService();\r\n\r\n moduleConsole.configure({\r\n moduleName: 'XconVersionTracker',\r\n version: require('../package.json').version,\r\n debugMode: config.debugMode ?? true,\r\n showTimestamp: true\r\n });\r\n\r\n // Create XconVersionTrackerService instance\r\n versionTrackerInstance = new XconVersionTrackerService(\r\n actionsService,\r\n swUpdate,\r\n ngZone,\r\n moduleConsole\r\n );\r\n\r\n // Configure VersionTracker\r\n versionTrackerInstance.configure({\r\n checkInterval: config.checkInterval || 60,\r\n debugMode: config.debugMode ?? false,\r\n theme: config.theme || ActionTheme.LIGHT,\r\n });\r\n\r\n moduleConsole.logServiceInit('[VersionTrackerFactory] Creating new XconVersionTracker instance', {\r\n checkInterval: config.checkInterval || 60,\r\n debugMode: config.debugMode ?? false,\r\n instanceId: 'SINGLETON'\r\n });\r\n\r\n return versionTrackerInstance;\r\n}\r\n\r\n/**\r\n * Provider factory class for creating XconVersionTracker services\r\n */\r\nclass ProvideXconVersionTracker {\r\n /**\r\n * Provide XconVersionTrackerService with configuration\r\n * @param config Version tracker configuration\r\n * @returns Array of Angular Providers and EnvironmentProviders\r\n */\r\n static forRoot(config: XconVersionTrackerConfig): (Provider | EnvironmentProviders)[] {\r\n return [\r\n // Provide XconVersionTrackerService (Singleton)\r\n {\r\n provide: XconVersionTrackerService,\r\n useFactory: (\r\n actionsService: XConUIActionsService,\r\n swUpdate: SwUpdate,\r\n ngZone: NgZone\r\n ) => {\r\n return createXconVersionTrackerService(config, actionsService, swUpdate, ngZone);\r\n },\r\n deps: [XConUIActionsService, SwUpdate, NgZone]\r\n },\r\n provideAppInitializer(() => {\r\n return inject(XconVersionTrackerService).initialize();\r\n })\r\n ];\r\n }\r\n}\r\n\r\n/**\r\n * Simple provider function for XconVersionTrackerService\r\n * @param config Version tracker configuration\r\n * @returns Angular Provider and EnvironmentProviders array\r\n */\r\nexport function provideXconVersionTracker(config: XconVersionTrackerConfig): (Provider | EnvironmentProviders)[] {\r\n return ProvideXconVersionTracker.forRoot(config);\r\n}\r\n\r\n/**\r\n * Reset singleton instance (for testing or re-configuration)\r\n */\r\nexport function resetVersionTrackerInstance(): void {\r\n console.debug('[VersionTrackerFactory] Resetting singleton instance');\r\n if (versionTrackerInstance) {\r\n // Cleanup existing instance if needed\r\n try {\r\n // Stop any running timers/subscriptions\r\n (versionTrackerInstance as any).cleanup?.();\r\n } catch (error) {\r\n console.warn('[VersionTrackerFactory] Error during cleanup:', error);\r\n }\r\n }\r\n versionTrackerInstance = null;\r\n}","// Main entry point for @stardyn/angular-updater package\r\nexport * from './app-version-tracker';\r\nexport * from './app-version-tracker-factory';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}