diff --git a/.gitignore b/.gitignore index 81b7ca7..c03ffc4 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,5 @@ npm-debug.log* /platforms /plugins /www + +.devcontainer/ diff --git a/package.json b/package.json index 0381c7b..aabb67a 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,7 @@ "test": "ng test", "lint": "ng lint", "e2e": "ng e2e", - "deploy:dev": "ionic build --prod && rsync -zrvh ./www/* node-development:/var/www/stop-motion-app/", - "update-ng": "ng update @angular/core@17 @angular/cli@17" + "deploy:dev": "ionic build --prod && rsync -zrvh ./www/* node-development:/var/www/stop-motion-app/" }, "private": true, "dependencies": { @@ -58,17 +57,16 @@ "eslint-plugin-import": "2.22.1", "eslint-plugin-jsdoc": "30.7.6", "eslint-plugin-prefer-arrow": "1.2.2", - "jasmine-core": "3.8.0", - "jasmine-spec-reporter": "5.0.0", - "karma": "6.3.2", - "karma-chrome-launcher": "3.1.0", - "karma-coverage": "2.0.3", - "karma-coverage-istanbul-reporter": "3.0.2", - "karma-jasmine": "4.0.0", - "karma-jasmine-html-reporter": "1.5.0", + "jasmine-core": "5.1.2", + "jasmine-spec-reporter": "7.0.0", + "karma": "6.4.3", + "karma-chrome-launcher": "3.2.0", + "karma-coverage": "2.2.1", + "karma-jasmine": "5.1.0", + "karma-jasmine-html-reporter": "2.1.0", "protractor": "7.0.0", "ts-node": "8.3.0", "typescript": "5.4.5" }, "description": "An Ionic project" -} +} \ No newline at end of file diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts index 161e57d..b013e38 100644 --- a/src/app/app.component.spec.ts +++ b/src/app/app.component.spec.ts @@ -2,6 +2,8 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { TestBed, waitForAsync } from '@angular/core/testing'; import { AppComponent } from './app.component'; +import { TranslateModule } from '@ngx-translate/core'; +import { ServiceWorkerModule } from '@angular/service-worker'; describe('AppComponent', () => { @@ -9,6 +11,7 @@ describe('AppComponent', () => { TestBed.configureTestingModule({ declarations: [AppComponent], + imports: [TranslateModule.forRoot(), ServiceWorkerModule.register('', {enabled: false})], schemas: [CUSTOM_ELEMENTS_SCHEMA], }).compileComponents(); })); diff --git a/src/app/components/countdown/countdown.component.spec.ts b/src/app/components/countdown/countdown.component.spec.ts index a571aed..198b315 100644 --- a/src/app/components/countdown/countdown.component.spec.ts +++ b/src/app/components/countdown/countdown.component.spec.ts @@ -1,6 +1,7 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { CountdownComponent } from './countdown.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('CountdownComponent', () => { let component: CountdownComponent; @@ -8,7 +9,8 @@ describe('CountdownComponent', () => { beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ CountdownComponent ] + declarations: [ CountdownComponent ], + imports: [TranslateModule.forRoot()] }) .compileComponents(); })); diff --git a/src/app/components/header/header.component.spec.ts b/src/app/components/header/header.component.spec.ts index c247c3c..f6ff045 100644 --- a/src/app/components/header/header.component.spec.ts +++ b/src/app/components/header/header.component.spec.ts @@ -4,6 +4,7 @@ import { IonicModule } from '@ionic/angular'; import { BaseService } from '@services/base/base.service'; import { HeaderComponent } from './header.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('HeaderComponent', () => { let component: HeaderComponent; @@ -12,7 +13,7 @@ describe('HeaderComponent', () => { beforeEach((() => { TestBed.configureTestingModule({ declarations: [ HeaderComponent ], - imports: [IonicModule.forRoot(), RouterTestingModule], + imports: [IonicModule.forRoot(), RouterTestingModule, TranslateModule.forRoot()], providers: [BaseService] }) .compileComponents(); @@ -21,6 +22,7 @@ describe('HeaderComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(HeaderComponent); component = fixture.componentInstance; + component.options = {backButton: false, backHref: "", title: "", leftButton: false, leftHref: "", leftIcon: "", rightButton: false, rightHref: "", rightIcon: ""}; fixture.detectChanges(); }); diff --git a/src/app/components/spinner/spinner.component.spec.ts b/src/app/components/spinner/spinner.component.spec.ts index 339d9b1..88adeac 100644 --- a/src/app/components/spinner/spinner.component.spec.ts +++ b/src/app/components/spinner/spinner.component.spec.ts @@ -4,6 +4,7 @@ import { IonicModule } from '@ionic/angular'; import { BaseService } from '@services/base/base.service'; import { SpinnerComponent } from './spinner.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('SpinnerComponent', () => { let component: SpinnerComponent; @@ -12,7 +13,7 @@ describe('SpinnerComponent', () => { beforeEach((() => { TestBed.configureTestingModule({ declarations: [ SpinnerComponent ], - imports: [IonicModule.forRoot(), RouterTestingModule], + imports: [IonicModule.forRoot(), RouterTestingModule, TranslateModule.forRoot()], providers: [BaseService] }) .compileComponents(); @@ -21,6 +22,7 @@ describe('SpinnerComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(SpinnerComponent); component = fixture.componentInstance; + component.spinnerOptions = {type: "slide"}; fixture.detectChanges(); }); diff --git a/src/app/directives/open-url/open-url.directive.spec.ts b/src/app/directives/open-url/open-url.directive.spec.ts deleted file mode 100644 index fdc5e46..0000000 --- a/src/app/directives/open-url/open-url.directive.spec.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { OpenUrlDirective } from './open-url.directive'; - -describe('OpenUrlDirective', () => { - // it('should create an instance', () => { - // const directive = new OpenUrlDirective(); - // expect(directive).toBeTruthy(); - // }); -}); diff --git a/src/app/pages/animator/animator.page.spec.ts b/src/app/pages/animator/animator.page.spec.ts index 2cfa9ce..98a8f4f 100644 --- a/src/app/pages/animator/animator.page.spec.ts +++ b/src/app/pages/animator/animator.page.spec.ts @@ -1,7 +1,28 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { AnimatorPage } from './animator.page'; +import { TranslateModule } from '@ngx-translate/core'; +import { ToolbarComponent } from './components/toolbar/toolbar.component'; +import { ThumbnailsComponent } from './components/thumbnails/thumbnails.component'; +import { SettingsPage } from '@pages/settings/settings.page'; +import { SettingsButtonComponent } from './components/settings-button/settings-button.component'; +import { ClearButtonComponent } from './components/clear-button/clear-button.component'; +import { LoadButtonComponent } from './components/load-button/load-button.component'; +import { SaveButtonComponent } from './components/save-button/save-button.component'; +import { SnapshotCanvasComponent } from './components/snapshot-canvas/snapshot-canvas.component'; +import { TimerComponent } from './components/timer/timer.component'; +import { FramerateSliderComponent } from './components/framerate-slider/framerate-slider.component'; +import { VideoComponent } from './components/video/video.component'; +import { TabbarComponent } from './components/tabbar/tabbar.component'; +import { CaptureButtonComponent } from './components/capture-button/capture-button.component'; +import { PlayerCanvasComponent } from './components/player-canvas/player-canvas.component'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { RouterModule } from '@angular/router'; +import { UndoButtonComponent } from './components/undo-button/undo-button.component'; +import { RecordAudioButtonComponent } from './components/record-audio-button/record-audio-button.component'; +import { CameraSelectButtonComponent } from './components/camera-select-button/camera-select-button.component'; +import { PlayButtonComponent } from './components/play-button/play-button.component'; describe('AnimatorPage', () => { let component: AnimatorPage; @@ -9,8 +30,8 @@ describe('AnimatorPage', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [ AnimatorPage ], - imports: [IonicModule.forRoot()] + declarations: [ AnimatorPage, ToolbarComponent, ThumbnailsComponent, SettingsPage, SettingsButtonComponent, ClearButtonComponent, LoadButtonComponent, SaveButtonComponent, SnapshotCanvasComponent, TimerComponent, CaptureButtonComponent, PlayerCanvasComponent, FramerateSliderComponent, VideoComponent, TabbarComponent, UndoButtonComponent, RecordAudioButtonComponent, CameraSelectButtonComponent, PlayButtonComponent], + imports: [IonicModule.forRoot(), TranslateModule.forRoot(), HttpClientTestingModule, NoopAnimationsModule, RouterModule.forRoot([])] }).compileComponents(); fixture = TestBed.createComponent(AnimatorPage); diff --git a/src/app/pages/animator/components/camera-select-button/camera-select-button.component.spec.ts b/src/app/pages/animator/components/camera-select-button/camera-select-button.component.spec.ts index 2f14763..421628e 100644 --- a/src/app/pages/animator/components/camera-select-button/camera-select-button.component.spec.ts +++ b/src/app/pages/animator/components/camera-select-button/camera-select-button.component.spec.ts @@ -1,7 +1,8 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { CameraSelectButtonComponent } from './camera-select-button.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('CameraSelectButtonComponent', () => { let component: CameraSelectButtonComponent; @@ -10,7 +11,7 @@ describe('CameraSelectButtonComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ CameraSelectButtonComponent ], - imports: [IonicModule.forRoot()] + imports: [IonicModule.forRoot(), TranslateModule.forRoot(), HttpClientTestingModule] }).compileComponents(); fixture = TestBed.createComponent(CameraSelectButtonComponent); diff --git a/src/app/pages/animator/components/capture-button/capture-button.component.spec.ts b/src/app/pages/animator/components/capture-button/capture-button.component.spec.ts index 3e21de9..cbbe866 100644 --- a/src/app/pages/animator/components/capture-button/capture-button.component.spec.ts +++ b/src/app/pages/animator/components/capture-button/capture-button.component.spec.ts @@ -1,7 +1,8 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { CaptureButtonComponent } from './capture-button.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('CaptureButtonComponent', () => { let component: CaptureButtonComponent; @@ -10,7 +11,7 @@ describe('CaptureButtonComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ CaptureButtonComponent ], - imports: [IonicModule.forRoot()] + imports: [IonicModule.forRoot(), TranslateModule.forRoot(), HttpClientTestingModule] }).compileComponents(); fixture = TestBed.createComponent(CaptureButtonComponent); diff --git a/src/app/pages/animator/components/clear-button/clear-button.component.spec.ts b/src/app/pages/animator/components/clear-button/clear-button.component.spec.ts index 2421d15..2ff3d21 100644 --- a/src/app/pages/animator/components/clear-button/clear-button.component.spec.ts +++ b/src/app/pages/animator/components/clear-button/clear-button.component.spec.ts @@ -1,7 +1,8 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ClearButtonComponent } from './clear-button.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('ClearButtonComponent', () => { let component: ClearButtonComponent; @@ -10,7 +11,7 @@ describe('ClearButtonComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ ClearButtonComponent ], - imports: [IonicModule.forRoot()] + imports: [IonicModule.forRoot(), TranslateModule.forRoot(), HttpClientTestingModule] }).compileComponents(); fixture = TestBed.createComponent(ClearButtonComponent); diff --git a/src/app/pages/animator/components/framerate-slider/framerate-slider.component.spec.ts b/src/app/pages/animator/components/framerate-slider/framerate-slider.component.spec.ts index feb3403..4b46a7f 100644 --- a/src/app/pages/animator/components/framerate-slider/framerate-slider.component.spec.ts +++ b/src/app/pages/animator/components/framerate-slider/framerate-slider.component.spec.ts @@ -1,7 +1,8 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { FramerateSliderComponent } from './framerate-slider.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('FramerateSliderComponent', () => { let component: FramerateSliderComponent; @@ -10,7 +11,7 @@ describe('FramerateSliderComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ FramerateSliderComponent ], - imports: [IonicModule.forRoot()] + imports: [IonicModule.forRoot(), TranslateModule.forRoot(), HttpClientTestingModule] }).compileComponents(); fixture = TestBed.createComponent(FramerateSliderComponent); diff --git a/src/app/pages/animator/components/load-button/load-button.component.spec.ts b/src/app/pages/animator/components/load-button/load-button.component.spec.ts index 84bde25..1b08b67 100644 --- a/src/app/pages/animator/components/load-button/load-button.component.spec.ts +++ b/src/app/pages/animator/components/load-button/load-button.component.spec.ts @@ -1,7 +1,8 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { LoadButtonComponent } from './load-button.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('LoadButtonComponent', () => { let component: LoadButtonComponent; @@ -10,7 +11,7 @@ describe('LoadButtonComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ LoadButtonComponent ], - imports: [IonicModule.forRoot()] + imports: [IonicModule.forRoot(), TranslateModule.forRoot(), HttpClientTestingModule] }).compileComponents(); fixture = TestBed.createComponent(LoadButtonComponent); diff --git a/src/app/pages/animator/components/play-button/play-button.component.spec.ts b/src/app/pages/animator/components/play-button/play-button.component.spec.ts index e1b3b7d..e02d5bc 100644 --- a/src/app/pages/animator/components/play-button/play-button.component.spec.ts +++ b/src/app/pages/animator/components/play-button/play-button.component.spec.ts @@ -1,7 +1,8 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { PlayButtonComponent } from './play-button.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('PlayButtonComponent', () => { let component: PlayButtonComponent; @@ -10,7 +11,7 @@ describe('PlayButtonComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ PlayButtonComponent ], - imports: [IonicModule.forRoot()] + imports: [IonicModule.forRoot(), TranslateModule.forRoot(), HttpClientTestingModule] }).compileComponents(); fixture = TestBed.createComponent(PlayButtonComponent); diff --git a/src/app/pages/animator/components/player-canvas/player-canvas.component.spec.ts b/src/app/pages/animator/components/player-canvas/player-canvas.component.spec.ts index 960d772..fbf8fa6 100644 --- a/src/app/pages/animator/components/player-canvas/player-canvas.component.spec.ts +++ b/src/app/pages/animator/components/player-canvas/player-canvas.component.spec.ts @@ -1,7 +1,8 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { PlayerCanvasComponent } from './player-canvas.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('PlayerCanvasComponent', () => { let component: PlayerCanvasComponent; @@ -10,7 +11,7 @@ describe('PlayerCanvasComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ PlayerCanvasComponent ], - imports: [IonicModule.forRoot()] + imports: [IonicModule.forRoot(), TranslateModule.forRoot(), HttpClientTestingModule] }).compileComponents(); fixture = TestBed.createComponent(PlayerCanvasComponent); diff --git a/src/app/pages/animator/components/record-audio-button/record-audio-button.component.spec.ts b/src/app/pages/animator/components/record-audio-button/record-audio-button.component.spec.ts index 3854579..67635f3 100644 --- a/src/app/pages/animator/components/record-audio-button/record-audio-button.component.spec.ts +++ b/src/app/pages/animator/components/record-audio-button/record-audio-button.component.spec.ts @@ -1,7 +1,8 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { RecordAudioButtonComponent } from './record-audio-button.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('RecordAudioButtonComponent', () => { let component: RecordAudioButtonComponent; @@ -10,7 +11,7 @@ describe('RecordAudioButtonComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ RecordAudioButtonComponent ], - imports: [IonicModule.forRoot()] + imports: [IonicModule.forRoot(), TranslateModule.forRoot(), HttpClientTestingModule] }).compileComponents(); fixture = TestBed.createComponent(RecordAudioButtonComponent); diff --git a/src/app/pages/animator/components/save-button/save-button.component.spec.ts b/src/app/pages/animator/components/save-button/save-button.component.spec.ts index d096578..2e154a9 100644 --- a/src/app/pages/animator/components/save-button/save-button.component.spec.ts +++ b/src/app/pages/animator/components/save-button/save-button.component.spec.ts @@ -1,7 +1,8 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { SaveButtonComponent } from './save-button.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('SaveButtonComponent', () => { let component: SaveButtonComponent; @@ -10,7 +11,7 @@ describe('SaveButtonComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ SaveButtonComponent ], - imports: [IonicModule.forRoot()] + imports: [IonicModule.forRoot(), TranslateModule.forRoot(), HttpClientTestingModule] }).compileComponents(); fixture = TestBed.createComponent(SaveButtonComponent); diff --git a/src/app/pages/animator/components/settings-button/settings-button.component.spec.ts b/src/app/pages/animator/components/settings-button/settings-button.component.spec.ts index 93201d4..3b329c9 100644 --- a/src/app/pages/animator/components/settings-button/settings-button.component.spec.ts +++ b/src/app/pages/animator/components/settings-button/settings-button.component.spec.ts @@ -2,6 +2,7 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; import { SettingsButtonComponent } from './settings-button.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('SettingsButtonComponent', () => { let component: SettingsButtonComponent; @@ -10,7 +11,7 @@ describe('SettingsButtonComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ SettingsButtonComponent ], - imports: [IonicModule.forRoot()] + imports: [IonicModule.forRoot(), TranslateModule.forRoot()] }).compileComponents(); fixture = TestBed.createComponent(SettingsButtonComponent); diff --git a/src/app/pages/animator/components/tabbar/tabbar.component.spec.ts b/src/app/pages/animator/components/tabbar/tabbar.component.spec.ts index f18cdaf..a42737c 100644 --- a/src/app/pages/animator/components/tabbar/tabbar.component.spec.ts +++ b/src/app/pages/animator/components/tabbar/tabbar.component.spec.ts @@ -2,8 +2,14 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; import { IonicModule } from '@ionic/angular'; import { BaseService } from '@services/base/base.service'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { TabbarComponent } from './tabbar.component'; +import { PlayButtonComponent } from '../play-button/play-button.component'; +import { UndoButtonComponent } from '../undo-button/undo-button.component'; +import { CaptureButtonComponent } from '../capture-button/capture-button.component'; +import { RecordAudioButtonComponent } from '../record-audio-button/record-audio-button.component'; +import { TranslateModule } from '@ngx-translate/core'; +import { CameraSelectButtonComponent } from '../camera-select-button/camera-select-button.component'; describe('HeaderComponent', () => { let component: TabbarComponent; @@ -11,8 +17,8 @@ describe('HeaderComponent', () => { beforeEach((() => { TestBed.configureTestingModule({ - declarations: [ TabbarComponent ], - imports: [IonicModule.forRoot(), RouterTestingModule], + declarations: [ TabbarComponent, PlayButtonComponent, UndoButtonComponent, CaptureButtonComponent, RecordAudioButtonComponent, CameraSelectButtonComponent ], + imports: [IonicModule.forRoot(), RouterTestingModule, TranslateModule.forRoot(), HttpClientTestingModule], providers: [BaseService] }) .compileComponents(); diff --git a/src/app/pages/animator/components/thumbnail/thumbnail.component.spec.ts b/src/app/pages/animator/components/thumbnail/thumbnail.component.spec.ts index f7e2a66..394dcab 100644 --- a/src/app/pages/animator/components/thumbnail/thumbnail.component.spec.ts +++ b/src/app/pages/animator/components/thumbnail/thumbnail.component.spec.ts @@ -1,20 +1,27 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ThumbnailComponent } from './thumbnail.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('ThumbnailComponent', () => { let component: ThumbnailComponent; let fixture: ComponentFixture; + let mockCanvas: HTMLCanvasElement; + let mockContext: CanvasRenderingContext2D; beforeEach(waitForAsync(() => { + // we need to create a canvas for the thumbnail to draw on: + mockCanvas = document.createElement('canvas'); + TestBed.configureTestingModule({ declarations: [ ThumbnailComponent ], - imports: [IonicModule.forRoot()] + imports: [IonicModule.forRoot(), TranslateModule.forRoot(), HttpClientTestingModule] }).compileComponents(); fixture = TestBed.createComponent(ThumbnailComponent); component = fixture.componentInstance; + component.frame = mockCanvas; fixture.detectChanges(); })); diff --git a/src/app/pages/animator/components/thumbnails/thumbnails.component.spec.ts b/src/app/pages/animator/components/thumbnails/thumbnails.component.spec.ts index ac3c600..4f8ee26 100644 --- a/src/app/pages/animator/components/thumbnails/thumbnails.component.spec.ts +++ b/src/app/pages/animator/components/thumbnails/thumbnails.component.spec.ts @@ -1,7 +1,8 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ThumbnailsComponent } from './thumbnails.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('ThumbnailsComponent', () => { let component: ThumbnailsComponent; @@ -10,7 +11,7 @@ describe('ThumbnailsComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ ThumbnailsComponent ], - imports: [IonicModule.forRoot()] + imports: [IonicModule.forRoot(), TranslateModule.forRoot(), HttpClientTestingModule] }).compileComponents(); fixture = TestBed.createComponent(ThumbnailsComponent); diff --git a/src/app/pages/animator/components/timer/timer.component.spec.ts b/src/app/pages/animator/components/timer/timer.component.spec.ts index f1ebe82..d6815a9 100644 --- a/src/app/pages/animator/components/timer/timer.component.spec.ts +++ b/src/app/pages/animator/components/timer/timer.component.spec.ts @@ -1,7 +1,8 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { TimerComponent } from './timer.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('TimerComponent', () => { let component: TimerComponent; @@ -10,7 +11,7 @@ describe('TimerComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ TimerComponent ], - imports: [IonicModule.forRoot()] + imports: [IonicModule.forRoot(), TranslateModule.forRoot(), HttpClientTestingModule] }).compileComponents(); fixture = TestBed.createComponent(TimerComponent); diff --git a/src/app/pages/animator/components/toggle-button/toggle-button.component.spec.ts b/src/app/pages/animator/components/toggle-button/toggle-button.component.spec.ts index 8e12b6c..1415b9b 100644 --- a/src/app/pages/animator/components/toggle-button/toggle-button.component.spec.ts +++ b/src/app/pages/animator/components/toggle-button/toggle-button.component.spec.ts @@ -1,7 +1,8 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ToggleButtonComponent } from './toggle-button.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('ToggleButtonComponent', () => { let component: ToggleButtonComponent; @@ -10,7 +11,7 @@ describe('ToggleButtonComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ ToggleButtonComponent ], - imports: [IonicModule.forRoot()] + imports: [IonicModule.forRoot(), TranslateModule.forRoot(), HttpClientTestingModule] }).compileComponents(); fixture = TestBed.createComponent(ToggleButtonComponent); diff --git a/src/app/pages/animator/components/toolbar/toolbar.component.spec.ts b/src/app/pages/animator/components/toolbar/toolbar.component.spec.ts index c6456ee..bd0c7cb 100644 --- a/src/app/pages/animator/components/toolbar/toolbar.component.spec.ts +++ b/src/app/pages/animator/components/toolbar/toolbar.component.spec.ts @@ -1,7 +1,12 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ToolbarComponent } from './toolbar.component'; +import { SaveButtonComponent } from '../save-button/save-button.component'; +import { TranslateModule } from '@ngx-translate/core'; +import { SettingsButtonComponent } from '../settings-button/settings-button.component'; +import { ClearButtonComponent } from '../clear-button/clear-button.component'; +import { LoadButtonComponent } from '../load-button/load-button.component'; describe('CaptureButtonComponent', () => { let component: ToolbarComponent; @@ -9,8 +14,8 @@ describe('CaptureButtonComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [ ToolbarComponent ], - imports: [IonicModule.forRoot()] + declarations: [ ToolbarComponent, SaveButtonComponent, SettingsButtonComponent, ClearButtonComponent, LoadButtonComponent ], + imports: [IonicModule.forRoot(), TranslateModule.forRoot(), HttpClientTestingModule] }).compileComponents(); fixture = TestBed.createComponent(ToolbarComponent); diff --git a/src/app/pages/animator/components/undo-button/undo-button.component.spec.ts b/src/app/pages/animator/components/undo-button/undo-button.component.spec.ts index 0388015..e94760a 100644 --- a/src/app/pages/animator/components/undo-button/undo-button.component.spec.ts +++ b/src/app/pages/animator/components/undo-button/undo-button.component.spec.ts @@ -1,7 +1,8 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { UndoButtonComponent } from './undo-button.component'; +import { TranslateModule } from '@ngx-translate/core'; describe('UndoButtonComponent', () => { let component: UndoButtonComponent; @@ -10,7 +11,7 @@ describe('UndoButtonComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ UndoButtonComponent ], - imports: [IonicModule.forRoot()] + imports: [IonicModule.forRoot(), TranslateModule.forRoot(), HttpClientTestingModule] }).compileComponents(); fixture = TestBed.createComponent(UndoButtonComponent); diff --git a/src/app/pages/animator/components/video/video.component.spec.ts b/src/app/pages/animator/components/video/video.component.spec.ts index d606da6..859f7a4 100644 --- a/src/app/pages/animator/components/video/video.component.spec.ts +++ b/src/app/pages/animator/components/video/video.component.spec.ts @@ -1,7 +1,9 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { VideoComponent } from './video.component'; +import { TranslateModule } from '@ngx-translate/core'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; describe('VideoComponent', () => { let component: VideoComponent; @@ -10,7 +12,7 @@ describe('VideoComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ VideoComponent ], - imports: [IonicModule.forRoot()] + imports: [IonicModule.forRoot(), TranslateModule.forRoot(), HttpClientTestingModule, NoopAnimationsModule] }).compileComponents(); fixture = TestBed.createComponent(VideoComponent); diff --git a/src/app/pages/animator/guards/animator.guard.spec.ts b/src/app/pages/animator/guards/animator.guard.spec.ts index 3192d63..adc979e 100644 --- a/src/app/pages/animator/guards/animator.guard.spec.ts +++ b/src/app/pages/animator/guards/animator.guard.spec.ts @@ -1,12 +1,13 @@ import { TestBed } from '@angular/core/testing'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { AnimatorGuard } from './animator.guard'; +import { TranslateModule } from '@ngx-translate/core'; describe('AnimatorGuard', () => { let service: AnimatorGuard; beforeEach(() => { - TestBed.configureTestingModule({}); + TestBed.configureTestingModule({imports: [TranslateModule.forRoot(), HttpClientTestingModule], providers: [AnimatorGuard]}); service = TestBed.inject(AnimatorGuard); }); diff --git a/src/app/pages/animator/modals/countdown/countdown.modal.spec.ts b/src/app/pages/animator/modals/countdown/countdown.modal.spec.ts index aa6f2e0..df1c810 100644 --- a/src/app/pages/animator/modals/countdown/countdown.modal.spec.ts +++ b/src/app/pages/animator/modals/countdown/countdown.modal.spec.ts @@ -1,24 +1,34 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { IonicModule } from '@ionic/angular'; +import { IonicModule, ModalController } from '@ionic/angular'; import { CountdownModalComponent } from './countdown.modal'; +import { TranslateModule } from '@ngx-translate/core'; +import { CountdownComponent } from '@components/countdown/countdown.component'; describe('CountdownModalComponent', () => { let component: CountdownModalComponent; let fixture: ComponentFixture; + let modalControllerSpy: jasmine.SpyObj; beforeEach(waitForAsync(() => { + modalControllerSpy = jasmine.createSpyObj('ModalController', ['dismiss']); + TestBed.configureTestingModule({ - declarations: [ CountdownModalComponent ], - imports: [IonicModule.forRoot()] + declarations: [CountdownModalComponent, CountdownComponent], + imports: [IonicModule.forRoot(), TranslateModule.forRoot()], + providers: [ + { provide: ModalController, useValue: modalControllerSpy } + ] }).compileComponents(); fixture = TestBed.createComponent(CountdownModalComponent); component = fixture.componentInstance; + component.duration = 1; fixture.detectChanges(); })); it('should create', () => { expect(component).toBeTruthy(); + expect(modalControllerSpy.dismiss).toHaveBeenCalled(); }); }); diff --git a/src/app/pages/home/home.page.spec.ts b/src/app/pages/home/home.page.spec.ts index d628561..8f59870 100644 --- a/src/app/pages/home/home.page.spec.ts +++ b/src/app/pages/home/home.page.spec.ts @@ -2,6 +2,7 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; import { HomePage } from './home.page'; +import { TranslateModule } from '@ngx-translate/core'; describe('HomePage', () => { let component: HomePage; @@ -10,7 +11,7 @@ describe('HomePage', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ HomePage ], - imports: [IonicModule.forRoot()] + imports: [IonicModule.forRoot(), TranslateModule.forRoot()] }).compileComponents(); fixture = TestBed.createComponent(HomePage); diff --git a/src/app/pages/settings/settings.page.spec.ts b/src/app/pages/settings/settings.page.spec.ts index 5e32e9c..8ea2872 100644 --- a/src/app/pages/settings/settings.page.spec.ts +++ b/src/app/pages/settings/settings.page.spec.ts @@ -2,6 +2,9 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; import { SettingsPage } from './settings.page'; +import { TranslateModule } from '@ngx-translate/core'; +import { OpenUrlDirective } from 'src/app/directives/open-url/open-url.directive'; +import { HeaderComponent } from '@components/header/header.component'; describe('SettingsPage', () => { let component: SettingsPage; @@ -9,8 +12,8 @@ describe('SettingsPage', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ - declarations: [ SettingsPage ], - imports: [IonicModule.forRoot()] + declarations: [ SettingsPage, OpenUrlDirective, HeaderComponent ], + imports: [IonicModule.forRoot(), TranslateModule.forRoot()] }).compileComponents(); fixture = TestBed.createComponent(SettingsPage); diff --git a/src/app/services/alert/alert.service.spec.ts b/src/app/services/alert/alert.service.spec.ts index b20ed8c..d5e262b 100644 --- a/src/app/services/alert/alert.service.spec.ts +++ b/src/app/services/alert/alert.service.spec.ts @@ -1,12 +1,13 @@ import { TestBed } from '@angular/core/testing'; import { AlertService } from './alert.service'; +import { TranslateModule } from '@ngx-translate/core'; describe('AlertService', () => { let service: AlertService; beforeEach(() => { - TestBed.configureTestingModule({}); + TestBed.configureTestingModule({imports: [TranslateModule.forRoot()]}); service = TestBed.inject(AlertService); }); diff --git a/src/app/services/animator/animator.service.spec.ts b/src/app/services/animator/animator.service.spec.ts index 57fe8f1..382163c 100644 --- a/src/app/services/animator/animator.service.spec.ts +++ b/src/app/services/animator/animator.service.spec.ts @@ -1,12 +1,14 @@ import { TestBed } from '@angular/core/testing'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { AnimatorService } from './animator.service'; +import { TranslateModule } from '@ngx-translate/core'; describe('AnimatorService', () => { let service: AnimatorService; beforeEach(() => { - TestBed.configureTestingModule({}); + TestBed.configureTestingModule({imports: [HttpClientTestingModule, TranslateModule.forRoot()]}); service = TestBed.inject(AnimatorService); }); diff --git a/src/app/services/audio/audio.service.spec.ts b/src/app/services/audio/audio.service.spec.ts index 20b4808..d44225d 100644 --- a/src/app/services/audio/audio.service.spec.ts +++ b/src/app/services/audio/audio.service.spec.ts @@ -1,12 +1,13 @@ import { TestBed } from '@angular/core/testing'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { AudioService } from './audio.service'; +import { TranslateModule } from '@ngx-translate/core'; describe('AudioService', () => { let service: AudioService; beforeEach(() => { - TestBed.configureTestingModule({}); + TestBed.configureTestingModule({imports: [TranslateModule.forRoot(), HttpClientTestingModule]}); service = TestBed.inject(AudioService); }); diff --git a/src/app/services/base/base.service.spec.ts b/src/app/services/base/base.service.spec.ts index 452c7f7..1359d4d 100644 --- a/src/app/services/base/base.service.spec.ts +++ b/src/app/services/base/base.service.spec.ts @@ -1,12 +1,13 @@ import { TestBed } from '@angular/core/testing'; import { BaseService } from './base.service'; +import { TranslateModule } from '@ngx-translate/core'; describe('BaseService', () => { let service: BaseService; beforeEach(() => { - TestBed.configureTestingModule({}); + TestBed.configureTestingModule({imports: [TranslateModule.forRoot()]}); service = TestBed.inject(BaseService); }); diff --git a/src/app/services/http/http.service.spec.ts b/src/app/services/http/http.service.spec.ts index 7b345d4..762f082 100644 --- a/src/app/services/http/http.service.spec.ts +++ b/src/app/services/http/http.service.spec.ts @@ -1,12 +1,13 @@ import { TestBed } from '@angular/core/testing'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { HttpService } from './http.service'; +import { TranslateModule } from '@ngx-translate/core'; describe('HttpService', () => { let service: HttpService; beforeEach(() => { - TestBed.configureTestingModule({}); + TestBed.configureTestingModule({imports: [TranslateModule.forRoot(), HttpClientTestingModule]}); service = TestBed.inject(HttpService); }); diff --git a/src/app/services/images/images.service.spec.ts b/src/app/services/images/images.service.spec.ts index 9bb2694..c98e31b 100644 --- a/src/app/services/images/images.service.spec.ts +++ b/src/app/services/images/images.service.spec.ts @@ -1,12 +1,13 @@ import { TestBed } from '@angular/core/testing'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ImagesService } from './images.service'; +import { TranslateModule } from '@ngx-translate/core'; describe('ImagesService', () => { let service: ImagesService; beforeEach(() => { - TestBed.configureTestingModule({}); + TestBed.configureTestingModule({imports: [TranslateModule.forRoot(), HttpClientTestingModule]}); service = TestBed.inject(ImagesService); }); diff --git a/src/app/services/service-worker/service-worker.service.spec.ts b/src/app/services/service-worker/service-worker.service.spec.ts index ed148b0..9055457 100644 --- a/src/app/services/service-worker/service-worker.service.spec.ts +++ b/src/app/services/service-worker/service-worker.service.spec.ts @@ -1,12 +1,14 @@ import { TestBed } from '@angular/core/testing'; import { ServiceWorkerService } from './service-worker.service'; +import { TranslateModule } from '@ngx-translate/core'; +import { ServiceWorkerModule } from '@angular/service-worker'; describe('ServiceWorkerService', () => { let service: ServiceWorkerService; beforeEach(() => { - TestBed.configureTestingModule({}); + TestBed.configureTestingModule({imports: [TranslateModule.forRoot(), ServiceWorkerModule.register('', {enabled: false})]}); service = TestBed.inject(ServiceWorkerService); }); diff --git a/src/app/services/video/video.service.spec.ts b/src/app/services/video/video.service.spec.ts index be53750..62ea2c8 100644 --- a/src/app/services/video/video.service.spec.ts +++ b/src/app/services/video/video.service.spec.ts @@ -1,12 +1,13 @@ import { TestBed } from '@angular/core/testing'; - +import { HttpClientTestingModule } from '@angular/common/http/testing'; import { VideoService } from './video.service'; +import { TranslateModule } from '@ngx-translate/core'; describe('VideoService', () => { let service: VideoService; beforeEach(() => { - TestBed.configureTestingModule({}); + TestBed.configureTestingModule({imports: [TranslateModule.forRoot(), HttpClientTestingModule]}); service = TestBed.inject(VideoService); }); diff --git a/src/test.ts b/src/test.ts index 67a9c6e..ae25f27 100644 --- a/src/test.ts +++ b/src/test.ts @@ -1,6 +1,6 @@ // This file is required by karma.conf.js and loads recursively all the .spec and framework files -import 'zone.js/dist/zone-testing'; +import 'zone.js/testing'; import { getTestBed } from '@angular/core/testing'; import { BrowserDynamicTestingModule, diff --git a/yarn.lock b/yarn.lock index 001eb29..6ba4d8e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -335,7 +335,7 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/core@^7.12.3", "@babel/core@^7.7.5": +"@babel/core@^7.12.3": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.4.tgz#1f758428e88e0d8c563874741bc4ffc4f71a4717" integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg== @@ -1313,6 +1313,11 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@discoveryjs/json-ext@0.5.7": version "0.5.7" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" @@ -2004,6 +2009,11 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== +"@socket.io/component-emitter@~3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.1.tgz#621270c02c0a5d4f4669eb1caa9723c91cf201de" + integrity sha512-dzJtaDAAoXx4GCOJpbB2eG/Qj8VDpdwkLsWGzGm+0L7E8/434RyMbAHmk9ubXWVAb9nXmc44jUf8GKqVDiKezg== + "@stencil/core@^4.0.3", "@stencil/core@^4.12.2": version "4.15.0" resolved "https://registry.yarnpkg.com/@stencil/core/-/core-4.15.0.tgz#84db0d9e34cd6e420222e76fb8ada1c5bdee41a2" @@ -2037,11 +2047,6 @@ dependencies: "@types/node" "*" -"@types/component-emitter@^1.2.10": - version "1.2.14" - resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.14.tgz#8816eaec385a34fe124f26be8e6ccce4e5160820" - integrity sha512-lmPil1g82wwWg/qHSxMWkSKyJGQOK+ejXeMAAWyxNtVUD0/Ycj2maL63RAqpxVfdtvTfZkRnqzB0A9ft59y69g== - "@types/connect-history-api-fallback@^1.3.5": version "1.5.4" resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" @@ -2057,12 +2062,12 @@ dependencies: "@types/node" "*" -"@types/cookie@^0.4.0": +"@types/cookie@^0.4.1": version "0.4.1" resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== -"@types/cors@^2.8.8": +"@types/cors@^2.8.12": version "2.8.17" resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.17.tgz#5d718a5e494a8166f569d986794e49c48b216b2b" integrity sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA== @@ -2936,11 +2941,6 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-arraybuffer@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812" - integrity sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg== - base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -3176,7 +3176,7 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.4.2, chokidar@^3.5.3: +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.5.1, chokidar@^3.5.3: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -3298,7 +3298,7 @@ colorette@^2.0.10: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== -colors@^1.4.0: +colors@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== @@ -3325,11 +3325,6 @@ common-path-prefix@^3.0.0: resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== -component-emitter@~1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" - integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== - compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -3574,7 +3569,7 @@ debug@2.6.9, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.4, debug@~4.3.1: +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2, debug@~4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -3846,25 +3841,26 @@ end-of-stream@^1.4.1: dependencies: once "^1.4.0" -engine.io-parser@~4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-4.0.3.tgz#83d3a17acfd4226f19e721bb22a1ee8f7662d2f6" - integrity sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA== - dependencies: - base64-arraybuffer "0.1.4" +engine.io-parser@~5.2.1: + version "5.2.2" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.2.tgz#37b48e2d23116919a3453738c5720455e64e1c49" + integrity sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw== -engine.io@~4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-4.1.2.tgz#f96ceb56d4b39cc7ca5bd29a20e9c99c1ad1a765" - integrity sha512-t5z6zjXuVLhXDMiFJPYsPOWEER8B0tIsD3ETgw19S1yg9zryvUfY3Vhtk3Gf4sihw/bQGIqQ//gjvVlu+Ca0bQ== +engine.io@~6.5.2: + version "6.5.4" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.5.4.tgz#6822debf324e781add2254e912f8568508850cdc" + integrity sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg== dependencies: + "@types/cookie" "^0.4.1" + "@types/cors" "^2.8.12" + "@types/node" ">=10.0.0" accepts "~1.3.4" base64id "2.0.0" cookie "~0.4.1" cors "~2.8.5" debug "~4.3.1" - engine.io-parser "~4.0.0" - ws "~7.4.2" + engine.io-parser "~5.2.1" + ws "~8.11.0" enhanced-resolve@^5.15.0: version "5.16.0" @@ -4757,7 +4753,7 @@ glob@^10.2.2, glob@^10.3.10: minipass "^7.0.4" path-scurry "^1.10.2" -glob@^7.0.3, glob@^7.0.6, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.3, glob@^7.0.6, glob@^7.1.3, glob@^7.1.4, glob@^7.1.7: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -5430,7 +5426,7 @@ isarray@^2.0.5: resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== -isbinaryfile@^4.0.6: +isbinaryfile@^4.0.8: version "4.0.10" resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== @@ -5455,27 +5451,12 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== -istanbul-lib-coverage@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" - integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== - istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== -istanbul-lib-instrument@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-instrument@^5.0.4: +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: version "5.2.1" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== @@ -5495,18 +5476,7 @@ istanbul-lib-report@^3.0.0: make-dir "^4.0.0" supports-color "^7.1.0" -istanbul-lib-source-maps@^3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" - integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - rimraf "^2.6.3" - source-map "^0.6.1" - -istanbul-lib-source-maps@^4.0.0: +istanbul-lib-source-maps@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== @@ -5515,7 +5485,7 @@ istanbul-lib-source-maps@^4.0.0: istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^3.0.0, istanbul-reports@^3.0.2: +istanbul-reports@^3.0.5: version "3.1.7" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== @@ -5542,25 +5512,27 @@ jake@^10.8.5: filelist "^1.0.4" minimatch "^3.1.2" -jasmine-core@3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.8.0.tgz#815399aae5aa5d9beeb1262805f981b99ffc9bf0" - integrity sha512-zl0nZWDrmbCiKns0NcjkFGYkVTGCPUgoHypTaj+G2AzaWus7QGoXARSlYsSle2VRpSdfJmM+hzmFKzQNhF2kHg== +jasmine-core@5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-5.1.2.tgz#8f2789faa79ef1ffad7abab6bff8d4bd661094f7" + integrity sha512-2oIUMGn00FdUiqz6epiiJr7xcFyNYj3rDcfmnzfkBnHyBQ3cBQUs4mmyGsOb7TTLb9kxk7dBcmEmqhDKkBoDyA== -jasmine-core@^3.6.0: - version "3.99.1" - resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.99.1.tgz#5bfa4b2d76618868bfac4c8ff08bb26fffa4120d" - integrity sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg== +jasmine-core@^4.1.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-4.6.0.tgz#6884fc3d5b66bf293e422751eed6d6da217c38f5" + integrity sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ== jasmine-core@~2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" integrity sha512-SNkOkS+/jMZvLhuSx1fjhcNWUC/KG6oVyFUGkSBEr9n1axSNduWU8GlI7suaHXr4yxjet6KjrUZxUTE5WzzWwQ== -jasmine-spec-reporter@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/jasmine-spec-reporter/-/jasmine-spec-reporter-5.0.0.tgz#7357ddc398de517a7975ea47d7256c5176cc948e" - integrity sha512-L+PCPtk7PPPhHYzDAfFPdRsDUEd+DoxbJwIeyOnbmlt/wWNOuwKE39W9eQYqUlZW/YqunIZaT9sqH8O7Kiurkw== +jasmine-spec-reporter@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/jasmine-spec-reporter/-/jasmine-spec-reporter-7.0.0.tgz#94b939448e63d4e2bd01668142389f20f0a8ea49" + integrity sha512-OtC7JRasiTcjsaCBPtMO0Tl8glCejM4J4/dNuOJdA8lBjz4PmWjYQ6pzb0uzpBNAWJMDudYuj9OdXJWqM2QTJg== + dependencies: + colors "1.4.0" jasmine@2.8.0: version "2.8.0" @@ -5748,47 +5720,36 @@ jszip@^3.1.3: readable-stream "~2.3.6" setimmediate "^1.0.5" -karma-chrome-launcher@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz#805a586799a4d05f4e54f72a204979f3f3066738" - integrity sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg== +karma-chrome-launcher@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz#eb9c95024f2d6dfbb3748d3415ac9b381906b9a9" + integrity sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q== dependencies: which "^1.2.1" -karma-coverage-istanbul-reporter@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.2.tgz#b7f3393b13c7e3dafa5410a68d98d327ae21e807" - integrity sha512-pg23tKKF867UIJUIZF252cNbiBnuMIPOMkeiULzjysr9K267Js2O/SoQBL1PCPctJVzvhOkE47yQPUKrWtyl6w== - dependencies: - istanbul-lib-coverage "^3.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^3.0.6" - istanbul-reports "^3.0.2" - minimatch "^3.0.4" - -karma-coverage@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-2.0.3.tgz#c10f4711f4cf5caaaa668b1d6f642e7da122d973" - integrity sha512-atDvLQqvPcLxhED0cmXYdsPMCQuh6Asa9FMZW1bhNqlVEhJoB9qyZ2BY1gu7D/rr5GLGb5QzYO4siQskxaWP/g== +karma-coverage@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-2.2.1.tgz#e1cc074f93ace9dc4fb7e7aeca7135879c2e358c" + integrity sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A== dependencies: - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.1" + istanbul-lib-coverage "^3.2.0" + istanbul-lib-instrument "^5.1.0" istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.0" + istanbul-lib-source-maps "^4.0.1" + istanbul-reports "^3.0.5" minimatch "^3.0.4" -karma-jasmine-html-reporter@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.0.tgz#bbc2aa47ecc3fbd51633d73b84250c7063489e44" - integrity sha512-bN4XQf+PRLV7nKQ+a0nxmCPP11sKRbZMnr7TtqLMIL7FXltBBepiEF/+VI4rO0EPaMPb3sozv5dGTC2giXiJAw== +karma-jasmine-html-reporter@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz#f951ad00b08d61d03595402c914d1a589c4930e3" + integrity sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ== -karma-jasmine@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-4.0.0.tgz#2d172dc5afdd047892a23563ec4db480e93d22c7" - integrity sha512-6hFwluoj6i/ItzG1D3MEfBHrAgKqyS+KsAqaFqeIsJth1B+pCIh6AItT94w7Z5FZlOA7Qcs9qoibUMocM9yBPw== +karma-jasmine@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-5.1.0.tgz#3af4558a6502fa16856a0f346ec2193d4b884b2f" + integrity sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ== dependencies: - jasmine-core "^3.6.0" + jasmine-core "^4.1.0" karma-source-map-support@1.4.0: version "1.4.0" @@ -5797,33 +5758,34 @@ karma-source-map-support@1.4.0: dependencies: source-map-support "^0.5.5" -karma@6.3.2: - version "6.3.2" - resolved "https://registry.yarnpkg.com/karma/-/karma-6.3.2.tgz#24b62fbae3e8b5218cc32a0dac49ad08a541e76d" - integrity sha512-fo4Wt0S99/8vylZMxNj4cBFyOBBnC1bewZ0QOlePij/2SZVWxqbyLeIddY13q6URa2EpLRW8ixvFRUMjkmo1bw== +karma@6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.3.tgz#763e500f99597218bbb536de1a14acc4ceea7ce8" + integrity sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q== dependencies: + "@colors/colors" "1.5.0" body-parser "^1.19.0" braces "^3.0.2" - chokidar "^3.4.2" - colors "^1.4.0" + chokidar "^3.5.1" connect "^3.7.0" di "^0.0.1" dom-serialize "^2.2.1" - glob "^7.1.6" - graceful-fs "^4.2.4" + glob "^7.1.7" + graceful-fs "^4.2.6" http-proxy "^1.18.1" - isbinaryfile "^4.0.6" - lodash "^4.17.19" - log4js "^6.2.1" - mime "^2.4.5" + isbinaryfile "^4.0.8" + lodash "^4.17.21" + log4js "^6.4.1" + mime "^2.5.2" minimatch "^3.0.4" + mkdirp "^0.5.5" qjobs "^1.2.0" range-parser "^1.2.1" rimraf "^3.0.2" - socket.io "^3.1.0" + socket.io "^4.7.2" source-map "^0.6.1" - tmp "0.2.1" - ua-parser-js "^0.7.23" + tmp "^0.2.1" + ua-parser-js "^0.7.30" yargs "^16.1.1" kind-of@^6.0.2: @@ -5969,7 +5931,7 @@ log-symbols@^4.0.0, log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -log4js@^6.2.1: +log4js@^6.4.1: version "6.9.1" resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.9.1.tgz#aba5a3ff4e7872ae34f8b4c533706753709e38b6" integrity sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g== @@ -6100,7 +6062,7 @@ mime@1.6.0, mime@^1.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@^2.4.5: +mime@^2.5.2: version "2.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== @@ -6228,7 +6190,7 @@ minizlib@^2.1.1, minizlib@^2.1.2: minipass "^3.0.0" yallist "^4.0.0" -mkdirp@^0.5.1: +mkdirp@^0.5.1, mkdirp@^0.5.5: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -7389,14 +7351,14 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.3: +rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" -rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -7738,34 +7700,34 @@ smart-buffer@^4.2.0: resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== -socket.io-adapter@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz#edc5dc36602f2985918d631c1399215e97a1b527" - integrity sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg== +socket.io-adapter@~2.5.2: + version "2.5.4" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz#4fdb1358667f6d68f25343353bd99bd11ee41006" + integrity sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg== + dependencies: + debug "~4.3.4" + ws "~8.11.0" -socket.io-parser@~4.0.3: - version "4.0.5" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.0.5.tgz#cb404382c32324cc962f27f3a44058cf6e0552df" - integrity sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig== +socket.io-parser@~4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" + integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== dependencies: - "@types/component-emitter" "^1.2.10" - component-emitter "~1.3.0" + "@socket.io/component-emitter" "~3.1.0" debug "~4.3.1" -socket.io@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-3.1.2.tgz#06e27caa1c4fc9617547acfbb5da9bc1747da39a" - integrity sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw== +socket.io@^4.7.2: + version "4.7.5" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.7.5.tgz#56eb2d976aef9d1445f373a62d781a41c7add8f8" + integrity sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA== dependencies: - "@types/cookie" "^0.4.0" - "@types/cors" "^2.8.8" - "@types/node" ">=10.0.0" accepts "~1.3.4" base64id "~2.0.0" - debug "~4.3.1" - engine.io "~4.1.0" - socket.io-adapter "~2.1.0" - socket.io-parser "~4.0.3" + cors "~2.8.5" + debug "~4.3.2" + engine.io "~6.5.2" + socket.io-adapter "~2.5.2" + socket.io-parser "~4.2.4" sockjs@^0.3.24: version "0.3.24" @@ -8198,13 +8160,6 @@ tmp@0.0.30: dependencies: os-tmpdir "~1.0.1" -tmp@0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" - tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -8212,7 +8167,7 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -tmp@~0.2.1: +tmp@^0.2.1, tmp@~0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== @@ -8404,7 +8359,7 @@ typescript@5.4.5: resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== -ua-parser-js@^0.7.23: +ua-parser-js@^0.7.30: version "0.7.37" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.37.tgz#e464e66dac2d33a7a1251d7d7a99d6157ec27832" integrity sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA== @@ -8846,10 +8801,10 @@ ws@^8.13.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== -ws@~7.4.2: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== +ws@~8.11.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" + integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== xml2js@^0.4.17: version "0.4.23"