From e4410fe2c7683c9cec4ab2f7a1be674e5f8fec22 Mon Sep 17 00:00:00 2001 From: Lorenz Hilpert Date: Mon, 19 Dec 2022 14:52:17 +0100 Subject: [PATCH] Added Scandit Scanner to Application --- angular.json | 10 +- apps/adapter/scan/src/lib/dev.scan-adapter.ts | 18 +- .../scan/src/lib/native.scan-adapter.ts | 18 +- apps/adapter/scan/src/lib/scan-adapter.ts | 15 +- apps/adapter/scan/src/lib/scan.module.ts | 7 +- apps/adapter/scan/src/lib/scan.service.ts | 69 +++-- apps/adapter/scan/src/lib/scandit/index.ts | 3 + .../lib/scandit/scandit-overlay.component.css | 8 + .../scandit/scandit-overlay.component.html | 1 + .../lib/scandit/scandit-overlay.component.ts | 87 ++++++ .../scandit/scandit-scan-adapter.module.ts | 20 ++ .../src/lib/scandit/scandit.scan-adapter.ts | 77 +++++ apps/adapter/scan/src/public-api.ts | 7 +- apps/isa-app/src/app/app.module.ts | 11 +- .../src/app/guards/is-authenticated.guard.ts | 1 - apps/isa-app/src/config/config.feature.json | 5 +- .../src/config/config.integration.json | 5 +- apps/isa-app/src/config/config.json | 5 +- .../isa-app/src/config/config.production.json | 5 +- apps/isa-app/src/config/config.staging.json | 5 +- apps/isa-app/src/config/config.test.json | 5 +- package-lock.json | 269 +++++++++++------- package.json | 1 + 23 files changed, 489 insertions(+), 163 deletions(-) create mode 100644 apps/adapter/scan/src/lib/scandit/index.ts create mode 100644 apps/adapter/scan/src/lib/scandit/scandit-overlay.component.css create mode 100644 apps/adapter/scan/src/lib/scandit/scandit-overlay.component.html create mode 100644 apps/adapter/scan/src/lib/scandit/scandit-overlay.component.ts create mode 100644 apps/adapter/scan/src/lib/scandit/scandit-scan-adapter.module.ts create mode 100644 apps/adapter/scan/src/lib/scandit/scandit.scan-adapter.ts diff --git a/angular.json b/angular.json index 442595751..7ff108843 100644 --- a/angular.json +++ b/angular.json @@ -2155,7 +2155,8 @@ "pdfjs-dist/build/pdf", "pdfjs-dist/web/pdf_viewer", "pdfjs-dist/es5/build/pdf", - "pdfjs-dist/es5/web/pdf_viewer" + "pdfjs-dist/es5/web/pdf_viewer", + "scandit-sdk" ], "outputPath": "dist/isa-app", "index": "apps/isa-app/src/index.html", @@ -2168,7 +2169,12 @@ "apps/isa-app/src/assets", "apps/isa-app/src/config", "apps/isa-app/src/silent-refresh.html", - "apps/isa-app/src/manifest.webmanifest" + "apps/isa-app/src/manifest.webmanifest", + { + "glob": "**/*", + "input": "node_modules/scandit-sdk/build", + "output": "scandit" + } ], "styles": [ "apps/isa-app/src/styles.scss" diff --git a/apps/adapter/scan/src/lib/dev.scan-adapter.ts b/apps/adapter/scan/src/lib/dev.scan-adapter.ts index fb9eae5a5..7a9a73006 100644 --- a/apps/adapter/scan/src/lib/dev.scan-adapter.ts +++ b/apps/adapter/scan/src/lib/dev.scan-adapter.ts @@ -1,22 +1,18 @@ -import { Injectable } from '@angular/core'; +import { Injectable, isDevMode } from '@angular/core'; import { PromptModalData, UiModalService, UiPromptModalComponent } from '@ui/modal'; import { Observable } from 'rxjs'; import { ScanAdapter } from './scan-adapter'; @Injectable() export class DevScanAdapter implements ScanAdapter { + readonly name = 'Dev'; + constructor(private _modal: UiModalService) {} - getName(): string { - return 'Dev Scanner'; - } - - isPrimary(): boolean { - return true; - } - - isReady(): boolean { - return true; + init(): Promise { + return new Promise((resolve, reject) => { + resolve(isDevMode()); + }); } scan(): Observable { diff --git a/apps/adapter/scan/src/lib/native.scan-adapter.ts b/apps/adapter/scan/src/lib/native.scan-adapter.ts index 8a664dd5b..4d28f8f9c 100644 --- a/apps/adapter/scan/src/lib/native.scan-adapter.ts +++ b/apps/adapter/scan/src/lib/native.scan-adapter.ts @@ -6,20 +6,14 @@ import { ScanAdapter } from './scan-adapter'; @Injectable() export class NativeScanAdapter implements ScanAdapter { + readonly name = 'Native'; + constructor(private readonly nativeContainerService: NativeContainerService) {} - getName(): string { - return 'Native Scanner'; - } - - isPrimary(): boolean { - return true; - } - - isReady(): boolean { - // TODO: Fix Login Keycard Dauerschleife - return this.nativeContainerService.isUiWebview().isNative || this.nativeContainerService.isIpadMini6(); - // return false; + init(): Promise { + return new Promise((resolve, reject) => { + resolve(this.nativeContainerService.isUiWebview().isNative || this.nativeContainerService.isIpadMini6()); + }); } scan(): Observable { diff --git a/apps/adapter/scan/src/lib/scan-adapter.ts b/apps/adapter/scan/src/lib/scan-adapter.ts index a10f74b31..c37bf1290 100644 --- a/apps/adapter/scan/src/lib/scan-adapter.ts +++ b/apps/adapter/scan/src/lib/scan-adapter.ts @@ -1,11 +1,18 @@ import { Observable } from 'rxjs'; export interface ScanAdapter { - getName(): string; + /** + * Name to identify the adapter + */ + readonly name: string; - isPrimary(): boolean; - - isReady(): boolean; + /** + * @returns true if this adapter can be used + */ + init(): Promise; + /** + * scan for a barcode + */ scan(): Observable; } diff --git a/apps/adapter/scan/src/lib/scan.module.ts b/apps/adapter/scan/src/lib/scan.module.ts index d8f4b554c..02bd42cdd 100644 --- a/apps/adapter/scan/src/lib/scan.module.ts +++ b/apps/adapter/scan/src/lib/scan.module.ts @@ -5,10 +5,13 @@ import { SCAN_ADAPTER } from './tokens'; @NgModule({}) export class ScanAdapterModule { - static forRoot(dev?: boolean) { + static forRoot() { return { ngModule: ScanAdapterModule, - providers: [{ provide: SCAN_ADAPTER, useClass: NativeScanAdapter, multi: true }], + providers: [ + { provide: SCAN_ADAPTER, useClass: NativeScanAdapter, multi: true }, + { provide: SCAN_ADAPTER, useClass: DevScanAdapter, multi: true }, + ], // Use for testing: // providers: [{ provide: SCAN_ADAPTER, useClass: dev ? DevScanAdapter : NativeScanAdapter, multi: true }], }; diff --git a/apps/adapter/scan/src/lib/scan.service.ts b/apps/adapter/scan/src/lib/scan.service.ts index 36b49ba91..d7ad57b9e 100644 --- a/apps/adapter/scan/src/lib/scan.service.ts +++ b/apps/adapter/scan/src/lib/scan.service.ts @@ -1,4 +1,5 @@ import { Inject, Injectable } from '@angular/core'; +import { Observable, throwError } from 'rxjs'; import { ScanAdapter } from './scan-adapter'; import { SCAN_ADAPTER } from './tokens'; @@ -6,25 +7,59 @@ import { SCAN_ADAPTER } from './tokens'; providedIn: 'root', }) export class ScanAdapterService { + private _readyAdapters: Record = {}; + constructor(@Inject(SCAN_ADAPTER) private readonly scanAdapters: ScanAdapter[]) {} - scanners() { - return this.scanAdapters.filter((adapter) => adapter.isReady()); - } - - scanner() { - return this.scanners().find((scanner) => scanner.isPrimary()) || this.scanners().find(() => true); - } - - isReady() { - return this.scanAdapters.some((adapter) => adapter.isReady()); - } - - scan() { - const primaryScanner = this.scanner(); - if (primaryScanner) { - return primaryScanner.scan(); + async init(): Promise { + for (const adapter of this.scanAdapters) { + const isReady = await adapter.init(); + console.log('ScanAdapterService.init', adapter.name, isReady); + this._readyAdapters[adapter.name] = isReady; } - return null; + } + + adapters(): ScanAdapter[] { + return [...this.scanAdapters]; + } + + getAdapter(name: string): ScanAdapter | undefined { + return this.scanAdapters.find((adapter) => adapter.name === name); + } + + // return true if at least one adapter is ready + isReady(): boolean { + return Object.values(this._readyAdapters).some((ready) => ready); + } + + scan(ops: { use?: string; include?: string[]; exclude?: string[] } = { exclude: ['Dev'] }): Observable { + let adapter: ScanAdapter; + + if (ops.use == undefined) { + // get the first adapter that is ready to use + adapter = this.scanAdapters + .filter((adapter) => { + if (ops.include?.length) { + return ops.include.includes(adapter.name); + } else if (ops.exclude?.length) { + return !ops.exclude.includes(adapter.name); + } else { + return true; + } + }) + .find((adapter) => this._readyAdapters[adapter.name]); + } else { + adapter = this.getAdapter(ops.use); + } + + if (!adapter) { + return throwError('No adapter found'); + } + + if (this._readyAdapters[adapter.name] == false) { + return throwError('Adapter is not ready'); + } + + return adapter.scan(); } } diff --git a/apps/adapter/scan/src/lib/scandit/index.ts b/apps/adapter/scan/src/lib/scandit/index.ts new file mode 100644 index 000000000..ac7b50a77 --- /dev/null +++ b/apps/adapter/scan/src/lib/scandit/index.ts @@ -0,0 +1,3 @@ +export * from './scandit-overlay.component'; +export * from './scandit-scan-adapter.module'; +export * from './scandit.scan-adapter'; diff --git a/apps/adapter/scan/src/lib/scandit/scandit-overlay.component.css b/apps/adapter/scan/src/lib/scandit/scandit-overlay.component.css new file mode 100644 index 000000000..03136d3b5 --- /dev/null +++ b/apps/adapter/scan/src/lib/scandit/scandit-overlay.component.css @@ -0,0 +1,8 @@ +:host { + @apply block; +} + +.scanner-container { + max-width: 900px; + width: 100vw; +} diff --git a/apps/adapter/scan/src/lib/scandit/scandit-overlay.component.html b/apps/adapter/scan/src/lib/scandit/scandit-overlay.component.html new file mode 100644 index 000000000..d2ffdfcc9 --- /dev/null +++ b/apps/adapter/scan/src/lib/scandit/scandit-overlay.component.html @@ -0,0 +1 @@ +
diff --git a/apps/adapter/scan/src/lib/scandit/scandit-overlay.component.ts b/apps/adapter/scan/src/lib/scandit/scandit-overlay.component.ts new file mode 100644 index 000000000..7b863e8eb --- /dev/null +++ b/apps/adapter/scan/src/lib/scandit/scandit-overlay.component.ts @@ -0,0 +1,87 @@ +import { Component, ChangeDetectionStrategy, ElementRef, ViewChild, NgZone, AfterViewInit, OnDestroy } from '@angular/core'; +import { Barcode, BarcodePicker, ScanResult, ScanSettings } from 'scandit-sdk'; + +@Component({ + selector: 'app-scandit-overlay', + templateUrl: 'scandit-overlay.component.html', + styleUrls: ['scandit-overlay.component.css'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class ScanditOverlayComponent implements AfterViewInit, OnDestroy { + private _barcodePicker: BarcodePicker; + + private _onScan?: (code: string) => void; + + private _onClose?: () => void; + + @ViewChild('scanContainer', { read: ElementRef, static: true }) scanContainer: ElementRef; + + constructor(private _zone: NgZone) {} + + ngAfterViewInit(): void { + this.createBarcodePicker().then(() => { + this._barcodePicker.on('scan', (scanResult) => { + this._zone.run(() => this.handleScanrResult(scanResult)); + }); + }); + } + + async createBarcodePicker() { + this._barcodePicker = await BarcodePicker.create(this.scanContainer.nativeElement, { + playSoundOnScan: true, + vibrateOnScan: true, + }); + + this._barcodePicker.applyScanSettings(this.getScanSettings()); + } + + getScanSettings(): ScanSettings { + return new ScanSettings({ + blurryRecognition: false, + + enabledSymbologies: [ + Barcode.Symbology.EAN8, + Barcode.Symbology.EAN13, + Barcode.Symbology.UPCA, + Barcode.Symbology.UPCE, + Barcode.Symbology.CODE128, + Barcode.Symbology.CODE39, + Barcode.Symbology.CODE93, + Barcode.Symbology.INTERLEAVED_2_OF_5, + Barcode.Symbology.QR, + ], + codeDuplicateFilter: 1000, + }); + } + + onScan(fn: (code: string) => void) { + this._onScan = fn; + } + + onClose(fn: () => void) { + this._onClose = fn; + } + + handleScanrResult(scanRestul: ScanResult) { + let result: string | undefined; + if (scanRestul.barcodes.length) { + result = scanRestul.barcodes[0].data; + } else if (scanRestul.texts.length) { + result = scanRestul.texts[0].value; + } + + if (result) { + this._onScan?.(result); + } + } + + close() { + this._onClose?.(); + } + + ngOnDestroy(): void { + this._zone.runOutsideAngular(() => { + this._barcodePicker?.destroy(true); + }); + } +} diff --git a/apps/adapter/scan/src/lib/scandit/scandit-scan-adapter.module.ts b/apps/adapter/scan/src/lib/scandit/scandit-scan-adapter.module.ts new file mode 100644 index 000000000..7c1f659c7 --- /dev/null +++ b/apps/adapter/scan/src/lib/scandit/scandit-scan-adapter.module.ts @@ -0,0 +1,20 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { ScanditOverlayComponent } from './scandit-overlay.component'; +import { ScanditScanAdapter } from './scandit.scan-adapter'; +import { SCAN_ADAPTER } from '../tokens'; + +@NgModule({ + imports: [CommonModule], + exports: [ScanditOverlayComponent], + declarations: [ScanditOverlayComponent], +}) +export class ScanditScanAdapterModule { + static forRoot() { + return { + ngModule: ScanditScanAdapterModule, + providers: [{ provide: SCAN_ADAPTER, useClass: ScanditScanAdapter, multi: true }], + }; + } +} diff --git a/apps/adapter/scan/src/lib/scandit/scandit.scan-adapter.ts b/apps/adapter/scan/src/lib/scandit/scandit.scan-adapter.ts new file mode 100644 index 000000000..740f1917d --- /dev/null +++ b/apps/adapter/scan/src/lib/scandit/scandit.scan-adapter.ts @@ -0,0 +1,77 @@ +import { Injectable } from '@angular/core'; +import { Observable, Subscriber } from 'rxjs'; +import { ScanAdapter } from '../scan-adapter'; +import { Overlay } from '@angular/cdk/overlay'; + +import { configure } from 'scandit-sdk'; +// import { ScanditModalComponent } from './scandit-modal'; +import { Config } from '@core/config'; +import { ComponentPortal } from '@angular/cdk/portal'; +import { ScanditOverlayComponent } from './scandit-overlay.component'; + +@Injectable() +export class ScanditScanAdapter implements ScanAdapter { + readonly name = 'Scandit'; + + constructor(private readonly _config: Config, private _overlay: Overlay) {} + + async init(): Promise { + await configure(this._config.get('licence.scandit'), { + engineLocation: '/scandit/', + }); + + return true; + } + + scan(): Observable { + return new Observable((observer) => { + const overlay = this.createOverlay(); + + const portal = this.createPortal(); + + const ref = overlay.attach(portal); + + const sub = new Subscriber(); + + const complete = () => { + overlay.detach(); + ref.destroy(); + sub.unsubscribe(); + sub.complete(); + observer.complete(); + }; + + sub.add( + overlay.backdropClick().subscribe(() => { + complete(); + }) + ); + + ref.instance.onScan((code) => { + observer.next(code); + complete(); + }); + + ref.instance.onClose(() => { + complete(); + }); + + return complete; + }); + } + + createOverlay() { + const overlay = this._overlay.create({ + positionStrategy: this._overlay.position().global().centerHorizontally().centerVertically(), + hasBackdrop: true, + }); + + return overlay; + } + + createPortal() { + const portal = new ComponentPortal(ScanditOverlayComponent); + + return portal; + } +} diff --git a/apps/adapter/scan/src/public-api.ts b/apps/adapter/scan/src/public-api.ts index 35c014434..4340a92ae 100644 --- a/apps/adapter/scan/src/public-api.ts +++ b/apps/adapter/scan/src/public-api.ts @@ -2,5 +2,10 @@ * Public API Surface of scan */ -export * from './lib/scan.service'; +export * from './lib/scandit'; +export * from './lib/dev.scan-adapter'; +export * from './lib/native.scan-adapter'; +export * from './lib/scan-adapter'; export * from './lib/scan.module'; +export * from './lib/scan.service'; +export * from './lib/tokens'; diff --git a/apps/isa-app/src/app/app.module.ts b/apps/isa-app/src/app/app.module.ts index ebabcd562..8ff7718d1 100644 --- a/apps/isa-app/src/app/app.module.ts +++ b/apps/isa-app/src/app/app.module.ts @@ -29,7 +29,7 @@ import { HttpErrorInterceptor } from './interceptors'; import { CoreLoggerModule, LOG_PROVIDER } from '@core/logger'; import { IsaLogProvider } from './providers'; import { IsaErrorHandler } from './providers/isa.error-handler'; -import { ScanAdapterModule } from '@adapter/scan'; +import { ScanAdapterModule, ScanAdapterService, ScanditScanAdapterModule } from '@adapter/scan'; import { RootStateService } from './store/root-state.service'; import * as Commands from './commands'; import { UiIconModule } from '@ui/icon'; @@ -37,7 +37,7 @@ import { UiIconModule } from '@ui/icon'; registerLocaleData(localeDe, localeDeExtra); registerLocaleData(localeDe, 'de', localeDeExtra); -export function _appInitializerFactory(config: Config, auth: AuthService, injector: Injector) { +export function _appInitializerFactory(config: Config, auth: AuthService, injector: Injector, scanAdapter: ScanAdapterService) { return async () => { const statusElement = document.querySelector('#init-status'); statusElement.innerHTML = 'Konfigurationen werden geladen...'; @@ -50,6 +50,8 @@ export function _appInitializerFactory(config: Config, auth: AuthService, inject const state = injector.get(RootStateService); await state.init(); } + + await scanAdapter.init(); }; } @@ -85,7 +87,8 @@ export function _notificationsHubOptionsFactory(config: Config, auth: AuthServic enabled: environment.production, registrationStrategy: 'registerWhenStable:30000', }), - ScanAdapterModule.forRoot(!environment.production), + ScanAdapterModule.forRoot(), + ScanditScanAdapterModule.forRoot(), PlatformModule, UiIconModule.forRoot({ aliases: [ @@ -99,7 +102,7 @@ export function _notificationsHubOptionsFactory(config: Config, auth: AuthServic provide: APP_INITIALIZER, useFactory: _appInitializerFactory, multi: true, - deps: [Config, AuthService, Injector], + deps: [Config, AuthService, Injector, ScanAdapterService], }, { provide: NOTIFICATIONS_HUB_OPTIONS, diff --git a/apps/isa-app/src/app/guards/is-authenticated.guard.ts b/apps/isa-app/src/app/guards/is-authenticated.guard.ts index e0a10710b..04e172d62 100644 --- a/apps/isa-app/src/app/guards/is-authenticated.guard.ts +++ b/apps/isa-app/src/app/guards/is-authenticated.guard.ts @@ -23,7 +23,6 @@ export class IsAuthenticatedGuard implements CanActivate { if (token) { this._authService.setKeyCardToken(token); } - this._authService.login(); } diff --git a/apps/isa-app/src/config/config.feature.json b/apps/isa-app/src/config/config.feature.json index cdff8419e..59741cfca 100644 --- a/apps/isa-app/src/config/config.feature.json +++ b/apps/isa-app/src/config/config.feature.json @@ -59,5 +59,8 @@ "remission": 4000 } }, - "checkForUpdates": 3600000 + "checkForUpdates": 3600000, + "licence": { + "scandit": "AXvBoAZ/JLaLOMv7IyiBFShF6KLnGGdx7GC5pQ4v9wuaXnCY+2/4SPYNEGKmUtWkWGMtmbFmKJpRIxUE6kq1kppQrRlQE5LwMnf9IhFIX2YJckWxXl5RG0BCqdckUrS3d0CFyjpNuuHWQQ0SDDSlpCAcsK04LTiVtC800dhaj4YAVWnXnEbqsSwklW9mJv16nQS9r21VUvlsl9KReZkGymagAgRJps0gf7B6b/S7f6VQ3VT12Amu9/L207GDYh0GGMl6RaE+LjClqIak5jLiSD2l7a9F9lGMVScCTMYl2zw6Ugud4ttzaBY/uMUZfS15gW2H/2zfYO2mVwIOMBIXDFEoq/JOqjOLBB8IEgm6Eu6vKKFqwQ8F6HSKbo9Ba3/be59qMmztiFLaZXe8vNgAr4yJ+YCcrxK0iD/A30tTgL25E/H4QMRFWSAgFBoOwdbyYeM0WbqwasTMbtWUC7xyKr7EIYLN1LdxpnyuS6BObD/0AtuEdd3nrBl8Yc+4R/MOnJ5QF6vopNFhFGiVoYwaGR0G/NfTVMeIYHinwOjB1qQcA6Qr40IZqKK9VFuwsUw32MM5RrQQCr0olnGRrVO8JHmFaRIiwwQ4+NSRV7Z0iyDM9sh1A1Xl4IW5azQaqA4zGXOdiDBRvKGY5zOE2TWgDdzCe1oQ1d3Qk6VXDx+eCzFIAb1UA0ealeHAQ6SzWlXAkHuY+zrw3pGVoe2b4aSTkBRdegFAaU9/H2Xl9WAx4DW4pfUQRZBbR4htgaWs1a9vVUb76P8GpK2ihF4YIYLC9B1EW7hzaOfGfhWVFRmK7j544aiqbz+bL/HgG6QZhdyTRhHAj1oWl0/hSV1eeq7BgqsDQQEidHbX/Gg=" + } } \ No newline at end of file diff --git a/apps/isa-app/src/config/config.integration.json b/apps/isa-app/src/config/config.integration.json index 4e2441eee..1d515117f 100644 --- a/apps/isa-app/src/config/config.integration.json +++ b/apps/isa-app/src/config/config.integration.json @@ -59,5 +59,8 @@ "remission": 4000 } }, - "checkForUpdates": 3600000 + "checkForUpdates": 3600000, + "licence": { + "scandit": "AXvBoAZ/JLaLOMv7IyiBFShF6KLnGGdx7GC5pQ4v9wuaXnCY+2/4SPYNEGKmUtWkWGMtmbFmKJpRIxUE6kq1kppQrRlQE5LwMnf9IhFIX2YJckWxXl5RG0BCqdckUrS3d0CFyjpNuuHWQQ0SDDSlpCAcsK04LTiVtC800dhaj4YAVWnXnEbqsSwklW9mJv16nQS9r21VUvlsl9KReZkGymagAgRJps0gf7B6b/S7f6VQ3VT12Amu9/L207GDYh0GGMl6RaE+LjClqIak5jLiSD2l7a9F9lGMVScCTMYl2zw6Ugud4ttzaBY/uMUZfS15gW2H/2zfYO2mVwIOMBIXDFEoq/JOqjOLBB8IEgm6Eu6vKKFqwQ8F6HSKbo9Ba3/be59qMmztiFLaZXe8vNgAr4yJ+YCcrxK0iD/A30tTgL25E/H4QMRFWSAgFBoOwdbyYeM0WbqwasTMbtWUC7xyKr7EIYLN1LdxpnyuS6BObD/0AtuEdd3nrBl8Yc+4R/MOnJ5QF6vopNFhFGiVoYwaGR0G/NfTVMeIYHinwOjB1qQcA6Qr40IZqKK9VFuwsUw32MM5RrQQCr0olnGRrVO8JHmFaRIiwwQ4+NSRV7Z0iyDM9sh1A1Xl4IW5azQaqA4zGXOdiDBRvKGY5zOE2TWgDdzCe1oQ1d3Qk6VXDx+eCzFIAb1UA0ealeHAQ6SzWlXAkHuY+zrw3pGVoe2b4aSTkBRdegFAaU9/H2Xl9WAx4DW4pfUQRZBbR4htgaWs1a9vVUb76P8GpK2ihF4YIYLC9B1EW7hzaOfGfhWVFRmK7j544aiqbz+bL/HgG6QZhdyTRhHAj1oWl0/hSV1eeq7BgqsDQQEidHbX/Gg=" + } } \ No newline at end of file diff --git a/apps/isa-app/src/config/config.json b/apps/isa-app/src/config/config.json index d80b26668..19cad955e 100644 --- a/apps/isa-app/src/config/config.json +++ b/apps/isa-app/src/config/config.json @@ -59,5 +59,8 @@ "remission": 4000 } }, - "checkForUpdates": 3600000 + "checkForUpdates": 3600000, + "licence": { + "scandit": "AXvBoAZ/JLaLOMv7IyiBFShF6KLnGGdx7GC5pQ4v9wuaXnCY+2/4SPYNEGKmUtWkWGMtmbFmKJpRIxUE6kq1kppQrRlQE5LwMnf9IhFIX2YJckWxXl5RG0BCqdckUrS3d0CFyjpNuuHWQQ0SDDSlpCAcsK04LTiVtC800dhaj4YAVWnXnEbqsSwklW9mJv16nQS9r21VUvlsl9KReZkGymagAgRJps0gf7B6b/S7f6VQ3VT12Amu9/L207GDYh0GGMl6RaE+LjClqIak5jLiSD2l7a9F9lGMVScCTMYl2zw6Ugud4ttzaBY/uMUZfS15gW2H/2zfYO2mVwIOMBIXDFEoq/JOqjOLBB8IEgm6Eu6vKKFqwQ8F6HSKbo9Ba3/be59qMmztiFLaZXe8vNgAr4yJ+YCcrxK0iD/A30tTgL25E/H4QMRFWSAgFBoOwdbyYeM0WbqwasTMbtWUC7xyKr7EIYLN1LdxpnyuS6BObD/0AtuEdd3nrBl8Yc+4R/MOnJ5QF6vopNFhFGiVoYwaGR0G/NfTVMeIYHinwOjB1qQcA6Qr40IZqKK9VFuwsUw32MM5RrQQCr0olnGRrVO8JHmFaRIiwwQ4+NSRV7Z0iyDM9sh1A1Xl4IW5azQaqA4zGXOdiDBRvKGY5zOE2TWgDdzCe1oQ1d3Qk6VXDx+eCzFIAb1UA0ealeHAQ6SzWlXAkHuY+zrw3pGVoe2b4aSTkBRdegFAaU9/H2Xl9WAx4DW4pfUQRZBbR4htgaWs1a9vVUb76P8GpK2ihF4YIYLC9B1EW7hzaOfGfhWVFRmK7j544aiqbz+bL/HgG6QZhdyTRhHAj1oWl0/hSV1eeq7BgqsDQQEidHbX/Gg=" + } } \ No newline at end of file diff --git a/apps/isa-app/src/config/config.production.json b/apps/isa-app/src/config/config.production.json index 4f4ce9605..f00c282f1 100644 --- a/apps/isa-app/src/config/config.production.json +++ b/apps/isa-app/src/config/config.production.json @@ -59,5 +59,8 @@ "remission": 4000 } }, - "checkForUpdates": 3600000 + "checkForUpdates": 3600000, + "licence": { + "scandit": "" + } } \ No newline at end of file diff --git a/apps/isa-app/src/config/config.staging.json b/apps/isa-app/src/config/config.staging.json index 86d5a9dbb..641baba43 100644 --- a/apps/isa-app/src/config/config.staging.json +++ b/apps/isa-app/src/config/config.staging.json @@ -59,5 +59,8 @@ "remission": 4000 } }, - "checkForUpdates": 3600000 + "checkForUpdates": 3600000, + "licence": { + "scandit": "" + } } \ No newline at end of file diff --git a/apps/isa-app/src/config/config.test.json b/apps/isa-app/src/config/config.test.json index bcd83e1eb..2af932f93 100644 --- a/apps/isa-app/src/config/config.test.json +++ b/apps/isa-app/src/config/config.test.json @@ -59,5 +59,8 @@ "remission": 4000 } }, - "checkForUpdates": 3600000 + "checkForUpdates": 3600000, + "licence": { + "scandit": "AXvBoAZ/JLaLOMv7IyiBFShF6KLnGGdx7GC5pQ4v9wuaXnCY+2/4SPYNEGKmUtWkWGMtmbFmKJpRIxUE6kq1kppQrRlQE5LwMnf9IhFIX2YJckWxXl5RG0BCqdckUrS3d0CFyjpNuuHWQQ0SDDSlpCAcsK04LTiVtC800dhaj4YAVWnXnEbqsSwklW9mJv16nQS9r21VUvlsl9KReZkGymagAgRJps0gf7B6b/S7f6VQ3VT12Amu9/L207GDYh0GGMl6RaE+LjClqIak5jLiSD2l7a9F9lGMVScCTMYl2zw6Ugud4ttzaBY/uMUZfS15gW2H/2zfYO2mVwIOMBIXDFEoq/JOqjOLBB8IEgm6Eu6vKKFqwQ8F6HSKbo9Ba3/be59qMmztiFLaZXe8vNgAr4yJ+YCcrxK0iD/A30tTgL25E/H4QMRFWSAgFBoOwdbyYeM0WbqwasTMbtWUC7xyKr7EIYLN1LdxpnyuS6BObD/0AtuEdd3nrBl8Yc+4R/MOnJ5QF6vopNFhFGiVoYwaGR0G/NfTVMeIYHinwOjB1qQcA6Qr40IZqKK9VFuwsUw32MM5RrQQCr0olnGRrVO8JHmFaRIiwwQ4+NSRV7Z0iyDM9sh1A1Xl4IW5azQaqA4zGXOdiDBRvKGY5zOE2TWgDdzCe1oQ1d3Qk6VXDx+eCzFIAb1UA0ealeHAQ6SzWlXAkHuY+zrw3pGVoe2b4aSTkBRdegFAaU9/H2Xl9WAx4DW4pfUQRZBbR4htgaWs1a9vVUb76P8GpK2ihF4YIYLC9B1EW7hzaOfGfhWVFRmK7j544aiqbz+bL/HgG6QZhdyTRhHAj1oWl0/hSV1eeq7BgqsDQQEidHbX/Gg=" + } } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index bbd853c9b..d0e38c7ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2920,6 +2920,22 @@ "regenerator-runtime": "^0.13.4" } }, + "@babel/runtime-corejs2": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.20.6.tgz", + "integrity": "sha512-6qz3LPkwPDBDEAOsf/fXdsX/c5u2GNy33QlY1caaR8qPVG2Q0tTkS0mKYMXRhT9wsDQAAEj4T7scykRB3nBjWA==", + "requires": { + "core-js": "^2.6.12", + "regenerator-runtime": "^0.13.11" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + } + } + }, "@babel/template": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz", @@ -3087,6 +3103,11 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "@juggle/resize-observer": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", + "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==" + }, "@leichtgewicht/ip-codec": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", @@ -4308,7 +4329,7 @@ "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true }, "arrify": { @@ -4329,7 +4350,7 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true }, "ast-types-flow": { @@ -4347,7 +4368,7 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "atob": { @@ -4379,7 +4400,7 @@ "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", "dev": true }, "aws4": { @@ -4489,7 +4510,7 @@ "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dev": true, "requires": { "tweetnacl": "^0.14.3" @@ -4813,7 +4834,7 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true }, "chalk": { @@ -5034,7 +5055,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "color-support": { "version": "1.1.3", @@ -5497,6 +5518,11 @@ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, + "csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + }, "cuint": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", @@ -5518,7 +5544,7 @@ "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -5541,7 +5567,7 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true }, "decamelize-keys": { @@ -5594,7 +5620,7 @@ "deep-freeze-strict": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/deep-freeze-strict/-/deep-freeze-strict-1.1.1.tgz", - "integrity": "sha1-d9BYPKJKab5LvZrC+uQV1VUj5bA=", + "integrity": "sha512-QemROZMM2IvhAcCFvahdX2Vbm4S/txeq5rFYU9fh4mQP79WTMW5c/HkQ2ICl1zuzcDZdPZ6zarDxQeQMsVYoNA==", "dev": true }, "deepmerge": { @@ -5646,7 +5672,7 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true }, "delegates": { @@ -5801,7 +5827,7 @@ "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, "requires": { "jsbn": "~0.1.0", @@ -5811,7 +5837,7 @@ "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "dev": true }, "electron-to-chromium": { @@ -5833,7 +5859,7 @@ "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true }, "encoding": { @@ -6029,7 +6055,7 @@ "es6-promisify": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", "dev": true, "requires": { "es6-promise": "^4.0.3" @@ -6189,13 +6215,13 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", "dev": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" }, "eslint-scope": { "version": "5.1.1", @@ -6268,8 +6294,7 @@ "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, "events": { "version": "3.3.0", @@ -6354,7 +6379,7 @@ "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true }, "express": { @@ -6486,7 +6511,7 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true }, "fast-deep-equal": { @@ -6705,7 +6730,7 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", "dev": true }, "form-data": { @@ -6772,7 +6797,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "fsevents": { "version": "2.3.2", @@ -6873,7 +6898,7 @@ "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, "requires": { "assert-plus": "^1.0.0" @@ -7002,7 +7027,7 @@ "globjoin": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", "dev": true }, "gonzales-pe": { @@ -7032,7 +7057,7 @@ "hammerjs": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", - "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==" }, "handle-thing": { "version": "2.0.1", @@ -7043,7 +7068,7 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", "dev": true }, "har-validator": { @@ -7094,7 +7119,7 @@ "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -7103,7 +7128,7 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true } } @@ -7117,7 +7142,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "has-property-descriptors": { "version": "1.0.0", @@ -7175,6 +7200,11 @@ "lru-cache": "^6.0.0" } }, + "howler": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.3.tgz", + "integrity": "sha512-QM0FFkw0LRX1PR8pNzJVAY25JhIWvbKMBFM4gqk+QdV+kPXOhleWGCB6AiAF/goGjIHK2e/nIElplvjQwhr0jg==" + }, "hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", @@ -7385,7 +7415,7 @@ "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", "dev": true, "requires": { "assert-plus": "^1.0.0", @@ -7599,7 +7629,7 @@ "immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "dev": true }, "immutable": { @@ -7627,7 +7657,7 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, "indent-string": { @@ -7645,7 +7675,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "requires": { "once": "^1.3.0", "wrappy": "1" @@ -7806,7 +7836,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, "is-bigint": { @@ -7885,7 +7915,7 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, "is-fullwidth-code-point": { @@ -8039,7 +8069,7 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, "is-unicode-supported": { @@ -8103,7 +8133,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "isobject": { @@ -8115,7 +8145,7 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true }, "istanbul-lib-coverage": { @@ -8205,7 +8235,7 @@ "jasmine": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", - "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "integrity": "sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw==", "dev": true, "requires": { "exit": "^0.1.2", @@ -8216,7 +8246,7 @@ "jasmine-core": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", - "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", + "integrity": "sha512-SNkOkS+/jMZvLhuSx1fjhcNWUC/KG6oVyFUGkSBEr9n1axSNduWU8GlI7suaHXr4yxjet6KjrUZxUTE5WzzWwQ==", "dev": true } } @@ -8248,7 +8278,7 @@ "jasminewd2": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", - "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "integrity": "sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==", "dev": true }, "jest-worker": { @@ -8285,6 +8315,11 @@ "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==", "dev": true }, + "js-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz", + "integrity": "sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -8303,7 +8338,7 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true }, "jsesc": { @@ -8361,7 +8396,7 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true }, "json5": { @@ -8937,7 +8972,7 @@ "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true }, "log-symbols": { @@ -9269,7 +9304,7 @@ "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true }, "memfs": { @@ -9284,7 +9319,7 @@ "memorystream": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", "dev": true }, "meow": { @@ -9452,7 +9487,7 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, "is-plain-obj": { @@ -10113,13 +10148,13 @@ "normalize-range": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true }, "normalize-selector": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", - "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", + "integrity": "sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==", "dev": true }, "npm-bundled": { @@ -10144,7 +10179,7 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true } } @@ -10411,7 +10446,7 @@ "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", "dev": true }, "oauth-sign": { @@ -10423,7 +10458,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "object-hash": { "version": "3.0.0", @@ -10465,6 +10500,11 @@ "object-keys": "^1.1.1" } }, + "objectFitPolyfill": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/objectFitPolyfill/-/objectFitPolyfill-2.3.5.tgz", + "integrity": "sha512-8Quz071ZmGi0QWEG4xB3Bv5Lpw6K0Uca87FLoLMKMWjB6qIq9IyBegP3b/VLNxv2WYvIMGoeUQ+c6ibUkNa8TA==" + }, "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -10489,7 +10529,7 @@ "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "requires": { "wrappy": "1" } @@ -10600,7 +10640,7 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true }, "p-limit": { @@ -10835,19 +10875,19 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true }, "path-parse": { @@ -10880,7 +10920,7 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true }, "picocolors": { @@ -10909,13 +10949,13 @@ "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, "requires": { "pinkie": "^2.0.0" @@ -11070,7 +11110,7 @@ "postcss-media-query-parser": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", "dev": true }, "postcss-modules-extract-imports": { @@ -11120,7 +11160,7 @@ "postcss-resolve-nested-selector": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", + "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", "dev": true }, "postcss-safe-parser": { @@ -11424,7 +11464,7 @@ "proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true }, "protractor": { @@ -11453,19 +11493,19 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", "dev": true, "requires": { "array-uniq": "^1.0.1" @@ -11474,13 +11514,13 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "requires": { "ansi-styles": "^2.2.1", @@ -11536,7 +11576,7 @@ "del": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "integrity": "sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ==", "dev": true, "requires": { "globby": "^5.0.0", @@ -11551,7 +11591,7 @@ "globby": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "integrity": "sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==", "dev": true, "requires": { "array-union": "^1.0.1", @@ -11571,7 +11611,7 @@ "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==", "dev": true }, "is-path-in-cwd": { @@ -11586,7 +11626,7 @@ "is-path-inside": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", "dev": true, "requires": { "path-is-inside": "^1.0.1" @@ -11595,7 +11635,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, "rimraf": { @@ -11631,7 +11671,7 @@ "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -11640,7 +11680,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true }, "webdriver-manager": { @@ -11863,7 +11903,7 @@ "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, "requires": { "pify": "^2.3.0" @@ -11872,7 +11912,7 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true } } @@ -12192,7 +12232,7 @@ "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", "dev": true }, "replace-in-file": { @@ -12323,7 +12363,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" }, "require-from-string": { "version": "2.0.2", @@ -12340,7 +12380,7 @@ "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "resolve": { "version": "1.20.0", @@ -12592,6 +12632,29 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, + "scandit-sdk": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/scandit-sdk/-/scandit-sdk-5.12.1.tgz", + "integrity": "sha512-DqiOzig/4zZUbF6JOqsAfhyEDKF+2yRTsRQPkRWlXQbO+2DdbPWLI/5q+SewHi898SyU3zqEO1VNps8WLB0RHg==", + "requires": { + "@babel/runtime-corejs2": "^7.18.9", + "@juggle/resize-observer": "^3.3.1", + "csstype": "^3.1.0", + "eventemitter3": "^4.0.7", + "howler": "^2.2.3", + "js-cookie": "^3.0.1", + "objectFitPolyfill": "^2.3.5", + "tslib": "^2.4.0", + "ua-parser-js": "^1.0.2" + }, + "dependencies": { + "ua-parser-js": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.32.tgz", + "integrity": "sha512-dXVsz3M4j+5tTiovFVyVqssXBu5HM47//YSOeZ9fQkdDKkfzv2v3PP1jmH6FUyPW+yCSn7aBVK1fGGKNhowdDA==" + } + } + }, "schema-utils": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", @@ -12657,7 +12720,7 @@ "tmp": { "version": "0.0.30", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", - "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "integrity": "sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==", "dev": true, "requires": { "os-tmpdir": "~1.0.1" @@ -12686,7 +12749,7 @@ "semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", "dev": true }, "semver-dsl": { @@ -12867,7 +12930,7 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, "set-cookie-parser": { @@ -12899,7 +12962,7 @@ "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -12908,7 +12971,7 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true }, "shell-quote": { @@ -13317,7 +13380,7 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true }, "strip-final-newline": { @@ -13338,7 +13401,7 @@ "style-search": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", "dev": true }, "stylelint": { @@ -13571,7 +13634,7 @@ "svg-tags": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true }, "symbol-observable": { @@ -13789,7 +13852,7 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, "thunky": { @@ -13810,7 +13873,7 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" }, "to-regex-range": { "version": "5.0.1", @@ -13879,7 +13942,7 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, "diff": { @@ -13900,7 +13963,7 @@ "yn": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", - "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", "dev": true } } @@ -13934,7 +13997,7 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", "dev": true }, "commander": { @@ -13992,7 +14055,7 @@ "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, "requires": { "safe-buffer": "^5.0.1" @@ -14001,7 +14064,7 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, "type-fest": { @@ -14165,7 +14228,7 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true }, "update-browserslist-db": { @@ -14198,13 +14261,13 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true }, "uuid": { @@ -14240,12 +14303,12 @@ "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "dev": true, "requires": { "assert-plus": "^1.0.0", @@ -14554,7 +14617,7 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", "dev": true }, "which-pm-runs": { @@ -14628,7 +14691,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "write-file-atomic": { "version": "3.0.3", diff --git a/package.json b/package.json index 2e0e4a9ea..533c9ead2 100644 --- a/package.json +++ b/package.json @@ -69,6 +69,7 @@ "ng2-pdf-viewer": "^9.1.3", "ngx-device-detector": "^4.0.1", "rxjs": "^6.6.7", + "scandit-sdk": "^5.12.1", "socket.io": "^4.5.4", "tslib": "^2.0.0", "uglify-js": "^3.4.9",