{"version":3,"file":"rxap-service-worker.mjs","sources":["../../../../../packages/angular/service-worker/src/lib/service-worker-update-dialog/service-worker-update-dialog.component.ts","../../../../../packages/angular/service-worker/src/lib/service-worker-update-dialog/service-worker-update-dialog.component.html","../../../../../packages/angular/service-worker/src/lib/auto-update.service.ts","../../../../../packages/angular/service-worker/src/lib/check-for-update.service.ts","../../../../../packages/angular/service-worker/src/lib/dialog-update.service.ts","../../../../../packages/angular/service-worker/src/lib/log-update.service.ts","../../../../../packages/angular/service-worker/src/lib/snackbar-update.service.ts","../../../../../packages/angular/service-worker/src/lib/provide-service-worker-updater.ts","../../../../../packages/angular/service-worker/src/lib/unregister-service-worker.ts","../../../../../packages/angular/service-worker/src/index.ts","../../../../../packages/angular/service-worker/src/rxap-service-worker.ts"],"sourcesContent":["import {\n  NgSwitch,\n  NgSwitchCase,\n} from '@angular/common';\nimport {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  inject,\n  InjectionToken,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { VersionEvent } from '@angular/service-worker';\n\nexport const UPDATE_AVAILABLE_EVENT = new InjectionToken<VersionEvent>('UPDATE_AVAILABLE_EVENT');\n\n@Component({\n    selector: 'rxap-service-worker-update-dialog',\n    imports: [\n        NgSwitch,\n        NgSwitchCase,\n    ],\n    templateUrl: './service-worker-update-dialog.component.html',\n    styleUrls: ['./service-worker-update-dialog.component.scss']\n})\nexport class ServiceWorkerUpdateDialogComponent implements AfterViewInit {\n\n  @ViewChild('dialog', { static: true })\n  public dialog!: ElementRef<HTMLDialogElement>;\n\n  @Output()\n  public closeDialog = new EventEmitter<void>();\n\n  public readonly updateAvailableEvent = inject(UPDATE_AVAILABLE_EVENT);\n\n  ngAfterViewInit() {\n    this.dialog.nativeElement.showModal();\n  }\n\n  close() {\n    this.dialog.nativeElement.close();\n    this.closeDialog.emit();\n  }\n\n}\n","<dialog #dialog\n        class=\"max-w-6xl rounded overflow-auto drop-shadow-2xl bg-white text-black dark:bg-black dark:text-white flex flex-col gap-3 p-6\">\n  <h2 class=\"text-2xl font-bold\" i18n>A new application version is available</h2>\n  <ng-container [ngSwitch]=\"$any(updateAvailableEvent).type\">\n    <table *ngSwitchCase=\"'VERSION_DETECTED'\" class=\"table-auto\">\n      <tr>\n        <th i18n>Version hash</th>\n        <td>{{$any(updateAvailableEvent)['version'].hash}}</td>\n      </tr>\n    </table>\n    <table *ngSwitchCase=\"'VERSION_INSTALLATION_FAILED'\" class=\"table-auto\">\n      <tr>\n        <th i18n>Version hash</th>\n        <td>{{$any(updateAvailableEvent)['version'].hash}}</td>\n      </tr>\n      <tr>\n        <th i18n>Version installation error</th>\n        <td>{{$any(updateAvailableEvent)['error']}}</td>\n      </tr>\n    </table>\n    <table *ngSwitchCase=\"'VERSION_READY'\" class=\"table-auto\">\n      <tr>\n        <th i18n>Current version hash</th>\n        <td>{{$any(updateAvailableEvent)['currentVersion'].hash}}</td>\n      </tr>\n      <tr>\n        <th i18n>Last version hash</th>\n        <td>{{$any(updateAvailableEvent)['latestVersion'].hash}}</td>\n      </tr>\n    </table>\n    <table *ngSwitchCase=\"'NoNewVersionDetectedEvent'\" class=\"table-auto\">\n      <tr>\n        <th i18n>Version hash</th>\n        <td>{{$any(updateAvailableEvent)['version'].hash}}</td>\n      </tr>\n    </table>\n  </ng-container>\n  <button (click)=\"close()\" class=\"px-4 py-2 rounded bg-primary-500\" i18n>Update</button>\n</dialog>\n","import {\n  Inject,\n  Injectable,\n} from '@angular/core';\nimport { SwUpdate } from '@angular/service-worker';\nimport { filter } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class AutoUpdateService {\n\n  constructor(\n    @Inject(SwUpdate)\n    private readonly updates: SwUpdate,\n  ) {\n  }\n\n  public start(): void {\n    console.debug('start auto update service');\n    this.updates.versionUpdates\n      .pipe(\n        filter(event => event.type === 'VERSION_READY'),\n        tap(() => console.log('start auto app update')),\n        tap(() =>\n          this.updates.activateUpdate().then(() => {\n            console.log('auto app update completed. Reload app.');\n            document.location.reload();\n          }),\n        ),\n      )\n      .subscribe();\n  }\n\n}\n","import {\n  Inject,\n  Injectable,\n} from '@angular/core';\nimport { SwUpdate } from '@angular/service-worker';\nimport { LifeCycleService } from '@rxap/life-cycle';\nimport { interval } from 'rxjs';\nimport {\n  startWith,\n  tap,\n} from 'rxjs/operators';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class CheckForUpdateService {\n\n  private _started = false;\n\n  constructor(\n    @Inject(LifeCycleService) private readonly lifeCycle: LifeCycleService,\n    @Inject(SwUpdate) private readonly updates: SwUpdate,\n  ) {\n  }\n\n  public start(): void {\n    if (this._started) {\n      console.warn('check for update already started');\n      return;\n    }\n    this._started = true;\n    if (this.updates.isEnabled) {\n\n      console.debug('start check for update');\n\n      this.updates.checkForUpdate();\n\n      this\n        .lifeCycle\n        .whenReady(() => interval(15 * 60 * 1000)\n          .pipe(\n            startWith(null),\n            tap(() => console.log('check for update')),\n            tap(() => this.updates.checkForUpdate()),\n          ),\n        )\n        .subscribe();\n\n    } else {\n      console.warn('service worker updates are not enabled');\n    }\n  }\n\n}\n","import {\n  ApplicationRef,\n  createComponent,\n  Inject,\n  Injectable,\n  Injector,\n} from '@angular/core';\nimport {\n  SwUpdate,\n  VersionEvent,\n} from '@angular/service-worker';\nimport {\n  filter,\n  Observable,\n} from 'rxjs';\nimport {\n  concatMap,\n  tap,\n} from 'rxjs/operators';\nimport {\n  ServiceWorkerUpdateDialogComponent,\n  UPDATE_AVAILABLE_EVENT,\n} from './service-worker-update-dialog/service-worker-update-dialog.component';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class DialogUpdateService {\n  constructor(\n    @Inject(ApplicationRef)\n    private readonly applicationRef: ApplicationRef,\n    @Inject(SwUpdate)\n    private readonly updates: SwUpdate,\n  ) {\n  }\n\n  public start(): void {\n    console.debug('start dialog update service');\n    this.updates.versionUpdates\n        .pipe(\n          filter(event => event.type === 'VERSION_READY'),\n          concatMap((event) => this.openUpdateDialog(event)),\n          tap(() => console.log('start app update')),\n          tap(() =>\n            this.updates.activateUpdate().then(() => {\n              console.log('app update completed. Reload app.');\n              document.location.reload();\n            }),\n          ),\n        )\n        .subscribe();\n  }\n\n  private openUpdateDialog(event: VersionEvent): Observable<void> {\n    console.debug('open update dialog');\n    const body = document.getElementsByTagName('body')[0];\n    const div = document.createElement('div');\n    body.appendChild(div);\n    const componentRef = createComponent(ServiceWorkerUpdateDialogComponent, {\n      hostElement: div,\n      environmentInjector: this.applicationRef.injector,\n      elementInjector: Injector.create({\n        providers: [\n          {\n            provide: UPDATE_AVAILABLE_EVENT,\n            useValue: event,\n          },\n        ],\n      }),\n    });\n    this.applicationRef.attachView(componentRef.hostView);\n\n    return componentRef.instance.closeDialog.pipe(\n      tap(() => {\n        componentRef.destroy();\n        body.removeChild(div);\n        div.remove();\n      }),\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { SwUpdate } from '@angular/service-worker';\nimport { filter } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class LogUpdateService {\n\n  constructor(private readonly updates: SwUpdate) {\n  }\n\n  public start() {\n    console.debug('start log update');\n    this.updates.versionUpdates.pipe(\n      filter(event => event.type !== 'NO_NEW_VERSION_DETECTED'),\n    ).subscribe(event => {\n      console.log('version update event', event);\n    });\n  }\n\n}\n\n","import {\n  inject,\n  Injectable,\n} from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport {\n  SwUpdate,\n  VersionEvent,\n} from '@angular/service-worker';\nimport {\n  filter,\n  Observable,\n  take,\n} from 'rxjs';\nimport {\n  concatMap,\n  tap,\n} from 'rxjs/operators';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class SnackbarUpdateService {\n  private readonly snackBar = inject(MatSnackBar);\n  private readonly updates = inject(SwUpdate);\n\n  public start(): void {\n    console.debug('start dialog update service');\n    this.updates.versionUpdates\n        .pipe(\n          filter(event => event.type === 'VERSION_READY'),\n          concatMap((event) => this.openUpdateSnackBar(event)),\n          tap(() => console.log('start app update')),\n          tap(() =>\n            this.updates.activateUpdate().then(() => {\n              console.log('app update completed. Reload app.');\n              document.location.reload();\n            }),\n          ),\n        )\n        .subscribe();\n  }\n\n  private openUpdateSnackBar(event: VersionEvent): Observable<any> {\n    console.debug('open update snack bar');\n    const ref = this.snackBar.open($localize`A new version is available`, $localize`Update`);\n    return ref.afterDismissed().pipe(\n      take(1),\n    );\n  }\n}\n","import {\n  Provider,\n  inject,\n  provideAppInitializer,\n  EnvironmentProviders,\n} from '@angular/core';\nimport { AutoUpdateService } from './auto-update.service';\nimport { CheckForUpdateService } from './check-for-update.service';\nimport { DialogUpdateService } from './dialog-update.service';\nimport { LogUpdateService } from './log-update.service';\nimport { SnackbarUpdateService } from './snackbar-update.service';\n\nexport function ProvideServiceWorkerUpdater(...providers: Array<Provider | EnvironmentProviders>): Array<Provider | EnvironmentProviders> {\n  return [\n    provideAppInitializer(() => {\n        const initializerFn = ((checkForUpdate: CheckForUpdateService) => () => checkForUpdate.start())(inject(CheckForUpdateService));\n        return initializerFn();\n      }),\n    ...providers,\n  ];\n}\n\nexport function withLogUpdater() {\n  return provideAppInitializer(() => {\n        const initializerFn = ((logUpdateService: LogUpdateService) => () => logUpdateService.start())(inject(LogUpdateService));\n        return initializerFn();\n      });\n}\n\nexport function withDialogUpdater() {\n  return provideAppInitializer(() => {\n        const initializerFn = ((dus: DialogUpdateService) => () => dus.start())(inject(DialogUpdateService));\n        return initializerFn();\n      });\n}\n\nexport function withAutoUpdater() {\n  return provideAppInitializer(() => {\n        const initializerFn = ((aus: AutoUpdateService) => () => aus.start())(inject(AutoUpdateService));\n        return initializerFn();\n      });\n}\n\nexport function withSnackbarUpdater() {\n  return provideAppInitializer(() => {\n        const initializerFn = ((snackbarUpdateService: SnackbarUpdateService) => () => snackbarUpdateService.start())(inject(SnackbarUpdateService));\n        return initializerFn();\n      });\n}\n","import { Environment } from '@rxap/environment';\n\nexport function UnregisterServiceWorker(environment: Environment) {\n  if (!environment.serviceWorker) {\n    navigator?.serviceWorker?.getRegistrations().then(async (registrations) => {\n      await Promise.all(registrations.map((registration) => {\n        console.log('unregister service worker: ' + registration.scope);\n        return registration.unregister();\n      }));\n      if (registrations.length) {\n        const response = confirm(\n          'All dangling service worker are unregistered. Should the application be reloaded to complete the migration');\n        if (response) {\n          location.reload();\n        }\n      }\n    });\n  }\n}\n","// region service-worker-update-dialog\nexport * from './lib/service-worker-update-dialog/service-worker-update-dialog.component';\n// endregion\n\n// region \nexport * from './lib/auto-update.service';\nexport * from './lib/check-for-update.service';\nexport * from './lib/dialog-update.service';\nexport * from './lib/log-update.service';\nexport * from './lib/provide-service-worker-updater';\nexport * from './lib/snackbar-update.service';\nexport * from './lib/unregister-service-worker';\n// endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}