From db7d8d332e22fd504bf8bb8022f66e9d288119df Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 17 Dec 2023 01:59:54 +0000 Subject: [PATCH 001/163] Update actions/upload-artifact action to v4 --- .github/workflows/deploy-action.yml | 2 +- .github/workflows/staging-deploy-action.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy-action.yml b/.github/workflows/deploy-action.yml index 6e99cf5238..961c0d90ba 100644 --- a/.github/workflows/deploy-action.yml +++ b/.github/workflows/deploy-action.yml @@ -60,7 +60,7 @@ jobs: outputs: type=docker,dest=/tmp/okr-docker-image.tar - name: Upload artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: okr-image path: /tmp/okr-docker-image.tar diff --git a/.github/workflows/staging-deploy-action.yml b/.github/workflows/staging-deploy-action.yml index 53299a06e0..cdcaf24f8e 100644 --- a/.github/workflows/staging-deploy-action.yml +++ b/.github/workflows/staging-deploy-action.yml @@ -84,7 +84,7 @@ jobs: outputs: type=docker,dest=/tmp/okr-docker-image.tar - name: Upload artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: okr-image path: /tmp/okr-docker-image.tar From b4c39d9656985315b342f8767839eab9c69e1c48 Mon Sep 17 00:00:00 2001 From: Jannik Pulfer Date: Mon, 15 Jan 2024 14:34:32 +0100 Subject: [PATCH 002/163] edit csp img-src policy --- backend/src/main/java/ch/puzzle/okr/SecurityConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/ch/puzzle/okr/SecurityConfig.java b/backend/src/main/java/ch/puzzle/okr/SecurityConfig.java index dfb5e3be29..7bd87b4c2f 100644 --- a/backend/src/main/java/ch/puzzle/okr/SecurityConfig.java +++ b/backend/src/main/java/ch/puzzle/okr/SecurityConfig.java @@ -47,7 +47,7 @@ private HttpSecurity setHeaders(HttpSecurity http) throws Exception { + "script-src 'self' 'unsafe-inline';" + " style-src 'self' 'unsafe-inline';" + " object-src 'none';" + " base-uri 'self';" + " connect-src 'self' https://sso.puzzle.ch http://localhost:8544;" - + " font-src 'self';" + " frame-src 'self';" + " img-src 'self';" + + " font-src 'self';" + " frame-src 'self';" + " img-src 'self' data: ;" + " manifest-src 'self';" + " media-src 'self';" + " worker-src 'none';")) .crossOriginEmbedderPolicy(coepCustomizer -> coepCustomizer .policy(CrossOriginEmbedderPolicyHeaderWriter.CrossOriginEmbedderPolicy.REQUIRE_CORP)) From 247e02ecf53eb3368c5f14eef1cef64daa230297 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 15 Jan 2024 15:36:19 +0000 Subject: [PATCH 003/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 1ca40bdab2..a5d0f52efe 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.5-SNAPSHOT + 2.0.6-SNAPSHOT backend - 2.0.5-SNAPSHOT + 2.0.6-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index 4322914aa6..27bf602316 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.5-SNAPSHOT + 2.0.6-SNAPSHOT org.springframework.boot From 0bac6e4842a0bb3ab5a70187138631852d9240dd Mon Sep 17 00:00:00 2001 From: Lias Kleisa Date: Mon, 15 Jan 2024 13:06:48 +0100 Subject: [PATCH 004/163] Add new unit eur --- backend/src/main/java/ch/puzzle/okr/models/Unit.java | 2 +- .../ch/puzzle/okr/controller/OverviewControllerIT.java | 8 +++++--- .../validation/KeyResultValidationServiceTest.java | 4 ++-- .../check-in-form-metric.component.spec.ts | 5 +++++ .../check-in-form-metric.component.ts | 2 ++ .../unit-label-transformation.pipe.spec.ts | 5 +++++ .../unit-label-transformation.pipe.ts | 2 ++ .../unit-transformation.pipe.spec.ts | 10 ++++++++++ .../unit-value-transformation.pipe.ts | 2 ++ frontend/src/app/shared/types/enums/Unit.ts | 1 + frontend/src/app/shared/validators.ts | 3 +++ frontend/src/assets/i18n/de.json | 1 + 12 files changed, 39 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/ch/puzzle/okr/models/Unit.java b/backend/src/main/java/ch/puzzle/okr/models/Unit.java index 7c76ed723a..13aff3bb47 100644 --- a/backend/src/main/java/ch/puzzle/okr/models/Unit.java +++ b/backend/src/main/java/ch/puzzle/okr/models/Unit.java @@ -1,5 +1,5 @@ package ch.puzzle.okr.models; public enum Unit { - PERCENT, CHF, FTE, NUMBER + PERCENT, CHF, EUR, FTE, NUMBER } diff --git a/backend/src/test/java/ch/puzzle/okr/controller/OverviewControllerIT.java b/backend/src/test/java/ch/puzzle/okr/controller/OverviewControllerIT.java index 2fce6de9ec..9750b4fbf9 100644 --- a/backend/src/test/java/ch/puzzle/okr/controller/OverviewControllerIT.java +++ b/backend/src/test/java/ch/puzzle/okr/controller/OverviewControllerIT.java @@ -54,6 +54,8 @@ class OverviewControllerIT { public static final String TEAM_KUCHEN = "Kuchen"; public static final String QUARTER_LABEL = "GJ 22/23-Q2"; public static final String CHF = "CHF"; + public static final String EUR = "EUR"; + public static final String FTE = "FTE"; public static final String JSON_PATH_TEAM_NAME = "$.overviews[0].team.name"; public static final String JSON_PATH_TEAM_ID = "$.overviews[0].team.id"; public static final String JSON_PATH_OVERVIEWS = "$.overviews"; @@ -67,7 +69,7 @@ class OverviewControllerIT { Overview.Builder.builder().withOverviewId(OverviewId.of(1L, 2L, 21L, 41L)).withTeamName(PUZZLE) .withObjectiveTitle("Objective 1").withObjectiveState(DRAFT).withQuarterId(1L) .withQuarterLabel(QUARTER_LABEL).withKeyResultTitle(DESCRIPTION) - .withKeyResultType(KEY_RESULT_TYPE_METRIC).withUnit(CHF).withBaseline(5.0).withStretchGoal(20.0) + .withKeyResultType(KEY_RESULT_TYPE_METRIC).withUnit(EUR).withBaseline(5.0).withStretchGoal(20.0) .withCheckInValue(15.0).withConfidence(5).withCheckInCreatedOn(LocalDateTime.now()).build()); static List overviewOKR = List.of( Overview.Builder.builder().withOverviewId(OverviewId.of(2L, 5L, 20L, 40L)).withTeamName("OKR") @@ -78,13 +80,13 @@ class OverviewControllerIT { Overview.Builder.builder().withOverviewId(OverviewId.of(2L, 7L, 21L, 41L)).withTeamName("OKR") .withObjectiveTitle("Objective 7").withObjectiveState(ONGOING).withQuarterId(1L) .withQuarterLabel(QUARTER_LABEL).withKeyResultTitle(DESCRIPTION) - .withKeyResultType(KEY_RESULT_TYPE_METRIC).withUnit(CHF).withBaseline(5.0).withStretchGoal(20.0) + .withKeyResultType(KEY_RESULT_TYPE_METRIC).withUnit(FTE).withBaseline(5.0).withStretchGoal(20.0) .withCheckInValue(15.0).withConfidence(5).withCheckInCreatedOn(LocalDateTime.now()).build()); static Overview overviewKuchen = Overview.Builder.builder().withOverviewId(OverviewId.of(3L, 8L, 20L, 40L)) .withTeamName(TEAM_KUCHEN).withObjectiveTitle("Objective 8").withObjectiveState(ONGOING).withQuarterId(1L) .withQuarterLabel(QUARTER_LABEL).withKeyResultTitle(DESCRIPTION).withKeyResultType(KEY_RESULT_TYPE_METRIC) - .withUnit(CHF).withBaseline(5.0).withStretchGoal(20.0).withCheckInValue(15.0).withConfidence(5) + .withUnit(EUR).withBaseline(5.0).withStretchGoal(20.0).withCheckInValue(15.0).withConfidence(5) .withCheckInCreatedOn(LocalDateTime.now()).build(); static Overview simpleOverview = Overview.Builder.builder().withOverviewId(OverviewId.of(4L, -1L, -1L, -1L)) diff --git a/backend/src/test/java/ch/puzzle/okr/service/validation/KeyResultValidationServiceTest.java b/backend/src/test/java/ch/puzzle/okr/service/validation/KeyResultValidationServiceTest.java index 354d5aae94..c8e21f8409 100644 --- a/backend/src/test/java/ch/puzzle/okr/service/validation/KeyResultValidationServiceTest.java +++ b/backend/src/test/java/ch/puzzle/okr/service/validation/KeyResultValidationServiceTest.java @@ -145,7 +145,7 @@ void validateOnCreateShouldThrowExceptionWhenIdIsNotNull() { @MethodSource("nameValidationArguments") void validateOnCreateShouldThrowExceptionWhenTitleIsInvalid(String title, List errors) { KeyResult keyResult = KeyResultMetric.Builder.builder().withBaseline(3.0).withStretchGoal(5.0) - .withUnit(Unit.FTE).withId(null).withTitle(title).withOwner(user).withObjective(objective) + .withUnit(Unit.EUR).withId(null).withTitle(title).withOwner(user).withObjective(objective) .withCreatedBy(user).withCreatedOn(LocalDateTime.MIN).build(); OkrResponseStatusException exception = assertThrows(OkrResponseStatusException.class, @@ -178,7 +178,7 @@ void validateOnCreateShouldThrowExceptionWhenAttrsAreMissing() { void validateOnUpdateShouldBeSuccessfulWhenKeyResultIsValid() { Long id = 5L; KeyResult keyResult = KeyResultMetric.Builder.builder().withBaseline(4.0).withStretchGoal(7.0) - .withUnit(Unit.NUMBER).withId(id).withTitle("Keyresult Metric").withObjective(objective).withOwner(user) + .withUnit(Unit.EUR).withId(id).withTitle("Keyresult Metric").withObjective(objective).withOwner(user) .withCreatedOn(LocalDateTime.MIN).withModifiedOn(LocalDateTime.MAX).withDescription("Description") .withCreatedBy(user).build(); when(keyResultPersistenceService.findById(id)).thenReturn(keyResult); diff --git a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.spec.ts b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.spec.ts index 2c7d15bb3b..be27183db7 100644 --- a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.spec.ts +++ b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.spec.ts @@ -59,6 +59,11 @@ describe('CheckInFormComponent', () => { expect(component.generateUnitLabel()).toEqual('CHF'); })); + it('should format eur correctly', waitForAsync(async () => { + component.keyResult = { ...keyResultMetric, unit: Unit.EUR }; + expect(component.generateUnitLabel()).toEqual('EUR'); + })); + it('should format fte correctly', waitForAsync(async () => { component.keyResult = { ...keyResultMetric, unit: Unit.FTE }; expect(component.generateUnitLabel()).toEqual('FTE'); diff --git a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.ts b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.ts index 2af5bdb634..e600cb95f9 100644 --- a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.ts +++ b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.ts @@ -33,6 +33,8 @@ export class CheckInFormMetricComponent implements OnInit { return '%'; case 'CHF': return 'CHF'; + case 'EUR': + return 'EUR'; case 'FTE': return 'FTE'; default: diff --git a/frontend/src/app/shared/pipes/unit-label-transformation/unit-label-transformation.pipe.spec.ts b/frontend/src/app/shared/pipes/unit-label-transformation/unit-label-transformation.pipe.spec.ts index ebb8a75995..7f3fab87b5 100644 --- a/frontend/src/app/shared/pipes/unit-label-transformation/unit-label-transformation.pipe.spec.ts +++ b/frontend/src/app/shared/pipes/unit-label-transformation/unit-label-transformation.pipe.spec.ts @@ -22,6 +22,11 @@ describe('UnitLabelTransformationPipe', () => { expect(pipe.transform(Unit.CHF)).toBe(Unit.CHF); }); + it('Format EUR label', () => { + const pipe = new UnitLabelTransformationPipe(); + expect(pipe.transform(Unit.EUR)).toBe(Unit.EUR); + }); + it('Format Number label', () => { const pipe = new UnitLabelTransformationPipe(); expect(pipe.transform(Unit.NUMBER)).toBe(''); diff --git a/frontend/src/app/shared/pipes/unit-label-transformation/unit-label-transformation.pipe.ts b/frontend/src/app/shared/pipes/unit-label-transformation/unit-label-transformation.pipe.ts index 6d2e4afbd2..5e9328089c 100644 --- a/frontend/src/app/shared/pipes/unit-label-transformation/unit-label-transformation.pipe.ts +++ b/frontend/src/app/shared/pipes/unit-label-transformation/unit-label-transformation.pipe.ts @@ -13,6 +13,8 @@ export class UnitLabelTransformationPipe implements PipeTransform { return Unit.FTE; case Unit.CHF: return Unit.CHF; + case Unit.EUR: + return Unit.EUR; case Unit.NUMBER: return ''; default: diff --git a/frontend/src/app/shared/pipes/unit-value-transformation/unit-transformation.pipe.spec.ts b/frontend/src/app/shared/pipes/unit-value-transformation/unit-transformation.pipe.spec.ts index ad0455027b..54f23d7fc2 100644 --- a/frontend/src/app/shared/pipes/unit-value-transformation/unit-transformation.pipe.spec.ts +++ b/frontend/src/app/shared/pipes/unit-value-transformation/unit-transformation.pipe.spec.ts @@ -27,11 +27,21 @@ describe('UnitTransformationPipe', () => { expect(pipe.transform(380, Unit.CHF)).toBe('CHF 380.-'); }); + it('should format as EUR without double value', () => { + const pipe = new UnitValueTransformationPipe(); + expect(pipe.transform(380, Unit.EUR)).toBe('380 €'); + }); + it('should format as CHF as double value', () => { const pipe = new UnitValueTransformationPipe(); expect(pipe.transform(380.987, Unit.CHF)).toBe('CHF 380.99'); }); + it('should format as EUR as double value', () => { + const pipe = new UnitValueTransformationPipe(); + expect(pipe.transform(380.987, Unit.EUR)).toBe('380.99 €'); + }); + it('should return with no format if unit is not preset one', () => { const pipe = new UnitValueTransformationPipe(); expect(pipe.transform(140, 'MEMBERS')).toBe('140'); diff --git a/frontend/src/app/shared/pipes/unit-value-transformation/unit-value-transformation.pipe.ts b/frontend/src/app/shared/pipes/unit-value-transformation/unit-value-transformation.pipe.ts index 8ba489e2cc..30c26c36ed 100644 --- a/frontend/src/app/shared/pipes/unit-value-transformation/unit-value-transformation.pipe.ts +++ b/frontend/src/app/shared/pipes/unit-value-transformation/unit-value-transformation.pipe.ts @@ -13,6 +13,8 @@ export class UnitValueTransformationPipe implements PipeTransform { switch (unit) { case Unit.CHF: return 'CHF ' + this.addCHFSign(this.roundAndAddThousandSplitSign(value)); + case Unit.EUR: + return this.roundAndAddThousandSplitSign(value) + ' €'; case Unit.PERCENT: return value + '%'; case Unit.FTE: diff --git a/frontend/src/app/shared/types/enums/Unit.ts b/frontend/src/app/shared/types/enums/Unit.ts index 0da371a27c..f5d71cf7b7 100644 --- a/frontend/src/app/shared/types/enums/Unit.ts +++ b/frontend/src/app/shared/types/enums/Unit.ts @@ -1,6 +1,7 @@ export enum Unit { PERCENT = 'PERCENT', CHF = 'CHF', + EUR = 'EUR', FTE = 'FTE', NUMBER = 'NUMBER', } diff --git a/frontend/src/app/shared/validators.ts b/frontend/src/app/shared/validators.ts index ec67b58c76..dbfbc6c0f4 100644 --- a/frontend/src/app/shared/validators.ts +++ b/frontend/src/app/shared/validators.ts @@ -24,6 +24,9 @@ export class UnitValueValidator implements Validator { case 'CHF': { return this.proceedRegex(value, NUMBER_REGEX); } + case 'EUR': { + return this.proceedRegex(value, NUMBER_REGEX); + } case 'NUMBER': { return this.proceedRegex(value, NUMBER_REGEX); } diff --git a/frontend/src/assets/i18n/de.json b/frontend/src/assets/i18n/de.json index a7b684b843..25c5768506 100644 --- a/frontend/src/assets/i18n/de.json +++ b/frontend/src/assets/i18n/de.json @@ -10,6 +10,7 @@ "UNIT": { "PERCENT": "%", "CHF": " CHF", + "EUR": "EUR", "FTE": " FTE", "NUMBER": " Zahl" }, From 21f99d688a098f914ea5154520b59b76582b8f51 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 15 Jan 2024 15:53:09 +0000 Subject: [PATCH 005/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index a5d0f52efe..691710ec76 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.6-SNAPSHOT + 2.0.7-SNAPSHOT backend - 2.0.6-SNAPSHOT + 2.0.7-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index 27bf602316..f31db2dcdb 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.6-SNAPSHOT + 2.0.7-SNAPSHOT org.springframework.boot From 09e2c825b54ae8d7aa0a6d08fb631359bd57899b Mon Sep 17 00:00:00 2001 From: Jannik Pulfer Date: Mon, 15 Jan 2024 15:57:34 +0100 Subject: [PATCH 006/163] swap save as draft and save button on create objective dialog --- .../objective-form.component.html | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.html b/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.html index a95d5c46a5..dbb5758d2b 100644 --- a/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.html +++ b/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.html @@ -74,27 +74,26 @@
-
From 7315f87cdabae86908fbac686b88334e8bc6ecbb Mon Sep 17 00:00:00 2001 From: Jannik Pulfer Date: Tue, 16 Jan 2024 08:55:45 +0100 Subject: [PATCH 007/163] implement button to bring an objective back to draft state and implement its function in objective component --- .../src/app/objective/objective.component.ts | 19 ++++++++++++++++++- .../confirm-dialog.component.ts | 3 +++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/objective/objective.component.ts b/frontend/src/app/objective/objective.component.ts index 0440d3c86d..e46fe088f4 100644 --- a/frontend/src/app/objective/objective.component.ts +++ b/frontend/src/app/objective/objective.component.ts @@ -86,6 +86,14 @@ export class ObjectiveComponent implements OnInit { action: 'complete', dialog: { dialog: CompleteDialogComponent, data: { objectiveTitle: this.objective$.value.title } }, }, + { + displayName: 'Zurück in Draft Status', + action: 'todraft', + dialog: { + dialog: ConfirmDialogComponent, + data: { title: 'Objective', action: 'todraft' }, + }, + }, ], ]; } @@ -145,7 +153,7 @@ export class ObjectiveComponent implements OnInit { height: 'auto', }; - if (menuEntry.action == 'release') { + if (menuEntry.action == 'release' || menuEntry.action == 'todraft') { dialogConfig.width = 'auto'; } const matDialogRef = this.matDialog.open(menuEntry.dialog.dialog, { @@ -180,6 +188,8 @@ export class ObjectiveComponent implements OnInit { this.releaseObjective(objective); } else if (menuEntry.action == 'duplicate') { this.refreshDataService.markDataRefresh(); + } else if (menuEntry.action == 'todraft') { + this.objectiveBackToDraft(objective); } }); } else { @@ -212,6 +222,13 @@ export class ObjectiveComponent implements OnInit { }); } + objectiveBackToDraft(objective: Objective) { + objective.state = 'DRAFT' as State; + this.objectiveService.updateObjective(objective).subscribe(() => { + this.refreshDataService.markDataRefresh(); + }); + } + reopenRedirect(menuEntry: MenuEntry) { if (menuEntry.action === 'reopen') { this.objectiveService.getFullObjective(this.objective$.value.id).subscribe((objective) => { diff --git a/frontend/src/app/shared/dialog/confirm-dialog/confirm-dialog.component.ts b/frontend/src/app/shared/dialog/confirm-dialog/confirm-dialog.component.ts index 0bc46eb3cf..91c945b764 100644 --- a/frontend/src/app/shared/dialog/confirm-dialog/confirm-dialog.component.ts +++ b/frontend/src/app/shared/dialog/confirm-dialog/confirm-dialog.component.ts @@ -25,6 +25,9 @@ export class ConfirmDialogComponent implements OnInit { if (this.data.action === 'release') { this.dialogTitle = this.data.title + ' veröffentlichen'; this.dialogText = 'Soll dieses ' + this.data.title + ' veröffentlicht werden?'; + } else if (this.data.action === 'todraft') { + this.dialogTitle = this.data.title + ' zurück in Draft'; + this.dialogText = 'Soll dieses ' + this.data.title + ' zurück in den Draft Status?'; } } else { this.dialogTitle = this.data.title + ' löschen'; From 806d4b65f6c58b3332bbe9583557c0c317975600 Mon Sep 17 00:00:00 2001 From: Jannik Pulfer Date: Tue, 16 Jan 2024 10:37:05 +0100 Subject: [PATCH 008/163] add e2e test to test bringing back of an objective to draft state --- frontend/cypress/e2e/objective.cy.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/frontend/cypress/e2e/objective.cy.ts b/frontend/cypress/e2e/objective.cy.ts index 80f135c24a..2dcc0c6c52 100644 --- a/frontend/cypress/e2e/objective.cy.ts +++ b/frontend/cypress/e2e/objective.cy.ts @@ -135,6 +135,30 @@ describe('OKR Objective e2e tests', () => { .should('have.attr', 'src', `assets/icons/ongoing-icon.svg`); }); + it.only('Ongoing objective back to draft state', () => { + cy.getByTestId('add-objective').first().click(); + cy.fillOutObjective('This objective will be returned to draft state', 'safe', undefined, '', false); + + cy.getByTestId('objective') + .filter(':contains("This objective will be returned to draft state")') + .last() + .getByTestId('three-dot-menu') + .click() + .get('.mat-mdc-menu-content') + .wait(500) + .contains('Zurück in Draft Status') + .click() + .wait(500) + .tabForward(); + cy.focused().click().wait(500); + + cy.getByTestId('objective') + .filter(':contains("This objective will be returned to draft state")') + .last() + .getByTestId('objective-state') + .should('have.attr', 'src', `assets/icons/draft-icon.svg`); + }); + it(`Search for Objective`, () => { cy.getByTestId('add-objective').first().click(); cy.fillOutObjective('Search after this objective', 'safe', undefined, '', false); From a46a369d814b619987c956cacafaf633faa7c8c5 Mon Sep 17 00:00:00 2001 From: Jannik Pulfer Date: Tue, 16 Jan 2024 10:44:45 +0100 Subject: [PATCH 009/163] remove forgotten .only --- frontend/cypress/e2e/objective.cy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/cypress/e2e/objective.cy.ts b/frontend/cypress/e2e/objective.cy.ts index 2dcc0c6c52..ac1f0e094b 100644 --- a/frontend/cypress/e2e/objective.cy.ts +++ b/frontend/cypress/e2e/objective.cy.ts @@ -135,7 +135,7 @@ describe('OKR Objective e2e tests', () => { .should('have.attr', 'src', `assets/icons/ongoing-icon.svg`); }); - it.only('Ongoing objective back to draft state', () => { + it('Ongoing objective back to draft state', () => { cy.getByTestId('add-objective').first().click(); cy.fillOutObjective('This objective will be returned to draft state', 'safe', undefined, '', false); From 9ed82873c461ebed5307f3bbc7e06dddceb30afc Mon Sep 17 00:00:00 2001 From: Jannik Pulfer Date: Tue, 16 Jan 2024 11:10:33 +0100 Subject: [PATCH 010/163] fix edit objective and move to other quarter test in objective.cy.ts to work with new quarter --- frontend/cypress/e2e/objective.cy.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/cypress/e2e/objective.cy.ts b/frontend/cypress/e2e/objective.cy.ts index ac1f0e094b..8aeeafe0a0 100644 --- a/frontend/cypress/e2e/objective.cy.ts +++ b/frontend/cypress/e2e/objective.cy.ts @@ -219,11 +219,11 @@ describe('OKR Objective e2e tests', () => { .contains('Objective bearbeiten') .click(); - cy.fillOutObjective('Move to another quarter on edit', 'safe', '4', '', false); + cy.fillOutObjective('Move to another quarter on edit', 'safe', 'GJ 22/23-Q4', '', false); cy.get('Move to another quarter on edit').should('not.exist'); - cy.visit('/?quarter=4'); + cy.visit('/?quarter=1'); cy.contains('Move to another quarter on edit'); }); From 035c854934d128b0d640c0de4fdec6219a83cde2 Mon Sep 17 00:00:00 2001 From: Jannik Pulfer Date: Tue, 16 Jan 2024 13:31:35 +0100 Subject: [PATCH 011/163] add jest test to test if correct method is called when back to draft button is clicked --- .../app/objective/objective.component.spec.ts | 35 +++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/objective/objective.component.spec.ts b/frontend/src/app/objective/objective.component.spec.ts index ecdf43dd01..6b44aef8ab 100644 --- a/frontend/src/app/objective/objective.component.spec.ts +++ b/frontend/src/app/objective/objective.component.spec.ts @@ -9,7 +9,7 @@ import { By } from '@angular/platform-browser'; import { State } from '../shared/types/enums/State'; import { RouterTestingModule } from '@angular/router/testing'; import { OverviewService } from '../shared/services/overview.service'; -import { objectiveMin } from '../shared/testData'; +import { objective, objectiveMin } from '../shared/testData'; import { MatMenuHarness } from '@angular/material/menu/testing'; import { KeyresultComponent } from '../keyresult/keyresult.component'; import { MatDialogModule } from '@angular/material/dialog'; @@ -21,10 +21,22 @@ import { ConfidenceComponent } from '../confidence/confidence.component'; import { ReactiveFormsModule } from '@angular/forms'; import * as de from '../../assets/i18n/de.json'; import { TranslateTestingModule } from 'ngx-translate-testing'; +import { ObjectiveMin } from '../shared/types/model/ObjectiveMin'; +import { MenuEntry } from '../shared/types/menu-entry'; +import { ObjectiveService } from '../shared/services/objective.service'; +import { of } from 'rxjs'; const overviewServiceMock = { getObjectiveWithKeyresults: jest.fn(), }; + +const objectiveServiceMock = { + getFullObjective(objectiveMin: ObjectiveMin) { + let ongoingObjective = objective; + ongoingObjective.state = State.ONGOING; + return of(ongoingObjective); + }, +}; describe('ObjectiveColumnComponent', () => { let component: ObjectiveComponent; let fixture: ComponentFixture; @@ -48,7 +60,10 @@ describe('ObjectiveColumnComponent', () => { de: de, }), ], - providers: [{ provide: OverviewService, useValue: overviewServiceMock }], + providers: [ + { provide: OverviewService, useValue: overviewServiceMock }, + { provide: ObjectiveService, useValue: objectiveServiceMock }, + ], }).compileComponents(); fixture = TestBed.createComponent(ObjectiveComponent); @@ -99,4 +114,20 @@ describe('ObjectiveColumnComponent', () => { const button = fixture.debugElement.query(By.css('[data-testId="add-keyResult"]')); expect(button).toBeFalsy(); }); + + it('Correct method should be called when back to draft is clicked', () => { + jest.spyOn(component, 'objectiveBackToDraft'); + component.objective$.next(objectiveMin); + fixture.detectChanges(); + const menuEntry: MenuEntry = + component.getOngoingMenuActions()[ + component + .getOngoingMenuActions() + .map((menuAction) => menuAction.action) + .indexOf('todraft') + ]; + component.handleDialogResult(menuEntry, { endState: '', comment: null, objective: objective }); + fixture.detectChanges(); + expect(component.objectiveBackToDraft).toHaveBeenCalled(); + }); }); From 35dad9f49ee57fd8c2c0f4df31fbc2f56679b59b Mon Sep 17 00:00:00 2001 From: Jannik Pulfer Date: Tue, 16 Jan 2024 15:09:03 +0100 Subject: [PATCH 012/163] make back to draft e2e test only run on chrome --- frontend/cypress/e2e/objective.cy.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/cypress/e2e/objective.cy.ts b/frontend/cypress/e2e/objective.cy.ts index 8aeeafe0a0..53c44bedfe 100644 --- a/frontend/cypress/e2e/objective.cy.ts +++ b/frontend/cypress/e2e/objective.cy.ts @@ -136,6 +136,7 @@ describe('OKR Objective e2e tests', () => { }); it('Ongoing objective back to draft state', () => { + onlyOn('chrome'); cy.getByTestId('add-objective').first().click(); cy.fillOutObjective('This objective will be returned to draft state', 'safe', undefined, '', false); From 31e465b37e25dedee7f59eac72baf5105ac70d1e Mon Sep 17 00:00:00 2001 From: Jannik Pulfer Date: Tue, 16 Jan 2024 15:26:39 +0100 Subject: [PATCH 013/163] change selectors for three-dot-menu buttons in objective.cy.ts --- frontend/cypress/e2e/objective.cy.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/frontend/cypress/e2e/objective.cy.ts b/frontend/cypress/e2e/objective.cy.ts index 53c44bedfe..ae5741f6cc 100644 --- a/frontend/cypress/e2e/objective.cy.ts +++ b/frontend/cypress/e2e/objective.cy.ts @@ -25,7 +25,7 @@ describe('OKR Objective e2e tests', () => { .getByTestId('three-dot-menu') .click() .wait(500) - .get('.mat-mdc-menu-content') + .get('.objective-menu-option') .contains('Objective veröffentlichen') .click(); cy.getByTestId('confirmYes').click(); @@ -47,7 +47,7 @@ describe('OKR Objective e2e tests', () => { .getByTestId('three-dot-menu') .click() .wait(500) - .get('.mat-mdc-menu-content') + .get('.objective-menu-option') .contains('Objective abschliessen') .click(); @@ -78,7 +78,7 @@ describe('OKR Objective e2e tests', () => { .getByTestId('three-dot-menu') .click() .wait(500) - .get('.mat-mdc-menu-content') + .get('.objective-menu-option') .contains('Objective abschliessen') .click(); @@ -108,7 +108,7 @@ describe('OKR Objective e2e tests', () => { .last() .getByTestId('three-dot-menu') .click() - .get('.mat-mdc-menu-content') + .get('.objective-menu-option') .wait(500) .contains('Objective abschliessen') .click(); @@ -124,7 +124,7 @@ describe('OKR Objective e2e tests', () => { .getByTestId('three-dot-menu') .click() .wait(500) - .get('.mat-mdc-menu-content') + .get('.objective-menu-option') .contains('Objective wiedereröffnen') .click(); @@ -145,7 +145,7 @@ describe('OKR Objective e2e tests', () => { .last() .getByTestId('three-dot-menu') .click() - .get('.mat-mdc-menu-content') + .get('.objective-menu-option') .wait(500) .contains('Zurück in Draft Status') .click() @@ -216,7 +216,7 @@ describe('OKR Objective e2e tests', () => { .getByTestId('three-dot-menu') .click() .wait(500) - .get('.mat-mdc-menu-content') + .get('.objective-menu-option') .contains('Objective bearbeiten') .click(); From 8210db6db3f3a6a42f082d80d5d345cde61a6b03 Mon Sep 17 00:00:00 2001 From: peggimann Date: Wed, 17 Jan 2024 09:29:22 +0100 Subject: [PATCH 014/163] rename action for saving objective as draft --- frontend/cypress/e2e/objective.cy.ts | 2 +- frontend/src/app/objective/objective.component.ts | 2 +- .../shared/dialog/confirm-dialog/confirm-dialog.component.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/cypress/e2e/objective.cy.ts b/frontend/cypress/e2e/objective.cy.ts index ae5741f6cc..8e857d8752 100644 --- a/frontend/cypress/e2e/objective.cy.ts +++ b/frontend/cypress/e2e/objective.cy.ts @@ -147,7 +147,7 @@ describe('OKR Objective e2e tests', () => { .click() .get('.objective-menu-option') .wait(500) - .contains('Zurück in Draft Status') + .contains('Objective als Draft speichern') .click() .wait(500) .tabForward(); diff --git a/frontend/src/app/objective/objective.component.ts b/frontend/src/app/objective/objective.component.ts index e46fe088f4..cf0ffd4e40 100644 --- a/frontend/src/app/objective/objective.component.ts +++ b/frontend/src/app/objective/objective.component.ts @@ -87,7 +87,7 @@ export class ObjectiveComponent implements OnInit { dialog: { dialog: CompleteDialogComponent, data: { objectiveTitle: this.objective$.value.title } }, }, { - displayName: 'Zurück in Draft Status', + displayName: 'Objective als Draft speichern', action: 'todraft', dialog: { dialog: ConfirmDialogComponent, diff --git a/frontend/src/app/shared/dialog/confirm-dialog/confirm-dialog.component.ts b/frontend/src/app/shared/dialog/confirm-dialog/confirm-dialog.component.ts index 91c945b764..74490e9c98 100644 --- a/frontend/src/app/shared/dialog/confirm-dialog/confirm-dialog.component.ts +++ b/frontend/src/app/shared/dialog/confirm-dialog/confirm-dialog.component.ts @@ -26,8 +26,8 @@ export class ConfirmDialogComponent implements OnInit { this.dialogTitle = this.data.title + ' veröffentlichen'; this.dialogText = 'Soll dieses ' + this.data.title + ' veröffentlicht werden?'; } else if (this.data.action === 'todraft') { - this.dialogTitle = this.data.title + ' zurück in Draft'; - this.dialogText = 'Soll dieses ' + this.data.title + ' zurück in den Draft Status?'; + this.dialogTitle = this.data.title + ' als Draft speichern'; + this.dialogText = 'Soll dieses ' + this.data.title + ' als Draft gespeichert werden?'; } } else { this.dialogTitle = this.data.title + ' löschen'; From deb70131f68bdaf91e1f1105eb608205baf001b8 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 17 Jan 2024 08:42:39 +0000 Subject: [PATCH 015/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 691710ec76..7d8786b204 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.7-SNAPSHOT + 2.0.8-SNAPSHOT backend - 2.0.7-SNAPSHOT + 2.0.8-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index f31db2dcdb..e7aa1548f7 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.7-SNAPSHOT + 2.0.8-SNAPSHOT org.springframework.boot From 473e956d8d30cd4cc3a5d76044750a9f2cd694d8 Mon Sep 17 00:00:00 2001 From: Manuel Date: Wed, 17 Jan 2024 11:37:33 +0100 Subject: [PATCH 016/163] Fix by removing line at the end of metric scoring component --- .../src/app/shared/custom/scoring/scoring.component.scss | 4 ---- .../src/app/shared/custom/scoring/scoring.component.ts | 9 --------- 2 files changed, 13 deletions(-) diff --git a/frontend/src/app/shared/custom/scoring/scoring.component.scss b/frontend/src/app/shared/custom/scoring/scoring.component.scss index 90d296e5a3..019640743f 100644 --- a/frontend/src/app/shared/custom/scoring/scoring.component.scss +++ b/frontend/src/app/shared/custom/scoring/scoring.component.scss @@ -51,10 +51,6 @@ background-color: #1e8a29; } -.border-right { - border-right: 1px solid gray; -} - .score-stretch { background-image: url("../../../../assets/images/scoring-stars.svg"); } diff --git a/frontend/src/app/shared/custom/scoring/scoring.component.ts b/frontend/src/app/shared/custom/scoring/scoring.component.ts index f36e606d37..a2283a2c5b 100644 --- a/frontend/src/app/shared/custom/scoring/scoring.component.ts +++ b/frontend/src/app/shared/custom/scoring/scoring.component.ts @@ -135,25 +135,16 @@ export class ScoringComponent implements OnInit, AfterViewInit, OnChanges { if (this.targetPercent > 100) { return 'score-stretch'; } else if (this.targetPercent > 0 || (this.commitPercent == 100 && this.keyResult.keyResultType === 'metric')) { - this.setBorder(this.targetElement!); return 'score-green'; } else if (this.commitPercent > 0 || (this.failPercent == 100 && this.keyResult.keyResultType === 'metric')) { - this.setBorder(this.commitElement!); return 'score-yellow'; } else if (this.failPercent > 0) { - this.setBorder(this.failElement!); return 'score-red'; } else { return null; } } - setBorder(element: ElementRef) { - if (this.keyResult.keyResultType != 'ordinal') { - element.nativeElement.classList.add('border-right'); - } - } - ngOnChanges(changes: SimpleChanges): void { if (changes['keyResult']?.currentValue !== undefined || changes['keyResult']?.currentValue !== null) { if (this.commitElement != undefined) { From 6bd300f730853b9cde9ad5c7f8756f7a7df42e6c Mon Sep 17 00:00:00 2001 From: Manuel Date: Wed, 17 Jan 2024 12:51:25 +0100 Subject: [PATCH 017/163] Fix failing test --- .../src/app/shared/custom/scoring/scoring.component.spec.ts | 6 ------ frontend/src/app/version.ts | 1 + 2 files changed, 1 insertion(+), 6 deletions(-) create mode 100644 frontend/src/app/version.ts diff --git a/frontend/src/app/shared/custom/scoring/scoring.component.spec.ts b/frontend/src/app/shared/custom/scoring/scoring.component.spec.ts index d7a7d32cf7..43f00d5e31 100644 --- a/frontend/src/app/shared/custom/scoring/scoring.component.spec.ts +++ b/frontend/src/app/shared/custom/scoring/scoring.component.spec.ts @@ -57,12 +57,6 @@ describe('ScoringComponent', () => { let color: string | null = component.getScoringColorClassAndSetBorder(); expect(color).toBe(object.className); - - if (object.borderClass !== 'none') { - expect( - fixture.debugElement.query(By.css('[data-testId="' + object.borderClass + '"]')).nativeElement.classList, - ).toContain('border-right'); - } }); }); diff --git a/frontend/src/app/version.ts b/frontend/src/app/version.ts new file mode 100644 index 0000000000..78dcf9a31f --- /dev/null +++ b/frontend/src/app/version.ts @@ -0,0 +1 @@ +export const version = 'v2.0.8'; From e991f1d3f0b0d433cdb59ea8c269bfb6bd6d07a2 Mon Sep 17 00:00:00 2001 From: peggimann Date: Wed, 17 Jan 2024 14:37:45 +0100 Subject: [PATCH 018/163] remove unused file --- frontend/src/app/version.ts | 1 - 1 file changed, 1 deletion(-) delete mode 100644 frontend/src/app/version.ts diff --git a/frontend/src/app/version.ts b/frontend/src/app/version.ts deleted file mode 100644 index 78dcf9a31f..0000000000 --- a/frontend/src/app/version.ts +++ /dev/null @@ -1 +0,0 @@ -export const version = 'v2.0.8'; From f6e2ce836a9c71fb8b3ac9c84450acdd76e762bb Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 17 Jan 2024 14:00:18 +0000 Subject: [PATCH 019/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 7d8786b204..1ecc68a27b 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.8-SNAPSHOT + 2.0.9-SNAPSHOT backend - 2.0.8-SNAPSHOT + 2.0.9-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index e7aa1548f7..f063b4869b 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.8-SNAPSHOT + 2.0.9-SNAPSHOT org.springframework.boot From fad20bac30a096c80672518405cf657df7e86703 Mon Sep 17 00:00:00 2001 From: Lias Kleisa Date: Mon, 15 Jan 2024 16:09:10 +0100 Subject: [PATCH 020/163] Fix grammatical faults --- frontend/src/assets/i18n/de.json | 84 ++++++++++++++++---------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/frontend/src/assets/i18n/de.json b/frontend/src/assets/i18n/de.json index 25c5768506..3a588a53ce 100644 --- a/frontend/src/assets/i18n/de.json +++ b/frontend/src/assets/i18n/de.json @@ -25,62 +25,62 @@ "INFORMATION": { "OBJECTIVE_STATE_TOOLTIP": "Der Status dieses Objectives ist", "DELETE_TEAM": "Möchtest du dieses Team wirklich löschen? Zugehörige Objectives werden dadurch in allen Quartalen ebenfalls gelöscht!", - "DELETE_OBJECTIVE": "Möchtest du dieses Objective wirklich löschen? Zugehörige Key Results werden dadruch ebenfalls gelöscht!", + "DELETE_OBJECTIVE": "Möchtest du dieses Objective wirklich löschen? Zugehörige Key Results werden dadurch ebenfalls gelöscht!", "DELETE_KEY_RESULT": "Möchtest du dieses Key Result wirklich löschen? Zugehörige Check-ins werden dadurch ebenfalls gelöscht!" }, "ERROR": { - "UNAUTHORIZED": "Du bist nicht autorisiert, um das Objekt mit der Id {1} zu öffnen", - "NOT_FOUND": "Das Objekt '{0}' mit der Id {1} konnte nicht gefunden werden", - "KEY_RESULT_CONVERSION": "Der Keyresulttyp {0} konnte weder zu metrisch noch zu ordinal konvertiert werden", - "ALREADY_EXISTS_SAME_NAME": "{0} mit diesem Namen existiert bereits", - "CONVERT_TOKEN": "Benutzer kann nicht aus Token konvertiert werden", - "DATA_HAS_BEEN_UPDATED": "Die Daten des {0} wurden bereits von einem anderen Benutzer geändert oder gelöscht", - "MODEL_NULL": "Objekt {0} ist null", - "MODEL_WITH_ID_NOT_FOUND": "Objekt {0} mit der Id {1} konnte nicht gefunden werden", - "ATTRIBUTE_NULL": "Attribut {0} auf dem Objekt {1} ist nicht null", - "ATTRIBUTE_NOT_NULL": "Das Attribut {0} auf dem Objekt {1} darf nicht null sein", - "ATTRIBUTE_CHANGED": "Das Attribut {0} wurde während des Updated von {1} auf {2} geändert", - "ATTRIBUTE_NOT_BLANK": "Das Attribut {0} auf dem Objekt {1} darf nicht leer sein", - "ATTRIBUTE_NOT_VALID": "Das Attribut {0} auf dem Objekt {1} ist ungültig", - "ATTRIBUTE_SIZE_BETWEEN": "Das Attribut {0} auf dem Objekt {1} muss folgende länge haben: {2}-{3}", - "ATTRIBUTE_SET_FORBIDDEN": "Das Attribut {0} darf nicht während dem erstellen gesetzt sein ", - "ATTRIBUTE_NOT_SET": "Das Attribut {0} ist nicht gesetzt", - "ATTRIBUTE_CANNOT_CHANGE": "Das Attribut {0} auf dem Objekt {1} kann nicht geändert werden", - "ATTRIBUTE_MIN_VALUE": "Das Attribut {0} auf dem Objekt muss mindestens einen Wert von {1} haben", - "ATTRIBUTE_MAX_VALUE": "Das Attribut {0} auf dem Objekt {1} darf maximal einen Wert von {2} haben", - "NOT_AUTHORIZED_TO_READ": "Du bist nicht autorisiert um dieses {0} anzuzeigen", - "NOT_AUTHORIZED_TO_WRITE": "Du bist nicht autorisiert um dieses {0} zu bearbeiten", - "NOT_AUTHORIZED_TO_DELETE": "Du bist nicht autorisiert um dieses {0} zu löschen", - "TOKEN_NULL": "Das erhaltene Token ist null", - "ILLEGAL_CHANGE_OBJECTIVE_QUARTER": "Element kann nicht in ein anderes Quartal verlegt werden" + "UNAUTHORIZED": "Du bist nicht autorisiert, um das Objekt mit der Id {1} zu öffnen.", + "NOT_FOUND": "Das Objekt '{0}' mit der Id {1} konnte nicht gefunden werden.", + "KEY_RESULT_CONVERSION": "Der Key Result Type {0} konnte weder zu metrisch noch zu ordinal konvertiert werden.", + "ALREADY_EXISTS_SAME_NAME": "{0} mit diesem Namen existiert bereits.", + "CONVERT_TOKEN": "Benutzer kann nicht aus Token konvertiert werden.", + "DATA_HAS_BEEN_UPDATED": "Die Daten des {0} wurden bereits von einem anderen Benutzer geändert oder gelöscht.", + "MODEL_NULL": "Objekt {0} ist null.", + "MODEL_WITH_ID_NOT_FOUND": "Objekt {0} mit der Id {1} konnte nicht gefunden werden.", + "ATTRIBUTE_NULL": "Attribut {0} auf dem Objekt {1} ist nicht null.", + "ATTRIBUTE_NOT_NULL": "Das Attribut {0} auf dem Objekt {1} darf nicht null sein.", + "ATTRIBUTE_CHANGED": "Das Attribut {0} wurde während des Updates von {1} auf {2} geändert.", + "ATTRIBUTE_NOT_BLANK": "Das Attribut {0} auf dem Objekt {1} darf nicht leer sein.", + "ATTRIBUTE_NOT_VALID": "Das Attribut {0} auf dem Objekt {1} ist ungültig.", + "ATTRIBUTE_SIZE_BETWEEN": "Das Attribut {0} auf dem Objekt {1} muss folgende Länge haben: {2}-{3}.", + "ATTRIBUTE_SET_FORBIDDEN": "Das Attribut {0} darf nicht während des Erstellens gesetzt sein.", + "ATTRIBUTE_NOT_SET": "Das Attribut {0} ist nicht gesetzt.", + "ATTRIBUTE_CANNOT_CHANGE": "Das Attribut {0} auf dem Objekt {1} kann nicht geändert werden.", + "ATTRIBUTE_MIN_VALUE": "Das Attribut {0} auf dem Objekt muss mindestens einen Wert von {1} haben.", + "ATTRIBUTE_MAX_VALUE": "Das Attribut {0} auf dem Objekt {1} darf maximal einen Wert von {2} haben.", + "NOT_AUTHORIZED_TO_READ": "Du bist nicht autorisiert, um dieses {0} anzuzeigen.", + "NOT_AUTHORIZED_TO_WRITE": "Du bist nicht autorisiert, um dieses {0} zu bearbeiten.", + "NOT_AUTHORIZED_TO_DELETE": "Du bist nicht autorisiert, um dieses {0} zu löschen.", + "TOKEN_NULL": "Das erhaltene Token ist null.", + "ILLEGAL_CHANGE_OBJECTIVE_QUARTER": "Element kann nicht in ein anderes Quartal verlegt werden." }, "SUCCESS": { "TEAM": { - "POST": "Das Team wurde erfolgreich erstellt", - "PUT": "Das Team wurde erfolgreich aktualisiert", - "DELETE": "Das Team wurde erfolgreich gelöscht" + "POST": "Das Team wurde erfolgreich erstellt.", + "PUT": "Das Team wurde erfolgreich aktualisiert.", + "DELETE": "Das Team wurde erfolgreich gelöscht." }, "OBJECTIVE": { - "POST": "Das Objective wurde erfolgreich erstellt", - "PUT": "Das Objective wurde erfolgreich aktualisiert", - "DELETE": "Das Objective wurde erfolgreich gelöscht", - "IM_USED": "Das Objective kann nicht in ein anderes Quartal verlegt werden" + "POST": "Das Objective wurde erfolgreich erstellt.", + "PUT": "Das Objective wurde erfolgreich aktualisiert.", + "DELETE": "Das Objective wurde erfolgreich gelöscht.", + "IM_USED": "Das Objective kann nicht in ein anderes Quartal verlegt werden." }, "KEY_RESULT": { - "POST": "Das Key Result wurde erfolgreich erstellt", - "PUT": "Das Key Result wurde erfolgreich aktualisiert", - "DELETE": "Das Key Result wurde erfolgreich gelöscht", - "IM_USED": "Der Key Result Typ kann nicht geändert werden wenn bereits check-ins existieren" + "POST": "Das Key Result wurde erfolgreich erstellt.", + "PUT": "Das Key Result wurde erfolgreich aktualisiert.", + "DELETE": "Das Key Result wurde erfolgreich gelöscht.", + "IM_USED": "Der Key Result Typ kann nicht geändert werden, wenn bereits Check-ins existieren." }, "CHECK_IN": { - "POST": "Das Check-in wurde erfolgreich erstellt", - "PUT": "Das Check-in wurde erfolgreich aktualisiert" + "POST": "Das Check-in wurde erfolgreich erstellt.", + "PUT": "Das Check-in wurde erfolgreich aktualisiert." } }, "DIALOG_ERRORS": { - "MUST_BE_NUMBER": " muss eine Zahl sein", - "MUST_SELECT": " muss ausgewählt sein", - "MAX_VALUE": " darf maximal eine Länge von {0} Zeichen haben", - "SIZE_BETWEEN": " muss folgende Länge haben: {0}-{1} Zeichen" + "MUST_BE_NUMBER": " muss eine Zahl sein.", + "MUST_SELECT": " muss ausgewählt sein.", + "MAX_VALUE": " darf maximal eine Länge von {0} Zeichen haben.", + "SIZE_BETWEEN": " muss folgende Länge haben: {0}-{1} Zeichen." } } From 2bf07add13c5ab672c89b705f2c96e14e5aace66 Mon Sep 17 00:00:00 2001 From: Lias Kleisa Date: Wed, 17 Jan 2024 13:52:30 +0100 Subject: [PATCH 021/163] Remove type fault --- frontend/src/assets/i18n/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/assets/i18n/de.json b/frontend/src/assets/i18n/de.json index 3a588a53ce..fdfa6d5b3d 100644 --- a/frontend/src/assets/i18n/de.json +++ b/frontend/src/assets/i18n/de.json @@ -31,7 +31,7 @@ "ERROR": { "UNAUTHORIZED": "Du bist nicht autorisiert, um das Objekt mit der Id {1} zu öffnen.", "NOT_FOUND": "Das Objekt '{0}' mit der Id {1} konnte nicht gefunden werden.", - "KEY_RESULT_CONVERSION": "Der Key Result Type {0} konnte weder zu metrisch noch zu ordinal konvertiert werden.", + "KEY_RESULT_CONVERSION": "Der Key Result Typ {0} konnte weder zu metrisch noch zu ordinal konvertiert werden.", "ALREADY_EXISTS_SAME_NAME": "{0} mit diesem Namen existiert bereits.", "CONVERT_TOKEN": "Benutzer kann nicht aus Token konvertiert werden.", "DATA_HAS_BEEN_UPDATED": "Die Daten des {0} wurden bereits von einem anderen Benutzer geändert oder gelöscht.", From 12cad920786110803a4ac1aa869a3c9262ca0cb1 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 17 Jan 2024 14:19:15 +0000 Subject: [PATCH 022/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 1ecc68a27b..3f15cfd1a2 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.9-SNAPSHOT + 2.0.10-SNAPSHOT backend - 2.0.9-SNAPSHOT + 2.0.10-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index f063b4869b..7f4478f32a 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.9-SNAPSHOT + 2.0.10-SNAPSHOT org.springframework.boot From 7fb53414f9b0403dca839fb71dbd9d7e8d05408d Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Thu, 18 Jan 2024 16:15:26 +0100 Subject: [PATCH 023/163] use figma icon to have more customization options --- frontend/src/app/app.component.ts | 15 ++++++++++++++- .../src/app/objective/objective.component.html | 4 ++-- .../src/app/objective/objective.component.scss | 12 ++++-------- frontend/src/assets/icons/three-dot-menu-icon.svg | 9 +++++++++ 4 files changed, 29 insertions(+), 11 deletions(-) create mode 100644 frontend/src/assets/icons/three-dot-menu-icon.svg diff --git a/frontend/src/app/app.component.ts b/frontend/src/app/app.component.ts index 6cdc4580e9..ad7d8a956e 100644 --- a/frontend/src/app/app.component.ts +++ b/frontend/src/app/app.component.ts @@ -1,4 +1,6 @@ import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { MatIconRegistry } from '@angular/material/icon'; +import { DomSanitizer } from '@angular/platform-browser'; @Component({ selector: 'app-root', @@ -6,4 +8,15 @@ import { ChangeDetectionStrategy, Component } from '@angular/core'; styleUrls: ['./app.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class AppComponent {} +export class AppComponent { + readonly PATH_PREFIX = '../assets/icons/'; + constructor( + private matIconRegistry: MatIconRegistry, + private domSanitizer: DomSanitizer, + ) { + this.matIconRegistry.addSvgIcon( + 'pz-menu-icon', + this.domSanitizer.bypassSecurityTrustResourceUrl(this.PATH_PREFIX + 'three-dot-menu-icon.svg'), + ); + } +} diff --git a/frontend/src/app/objective/objective.component.html b/frontend/src/app/objective/objective.component.html index 515e6a7835..ea785bb923 100644 --- a/frontend/src/app/objective/objective.component.html +++ b/frontend/src/app/objective/objective.component.html @@ -7,7 +7,7 @@ tabindex="0" >
-
+
{{ objective.title }} (keydown.enter)="$event.stopPropagation()" [attr.data-testId]="'three-dot-menu'" > - more_vert +
diff --git a/frontend/src/app/objective/objective.component.scss b/frontend/src/app/objective/objective.component.scss index 489a8ef45e..b001cedf4a 100644 --- a/frontend/src/app/objective/objective.component.scss +++ b/frontend/src/app/objective/objective.component.scss @@ -8,6 +8,7 @@ 0px 15px 9px 0px rgba(0, 0, 0, 0.05), 0px 27px 11px 0px rgba(0, 0, 0, 0.01), 0px 42px 12px 0px rgba(0, 0, 0, 0); + &:hover { box-shadow: 2px 8px 19px 0px rgba(0, 0, 0, 0.1), @@ -22,14 +23,9 @@ color: $pz-dark-blue; display: flex; justify-content: center; - align-items: start; - width: 35px; - height: 32px; - - &:hover { - border-radius: 1rem; - background-color: lightgray; - } + align-items: center; + width: 24px; + height: 24px; } .icon { diff --git a/frontend/src/assets/icons/three-dot-menu-icon.svg b/frontend/src/assets/icons/three-dot-menu-icon.svg new file mode 100644 index 0000000000..200a266ae5 --- /dev/null +++ b/frontend/src/assets/icons/three-dot-menu-icon.svg @@ -0,0 +1,9 @@ + + + + + + + + + From 062bbc85823af36e68e1d090184240296d616ee5 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Fri, 19 Jan 2024 12:54:37 +0100 Subject: [PATCH 024/163] fix width of text --- frontend/src/app/objective/objective.component.html | 4 ++-- frontend/src/app/objective/objective.component.scss | 10 ++++++++-- frontend/src/style/styles.scss | 4 ++++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/frontend/src/app/objective/objective.component.html b/frontend/src/app/objective/objective.component.html index ea785bb923..94334d95b4 100644 --- a/frontend/src/app/objective/objective.component.html +++ b/frontend/src/app/objective/objective.component.html @@ -8,7 +8,7 @@ >
-
+
-

{{ objective.title }}

+

{{ objective.title }}

diff --git a/frontend/src/assets/icons/search-icon.svg b/frontend/src/assets/icons/search-icon.svg new file mode 100644 index 0000000000..85b989b115 --- /dev/null +++ b/frontend/src/assets/icons/search-icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/frontend/src/style/custom_angular.components.scss b/frontend/src/style/custom_angular.components.scss index a4aa2c1d91..7c5f2d23cc 100644 --- a/frontend/src/style/custom_angular.components.scss +++ b/frontend/src/style/custom_angular.components.scss @@ -93,7 +93,7 @@ $scale-gap: 0.1; $selector: ".scale-#{$scale-value * 10}"; #{$selector} { - transform: scale(#{$scale-value}); + transform: scale(#{$scale-value}) !important; } } From a64474b99861b5304c38883d08979e7c9946218e Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Thu, 18 Jan 2024 14:36:07 +0100 Subject: [PATCH 031/163] move 1px to the left --- .../app/objective-filter/objective-filter.component.html | 9 ++------- .../app/objective-filter/objective-filter.component.scss | 7 +------ 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/frontend/src/app/objective-filter/objective-filter.component.html b/frontend/src/app/objective-filter/objective-filter.component.html index 8ea4a10d95..02963c8fa7 100644 --- a/frontend/src/app/objective-filter/objective-filter.component.html +++ b/frontend/src/app/objective-filter/objective-filter.component.html @@ -18,14 +18,9 @@ diff --git a/frontend/src/app/objective-filter/objective-filter.component.scss b/frontend/src/app/objective-filter/objective-filter.component.scss index 1b39d79369..90f7058c21 100644 --- a/frontend/src/app/objective-filter/objective-filter.component.scss +++ b/frontend/src/app/objective-filter/objective-filter.component.scss @@ -1,11 +1,6 @@ .search-button { border-radius: 0 4px 4px 0; - mat-icon { - display: flex; - align-items: center; - justify-content: center; - transform: scale(1.25); - } + padding-left: 15px; } #objective-form-field { From 310d93cbda938ad3cefff7ad108fff7955f7ec1a Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 09:48:11 +0000 Subject: [PATCH 032/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 00473764c0..058f942ae2 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.13-SNAPSHOT + 2.0.14-SNAPSHOT backend - 2.0.13-SNAPSHOT + 2.0.14-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index b9ffca86fa..abb64c95f0 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.13-SNAPSHOT + 2.0.14-SNAPSHOT org.springframework.boot From d98a039889310fde8971d1692cf0d0722b83f925 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Thu, 18 Jan 2024 15:26:58 +0100 Subject: [PATCH 033/163] add new font formats and apply them --- frontend/src/assets/fonts/Roboto.scss | 6 ++++-- .../{Roboto-Regular.ttf => roboto-regular.ttf} | Bin .../src/assets/fonts/Roboto/roboto-regular.woff | Bin 0 -> 25040 bytes .../assets/fonts/Roboto/roboto-regular.woff2 | Bin 0 -> 18996 bytes 4 files changed, 4 insertions(+), 2 deletions(-) rename frontend/src/assets/fonts/Roboto/{Roboto-Regular.ttf => roboto-regular.ttf} (100%) create mode 100644 frontend/src/assets/fonts/Roboto/roboto-regular.woff create mode 100644 frontend/src/assets/fonts/Roboto/roboto-regular.woff2 diff --git a/frontend/src/assets/fonts/Roboto.scss b/frontend/src/assets/fonts/Roboto.scss index 6709279618..9ddbc63efe 100644 --- a/frontend/src/assets/fonts/Roboto.scss +++ b/frontend/src/assets/fonts/Roboto.scss @@ -1,9 +1,11 @@ /* cyrillic-ext */ @font-face { - font-family: Roboto, "Helvetica Neue", sans-serif; + font-family: Roboto; font-style: normal; font-weight: 300; font-display: swap; - src: url('./Roboto/Roboto-Regular.ttf') format('ttf'); + src: url('./Roboto/roboto-regular.ttf') format('ttf'); + src: url('./Roboto/roboto-regular.woff2') format('woff2'); + src: url('./Roboto/roboto-regular.woff') format('woff'); unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; } diff --git a/frontend/src/assets/fonts/Roboto/Roboto-Regular.ttf b/frontend/src/assets/fonts/Roboto/roboto-regular.ttf similarity index 100% rename from frontend/src/assets/fonts/Roboto/Roboto-Regular.ttf rename to frontend/src/assets/fonts/Roboto/roboto-regular.ttf diff --git a/frontend/src/assets/fonts/Roboto/roboto-regular.woff b/frontend/src/assets/fonts/Roboto/roboto-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..6da01409e31a46f2a62e10944ac4b748015286e6 GIT binary patch literal 25040 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 literal 0 HcmV?d00001 From a7b5219648cdf5cd758515080ed7678a6b0dbcba Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Fri, 19 Jan 2024 13:55:17 +0100 Subject: [PATCH 034/163] add e2e test --- frontend/cypress/e2e/overview.cy.ts | 4 ++++ frontend/src/style/styles.scss | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/frontend/cypress/e2e/overview.cy.ts b/frontend/cypress/e2e/overview.cy.ts index b2f0fb345f..a3d99b2270 100644 --- a/frontend/cypress/e2e/overview.cy.ts +++ b/frontend/cypress/e2e/overview.cy.ts @@ -14,4 +14,8 @@ describe('OKR Overview', () => { expect(texts).to.deep.equal(textsExpectedOrder); }); }); + + it('Check font ', () => { + cy.get('.team-title').first().invoke('css', 'font-family').should('eq', 'Roboto'); + }); }); diff --git a/frontend/src/style/styles.scss b/frontend/src/style/styles.scss index ffb52893b7..c9bc398a91 100644 --- a/frontend/src/style/styles.scss +++ b/frontend/src/style/styles.scss @@ -15,7 +15,7 @@ body { margin: 0; padding: 0; background-color: $overview-bg; - font-family: Roboto, "Helvetica Neue", sans-serif; + font-family: Roboto; } .linebreak { From c7d38aced5cedb354c4c7181ade24a15b61a274f Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Fri, 19 Jan 2024 14:46:11 +0100 Subject: [PATCH 035/163] use only roboto as font familiy --- frontend/src/assets/fonts/Roboto.scss | 12 +++++------- frontend/src/style/styles.scss | 2 +- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/frontend/src/assets/fonts/Roboto.scss b/frontend/src/assets/fonts/Roboto.scss index 9ddbc63efe..6d26bda34f 100644 --- a/frontend/src/assets/fonts/Roboto.scss +++ b/frontend/src/assets/fonts/Roboto.scss @@ -1,11 +1,9 @@ -/* cyrillic-ext */ @font-face { - font-family: Roboto; + font-family: "Roboto"; font-style: normal; - font-weight: 300; + font-weight: 400; font-display: swap; - src: url('./Roboto/roboto-regular.ttf') format('ttf'); - src: url('./Roboto/roboto-regular.woff2') format('woff2'); - src: url('./Roboto/roboto-regular.woff') format('woff'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; + src: url('./Roboto/roboto-regular.ttf') format('ttf'), + url('./Roboto/roboto-regular.woff2') format('woff2'), + url('./Roboto/roboto-regular.woff') format('woff'); } diff --git a/frontend/src/style/styles.scss b/frontend/src/style/styles.scss index c9bc398a91..ca70eac71d 100644 --- a/frontend/src/style/styles.scss +++ b/frontend/src/style/styles.scss @@ -15,7 +15,7 @@ body { margin: 0; padding: 0; background-color: $overview-bg; - font-family: Roboto; + font-family: "Roboto"; } .linebreak { From 78480794043a611217f495caa75dfcf0a1c3ff19 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 08:25:37 +0100 Subject: [PATCH 036/163] add e2e check for font weight --- frontend/cypress/e2e/overview.cy.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/cypress/e2e/overview.cy.ts b/frontend/cypress/e2e/overview.cy.ts index a3d99b2270..169563a47b 100644 --- a/frontend/cypress/e2e/overview.cy.ts +++ b/frontend/cypress/e2e/overview.cy.ts @@ -17,5 +17,6 @@ describe('OKR Overview', () => { it('Check font ', () => { cy.get('.team-title').first().invoke('css', 'font-family').should('eq', 'Roboto'); + cy.get('.team-title').first().invoke('css', 'font-weight').should('eq', '700'); }); }); From 0ac508a8e8d0c3da9a8c691eba4dd7ce9d3ccac7 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 09:23:24 +0100 Subject: [PATCH 037/163] remove uselsss fonts --- frontend/src/assets/fonts/Roboto.scss | 12 ++++++------ .../src/assets/fonts/Roboto/Roboto-Regular.ttf | Bin 0 -> 168260 bytes ...roboto-regular.woff => Roboto-Regular.woff} | Bin ...boto-regular.woff2 => Roboto-Regular.woff2} | Bin .../src/assets/fonts/Roboto/roboto-regular.ttf | Bin 180932 -> 0 bytes frontend/src/style/styles.scss | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 frontend/src/assets/fonts/Roboto/Roboto-Regular.ttf rename frontend/src/assets/fonts/Roboto/{roboto-regular.woff => Roboto-Regular.woff} (100%) rename frontend/src/assets/fonts/Roboto/{roboto-regular.woff2 => Roboto-Regular.woff2} (100%) delete mode 100644 frontend/src/assets/fonts/Roboto/roboto-regular.ttf diff --git a/frontend/src/assets/fonts/Roboto.scss b/frontend/src/assets/fonts/Roboto.scss index 6d26bda34f..9becdd1a28 100644 --- a/frontend/src/assets/fonts/Roboto.scss +++ b/frontend/src/assets/fonts/Roboto.scss @@ -1,9 +1,9 @@ @font-face { - font-family: "Roboto"; - font-style: normal; - font-weight: 400; + font-family: Roboto, sans-serif; font-display: swap; - src: url('./Roboto/roboto-regular.ttf') format('ttf'), - url('./Roboto/roboto-regular.woff2') format('woff2'), - url('./Roboto/roboto-regular.woff') format('woff'); + font-style: normal; + font-weight: 300; + src: url('./Roboto/Roboto-Regular.ttf') format('ttf'), + url('./Roboto/Roboto-Regular.woff2') format('woff2'), + url('./Roboto/Roboto-Regular.woff') format('woff'); } diff --git a/frontend/src/assets/fonts/Roboto/Roboto-Regular.ttf b/frontend/src/assets/fonts/Roboto/Roboto-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ddf4bfacb396e97546364ccfeeb9c31dfaea4c25 GIT binary patch literal 168260 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

S&jh1n&JeeMOkU4{=4@cYr6k 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≤FHXCuU9Qce=@vmZ{%9^5??OaVQJ8!4u8-w;yt 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%0Au7e5m%0AF5qd~7UK@P-U(bX#f14+IgwPA1zRWefU0oFCq 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 Dil-mJ diff --git a/frontend/src/style/styles.scss b/frontend/src/style/styles.scss index ca70eac71d..388e1da5a0 100644 --- a/frontend/src/style/styles.scss +++ b/frontend/src/style/styles.scss @@ -15,7 +15,7 @@ body { margin: 0; padding: 0; background-color: $overview-bg; - font-family: "Roboto"; + font-family: Roboto, sans-serif; } .linebreak { From 5665c0c9c3db00bbe842422ed97ab337e478cd17 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 09:26:31 +0100 Subject: [PATCH 038/163] update e2e test --- frontend/cypress/e2e/overview.cy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/cypress/e2e/overview.cy.ts b/frontend/cypress/e2e/overview.cy.ts index 169563a47b..7ee4e991b4 100644 --- a/frontend/cypress/e2e/overview.cy.ts +++ b/frontend/cypress/e2e/overview.cy.ts @@ -16,7 +16,7 @@ describe('OKR Overview', () => { }); it('Check font ', () => { - cy.get('.team-title').first().invoke('css', 'font-family').should('eq', 'Roboto'); + cy.get('.team-title').first().invoke('css', 'font-family').should('eq', 'Roboto, sans-serif'); cy.get('.team-title').first().invoke('css', 'font-weight').should('eq', '700'); }); }); From b9910dccd235636c559309623f069eb0a8211d8a Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 10:14:47 +0000 Subject: [PATCH 039/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 058f942ae2..661a9444dc 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.14-SNAPSHOT + 2.0.15-SNAPSHOT backend - 2.0.14-SNAPSHOT + 2.0.15-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index abb64c95f0..f90ccf646a 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.14-SNAPSHOT + 2.0.15-SNAPSHOT org.springframework.boot From 89ef2e7501ea2ece0aa809e67ea04c196673c887 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Tue, 16 Jan 2024 10:19:06 +0100 Subject: [PATCH 040/163] display exclamation mark in bar --- .../shared/custom/scoring/scoring.component.html | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/shared/custom/scoring/scoring.component.html b/frontend/src/app/shared/custom/scoring/scoring.component.html index 784a6a9bba..806fae44bd 100644 --- a/frontend/src/app/shared/custom/scoring/scoring.component.html +++ b/frontend/src/app/shared/custom/scoring/scoring.component.html @@ -13,9 +13,19 @@

-
+
- + + ! + From 31eee628594bcdcb98a2a6c9e10ce02e432cae37 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Tue, 16 Jan 2024 13:12:24 +0100 Subject: [PATCH 041/163] display error message correctly --- frontend/src/app/app.module.ts | 2 ++ .../shared/custom/scoring/scoring.component.html | 15 ++++++++++----- .../shared/custom/scoring/scoring.component.scss | 7 ++++++- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index d11efee938..1b717fdb93 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -71,6 +71,7 @@ import { ActionPlanComponent } from './action-plan/action-plan.component'; import { CdkDrag, CdkDropList } from '@angular/cdk/drag-drop'; import { TeamManagementComponent } from './shared/dialog/team-management/team-management.component'; import { KeyresultDialogComponent } from './shared/dialog/keyresult-dialog/keyresult-dialog.component'; +import { MatBadgeModule } from '@angular/material/badge'; function initOauthFactory(configService: ConfigService, oauthService: OAuthService) { return async () => { @@ -179,6 +180,7 @@ export const MY_FORMATS = { MatChipsModule, CdkDropList, CdkDrag, + MatBadgeModule, ], providers: [ { diff --git a/frontend/src/app/shared/custom/scoring/scoring.component.html b/frontend/src/app/shared/custom/scoring/scoring.component.html index 806fae44bd..9805fa78b9 100644 --- a/frontend/src/app/shared/custom/scoring/scoring.component.html +++ b/frontend/src/app/shared/custom/scoring/scoring.component.html @@ -19,12 +19,17 @@ class="d-flex align-items-start" > - - ! +
+ ! +
diff --git a/frontend/src/app/shared/custom/scoring/scoring.component.scss b/frontend/src/app/shared/custom/scoring/scoring.component.scss index 019640743f..1acf35edc8 100644 --- a/frontend/src/app/shared/custom/scoring/scoring.component.scss +++ b/frontend/src/app/shared/custom/scoring/scoring.component.scss @@ -1,6 +1,11 @@ +.scoring-error-badge { + aspect-ratio: 1/1; + height: 90%; +} + .scoring-container { display: flex; - align-items: center; + align-items: start; } .okr-score-label { From c69216df713fa2b3e7f435ee12947969e64dbdc0 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Tue, 16 Jan 2024 13:52:51 +0100 Subject: [PATCH 042/163] fix bug with double lines for stretched --- frontend/src/app/app.module.ts | 2 -- .../src/app/shared/custom/scoring/scoring.component.html | 7 +++---- .../src/app/shared/custom/scoring/scoring.component.scss | 1 + 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index 1b717fdb93..d11efee938 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -71,7 +71,6 @@ import { ActionPlanComponent } from './action-plan/action-plan.component'; import { CdkDrag, CdkDropList } from '@angular/cdk/drag-drop'; import { TeamManagementComponent } from './shared/dialog/team-management/team-management.component'; import { KeyresultDialogComponent } from './shared/dialog/keyresult-dialog/keyresult-dialog.component'; -import { MatBadgeModule } from '@angular/material/badge'; function initOauthFactory(configService: ConfigService, oauthService: OAuthService) { return async () => { @@ -180,7 +179,6 @@ export const MY_FORMATS = { MatChipsModule, CdkDropList, CdkDrag, - MatBadgeModule, ], providers: [ { diff --git a/frontend/src/app/shared/custom/scoring/scoring.component.html b/frontend/src/app/shared/custom/scoring/scoring.component.html index 9805fa78b9..70716604d4 100644 --- a/frontend/src/app/shared/custom/scoring/scoring.component.html +++ b/frontend/src/app/shared/custom/scoring/scoring.component.html @@ -12,11 +12,10 @@ Target
-
@@ -26,7 +25,7 @@ keyResult.lastCheckIn && +keyResult.lastCheckIn?.value! < castToMetric().baseline " - class="fs-6 text-white fw-bold text-center score-red scoring-error-badge rounded-circle ms-1" + class="fs-6 text-white fw-bold text-center score-red scoring-error-badge rounded-circle" > !
diff --git a/frontend/src/app/shared/custom/scoring/scoring.component.scss b/frontend/src/app/shared/custom/scoring/scoring.component.scss index 1acf35edc8..7e088b41a9 100644 --- a/frontend/src/app/shared/custom/scoring/scoring.component.scss +++ b/frontend/src/app/shared/custom/scoring/scoring.component.scss @@ -1,6 +1,7 @@ .scoring-error-badge { aspect-ratio: 1/1; height: 90%; + margin-left: 1.05px; } .scoring-container { From 345f0fb2aeda1ecfdf5c53aa495589129c788d26 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Tue, 16 Jan 2024 14:21:53 +0100 Subject: [PATCH 043/163] update e2e tests --- frontend/cypress/e2e/scoring.cy.ts | 12 ++++++++++++ frontend/cypress/support/scoringSupport.ts | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/frontend/cypress/e2e/scoring.cy.ts b/frontend/cypress/e2e/scoring.cy.ts index 66158f0547..5d4166ef64 100644 --- a/frontend/cypress/e2e/scoring.cy.ts +++ b/frontend/cypress/e2e/scoring.cy.ts @@ -29,6 +29,18 @@ describe('Scoring component e2e tests', () => { cy.validateScoring(false, percentage); cy.getByTestId('close-drawer').click({ force: true }); cy.validateScoring(true, percentage); + + if (value < baseline) { + cy.getByTestId('keyresult') + .get(':contains("Metric scoring keyresult")') + .last() + .contains('*[class="scoring-error-badge"]'); + } else { + cy.getByTestId('keyresult') + .get(':contains("Metric scoring keyresult")') + .last() + .not(':contains(*[class="scoring-error-badge"])'); + } }); }); diff --git a/frontend/cypress/support/scoringSupport.ts b/frontend/cypress/support/scoringSupport.ts index 8ab93366d0..ccbd9326b8 100644 --- a/frontend/cypress/support/scoringSupport.ts +++ b/frontend/cypress/support/scoringSupport.ts @@ -58,7 +58,7 @@ function validateScoringColor(zone: string, rgbCode: string, isOverview: boolean checkVisibilityOfScoringComponent(isOverview, 'none', 'normal-scoring'); } else { checkVisibilityOfScoringComponent(isOverview, 'none', 'star-scoring'); - checkVisibilityOfScoringComponent(isOverview, 'block', 'normal-scoring'); + checkVisibilityOfScoringComponent(isOverview, 'flex', 'normal-scoring'); } } From e539407d525aff2347152478810d10e9e92f5bbb Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Thu, 18 Jan 2024 11:40:32 +0100 Subject: [PATCH 044/163] show icon in every possible case --- frontend/cypress/e2e/scoring.cy.ts | 71 +++++++++++++------ frontend/cypress/support/scoringSupport.ts | 4 +- .../keyresult-detail.component.html | 10 ++- .../keyresult-detail.component.ts | 4 +- frontend/src/app/shared/common.ts | 4 +- .../custom/scoring/scoring.component.html | 7 +- .../custom/scoring/scoring.component.ts | 3 +- 7 files changed, 72 insertions(+), 31 deletions(-) diff --git a/frontend/cypress/e2e/scoring.cy.ts b/frontend/cypress/e2e/scoring.cy.ts index 5d4166ef64..0f78966661 100644 --- a/frontend/cypress/e2e/scoring.cy.ts +++ b/frontend/cypress/e2e/scoring.cy.ts @@ -16,31 +16,50 @@ describe('Scoring component e2e tests', () => { [0, 100, 100], ].forEach(([baseline, stretchgoal, value]) => { it('Create metric checkin and validate value of scoring component', () => { - cy.createMetricKeyresult('Metric scoring keyresult', String(baseline), String(stretchgoal)); - cy.getByTestId('keyresult').get(':contains("Metric scoring keyresult")').last().click(); - cy.getByTestId('add-check-in').click(); - cy.getByTestId('check-in-metric-value').clear().type(String(value)); - cy.getByTestId('confidence-slider').click(); - cy.realPress('{rightarrow}').realPress('{rightarrow}').realPress('{rightarrow}'); - cy.getByTestId('changeInfo').click().type('Testveränderungen'); - cy.getByTestId('initiatives').click().type('Testmassnahmen'); - cy.getByTestId('submit-check-in').click(); + setupMetricKR(baseline, stretchgoal, value); const percentage = getPercentageMetric(baseline, stretchgoal, value); cy.validateScoring(false, percentage); + cy.get('.keyResult-detail-attribute-show') + // now we can find the one element with text "second" + .contains('Aktuell') + .parent() + .not(':contains(!)') + .should('have.css', 'border-color') + .and('not.equal', 'rgb(186, 56, 56)'); + cy.getByTestId('close-drawer').click({ force: true }); cy.validateScoring(true, percentage); - if (value < baseline) { - cy.getByTestId('keyresult') - .get(':contains("Metric scoring keyresult")') - .last() - .contains('*[class="scoring-error-badge"]'); - } else { - cy.getByTestId('keyresult') - .get(':contains("Metric scoring keyresult")') - .last() - .not(':contains(*[class="scoring-error-badge"])'); - } + cy.getByTestId('keyresult') + .get(':contains("Metric scoring keyresult")') + .last() + .not(':contains(*[class="scoring-error-badge"])'); + }); + }); + + [ + [0, 100, -1], + [200, 100, 250], + ].forEach(([baseline, stretchgoal, value]) => { + it.only('show indicator that value is negative', () => { + setupMetricKR(baseline, stretchgoal, value); + const percentage = getPercentageMetric(baseline, stretchgoal, value); + cy.validateScoring(false, percentage); + cy.get('.keyResult-detail-attribute-show') + // now we can find the one element with text "second" + .contains('Aktuell') + .parent() + .contains('!') + .should('have.css', 'border-color') + .and('not.equal', 'rgb(186, 56, 56)'); + + cy.getByTestId('close-drawer').click({ force: true }); + cy.validateScoring(true, percentage); + + cy.getByTestId('keyresult') + .get(':contains("Metric scoring keyresult")') + .last() + .contains('*[class="scoring-error-badge"]'); }); }); @@ -62,3 +81,15 @@ describe('Scoring component e2e tests', () => { }); }); }); + +function setupMetricKR(baseline: number, stretchgoal: number, value: number) { + cy.createMetricKeyresult('Metric scoring keyresult', String(baseline), String(stretchgoal)); + cy.getByTestId('keyresult').get(':contains("Metric scoring keyresult")').last().click(); + cy.getByTestId('add-check-in').click(); + cy.getByTestId('check-in-metric-value').clear().type(String(value)); + cy.getByTestId('confidence-slider').click(); + cy.realPress('{rightarrow}').realPress('{rightarrow}').realPress('{rightarrow}'); + cy.getByTestId('changeInfo').click().type('Testveränderungen'); + cy.getByTestId('initiatives').click().type('Testmassnahmen'); + cy.getByTestId('submit-check-in').click(); +} diff --git a/frontend/cypress/support/scoringSupport.ts b/frontend/cypress/support/scoringSupport.ts index ccbd9326b8..cd5a20ce59 100644 --- a/frontend/cypress/support/scoringSupport.ts +++ b/frontend/cypress/support/scoringSupport.ts @@ -1,4 +1,4 @@ -import { isInValid } from '../../src/app/shared/common'; +import { isLastCheckInNegative } from '../../src/app/shared/common'; interface ScoringValue { failPercent: number; @@ -24,7 +24,7 @@ export function validateScoring(isOverview: boolean, percentage: number) { } export function getPercentageMetric(baseline: number, stretchGoal: number, value: number) { - if (isInValid(baseline, stretchGoal, value)) { + if (isLastCheckInNegative(baseline, stretchGoal, value)) { return -1; } return (Math.abs(value - baseline) / Math.abs(stretchGoal - baseline)) * 100; diff --git a/frontend/src/app/keyresult-detail/keyresult-detail.component.html b/frontend/src/app/keyresult-detail/keyresult-detail.component.html index 570557ab43..2a3a69a1cd 100644 --- a/frontend/src/app/keyresult-detail/keyresult-detail.component.html +++ b/frontend/src/app/keyresult-detail/keyresult-detail.component.html @@ -41,12 +41,18 @@

{{ keyResult.title }}

*ngIf="keyResultMetric.lastCheckIn as lastCheckIn" class="keyResult-detail-attribute-show rounded-5 p-2 metric-col d-flex justify-content-center gap-1" [ngClass]="{ - 'border-error': isInValid(keyResultMetric.baseline, keyResultMetric.stretchGoal, +lastCheckIn.value) + 'border-error': isLastCheckInNegative( + keyResultMetric.baseline, + keyResultMetric.stretchGoal, + +lastCheckIn.value + ) }" > ! Aktuell: diff --git a/frontend/src/app/keyresult-detail/keyresult-detail.component.ts b/frontend/src/app/keyresult-detail/keyresult-detail.component.ts index 172a1b7c72..12f5a16d9a 100644 --- a/frontend/src/app/keyresult-detail/keyresult-detail.component.ts +++ b/frontend/src/app/keyresult-detail/keyresult-detail.component.ts @@ -12,7 +12,7 @@ import { CloseState } from '../shared/types/enums/CloseState'; import { CheckInFormComponent } from '../shared/dialog/checkin/check-in-form/check-in-form.component'; import { State } from '../shared/types/enums/State'; import { CONFIRM_DIALOG_WIDTH, DATE_FORMAT } from '../shared/constantLibary'; -import { isInValid, isMobileDevice } from '../shared/common'; +import { isLastCheckInNegative, isMobileDevice } from '../shared/common'; import { KeyresultDialogComponent } from '../shared/dialog/keyresult-dialog/keyresult-dialog.component'; import { ConfirmDialogComponent } from '../shared/dialog/confirm-dialog/confirm-dialog.component'; @@ -28,7 +28,7 @@ export class KeyresultDetailComponent implements OnInit { keyResult$: BehaviorSubject = new BehaviorSubject({} as KeyResult); isComplete: boolean = false; protected readonly DATE_FORMAT = DATE_FORMAT; - protected readonly isInValid = isInValid; + protected readonly isLastCheckInNegative = isLastCheckInNegative; constructor( private keyResultService: KeyresultService, diff --git a/frontend/src/app/shared/common.ts b/frontend/src/app/shared/common.ts index 7e5519cfff..66eb669c8c 100644 --- a/frontend/src/app/shared/common.ts +++ b/frontend/src/app/shared/common.ts @@ -34,7 +34,7 @@ export function optionalValue(param: object): { [p: string]: any } { }), ); } -export function isInValid(baseline: number, stretchGoal: number, value: number): boolean { +export function isLastCheckInNegative(baseline: number, stretchGoal: number, value: number): boolean { if (value < baseline && baseline <= stretchGoal) return true; return value > baseline && baseline > stretchGoal; } @@ -43,7 +43,7 @@ export function calculateCurrentPercentage(keyResultMetric: KeyResultMetricMin): let value: number = +keyResultMetric.lastCheckIn?.value!; let baseline: number = +keyResultMetric.baseline; let stretchGoal: number = +keyResultMetric.stretchGoal; - if (isInValid(baseline, stretchGoal, value)) return 0; + if (isLastCheckInNegative(baseline, stretchGoal, value)) return 0; if (value == stretchGoal) return 100; return (Math.abs(value - baseline) / Math.abs(stretchGoal - baseline)) * 100; diff --git a/frontend/src/app/shared/custom/scoring/scoring.component.html b/frontend/src/app/shared/custom/scoring/scoring.component.html index 70716604d4..001619519e 100644 --- a/frontend/src/app/shared/custom/scoring/scoring.component.html +++ b/frontend/src/app/shared/custom/scoring/scoring.component.html @@ -22,8 +22,11 @@
diff --git a/frontend/src/app/shared/custom/scoring/scoring.component.ts b/frontend/src/app/shared/custom/scoring/scoring.component.ts index a2283a2c5b..7f7ee5edda 100644 --- a/frontend/src/app/shared/custom/scoring/scoring.component.ts +++ b/frontend/src/app/shared/custom/scoring/scoring.component.ts @@ -14,7 +14,7 @@ import { KeyresultMin } from '../../types/model/KeyresultMin'; import { Zone } from '../../types/enums/Zone'; import { KeyResultMetricMin } from '../../types/model/KeyResultMetricMin'; import { Observable, of } from 'rxjs'; -import { calculateCurrentPercentage } from '../../common'; +import { calculateCurrentPercentage, isLastCheckInNegative } from '../../common'; @Component({ selector: 'app-scoring', @@ -31,6 +31,7 @@ export class ScoringComponent implements OnInit, AfterViewInit, OnChanges { targetPercent: number = 0; labelPercentage: Observable; stretched: boolean = false; + protected readonly isLastCheckInNegative = isLastCheckInNegative; @ViewChild('fail') private failElement: ElementRef | undefined = undefined; From bd42e89c992e3c0be910b3ed2b1c14c58535cef7 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Thu, 18 Jan 2024 11:58:53 +0100 Subject: [PATCH 045/163] update e2e tests --- frontend/cypress/e2e/scoring.cy.ts | 13 ++++--------- frontend/cypress/support/scoringSupport.ts | 1 + 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/frontend/cypress/e2e/scoring.cy.ts b/frontend/cypress/e2e/scoring.cy.ts index 0f78966661..6ed20cf4b7 100644 --- a/frontend/cypress/e2e/scoring.cy.ts +++ b/frontend/cypress/e2e/scoring.cy.ts @@ -43,23 +43,18 @@ describe('Scoring component e2e tests', () => { ].forEach(([baseline, stretchgoal, value]) => { it.only('show indicator that value is negative', () => { setupMetricKR(baseline, stretchgoal, value); - const percentage = getPercentageMetric(baseline, stretchgoal, value); - cy.validateScoring(false, percentage); + cy.validateScoring(false, 0); cy.get('.keyResult-detail-attribute-show') - // now we can find the one element with text "second" .contains('Aktuell') .parent() .contains('!') .should('have.css', 'border-color') - .and('not.equal', 'rgb(186, 56, 56)'); + .and('equal', 'rgb(186, 56, 56)'); cy.getByTestId('close-drawer').click({ force: true }); - cy.validateScoring(true, percentage); + cy.validateScoring(true, 0); - cy.getByTestId('keyresult') - .get(':contains("Metric scoring keyresult")') - .last() - .contains('*[class="scoring-error-badge"]'); + cy.getByTestId('keyresult').get(':contains("Metric scoring keyresult")').last().get('.scoring-error-badge'); }); }); diff --git a/frontend/cypress/support/scoringSupport.ts b/frontend/cypress/support/scoringSupport.ts index cd5a20ce59..e79bdad5ca 100644 --- a/frontend/cypress/support/scoringSupport.ts +++ b/frontend/cypress/support/scoringSupport.ts @@ -18,6 +18,7 @@ export function validateScoring(isOverview: boolean, percentage: number) { validateScoringWidth('commit', scoringValue.commitPercent, isOverview); validateScoringWidth('target', scoringValue.targetPercent, isOverview); + if (percentage == 0) return; validateScoringColor('fail', rgbCode, isOverview); validateScoringColor('commit', rgbCode, isOverview); validateScoringColor('target', rgbCode, isOverview); From ad1af0fc2e4119e40bd68f0e89afb994cbf8628f Mon Sep 17 00:00:00 2001 From: kcinay055679 <79108296+kcinay055679@users.noreply.github.com> Date: Thu, 18 Jan 2024 12:58:04 +0100 Subject: [PATCH 046/163] remove .only in e2e test --- frontend/cypress/e2e/scoring.cy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/cypress/e2e/scoring.cy.ts b/frontend/cypress/e2e/scoring.cy.ts index 6ed20cf4b7..bffb430797 100644 --- a/frontend/cypress/e2e/scoring.cy.ts +++ b/frontend/cypress/e2e/scoring.cy.ts @@ -41,7 +41,7 @@ describe('Scoring component e2e tests', () => { [0, 100, -1], [200, 100, 250], ].forEach(([baseline, stretchgoal, value]) => { - it.only('show indicator that value is negative', () => { + it('show indicator that value is negative', () => { setupMetricKR(baseline, stretchgoal, value); cy.validateScoring(false, 0); cy.get('.keyResult-detail-attribute-show') From be973a01b91118cc22ed3684c6ca997543abaa1f Mon Sep 17 00:00:00 2001 From: kcinay055679 <79108296+kcinay055679@users.noreply.github.com> Date: Thu, 18 Jan 2024 12:58:31 +0100 Subject: [PATCH 047/163] remove useless comment --- frontend/cypress/e2e/scoring.cy.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/cypress/e2e/scoring.cy.ts b/frontend/cypress/e2e/scoring.cy.ts index bffb430797..1a22f91596 100644 --- a/frontend/cypress/e2e/scoring.cy.ts +++ b/frontend/cypress/e2e/scoring.cy.ts @@ -20,7 +20,6 @@ describe('Scoring component e2e tests', () => { const percentage = getPercentageMetric(baseline, stretchgoal, value); cy.validateScoring(false, percentage); cy.get('.keyResult-detail-attribute-show') - // now we can find the one element with text "second" .contains('Aktuell') .parent() .not(':contains(!)') From 0e9de022bb61496bbcf840cc9a55106a1ee8b2df Mon Sep 17 00:00:00 2001 From: peggimann Date: Mon, 22 Jan 2024 12:31:32 +0100 Subject: [PATCH 048/163] implement percentage as measure to display icon --- .../keyresult-detail.component.html | 14 ++------------ .../keyresult-detail/keyresult-detail.component.ts | 4 +++- frontend/src/app/shared/common.ts | 3 +-- .../shared/custom/scoring/scoring.component.html | 9 +-------- .../app/shared/custom/scoring/scoring.component.ts | 5 ++++- 5 files changed, 11 insertions(+), 24 deletions(-) diff --git a/frontend/src/app/keyresult-detail/keyresult-detail.component.html b/frontend/src/app/keyresult-detail/keyresult-detail.component.html index 2a3a69a1cd..b78f78778e 100644 --- a/frontend/src/app/keyresult-detail/keyresult-detail.component.html +++ b/frontend/src/app/keyresult-detail/keyresult-detail.component.html @@ -41,20 +41,10 @@

{{ keyResult.title }}

*ngIf="keyResultMetric.lastCheckIn as lastCheckIn" class="keyResult-detail-attribute-show rounded-5 p-2 metric-col d-flex justify-content-center gap-1" [ngClass]="{ - 'border-error': isLastCheckInNegative( - keyResultMetric.baseline, - keyResultMetric.stretchGoal, - +lastCheckIn.value - ) + 'border-error': calculateCurrentPercentage(keyResultMetric) < 1 }" > - ! + ! Aktuell: {{ +lastCheckIn.value | unitValueTransformation: keyResultMetric.unit.toString() }} diff --git a/frontend/src/app/keyresult-detail/keyresult-detail.component.ts b/frontend/src/app/keyresult-detail/keyresult-detail.component.ts index 12f5a16d9a..5326c6d430 100644 --- a/frontend/src/app/keyresult-detail/keyresult-detail.component.ts +++ b/frontend/src/app/keyresult-detail/keyresult-detail.component.ts @@ -12,7 +12,7 @@ import { CloseState } from '../shared/types/enums/CloseState'; import { CheckInFormComponent } from '../shared/dialog/checkin/check-in-form/check-in-form.component'; import { State } from '../shared/types/enums/State'; import { CONFIRM_DIALOG_WIDTH, DATE_FORMAT } from '../shared/constantLibary'; -import { isLastCheckInNegative, isMobileDevice } from '../shared/common'; +import { calculateCurrentPercentage, isLastCheckInNegative, isMobileDevice } from '../shared/common'; import { KeyresultDialogComponent } from '../shared/dialog/keyresult-dialog/keyresult-dialog.component'; import { ConfirmDialogComponent } from '../shared/dialog/confirm-dialog/confirm-dialog.component'; @@ -189,4 +189,6 @@ export class KeyresultDetailComponent implements OnInit { backToOverview() { this.router.navigate(['']); } + + protected readonly calculateCurrentPercentage = calculateCurrentPercentage; } diff --git a/frontend/src/app/shared/common.ts b/frontend/src/app/shared/common.ts index 66eb669c8c..e90ceec967 100644 --- a/frontend/src/app/shared/common.ts +++ b/frontend/src/app/shared/common.ts @@ -35,8 +35,7 @@ export function optionalValue(param: object): { [p: string]: any } { ); } export function isLastCheckInNegative(baseline: number, stretchGoal: number, value: number): boolean { - if (value < baseline && baseline <= stretchGoal) return true; - return value > baseline && baseline > stretchGoal; + return (value > baseline && baseline > stretchGoal) || (value < baseline && baseline <= stretchGoal); } export function calculateCurrentPercentage(keyResultMetric: KeyResultMetricMin): number { diff --git a/frontend/src/app/shared/custom/scoring/scoring.component.html b/frontend/src/app/shared/custom/scoring/scoring.component.html index 001619519e..938a1fee4a 100644 --- a/frontend/src/app/shared/custom/scoring/scoring.component.html +++ b/frontend/src/app/shared/custom/scoring/scoring.component.html @@ -20,14 +20,7 @@
! diff --git a/frontend/src/app/shared/custom/scoring/scoring.component.ts b/frontend/src/app/shared/custom/scoring/scoring.component.ts index 7f7ee5edda..bdf7bf89f4 100644 --- a/frontend/src/app/shared/custom/scoring/scoring.component.ts +++ b/frontend/src/app/shared/custom/scoring/scoring.component.ts @@ -139,7 +139,8 @@ export class ScoringComponent implements OnInit, AfterViewInit, OnChanges { return 'score-green'; } else if (this.commitPercent > 0 || (this.failPercent == 100 && this.keyResult.keyResultType === 'metric')) { return 'score-yellow'; - } else if (this.failPercent > 0) { + } else if (this.failPercent >= 3.3333) { + // 3.3333% because if lower fail is not visible in overview and we display ! return 'score-red'; } else { return null; @@ -176,4 +177,6 @@ export class ScoringComponent implements OnInit, AfterViewInit, OnChanges { castToMetric(): KeyResultMetricMin { return this.keyResult as KeyResultMetricMin; } + + protected readonly calculateCurrentPercentage = calculateCurrentPercentage; } From 700fde3a6fb732cdc6cdfb02d7262a9058212f60 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 12:00:36 +0000 Subject: [PATCH 049/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 661a9444dc..4d3e9c93da 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.15-SNAPSHOT + 2.0.16-SNAPSHOT backend - 2.0.15-SNAPSHOT + 2.0.16-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index f90ccf646a..e4413a4785 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.15-SNAPSHOT + 2.0.16-SNAPSHOT org.springframework.boot From 2a42fff1e4a3119f1b47934edef938db7783504f Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Tue, 16 Jan 2024 08:20:30 +0100 Subject: [PATCH 050/163] update icon placement --- .../application-top-bar.component.html | 23 +++++++++++++++---- .../application-top-bar.component.scss | 3 +++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/frontend/src/app/application-top-bar/application-top-bar.component.html b/frontend/src/app/application-top-bar/application-top-bar.component.html index 81222cca50..55de46d056 100644 --- a/frontend/src/app/application-top-bar/application-top-bar.component.html +++ b/frontend/src/app/application-top-bar/application-top-bar.component.html @@ -6,14 +6,24 @@
@@ -27,8 +37,11 @@ mat-button > - person_outline -

{{ username | async }}

+ + person_outline +

{{ username | async }}

+
+ expand_more expand_less diff --git a/frontend/src/app/application-top-bar/application-top-bar.component.scss b/frontend/src/app/application-top-bar/application-top-bar.component.scss index 86d4ffc43e..0cc080f3e1 100644 --- a/frontend/src/app/application-top-bar/application-top-bar.component.scss +++ b/frontend/src/app/application-top-bar/application-top-bar.component.scss @@ -4,6 +4,9 @@ height: $top-bar-height; } +.button-topbar { + margin-top: -5px !important; +} #okrTopbar { display: flex; position: fixed; From 0edf1a1054b3d7b51b99c3cbafef4437e4be7632 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Thu, 18 Jan 2024 10:47:37 +0100 Subject: [PATCH 051/163] align icons --- .../application-top-bar.component.html | 60 +++++++------------ .../application-top-bar.component.scss | 31 +++++----- 2 files changed, 39 insertions(+), 52 deletions(-) diff --git a/frontend/src/app/application-top-bar/application-top-bar.component.html b/frontend/src/app/application-top-bar/application-top-bar.component.html index 55de46d056..dc741a5091 100644 --- a/frontend/src/app/application-top-bar/application-top-bar.component.html +++ b/frontend/src/app/application-top-bar/application-top-bar.component.html @@ -3,55 +3,39 @@ okr-logo -
-
- -
- +
+ + +
- diff --git a/frontend/src/app/application-top-bar/application-top-bar.component.scss b/frontend/src/app/application-top-bar/application-top-bar.component.scss index 0cc080f3e1..f21da5c502 100644 --- a/frontend/src/app/application-top-bar/application-top-bar.component.scss +++ b/frontend/src/app/application-top-bar/application-top-bar.component.scss @@ -4,9 +4,19 @@ height: $top-bar-height; } -.button-topbar { - margin-top: -5px !important; +#topbar-team { + font-size: 19px; } + +#topbar-help { + margin-top: -1px; + font-size: 15px; +} + +#topbar-user { + font-size: 18px; +} + #okrTopbar { display: flex; position: fixed; @@ -22,7 +32,7 @@ display: flex; justify-content: center; align-items: center; - color: white; + color: white !important; text-decoration: none; height: 100%; gap: 5px; @@ -30,12 +40,14 @@ padding: 10px; border-radius: 8px; border: 1px solid transparent; + font-weight: normal; mat-icon { display: flex; - align-items: center; justify-content: center; - transform: scale(0.95); + align-items: center; + text-align: center; + transform: scale(1) !important; } &:focus, @@ -44,12 +56,3 @@ border: 1px solid white; } } - -.header-icon { - color: white; -} - -.header-text:hover { - text-decoration: underline; - color: white; -} From e1a1c9d160d32120c9b3f170994a1cc76595208e Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 13:12:16 +0100 Subject: [PATCH 052/163] realign icons --- .../application-top-bar.component.html | 4 ++-- .../application-top-bar.component.scss | 17 +++-------------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/frontend/src/app/application-top-bar/application-top-bar.component.html b/frontend/src/app/application-top-bar/application-top-bar.component.html index dc741a5091..f95279203a 100644 --- a/frontend/src/app/application-top-bar/application-top-bar.component.html +++ b/frontend/src/app/application-top-bar/application-top-bar.component.html @@ -11,12 +11,12 @@ [attr.data-testId]="'team-management'" class="topBarEntry btn" > - + Teamverwaltung diff --git a/frontend/src/app/application-top-bar/application-top-bar.component.scss b/frontend/src/app/application-top-bar/application-top-bar.component.scss index f21da5c502..b2c8d632f6 100644 --- a/frontend/src/app/application-top-bar/application-top-bar.component.scss +++ b/frontend/src/app/application-top-bar/application-top-bar.component.scss @@ -4,19 +4,6 @@ height: $top-bar-height; } -#topbar-team { - font-size: 19px; -} - -#topbar-help { - margin-top: -1px; - font-size: 15px; -} - -#topbar-user { - font-size: 18px; -} - #okrTopbar { display: flex; position: fixed; @@ -35,7 +22,7 @@ color: white !important; text-decoration: none; height: 100%; - gap: 5px; + gap: 1px; font-size: 16px; padding: 10px; border-radius: 8px; @@ -48,6 +35,8 @@ align-items: center; text-align: center; transform: scale(1) !important; + margin-top: -1px; + font-size: 18px; } &:focus, From 36ef439b9cfac69775319ffddb31d42137b83396 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 12:25:47 +0000 Subject: [PATCH 053/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 4d3e9c93da..49b921a9ab 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.16-SNAPSHOT + 2.0.17-SNAPSHOT backend - 2.0.16-SNAPSHOT + 2.0.17-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index e4413a4785..2a85584c76 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.16-SNAPSHOT + 2.0.17-SNAPSHOT org.springframework.boot From 1d551816c27021ed4ec449428939d9e9292df21b Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 13:33:06 +0100 Subject: [PATCH 054/163] add woff to nonFilteredFileExteions --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 2a85584c76..0fa896a321 100644 --- a/pom.xml +++ b/pom.xml @@ -40,6 +40,7 @@ ttf woff2 + woff 3.3.1 From ef4658e5d8723abf84f0e9521f46bdf39803fc64 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 12:36:49 +0000 Subject: [PATCH 055/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 49b921a9ab..0bd76c8a9a 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.17-SNAPSHOT + 2.0.18-SNAPSHOT backend - 2.0.17-SNAPSHOT + 2.0.18-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index 0fa896a321..2853440f52 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.17-SNAPSHOT + 2.0.18-SNAPSHOT org.springframework.boot From d8d350cbf55d1b3d2ae0dc16c808840860e8d6d2 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 13:44:15 +0100 Subject: [PATCH 056/163] update jest-preset-angular --- frontend/package-lock.json | 20 ++++++++++---------- frontend/package.json | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 2a2e30b822..d31bae934f 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "frontend", - "version": "0.0.0", + "version": "2.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "frontend", - "version": "0.0.0", + "version": "2.0.0", "dependencies": { "@angular/animations": "^17.0.6", "@angular/cdk": "^17.0.3", @@ -39,7 +39,7 @@ "cypress": "^13.6.1", "cypress-real-events": "^1.11.0", "jest": "^29.7.0", - "jest-preset-angular": "^13.1.4", + "jest-preset-angular": "^14.0.0", "ngx-translate-testing": "^7.0.0", "prettier": "^3.1.0", "typescript": "^5.2.2" @@ -12106,9 +12106,9 @@ } }, "node_modules/jest-preset-angular": { - "version": "13.1.4", - "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-13.1.4.tgz", - "integrity": "sha512-XKeWa8Qt7p37SzlJ85qEXgig06SgkfrzV057X2GSMqfz/HLJmTUjMFkHJKe65ZaQumNQWCcXpxXREr6EfZ9bow==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-14.0.0.tgz", + "integrity": "sha512-gXGgzuGbpw3MRBMe/NGCu3r2E//GKmhtFveo0XUIXMvQ3je0vcOtK+WYjxtxFTTh2xFgrA/loY5BxBcKia/GaA==", "dev": true, "dependencies": { "bs-logger": "^0.2.6", @@ -12125,10 +12125,10 @@ "esbuild": ">=0.13.8" }, "peerDependencies": { - "@angular-devkit/build-angular": ">=13.0.0 <18.0.0", - "@angular/compiler-cli": ">=13.0.0 <18.0.0", - "@angular/core": ">=13.0.0 <18.0.0", - "@angular/platform-browser-dynamic": ">=13.0.0 <18.0.0", + "@angular-devkit/build-angular": ">=15.0.0 <18.0.0", + "@angular/compiler-cli": ">=15.0.0 <18.0.0", + "@angular/core": ">=15.0.0 <18.0.0", + "@angular/platform-browser-dynamic": ">=15.0.0 <18.0.0", "jest": "^29.0.0", "typescript": ">=4.4" } diff --git a/frontend/package.json b/frontend/package.json index 1c80446586..bcbdb6c983 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -52,7 +52,7 @@ "cypress": "^13.6.1", "cypress-real-events": "^1.11.0", "jest": "^29.7.0", - "jest-preset-angular": "^13.1.4", + "jest-preset-angular": "^14.0.0", "ngx-translate-testing": "^7.0.0", "prettier": "^3.1.0", "typescript": "^5.2.2" From 619796d8735e7b2ed95720926bcd95acf24d177f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Jan 2024 12:47:34 +0000 Subject: [PATCH 057/163] Update dependency org.cyclonedx:cyclonedx-maven-plugin to v2.7.11 --- backend/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/pom.xml b/backend/pom.xml index 0bd76c8a9a..2d9ffa0b4b 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -93,7 +93,7 @@ org.cyclonedx cyclonedx-maven-plugin - 2.7.10 + 2.7.11 org.springframework.boot From 7317c73af3e2edc7b6cc95973b3fef200fd44a4b Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 12:47:37 +0000 Subject: [PATCH 058/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 0bd76c8a9a..859a969c06 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.18-SNAPSHOT + 2.0.19-SNAPSHOT backend - 2.0.18-SNAPSHOT + 2.0.19-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index 2853440f52..5f2c9fba7b 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.18-SNAPSHOT + 2.0.19-SNAPSHOT org.springframework.boot From 1c51919942dd7a777e119277c6951ad9d7b07880 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 12:50:09 +0000 Subject: [PATCH 059/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index cd610d38c4..b82170ce56 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.19-SNAPSHOT + 2.0.20-SNAPSHOT backend - 2.0.19-SNAPSHOT + 2.0.20-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index 5f2c9fba7b..4a2c8f200b 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.19-SNAPSHOT + 2.0.20-SNAPSHOT org.springframework.boot From b193eff6ac7a7fbaefdd9a10d948c7f8d8806210 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Jan 2024 12:53:17 +0000 Subject: [PATCH 060/163] Update dependency org.flywaydb:flyway-database-postgresql to v10.6.0 --- backend/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/pom.xml b/backend/pom.xml index b82170ce56..c59c112b95 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -64,7 +64,7 @@ org.flywaydb flyway-database-postgresql - 10.2.0 + 10.6.0 runtime From dbbd24e0e24c41a0076bcdf863bf9fb962d6f1ee Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 13:13:18 +0000 Subject: [PATCH 061/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index c59c112b95..8741dd6d43 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.20-SNAPSHOT + 2.0.21-SNAPSHOT backend - 2.0.20-SNAPSHOT + 2.0.21-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index 4a2c8f200b..a650049c17 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.20-SNAPSHOT + 2.0.21-SNAPSHOT org.springframework.boot From 2d4d358f603552f26e7e12a8f7062a72e86c2c34 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Jan 2024 12:50:11 +0000 Subject: [PATCH 062/163] Update dependency org.springframework.boot:spring-boot-starter-parent to v3.2.2 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a650049c17..c0cbab8a40 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ org.springframework.boot spring-boot-starter-parent - 3.2.0 + 3.2.2 From 149b0b255bd56fe915a4d0d09d57491013959365 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 13:17:35 +0000 Subject: [PATCH 063/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 8741dd6d43..d8e42a44d1 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.21-SNAPSHOT + 2.0.22-SNAPSHOT backend - 2.0.21-SNAPSHOT + 2.0.22-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index c0cbab8a40..89b65d3e18 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.21-SNAPSHOT + 2.0.22-SNAPSHOT org.springframework.boot From d65c4df04691806cf93e1f7a4533b0bb01a51a72 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 15 Jan 2024 11:37:26 +0100 Subject: [PATCH 064/163] set minimum of confidence slider to 0 --- frontend/src/app/confidence/confidence.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/confidence/confidence.component.ts b/frontend/src/app/confidence/confidence.component.ts index 50bac0d4e9..68fde4255a 100644 --- a/frontend/src/app/confidence/confidence.component.ts +++ b/frontend/src/app/confidence/confidence.component.ts @@ -8,7 +8,7 @@ import { CheckInMin } from '../shared/types/model/CheckInMin'; changeDetection: ChangeDetectionStrategy.OnPush, }) export class ConfidenceComponent implements OnChanges { - min: number = 1; + min: number = 0; max: number = 10; @Input() edit: boolean = true; @Input() isDetail: boolean = true; From 91f853c1b09710a825c8f85be91d31620ccaa0e8 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Thu, 18 Jan 2024 13:08:19 +0100 Subject: [PATCH 065/163] add e2e tests --- .../ch/puzzle/okr/models/checkin/CheckIn.java | 2 +- frontend/cypress/e2e/checkIn.cy.ts | 44 ++++++++++++++++--- frontend/cypress/support/commands.ts | 23 +++++----- frontend/cypress/support/component.ts | 4 +- .../app/confidence/confidence.component.html | 2 +- frontend/src/assets/i18n/de.json | 2 +- 6 files changed, 52 insertions(+), 25 deletions(-) diff --git a/backend/src/main/java/ch/puzzle/okr/models/checkin/CheckIn.java b/backend/src/main/java/ch/puzzle/okr/models/checkin/CheckIn.java index 95810b5cc2..7105ca5950 100644 --- a/backend/src/main/java/ch/puzzle/okr/models/checkin/CheckIn.java +++ b/backend/src/main/java/ch/puzzle/okr/models/checkin/CheckIn.java @@ -30,7 +30,7 @@ public abstract class CheckIn implements WriteableInterface { private String initiatives; @Max(value = 10, message = MessageKey.ATTRIBUTE_MAX_VALUE) - @Min(value = 1, message = MessageKey.ATTRIBUTE_MIN_VALUE) + @Min(value = 0, message = MessageKey.ATTRIBUTE_MIN_VALUE) @NotNull(message = MessageKey.ATTRIBUTE_NOT_NULL) private Integer confidence; diff --git a/frontend/cypress/e2e/checkIn.cy.ts b/frontend/cypress/e2e/checkIn.cy.ts index 66b5d7bcd3..e0d6a7c3cf 100644 --- a/frontend/cypress/e2e/checkIn.cy.ts +++ b/frontend/cypress/e2e/checkIn.cy.ts @@ -30,7 +30,37 @@ describe('OKR Check-in e2e tests', () => { cy.getByTestId('add-check-in').first().click(); checkForDialogTextMetric(); - cy.fillOutCheckInMetric(30, true, 'We bought a new house', 'We have to buy more PCs'); + cy.fillOutCheckInMetric(30, 6, 'We bought a new house', 'We have to buy more PCs'); + + cy.contains('30%'); + cy.contains('6/10'); + cy.contains('Letztes Check-in (' + getCurrentDate() + ')'); + cy.contains('We bought a new house'); + cy.contains('Alle Check-ins anzeigen'); + }); + + it(`Create checkin metric with confidence 0`, () => { + cy.getByTestId('objective').first().getByTestId('add-keyResult').first().click(); + cy.getByTestId('submit').should('be.disabled'); + + cy.fillOutKeyResult( + 'Very important keyresult', + 'PERCENT', + '21', + '52', + null, + null, + null, + null, + 'This is my description', + ); + cy.getByTestId('submit').click(); + + cy.getByTestId('keyresult').contains('Very important keyresult').click(); + + cy.getByTestId('add-check-in').first().click(); + checkForDialogTextMetric(); + cy.fillOutCheckInMetric(30, 0, 'We bought a new house', 'We have to buy more PCs'); cy.contains('30%'); cy.contains('6/10'); @@ -60,7 +90,7 @@ describe('OKR Check-in e2e tests', () => { cy.getByTestId('add-check-in').first().click(); checkForDialogTextMetric(); - cy.fillOutCheckInMetric(5, false, null, null); + cy.fillOutCheckInMetric(5, 5, null, null); cy.contains('5%'); cy.contains('!'); @@ -92,7 +122,7 @@ describe('OKR Check-in e2e tests', () => { cy.getByTestId('add-check-in').first().click(); checkForDialogTextOrdinal(); - cy.fillOutCheckInOrdinal(1, true, 'There is a new car', 'Buy now a new pool'); + cy.fillOutCheckInOrdinal(1, 6, 'There is a new car', 'Buy now a new pool'); cy.contains('6/10'); cy.contains('There is a new car'); @@ -119,10 +149,10 @@ describe('OKR Check-in e2e tests', () => { cy.getByTestId('keyresult').contains('This will give a checkin list').click(); cy.getByTestId('add-check-in').first().click(); - cy.fillOutCheckInMetric(30, false, 'We bought a new house', 'We have to buy more PCs'); + cy.fillOutCheckInMetric(30, 5, 'We bought a new house', 'We have to buy more PCs'); cy.wait(200); cy.getByTestId('add-check-in').first().click(); - cy.fillOutCheckInMetric(50, true, 'This was a good idea', 'Will be difficult'); + cy.fillOutCheckInMetric(50, 6, 'This was a good idea', 'Will be difficult'); cy.getByTestId('show-all-checkins').click(); @@ -160,7 +190,7 @@ describe('OKR Check-in e2e tests', () => { cy.getByTestId('keyresult').contains('Here we edit a metric checkin').click(); cy.getByTestId('add-check-in').first().click(); - cy.fillOutCheckInMetric(30, false, 'Here we are', 'A cat would be great'); + cy.fillOutCheckInMetric(30, 5, 'Here we are', 'A cat would be great'); cy.contains('Aktuell: CHF 30.-'); cy.getByTestId('show-all-checkins').click(); @@ -205,7 +235,7 @@ describe('OKR Check-in e2e tests', () => { cy.getByTestId('keyresult').contains('For editing ordinal checkin').click(); cy.getByTestId('add-check-in').first().click(); - cy.fillOutCheckInOrdinal(0, true, 'There is a new car', 'Buy now a new pool'); + cy.fillOutCheckInOrdinal(0, 6, 'There is a new car', 'Buy now a new pool'); cy.getByTestId('show-all-checkins').click(); cy.wait(500); diff --git a/frontend/cypress/support/commands.ts b/frontend/cypress/support/commands.ts index 75084aac42..a5d8151bd8 100644 --- a/frontend/cypress/support/commands.ts +++ b/frontend/cypress/support/commands.ts @@ -58,9 +58,9 @@ Cypress.Commands.add( Cypress.Commands.add( 'fillOutCheckInMetric', - (currentValue: number, shouldChangeConfidence: boolean, changeInfo: string | null, initiatives: string | null) => { + (currentValue: number, shouldChangeConfidence: number, changeInfo: string | null, initiatives: string | null) => { cy.getByTestId('check-in-metric-value').clear().type(currentValue.toString()); - changeConfidence(shouldChangeConfidence); + setConfidence(shouldChangeConfidence); if (changeInfo) { cy.getByTestId('changeInfo').clear().type(changeInfo!); } @@ -73,12 +73,7 @@ Cypress.Commands.add( Cypress.Commands.add( 'fillOutCheckInOrdinal', - ( - currentZoneIndex: number, - shouldChangeConfidence: boolean, - changeInfo: string | null, - initiatives: string | null, - ) => { + (currentZoneIndex: number, confidence: number, changeInfo: string | null, initiatives: string | null) => { switch (currentZoneIndex) { case 0: cy.getByTestId('fail-radio').click(); @@ -93,7 +88,7 @@ Cypress.Commands.add( cy.getByTestId('stretch-radio').click(); break; } - changeConfidence(shouldChangeConfidence); + setConfidence(confidence); if (changeInfo) { cy.getByTestId('changeInfo').clear().type(changeInfo!); } @@ -238,10 +233,12 @@ function doUntil(selector: string, tab: () => void, limit: number = 100) { } } -function changeConfidence(changeConfidence: boolean) { - if (changeConfidence) { - cy.tabForward(); - cy.tabForward(); +function setConfidence(confidence: number) { + cy.getByTestId('confidence-slider').find('input').focus(); + for (let i = 0; i < 10; i++) { + cy.realPress('ArrowLeft'); + } + for (let i = 0; i < confidence; i++) { cy.realPress('ArrowRight'); } } diff --git a/frontend/cypress/support/component.ts b/frontend/cypress/support/component.ts index b16707ec5e..f7656f809e 100644 --- a/frontend/cypress/support/component.ts +++ b/frontend/cypress/support/component.ts @@ -37,13 +37,13 @@ declare global { ): void; fillOutCheckInMetric( currentValue: number, - changeConfidence: boolean, + changeConfidence: number, changeInfo: string | null, initiatives: string | null, ): void; fillOutCheckInOrdinal( currentZoneIndex: number, - changeConfidence: boolean, + changeConfidence: number, changeInfo: string | null, initiatives: string | null, ): void; diff --git a/frontend/src/app/confidence/confidence.component.html b/frontend/src/app/confidence/confidence.component.html index 0099c9ab89..aa8b974de0 100644 --- a/frontend/src/app/confidence/confidence.component.html +++ b/frontend/src/app/confidence/confidence.component.html @@ -1,7 +1,7 @@
Date: Thu, 18 Jan 2024 13:12:35 +0100 Subject: [PATCH 066/163] update min confidence value in backend unit tests --- .../okr/service/validation/CheckInValidationServiceTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/test/java/ch/puzzle/okr/service/validation/CheckInValidationServiceTest.java b/backend/src/test/java/ch/puzzle/okr/service/validation/CheckInValidationServiceTest.java index b1ea7e075c..3d9b933e98 100644 --- a/backend/src/test/java/ch/puzzle/okr/service/validation/CheckInValidationServiceTest.java +++ b/backend/src/test/java/ch/puzzle/okr/service/validation/CheckInValidationServiceTest.java @@ -70,7 +70,7 @@ class CheckInValidationServiceTest { private static Stream confidenceValidationArguments() { return Stream.of( - arguments(-1, List.of(new ErrorDto("ATTRIBUTE_MIN_VALUE", List.of("confidence", "CheckIn", "1")))), + arguments(-1, List.of(new ErrorDto("ATTRIBUTE_MIN_VALUE", List.of("confidence", "CheckIn", "0")))), arguments(11, List.of(new ErrorDto("ATTRIBUTE_MAX_VALUE", List.of("confidence", "CheckIn", "10")))), arguments(null, List.of(new ErrorDto("ATTRIBUTE_NOT_NULL", List.of("confidence", "CheckIn"))))); } From 7b927d09bfde53e733db1ce69ab2c9aafd3302b3 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 12:08:22 +0100 Subject: [PATCH 067/163] update validators of confidence in check-in-form-compoentn --- .../dialog/checkin/check-in-form/check-in-form.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/shared/dialog/checkin/check-in-form/check-in-form.component.ts b/frontend/src/app/shared/dialog/checkin/check-in-form/check-in-form.component.ts index b78a4be988..c6955bd251 100644 --- a/frontend/src/app/shared/dialog/checkin/check-in-form/check-in-form.component.ts +++ b/frontend/src/app/shared/dialog/checkin/check-in-form/check-in-form.component.ts @@ -25,7 +25,7 @@ export class CheckInFormComponent implements OnInit { continued: boolean = false; dialogForm = new FormGroup({ value: new FormControl('', [Validators.required]), - confidence: new FormControl(5, [Validators.required, Validators.min(1), Validators.max(10)]), + confidence: new FormControl(5, [Validators.required, Validators.min(0), Validators.max(10)]), changeInfo: new FormControl('', [Validators.maxLength(4096)]), initiatives: new FormControl('', [Validators.maxLength(4096)]), actionList: new FormControl([]), From 7651985b5e09f18882c2b3b632f449fd17cf7726 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 13:20:28 +0000 Subject: [PATCH 068/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index d8e42a44d1..8955e7984a 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.22-SNAPSHOT + 2.0.23-SNAPSHOT backend - 2.0.22-SNAPSHOT + 2.0.23-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index 89b65d3e18..1dd6fb2da9 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.22-SNAPSHOT + 2.0.23-SNAPSHOT org.springframework.boot From 0355d305a97726da8cc23d98c99ca972b4da0735 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 18 Jan 2024 07:07:08 +0000 Subject: [PATCH 069/163] Update angular monorepo --- frontend/package-lock.json | 98 +++++++++++++++++++------------------- frontend/package.json | 2 +- 2 files changed, 50 insertions(+), 50 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index d31bae934f..df2ce04ef2 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -27,7 +27,7 @@ "ngx-toastr": "^18.0.0", "rxjs": "^7.8.1", "tslib": "^2.6.2", - "zone.js": "0.14.2" + "zone.js": "0.14.3" }, "devDependencies": { "@angular-devkit/build-angular": "^17.0.6", @@ -700,9 +700,9 @@ } }, "node_modules/@angular/animations": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.0.6.tgz", - "integrity": "sha512-fic61LjLHry79c5H9UGM8Ff311MJnf9an7EukLj2aLJ3J0uadL/H9de7dDp8PaIT10DX9g+aRTIKOmF3PmmXIQ==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.1.0.tgz", + "integrity": "sha512-EzyJsla/CnRX4ARmHe9J1m3Pl+J4m5hznzeQFyZpJehikaHKAGGJTGM/+DFAX9TuR1ZpCmS0z0oWsYzag2Q7RA==", "dependencies": { "tslib": "^2.3.0" }, @@ -710,7 +710,7 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/core": "17.0.6" + "@angular/core": "17.1.0" } }, "node_modules/@angular/cdk": { @@ -764,9 +764,9 @@ } }, "node_modules/@angular/common": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.0.6.tgz", - "integrity": "sha512-FZtf8ol8W2V21ZDgFtcxmJ6JJKUO97QZ+wr/bosyYEryWMmn6VGrbOARhfW7BlrEgn14NdFkLb72KKtqoqRjrg==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.1.0.tgz", + "integrity": "sha512-0Zg62iSynyRr2QslC8dVwSo46mkKrVENnwcBvsgTJ8rfGiuRdKMX8nWm5EUEm3ohKmYLfHvyEjsKDRn//UefVw==", "dependencies": { "tslib": "^2.3.0" }, @@ -774,14 +774,14 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/core": "17.0.6", + "@angular/core": "17.1.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.0.6.tgz", - "integrity": "sha512-PaCNnlPcL0rvByKCBUUyLWkKJYXOrcfKlYYvcacjOzEUgZeEpekG81hMRb9u/Pz+A+M4HJSTmdgzwGP35zo8qw==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.1.0.tgz", + "integrity": "sha512-gF4i/WtPSiSvT4YNasTNnckOxdxuSNwi0EsncrtewwveBcCatjqaXNssUCiF5TgxlC2sKTmsPcMqDJrfX2LMpw==", "dependencies": { "tslib": "^2.3.0" }, @@ -789,7 +789,7 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/core": "17.0.6" + "@angular/core": "17.1.0" }, "peerDependenciesMeta": { "@angular/core": { @@ -798,9 +798,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.0.6.tgz", - "integrity": "sha512-C1Gfh9kbjYZezEMOwxnvUTHuPXa+6pk7mAfSj8e5oAO6E+wfo2dTxv1J5zxa3KYzxPYMNfF8OFvLuMKsw7lXjA==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.1.0.tgz", + "integrity": "sha512-WDpO4WvC5ItjaRexnpFpKPpT+cu+5GYkWF8h74iHhfxOgU+gaQiMWERHylWCqF25AzmhKu0iI3ZZtaIJ6qqwog==", "dev": true, "dependencies": { "@babel/core": "7.23.2", @@ -821,14 +821,14 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/compiler": "17.0.6", - "typescript": ">=5.2 <5.3" + "@angular/compiler": "17.1.0", + "typescript": ">=5.2 <5.4" } }, "node_modules/@angular/core": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.0.6.tgz", - "integrity": "sha512-QzfKRTDNgGOY9D5VxenUUz20cvPVC+uVw9xiqkDuHgGfLYVFlCAK9ymFYkdUCLTcVzJPxckP+spMpPX8nc4Aqw==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.1.0.tgz", + "integrity": "sha512-9OvRRZq+46S+ICZLRYIGVU2pknuPz23B+5V3jz7cDA5V43GVcMnfmAbMClPQxm7kRGnqtQ+yzBjn+HubCerE6g==", "dependencies": { "tslib": "^2.3.0" }, @@ -841,9 +841,9 @@ } }, "node_modules/@angular/forms": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.0.6.tgz", - "integrity": "sha512-n/trsMtQHUBGiWz5lFaggMcMOuw0gH+96TCtHxQiUYJOdrbOemkFdGrNh3B4fGHmogWuOYJVF5FAm97WRES2XA==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.1.0.tgz", + "integrity": "sha512-JD9IAxa5gQnjzxYJXm3H+lBuyv/dCnPHl6fpvb/JGrxY6xi4gfndyI8AkAb/wOAQgZDsIPaq5s4eWDjhr7CpyA==", "dependencies": { "tslib": "^2.3.0" }, @@ -851,9 +851,9 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/common": "17.0.6", - "@angular/core": "17.0.6", - "@angular/platform-browser": "17.0.6", + "@angular/common": "17.1.0", + "@angular/core": "17.1.0", + "@angular/platform-browser": "17.1.0", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -935,9 +935,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.0.6.tgz", - "integrity": "sha512-nBhWH1MKT2WswgRNIoMnmNAt0n5/fG59BanJtodW71//Aj5aIE+BuVoFgK3wmO8IMoeP4i4GXRInBXs6lUMOJw==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.1.0.tgz", + "integrity": "sha512-Klq92ZUX0+ZsxLvbYtIEP3GtVEfMLYPxmBP0pWNZyYIeJCg/YxPS76QSvEhBaMqFelk4RzkDQEIfixC16UIgOA==", "dependencies": { "tslib": "^2.3.0" }, @@ -945,9 +945,9 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/animations": "17.0.6", - "@angular/common": "17.0.6", - "@angular/core": "17.0.6" + "@angular/animations": "17.1.0", + "@angular/common": "17.1.0", + "@angular/core": "17.1.0" }, "peerDependenciesMeta": { "@angular/animations": { @@ -956,9 +956,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.0.6.tgz", - "integrity": "sha512-5ZEmBtBkqamTaWjUXCls7G1f3xyK/ykXE7hnUV9CgGqXKrNkxblmbtOhoWdsbuIYjjdxQcAk1qtg/Rg21wcc4w==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.1.0.tgz", + "integrity": "sha512-rqPRZZx6VcSx81HIQr1XMBgb7fYSj6pOZNTJGZkn2KNxrz6hyU3A3qaom1VSVRK5vvNb1cFn35mg/zyOIliTIg==", "dependencies": { "tslib": "^2.3.0" }, @@ -966,16 +966,16 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/common": "17.0.6", - "@angular/compiler": "17.0.6", - "@angular/core": "17.0.6", - "@angular/platform-browser": "17.0.6" + "@angular/common": "17.1.0", + "@angular/compiler": "17.1.0", + "@angular/core": "17.1.0", + "@angular/platform-browser": "17.1.0" } }, "node_modules/@angular/router": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.0.6.tgz", - "integrity": "sha512-xW6yDxREpBOB9MoODSfIw5HwkwLK+OgK34Q6sGYs0ft9UryMoFwft+pHGAaDz2nzhA72n+Ht9B2eai78UE9jGQ==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.1.0.tgz", + "integrity": "sha512-VDeVLiiS4iEwqwgsLyL9hqA1djFW3yveMnhZIwviJlnp9vG2r/ggMKhNmdP1Hb2iaNgflyhyhwafJ0gi9SLi5A==", "dependencies": { "tslib": "^2.3.0" }, @@ -983,9 +983,9 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/common": "17.0.6", - "@angular/core": "17.0.6", - "@angular/platform-browser": "17.0.6", + "@angular/common": "17.1.0", + "@angular/core": "17.1.0", + "@angular/platform-browser": "17.1.0", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -18374,9 +18374,9 @@ } }, "node_modules/zone.js": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.2.tgz", - "integrity": "sha512-X4U7J1isDhoOmHmFWiLhloWc2lzMkdnumtfQ1LXzf/IOZp5NQYuMUTaviVzG/q1ugMBIXzin2AqeVJUoSEkNyQ==", + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.3.tgz", + "integrity": "sha512-jYoNqF046Q+JfcZSItRSt+oXFcpXL88yq7XAZjb/NKTS7w2hHpKjRJ3VlFD1k75wMaRRXNUt5vrZVlygiMyHbA==", "dependencies": { "tslib": "^2.3.0" } diff --git a/frontend/package.json b/frontend/package.json index bcbdb6c983..3a25af9ab6 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -40,7 +40,7 @@ "ngx-toastr": "^18.0.0", "rxjs": "^7.8.1", "tslib": "^2.6.2", - "zone.js": "0.14.2" + "zone.js": "0.14.3" }, "devDependencies": { "@angular-devkit/build-angular": "^17.0.6", From 99d61abcc15feff567caf921de35c83d5605a6ba Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 13:30:28 +0000 Subject: [PATCH 070/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 8955e7984a..f8611b4bcc 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.23-SNAPSHOT + 2.0.24-SNAPSHOT backend - 2.0.23-SNAPSHOT + 2.0.24-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index 1dd6fb2da9..223833a309 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.23-SNAPSHOT + 2.0.24-SNAPSHOT org.springframework.boot From c8431e82cd86cd2fd0c705cba151a2a09de6056a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Jan 2024 13:13:18 +0000 Subject: [PATCH 071/163] Update angular-cli monorepo to v17.1.0 --- frontend/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/package.json b/frontend/package.json index 3a25af9ab6..bb7c90f7d1 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -44,7 +44,7 @@ }, "devDependencies": { "@angular-devkit/build-angular": "^17.0.6", - "@angular/cli": "~17.0.6", + "@angular/cli": "~17.1.0", "@angular/compiler-cli": "^17.0.6", "@cypress/schematic": "^2.5.1", "@cypress/skip-test": "^2.6.1", From 1a39bb6cec104ff3bbf2beb292e63244322cf555 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Jan 2024 13:30:57 +0000 Subject: [PATCH 072/163] Update angular-cli monorepo to v17.1.0 --- frontend/package-lock.json | 1705 ++++++++++++++++++------------------ 1 file changed, 829 insertions(+), 876 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index df2ce04ef2..f5f2184c20 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -31,7 +31,7 @@ }, "devDependencies": { "@angular-devkit/build-angular": "^17.0.6", - "@angular/cli": "~17.0.6", + "@angular/cli": "~17.1.0", "@angular/compiler-cli": "^17.0.6", "@cypress/schematic": "^2.5.1", "@cypress/skip-test": "^2.6.1", @@ -59,12 +59,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1700.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1700.6.tgz", - "integrity": "sha512-zVpz736cBZHXcv0v2bRLfJLcykanUyEMVQXkGwZp2eygjNK1Ls9s/74o1dXd6nGdvjh6AnkzOU/vouj2dqA41g==", + "version": "0.1701.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1701.0.tgz", + "integrity": "sha512-VP6mjptKFn0HO2dn4bH0mFMe4CrexlWlgnTHyAUbL7ZFaV9w4VQuE/vXr60wMlQ+83NIGUeJImjt1QVNlIjJnQ==", "dev": true, "dependencies": { - "@angular-devkit/core": "17.0.6", + "@angular-devkit/core": "17.1.0", "rxjs": "7.8.1" }, "engines": { @@ -74,42 +74,40 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.0.6.tgz", - "integrity": "sha512-gYxmbvq5/nk7aVJ6JxIIW0//RM7859kMPJGPKekcCGSWkkObjqG6P5cDgJJNAjMl/IfCsG7B+xGYjr4zN8QV9g==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.1.0.tgz", + "integrity": "sha512-N9B2SlKewD48qKFgRPKDH1X2EvOGll1ocMlFxi95mT9aXuFd2d75JUYHzS1v3FQRU3peoAoFKxCV7OuIL/cmTA==", "dev": true, "dependencies": { "@ampproject/remapping": "2.2.1", - "@angular-devkit/architect": "0.1700.6", - "@angular-devkit/build-webpack": "0.1700.6", - "@angular-devkit/core": "17.0.6", - "@babel/core": "7.23.2", - "@babel/generator": "7.23.0", + "@angular-devkit/architect": "0.1701.0", + "@angular-devkit/build-webpack": "0.1701.0", + "@angular-devkit/core": "17.1.0", + "@babel/core": "7.23.7", + "@babel/generator": "7.23.6", "@babel/helper-annotate-as-pure": "7.22.5", "@babel/helper-split-export-declaration": "7.22.6", - "@babel/plugin-transform-async-generator-functions": "7.23.2", - "@babel/plugin-transform-async-to-generator": "7.22.5", - "@babel/plugin-transform-runtime": "7.23.2", - "@babel/preset-env": "7.23.2", - "@babel/runtime": "7.23.2", + "@babel/plugin-transform-async-generator-functions": "7.23.7", + "@babel/plugin-transform-async-to-generator": "7.23.3", + "@babel/plugin-transform-runtime": "7.23.7", + "@babel/preset-env": "7.23.7", + "@babel/runtime": "7.23.7", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "17.0.6", - "@vitejs/plugin-basic-ssl": "1.0.1", + "@ngtools/webpack": "17.1.0", + "@vitejs/plugin-basic-ssl": "1.0.2", "ansi-colors": "4.1.3", "autoprefixer": "10.4.16", "babel-loader": "9.1.3", "babel-plugin-istanbul": "6.1.1", - "browser-sync": "2.29.3", "browserslist": "^4.21.5", - "chokidar": "3.5.3", "copy-webpack-plugin": "11.0.0", "critters": "0.0.20", "css-loader": "6.8.1", - "esbuild-wasm": "0.19.5", - "fast-glob": "3.3.1", + "esbuild-wasm": "0.19.11", + "fast-glob": "3.3.2", "http-proxy-middleware": "2.0.6", "https-proxy-agent": "7.0.2", - "inquirer": "9.2.11", + "inquirer": "9.2.12", "jsonc-parser": "3.2.0", "karma-source-map-support": "1.4.0", "less": "4.2.0", @@ -118,27 +116,28 @@ "loader-utils": "3.2.1", "magic-string": "0.30.5", "mini-css-extract-plugin": "2.7.6", - "mrmime": "1.0.1", + "mrmime": "2.0.0", "open": "8.4.2", "ora": "5.4.1", "parse5-html-rewriting-stream": "7.0.0", "picomatch": "3.0.1", - "piscina": "4.1.0", - "postcss": "8.4.31", - "postcss-loader": "7.3.3", + "piscina": "4.2.1", + "postcss": "8.4.33", + "postcss-loader": "7.3.4", "resolve-url-loader": "5.0.0", "rxjs": "7.8.1", - "sass": "1.69.5", - "sass-loader": "13.3.2", + "sass": "1.69.7", + "sass-loader": "13.3.3", "semver": "7.5.4", - "source-map-loader": "4.0.1", + "source-map-loader": "5.0.0", "source-map-support": "0.5.21", - "terser": "5.24.0", + "terser": "5.26.0", "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.6.2", - "undici": "5.27.2", - "vite": "4.5.1", + "undici": "6.2.1", + "vite": "5.0.11", + "watchpack": "2.4.0", "webpack": "5.89.0", "webpack-dev-middleware": "6.1.1", "webpack-dev-server": "4.15.1", @@ -151,20 +150,22 @@ "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.19.5" + "esbuild": "0.19.11" }, "peerDependencies": { "@angular/compiler-cli": "^17.0.0", "@angular/localize": "^17.0.0", "@angular/platform-server": "^17.0.0", "@angular/service-worker": "^17.0.0", + "@web/test-runner": "^0.18.0", + "browser-sync": "^3.0.2", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "karma": "^6.3.0", "ng-packagr": "^17.0.0", "protractor": "^7.0.0", "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=5.2 <5.3" + "typescript": ">=5.2 <5.4" }, "peerDependenciesMeta": { "@angular/localize": { @@ -176,6 +177,12 @@ "@angular/service-worker": { "optional": true }, + "@web/test-runner": { + "optional": true + }, + "browser-sync": { + "optional": true + }, "jest": { "optional": true }, @@ -196,356 +203,43 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.5.tgz", - "integrity": "sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.5.tgz", - "integrity": "sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.5.tgz", - "integrity": "sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.5.tgz", - "integrity": "sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.5.tgz", - "integrity": "sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.5.tgz", - "integrity": "sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.5.tgz", - "integrity": "sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.5.tgz", - "integrity": "sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ==", - "cpu": [ - "arm" - ], + "node_modules/@angular-devkit/build-angular/node_modules/@babel/core": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", + "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.5.tgz", - "integrity": "sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ia32": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.5.tgz", - "integrity": "sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-loong64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.5.tgz", - "integrity": "sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-mips64el": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.5.tgz", - "integrity": "sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ppc64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.5.tgz", - "integrity": "sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-riscv64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.5.tgz", - "integrity": "sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-s390x": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.5.tgz", - "integrity": "sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.5.tgz", - "integrity": "sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/netbsd-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.5.tgz", - "integrity": "sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/openbsd-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.5.tgz", - "integrity": "sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/sunos-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.5.tgz", - "integrity": "sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-arm64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.5.tgz", - "integrity": "sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-ia32": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.5.tgz", - "integrity": "sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.7", + "@babel/parser": "^7.23.6", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, "engines": { - "node": ">=12" + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-x64": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.5.tgz", - "integrity": "sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw==", - "cpu": [ - "x64" - ], + "node_modules/@angular-devkit/build-angular/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "bin": { + "semver": "bin/semver.js" } }, "node_modules/@angular-devkit/build-angular/node_modules/agent-base": { @@ -560,43 +254,11 @@ "node": ">= 14" } }, - "node_modules/@angular-devkit/build-angular/node_modules/esbuild": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.5.tgz", - "integrity": "sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.19.5", - "@esbuild/android-arm64": "0.19.5", - "@esbuild/android-x64": "0.19.5", - "@esbuild/darwin-arm64": "0.19.5", - "@esbuild/darwin-x64": "0.19.5", - "@esbuild/freebsd-arm64": "0.19.5", - "@esbuild/freebsd-x64": "0.19.5", - "@esbuild/linux-arm": "0.19.5", - "@esbuild/linux-arm64": "0.19.5", - "@esbuild/linux-ia32": "0.19.5", - "@esbuild/linux-loong64": "0.19.5", - "@esbuild/linux-mips64el": "0.19.5", - "@esbuild/linux-ppc64": "0.19.5", - "@esbuild/linux-riscv64": "0.19.5", - "@esbuild/linux-s390x": "0.19.5", - "@esbuild/linux-x64": "0.19.5", - "@esbuild/netbsd-x64": "0.19.5", - "@esbuild/openbsd-x64": "0.19.5", - "@esbuild/sunos-x64": "0.19.5", - "@esbuild/win32-arm64": "0.19.5", - "@esbuild/win32-ia32": "0.19.5", - "@esbuild/win32-x64": "0.19.5" - } + "node_modules/@angular-devkit/build-angular/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "node_modules/@angular-devkit/build-angular/node_modules/https-proxy-agent": { "version": "7.0.2", @@ -624,12 +286,12 @@ } }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1700.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1700.6.tgz", - "integrity": "sha512-xT5LL92rScVjvGZO7but/YbTQ12PNilosyjDouephl+HIf2V6rwDovTsEfpLYgcrqgodh+R0X0ZCOk95+MmSBA==", + "version": "0.1701.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1701.0.tgz", + "integrity": "sha512-AUQbdnAXMdXKPj51RWr+0SusTh5M1EWEpXtEZgDSO5Vab6ak+xsX+k1IhjlEoliF0prHjD5WzBegr6WKCjZ30w==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1700.6", + "@angular-devkit/architect": "0.1701.0", "rxjs": "7.8.1" }, "engines": { @@ -643,9 +305,9 @@ } }, "node_modules/@angular-devkit/core": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.0.6.tgz", - "integrity": "sha512-+h9VnFHof7rKzBJ5FWrbPXWzbag31QKbUGJ/mV5BYgj39vjzPNUXBW8AaScZAlATi8+tElYXjRMvM49GnuyRLg==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.1.0.tgz", + "integrity": "sha512-w7HeJjyM6YtjXrwFdmFIsp9lzDPAFJov8hVCD18DZaCwryRixz+o8egfw2SkpI4L8kuGAiGxpaCTRsTQtmR4/w==", "dev": true, "dependencies": { "ajv": "8.12.0", @@ -682,12 +344,12 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.0.6.tgz", - "integrity": "sha512-2g769MpazA1aOzJOm2MNGosra3kxw8CbdIQQOKkvycIzroRNgN06yHcRTDC03GADgP/CkDJ6kxwJQNG+wNFL2A==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.1.0.tgz", + "integrity": "sha512-7q4Bk3+ePBdzrmMWxWBnNdN4kmBe2jJwa3vAofaMqZiIBEor85YcOsrUJvcWM/3+/TusgZr4p/4+oJgiYDrj5A==", "dev": true, "dependencies": { - "@angular-devkit/core": "17.0.6", + "@angular-devkit/core": "17.1.0", "jsonc-parser": "3.2.0", "magic-string": "0.30.5", "ora": "5.4.1", @@ -730,25 +392,25 @@ } }, "node_modules/@angular/cli": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.0.6.tgz", - "integrity": "sha512-BLA2wDeqZManC/7MI6WvRRV+VhrwjxxB7FawLyp4xYlo0CTSOFOfeKPVRMLEnA/Ou4R5d47B+BqJTlep62pHwg==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.1.0.tgz", + "integrity": "sha512-mZh8ibV94CqHls+GTHok9rF78UvrtKZx+o1QOcG50ZM1L5O5s2NYrBhf+QXVeTTmzhSH1wXQb7ueyuLNLVB/eA==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1700.6", - "@angular-devkit/core": "17.0.6", - "@angular-devkit/schematics": "17.0.6", - "@schematics/angular": "17.0.6", + "@angular-devkit/architect": "0.1701.0", + "@angular-devkit/core": "17.1.0", + "@angular-devkit/schematics": "17.1.0", + "@schematics/angular": "17.1.0", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "ini": "4.1.1", - "inquirer": "9.2.11", + "inquirer": "9.2.12", "jsonc-parser": "3.2.0", "npm-package-arg": "11.0.1", "npm-pick-manifest": "9.0.0", "open": "8.4.2", "ora": "5.4.1", - "pacote": "17.0.4", + "pacote": "17.0.5", "resolve": "1.22.8", "semver": "7.5.4", "symbol-observable": "4.0.0", @@ -1063,12 +725,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, "dependencies": { - "@babel/types": "^7.23.0", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -1102,14 +764,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -1185,9 +847,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -1410,14 +1072,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", - "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz", + "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==", "dev": true, "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5" + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6" }, "engines": { "node": ">=6.9.0" @@ -1438,9 +1100,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", - "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1481,6 +1143,22 @@ "@babel/core": "^7.13.0" } }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", @@ -1786,9 +1464,9 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz", - "integrity": "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.7.tgz", + "integrity": "sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -1804,14 +1482,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", - "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.5" + "@babel/helper-remap-async-to-generator": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -2017,12 +1695,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", - "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2404,16 +2083,16 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz", - "integrity": "sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.7.tgz", + "integrity": "sha512-fa0hnfmiXc9fq/weK34MUV0drz2pOL/vfKWvN7Qw127hiUPabFCUMgAbYWcchRzMJit4o5ARsK/s+5h0249pLw==", "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "babel-plugin-polyfill-corejs2": "^0.4.7", + "babel-plugin-polyfill-corejs3": "^0.8.7", + "babel-plugin-polyfill-regenerator": "^0.5.4", "semver": "^6.3.1" }, "engines": { @@ -2572,25 +2251,26 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.2.tgz", - "integrity": "sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.7.tgz", + "integrity": "sha512-SY27X/GtTz/L4UryMNJ6p4fH4nsgWbz84y9FE0bQeWJP6O5BhgVCt53CotQKHCOeXJel8VyhlhujhlltKms/CA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.2", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.22.5", - "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -2602,59 +2282,58 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.23.2", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.23.0", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.11", - "@babel/plugin-transform-classes": "^7.22.15", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.23.0", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.11", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.11", - "@babel/plugin-transform-for-of": "^7.22.15", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.11", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.11", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.23.0", - "@babel/plugin-transform-modules-commonjs": "^7.23.0", - "@babel/plugin-transform-modules-systemjs": "^7.23.0", - "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.7", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.5", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.3", + "@babel/plugin-transform-modules-umd": "^7.23.3", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11", - "@babel/plugin-transform-numeric-separator": "^7.22.11", - "@babel/plugin-transform-object-rest-spread": "^7.22.15", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.11", - "@babel/plugin-transform-optional-chaining": "^7.23.0", - "@babel/plugin-transform-parameters": "^7.22.15", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.11", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.10", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.10", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", "@babel/preset-modules": "0.1.6-no-external-plugins", - "@babel/types": "^7.23.0", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "babel-plugin-polyfill-corejs2": "^0.4.7", + "babel-plugin-polyfill-corejs3": "^0.8.7", + "babel-plugin-polyfill-regenerator": "^0.5.4", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -2695,9 +2374,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", - "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.7.tgz", + "integrity": "sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==", "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -2721,45 +2400,30 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", - "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", + "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", + "@babel/generator": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.5", - "@babel/types": "^7.23.5", - "debug": "^4.1.0", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", - "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/types": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", - "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.23.4", @@ -2881,10 +2545,26 @@ "node": ">=10.0.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", + "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/android-arm": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.17.tgz", - "integrity": "sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", + "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", "cpu": [ "arm" ], @@ -2898,9 +2578,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz", - "integrity": "sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", + "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", "cpu": [ "arm64" ], @@ -2914,9 +2594,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.17.tgz", - "integrity": "sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", + "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", "cpu": [ "x64" ], @@ -2930,9 +2610,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz", - "integrity": "sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", + "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", "cpu": [ "arm64" ], @@ -2946,9 +2626,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz", - "integrity": "sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", + "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", "cpu": [ "x64" ], @@ -2962,9 +2642,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz", - "integrity": "sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", + "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", "cpu": [ "arm64" ], @@ -2978,9 +2658,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz", - "integrity": "sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", + "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", "cpu": [ "x64" ], @@ -2994,9 +2674,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz", - "integrity": "sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", + "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", "cpu": [ "arm" ], @@ -3010,9 +2690,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz", - "integrity": "sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", + "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", "cpu": [ "arm64" ], @@ -3026,9 +2706,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz", - "integrity": "sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", + "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", "cpu": [ "ia32" ], @@ -3042,9 +2722,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz", - "integrity": "sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", + "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", "cpu": [ "loong64" ], @@ -3058,9 +2738,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz", - "integrity": "sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", + "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", "cpu": [ "mips64el" ], @@ -3074,9 +2754,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz", - "integrity": "sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", + "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", "cpu": [ "ppc64" ], @@ -3090,9 +2770,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz", - "integrity": "sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", + "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", "cpu": [ "riscv64" ], @@ -3106,9 +2786,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz", - "integrity": "sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", + "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", "cpu": [ "s390x" ], @@ -3122,9 +2802,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz", - "integrity": "sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", + "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", "cpu": [ "x64" ], @@ -3138,9 +2818,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz", - "integrity": "sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", + "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", "cpu": [ "x64" ], @@ -3154,9 +2834,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz", - "integrity": "sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", + "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", "cpu": [ "x64" ], @@ -3170,9 +2850,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz", - "integrity": "sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", + "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", "cpu": [ "x64" ], @@ -3186,9 +2866,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz", - "integrity": "sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", + "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", "cpu": [ "arm64" ], @@ -3202,9 +2882,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz", - "integrity": "sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", + "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", "cpu": [ "ia32" ], @@ -3218,9 +2898,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz", - "integrity": "sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", + "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", "cpu": [ "x64" ], @@ -4887,9 +4567,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.0.6.tgz", - "integrity": "sha512-9Us20rqGhi8PmQBwQu6Qtww3WVV/gf2s2DbzcLclsiDtSBobzT64Z6F6E9OpAYD+c5PxlUaOghL6NXdnSNdByA==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.1.0.tgz", + "integrity": "sha512-FAp5Vh4Y4DFDnrxEitggEkeDwHCml7m6hZUgohvA6n6mwrMT0ZZXnk3MIrKRnT6A9cr1wcnxMW+jIXx/cJZGlw==", "dev": true, "engines": { "node": "^18.13.0 || >=20.9.0", @@ -4898,7 +4578,7 @@ }, "peerDependencies": { "@angular/compiler-cli": "^17.0.0", - "typescript": ">=5.2 <5.3", + "typescript": ">=5.2 <5.4", "webpack": "^5.54.0" } }, @@ -5199,14 +4879,183 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz", + "integrity": "sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz", + "integrity": "sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz", + "integrity": "sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz", + "integrity": "sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz", + "integrity": "sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz", + "integrity": "sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz", + "integrity": "sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz", + "integrity": "sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz", + "integrity": "sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz", + "integrity": "sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz", + "integrity": "sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz", + "integrity": "sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz", + "integrity": "sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@schematics/angular": { - "version": "17.0.6", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.0.6.tgz", - "integrity": "sha512-AyC7Bk3Omy6PfADThhq5ci+zzdTTi2N1oZI35gw4tMK5ZxVwIACx2Zyhaz399m5c2RCDi9Hz4A2BOFq9f0j/dg==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.1.0.tgz", + "integrity": "sha512-u9pCesRWb6mVtLnFLSfZ8R21TDz8YCebAxViefWsJlb0+p0yknesVL1nG/Oi9tgfhczS991HGIVsLT41bZthUw==", "dev": true, "dependencies": { - "@angular-devkit/core": "17.0.6", - "@angular-devkit/schematics": "17.0.6", + "@angular-devkit/core": "17.1.0", + "@angular-devkit/schematics": "17.1.0", "jsonc-parser": "3.2.0" }, "engines": { @@ -5291,7 +5140,9 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@tufjs/canonical-json": { "version": "2.0.0", @@ -5422,13 +5273,17 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@types/cors": { "version": "2.8.17", "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@types/node": "*" } @@ -5698,15 +5553,15 @@ } }, "node_modules/@vitejs/plugin-basic-ssl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.1.tgz", - "integrity": "sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.2.tgz", + "integrity": "sha512-DKHKVtpI+eA5fvObVgQ3QtTGU70CcCnedalzqmGSR050AzKZMdUzgC8KmlOneHWH8dF2hJ3wkC9+8FDVAaDRCw==", "dev": true, "engines": { "node": ">=14.6.0" }, "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0" + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" } }, "node_modules/@webassemblyjs/ast": { @@ -6175,6 +6030,8 @@ "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.8.0" } @@ -6246,15 +6103,6 @@ "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", "dev": true }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -6404,13 +6252,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", + "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", + "@babel/helper-define-polyfill-provider": "^0.5.0", "semver": "^6.3.1" }, "peerDependencies": { @@ -6427,25 +6275,41 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", - "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", + "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.4", + "core-js-compat": "^3.33.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", + "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3", - "core-js-compat": "^3.33.1" + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3" + "@babel/helper-define-polyfill-provider": "^0.5.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -6521,6 +6385,8 @@ "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": "^4.5.0 || >= 5.9" } @@ -6731,13 +6597,15 @@ } }, "node_modules/browser-sync": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.29.3.tgz", - "integrity": "sha512-NiM38O6XU84+MN+gzspVmXV2fTOoe+jBqIBx3IBdhZrdeURr6ZgznJr/p+hQ+KzkKEiGH/GcC4SQFSL0jV49bg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.2.tgz", + "integrity": "sha512-PC9c7aWJFVR4IFySrJxOqLwB9ENn3/TaXCXtAa0SzLwocLN3qMjN+IatbjvtCX92BjNXsY6YWg9Eb7F3Wy255g==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "browser-sync-client": "^2.29.3", - "browser-sync-ui": "^2.29.3", + "browser-sync-client": "^3.0.2", + "browser-sync-ui": "^3.0.2", "bs-recipes": "1.3.4", "chalk": "4.1.2", "chokidar": "^3.5.1", @@ -6751,7 +6619,6 @@ "fs-extra": "3.0.1", "http-proxy": "^1.18.1", "immutable": "^3", - "localtunnel": "^2.0.1", "micromatch": "^4.0.2", "opn": "5.3.0", "portscanner": "2.2.0", @@ -6774,10 +6641,12 @@ } }, "node_modules/browser-sync-client": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.29.3.tgz", - "integrity": "sha512-4tK5JKCl7v/3aLbmCBMzpufiYLsB1+UI+7tUXCCp5qF0AllHy/jAqYu6k7hUF3hYtlClKpxExWaR+rH+ny07wQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.2.tgz", + "integrity": "sha512-tBWdfn9L0wd2Pjuz/NWHtNEKthVb1Y67vg8/qyGNtCqetNz5lkDkFnrsx5UhPNPYUO8vci50IWC/BhYaQskDiQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "etag": "1.8.1", "fresh": "0.5.2", @@ -6788,10 +6657,12 @@ } }, "node_modules/browser-sync-ui": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.29.3.tgz", - "integrity": "sha512-kBYOIQjU/D/3kYtUIJtj82e797Egk1FB2broqItkr3i4eF1qiHbFCG6srksu9gWhfmuM/TNG76jMfzAdxEPakg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.2.tgz", + "integrity": "sha512-V3FwWAI+abVbFLTyJjXJlCMBwjc3GXf/BPGfwO2fMFACWbIGW9/4SrBOFYEOOtqzCjQE0Di+U3VIb7eES4omNA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "async-each-series": "0.1.1", "chalk": "4.1.2", @@ -6807,6 +6678,8 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -6822,6 +6695,8 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6838,6 +6713,8 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6849,13 +6726,17 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/browser-sync-ui/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -6865,6 +6746,8 @@ "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -6874,6 +6757,8 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6886,6 +6771,8 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -6901,6 +6788,8 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6917,6 +6806,8 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6928,13 +6819,17 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/browser-sync/node_modules/fs-extra": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^3.0.0", @@ -6946,6 +6841,8 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -6955,6 +6852,8 @@ "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -6964,6 +6863,8 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", "dev": true, + "optional": true, + "peer": true, "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -6973,6 +6874,8 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6985,6 +6888,8 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">= 4.0.0" } @@ -7037,7 +6942,9 @@ "version": "1.3.4", "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/bser": { "version": "2.1.1", @@ -7608,6 +7515,8 @@ "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "debug": "2.6.9", "finalhandler": "1.1.0", @@ -7623,6 +7532,8 @@ "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.8" } @@ -7632,6 +7543,8 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -7640,7 +7553,9 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/content-disposition": { "version": "0.5.4", @@ -7674,6 +7589,8 @@ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -7733,9 +7650,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.34.0.tgz", - "integrity": "sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==", + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.1.tgz", + "integrity": "sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==", "dev": true, "dependencies": { "browserslist": "^4.22.2" @@ -7756,6 +7673,8 @@ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "object-assign": "^4", "vary": "^1" @@ -8411,7 +8330,9 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/detect-newline": { "version": "3.1.0", @@ -8433,6 +8354,8 @@ "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", "dev": true, + "optional": true, + "peer": true, "bin": { "dev-ip": "lib/dev-ip.js" }, @@ -8545,6 +8468,8 @@ "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "lodash": "^4.17.10" }, @@ -8557,6 +8482,8 @@ "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.0.1.tgz", "integrity": "sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "chalk": "4.1.2" }, @@ -8569,6 +8496,8 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -8584,6 +8513,8 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8600,6 +8531,8 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -8611,13 +8544,17 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/eazy-logger/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -8627,6 +8564,8 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -8729,6 +8668,8 @@ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", @@ -8750,6 +8691,8 @@ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.3.tgz", "integrity": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", @@ -8763,6 +8706,8 @@ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=10.0.0" } @@ -8849,9 +8794,9 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.17.tgz", - "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", + "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", "dev": true, "hasInstallScript": true, "bin": { @@ -8861,34 +8806,35 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.18.17", - "@esbuild/android-arm64": "0.18.17", - "@esbuild/android-x64": "0.18.17", - "@esbuild/darwin-arm64": "0.18.17", - "@esbuild/darwin-x64": "0.18.17", - "@esbuild/freebsd-arm64": "0.18.17", - "@esbuild/freebsd-x64": "0.18.17", - "@esbuild/linux-arm": "0.18.17", - "@esbuild/linux-arm64": "0.18.17", - "@esbuild/linux-ia32": "0.18.17", - "@esbuild/linux-loong64": "0.18.17", - "@esbuild/linux-mips64el": "0.18.17", - "@esbuild/linux-ppc64": "0.18.17", - "@esbuild/linux-riscv64": "0.18.17", - "@esbuild/linux-s390x": "0.18.17", - "@esbuild/linux-x64": "0.18.17", - "@esbuild/netbsd-x64": "0.18.17", - "@esbuild/openbsd-x64": "0.18.17", - "@esbuild/sunos-x64": "0.18.17", - "@esbuild/win32-arm64": "0.18.17", - "@esbuild/win32-ia32": "0.18.17", - "@esbuild/win32-x64": "0.18.17" + "@esbuild/aix-ppc64": "0.19.11", + "@esbuild/android-arm": "0.19.11", + "@esbuild/android-arm64": "0.19.11", + "@esbuild/android-x64": "0.19.11", + "@esbuild/darwin-arm64": "0.19.11", + "@esbuild/darwin-x64": "0.19.11", + "@esbuild/freebsd-arm64": "0.19.11", + "@esbuild/freebsd-x64": "0.19.11", + "@esbuild/linux-arm": "0.19.11", + "@esbuild/linux-arm64": "0.19.11", + "@esbuild/linux-ia32": "0.19.11", + "@esbuild/linux-loong64": "0.19.11", + "@esbuild/linux-mips64el": "0.19.11", + "@esbuild/linux-ppc64": "0.19.11", + "@esbuild/linux-riscv64": "0.19.11", + "@esbuild/linux-s390x": "0.19.11", + "@esbuild/linux-x64": "0.19.11", + "@esbuild/netbsd-x64": "0.19.11", + "@esbuild/openbsd-x64": "0.19.11", + "@esbuild/sunos-x64": "0.19.11", + "@esbuild/win32-arm64": "0.19.11", + "@esbuild/win32-ia32": "0.19.11", + "@esbuild/win32-x64": "0.19.11" } }, "node_modules/esbuild-wasm": { - "version": "0.19.5", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.19.5.tgz", - "integrity": "sha512-7zmLLn2QCj93XfMmHtzrDJ1UBuOHB2CZz1ghoCEZiRajxjUvHsF40PnbzFIY/pmesqPRaEtEWii0uzsTbnAgrA==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.19.11.tgz", + "integrity": "sha512-MIhnpc1TxERUHomteO/ZZHp+kUawGEc03D/8vMHGzffLvbFLeDe6mwxqEZwlqBNY7SLWbyp6bBQAcCen8+wpjQ==", "dev": true, "bin": { "esbuild": "bin/esbuild" @@ -9026,12 +8972,6 @@ "node": ">= 0.6" } }, - "node_modules/eventemitter-asyncresource": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, "node_modules/eventemitter2": { "version": "6.4.7", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", @@ -9368,9 +9308,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -9460,6 +9400,8 @@ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.1", @@ -9478,6 +9420,8 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -9486,7 +9430,9 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/find-cache-dir": { "version": "4.0.0", @@ -10407,12 +10353,12 @@ } }, "node_modules/inquirer": { - "version": "9.2.11", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.11.tgz", - "integrity": "sha512-B2LafrnnhbRzCWfAdOXisUzL89Kg8cVJlYmhqoi3flSiV/TveO+nsXwgKr9h9PIo+J1hz7nBSk6gegRIMBBf7g==", + "version": "9.2.12", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.12.tgz", + "integrity": "sha512-mg3Fh9g2zfuVWJn6lhST0O7x4n03k7G8Tx5nvikJkbq8/CK47WDVm+UznF0G6s5Zi0KcyUisr6DU8T67N5U+1Q==", "dev": true, "dependencies": { - "@ljharb/through": "^2.3.9", + "@ljharb/through": "^2.3.11", "ansi-escapes": "^4.3.2", "chalk": "^5.3.0", "cli-cursor": "^3.1.0", @@ -10687,6 +10633,8 @@ "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "lodash.isfinite": "^3.3.2" } @@ -13201,7 +13149,9 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/lines-and-columns": { "version": "1.2.4", @@ -13254,79 +13204,6 @@ "node": ">= 12.13.0" } }, - "node_modules/localtunnel": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", - "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", - "dev": true, - "dependencies": { - "axios": "0.21.4", - "debug": "4.3.2", - "openurl": "1.1.1", - "yargs": "17.1.1" - }, - "bin": { - "lt": "bin/lt.js" - }, - "engines": { - "node": ">=8.3.0" - } - }, - "node_modules/localtunnel/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/localtunnel/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/localtunnel/node_modules/yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/localtunnel/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -13355,7 +13232,9 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/lodash.memoize": { "version": "4.1.2", @@ -13953,7 +13832,9 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/mkdirp": { "version": "1.0.4", @@ -13976,9 +13857,9 @@ } }, "node_modules/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", "dev": true, "engines": { "node": ">=10" @@ -14445,6 +14326,8 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -14469,6 +14352,8 @@ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "ee-first": "1.1.1" }, @@ -14526,17 +14411,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/openurl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", - "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==", - "dev": true - }, "node_modules/opn": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "is-wsl": "^1.1.0" }, @@ -14549,6 +14430,8 @@ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=4" } @@ -14750,9 +14633,9 @@ } }, "node_modules/pacote": { - "version": "17.0.4", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.4.tgz", - "integrity": "sha512-eGdLHrV/g5b5MtD5cTPyss+JxOlaOloSMG3UwPMAvL8ywaLJ6beONPF40K4KKl/UI6q5hTKCJq5rCu8tkF+7Dg==", + "version": "17.0.5", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.5.tgz", + "integrity": "sha512-TAE0m20zSDMnchPja9vtQjri19X3pZIyRpm2TJVeI+yU42leJBBDTRYhOcWFsPhaMxf+3iwQkFiKz16G9AEeeA==", "dev": true, "dependencies": { "@npmcli/git": "^5.0.0", @@ -14995,12 +14878,11 @@ } }, "node_modules/piscina": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.1.0.tgz", - "integrity": "sha512-sjbLMi3sokkie+qmtZpkfMCUJTpbxJm/wvaPzU28vmYSsTSW8xk9JcFUsbqGJdtPpIQ9tuj+iDcTtgZjwnOSig==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.2.1.tgz", + "integrity": "sha512-LShp0+lrO+WIzB9LXO+ZmO4zGHxtTJNZhEO56H9SSu+JPaUQb6oLcTCzWi5IL2DS8/vIkCE88ElahuSSw4TAkA==", "dev": true, "dependencies": { - "eventemitter-asyncresource": "^1.0.0", "hdr-histogram-js": "^2.0.1", "hdr-histogram-percentiles-obj": "^3.0.0" }, @@ -15110,6 +14992,8 @@ "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "async": "^2.6.0", "is-number-like": "^1.0.3" @@ -15124,14 +15008,16 @@ "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "lodash": "^4.17.14" } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", "dev": true, "funding": [ { @@ -15148,7 +15034,7 @@ } ], "dependencies": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -15157,14 +15043,14 @@ } }, "node_modules/postcss-loader": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", - "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", + "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==", "dev": true, "dependencies": { - "cosmiconfig": "^8.2.0", - "jiti": "^1.18.2", - "semver": "^7.3.8" + "cosmiconfig": "^8.3.5", + "jiti": "^1.20.0", + "semver": "^7.5.4" }, "engines": { "node": ">= 14.15.0" @@ -15505,6 +15391,8 @@ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -15846,6 +15734,8 @@ "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "debug": "^2.2.0", "minimatch": "^3.0.2" @@ -15859,6 +15749,8 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -15867,7 +15759,9 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/restore-cursor": { "version": "3.1.0", @@ -15923,18 +15817,34 @@ } }, "node_modules/rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz", + "integrity": "sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==", "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=14.18.0", + "node": ">=18.0.0", "npm": ">=8.0.0" }, "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.9.6", + "@rollup/rollup-android-arm64": "4.9.6", + "@rollup/rollup-darwin-arm64": "4.9.6", + "@rollup/rollup-darwin-x64": "4.9.6", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.6", + "@rollup/rollup-linux-arm64-gnu": "4.9.6", + "@rollup/rollup-linux-arm64-musl": "4.9.6", + "@rollup/rollup-linux-riscv64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-gnu": "4.9.6", + "@rollup/rollup-linux-x64-musl": "4.9.6", + "@rollup/rollup-win32-arm64-msvc": "4.9.6", + "@rollup/rollup-win32-ia32-msvc": "4.9.6", + "@rollup/rollup-win32-x64-msvc": "4.9.6", "fsevents": "~2.3.2" } }, @@ -15974,7 +15884,9 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/rxjs": { "version": "7.8.1", @@ -16016,9 +15928,9 @@ "integrity": "sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw==" }, "node_modules/sass": { - "version": "1.69.5", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", - "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", + "version": "1.69.7", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.7.tgz", + "integrity": "sha512-rzj2soDeZ8wtE2egyLXgOOHQvaC2iosZrkF6v3EUG+tBwEvhqUCzm0VP3k9gHF9LXbSrRhT5SksoI56Iw8NPnQ==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -16033,9 +15945,9 @@ } }, "node_modules/sass-loader": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz", - "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.3.tgz", + "integrity": "sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==", "dev": true, "dependencies": { "neo-async": "^2.6.2" @@ -16152,6 +16064,8 @@ "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "debug": "2.6.9", "depd": "~1.1.2", @@ -16176,6 +16090,8 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -16185,6 +16101,8 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -16194,6 +16112,8 @@ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -16208,13 +16128,17 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/send/node_modules/mime": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", "dev": true, + "optional": true, + "peer": true, "bin": { "mime": "cli.js" } @@ -16223,19 +16147,25 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/send/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/send/node_modules/statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -16332,6 +16262,8 @@ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -16346,7 +16278,9 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/set-function-length": { "version": "1.1.1", @@ -16526,6 +16460,8 @@ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", @@ -16544,15 +16480,19 @@ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "ws": "~8.11.0" } }, "node_modules/socket.io-client": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz", - "integrity": "sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==", + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.4.tgz", + "integrity": "sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", @@ -16568,6 +16508,8 @@ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -16646,17 +16588,16 @@ } }, "node_modules/source-map-loader": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.1.tgz", - "integrity": "sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", + "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", "dev": true, "dependencies": { - "abab": "^2.0.6", "iconv-lite": "^0.6.3", "source-map-js": "^1.0.2" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", @@ -16828,6 +16769,8 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -16837,6 +16780,8 @@ "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "commander": "^2.2.0", "limiter": "^1.0.5" @@ -16852,7 +16797,9 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/string_decoder": { "version": "1.3.0", @@ -17065,9 +17012,9 @@ "dev": true }, "node_modules/terser": { - "version": "5.24.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", - "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz", + "integrity": "sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -17483,20 +17430,22 @@ "url": "https://github.com/sponsors/faisalman" } ], + "optional": true, + "peer": true, "engines": { "node": "*" } }, "node_modules/undici": { - "version": "5.27.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.27.2.tgz", - "integrity": "sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.2.1.tgz", + "integrity": "sha512-7Wa9thEM6/LMnnKtxJHlc8SrTlDmxqJecgz1iy8KlsN0/iskQXOQCuPkrZLXbElPaSw5slFFyKIKXyJ3UtbApw==", "dev": true, "dependencies": { "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=14.0" + "node": ">=18.0" } }, "node_modules/undici-types": { @@ -17735,29 +17684,29 @@ } }, "node_modules/vite": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz", - "integrity": "sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==", + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.11.tgz", + "integrity": "sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==", "dev": true, "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^18.0.0 || >=20.0.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" }, "optionalDependencies": { - "fsevents": "~2.3.2" + "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": ">= 14", + "@types/node": "^18.0.0 || >=20.0.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", @@ -18278,6 +18227,8 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=10.0.0" }, @@ -18305,6 +18256,8 @@ "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.4.0" } From ebbd385ecbaca28c4925ff5f562d20421fbc8abd Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 13:33:54 +0000 Subject: [PATCH 073/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index f8611b4bcc..d1d840f170 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.24-SNAPSHOT + 2.0.25-SNAPSHOT backend - 2.0.24-SNAPSHOT + 2.0.25-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index 223833a309..db09216ca7 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.24-SNAPSHOT + 2.0.25-SNAPSHOT org.springframework.boot From 256659477cafe8b3e074a3ff2e8243bcbdba0696 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 13:52:04 +0100 Subject: [PATCH 074/163] update cypress to 13.6.3 --- frontend/package-lock.json | 9 ++++----- frontend/package.json | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index f5f2184c20..1f69ce5e28 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -36,7 +36,7 @@ "@cypress/schematic": "^2.5.1", "@cypress/skip-test": "^2.6.1", "@types/jest": "^29.5.11", - "cypress": "^13.6.1", + "cypress": "^13.6.3", "cypress-real-events": "^1.11.0", "jest": "^29.7.0", "jest-preset-angular": "^14.0.0", @@ -8002,15 +8002,14 @@ "dev": true }, "node_modules/cypress": { - "version": "13.6.1", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.6.1.tgz", - "integrity": "sha512-k1Wl5PQcA/4UoTffYKKaxA0FJKwg8yenYNYRzLt11CUR0Kln+h7Udne6mdU1cUIdXBDTVZWtmiUjzqGs7/pEpw==", + "version": "13.6.3", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.6.3.tgz", + "integrity": "sha512-d/pZvgwjAyZsoyJ3FOsJT5lDsqnxQ/clMqnNc++rkHjbkkiF2h9s0JsZSyyH4QXhVFW3zPFg82jD25roFLOdZA==", "dev": true, "hasInstallScript": true, "dependencies": { "@cypress/request": "^3.0.0", "@cypress/xvfb": "^1.2.4", - "@types/node": "^18.17.5", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", "arch": "^2.2.0", diff --git a/frontend/package.json b/frontend/package.json index bb7c90f7d1..34af053994 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -49,7 +49,7 @@ "@cypress/schematic": "^2.5.1", "@cypress/skip-test": "^2.6.1", "@types/jest": "^29.5.11", - "cypress": "^13.6.1", + "cypress": "^13.6.3", "cypress-real-events": "^1.11.0", "jest": "^29.7.0", "jest-preset-angular": "^14.0.0", From 3424e0053398cf9d4087a20803df1bb990e66fdb Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 13:36:35 +0000 Subject: [PATCH 075/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index d1d840f170..f906593d8b 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.25-SNAPSHOT + 2.0.26-SNAPSHOT backend - 2.0.25-SNAPSHOT + 2.0.26-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index db09216ca7..ea12667aac 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.25-SNAPSHOT + 2.0.26-SNAPSHOT org.springframework.boot From fb488f3fe88d9d6982a5448ca6d78ff8d29820e1 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 14:39:00 +0100 Subject: [PATCH 076/163] update moment to 2.30.1 --- frontend/package-lock.json | 8 ++++---- frontend/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 1f69ce5e28..3d683233f1 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -23,7 +23,7 @@ "@ngx-translate/http-loader": "^8.0.0", "angular-oauth2-oidc": "^15.0.1", "bootstrap": "^5.3.2", - "moment": "^2.29.4", + "moment": "^2.30.1", "ngx-toastr": "^18.0.0", "rxjs": "^7.8.1", "tslib": "^2.6.2", @@ -13848,9 +13848,9 @@ } }, "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "engines": { "node": "*" } diff --git a/frontend/package.json b/frontend/package.json index 34af053994..a6b09c44d1 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -36,7 +36,7 @@ "@ngx-translate/http-loader": "^8.0.0", "angular-oauth2-oidc": "^15.0.1", "bootstrap": "^5.3.2", - "moment": "^2.29.4", + "moment": "^2.30.1", "ngx-toastr": "^18.0.0", "rxjs": "^7.8.1", "tslib": "^2.6.2", From a1cc775099d798e9c29dd8a1c1da4c36ff766c58 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 13:41:53 +0000 Subject: [PATCH 077/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index f906593d8b..8eddc49ca0 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.26-SNAPSHOT + 2.0.27-SNAPSHOT backend - 2.0.26-SNAPSHOT + 2.0.27-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index ea12667aac..45207566db 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.26-SNAPSHOT + 2.0.27-SNAPSHOT org.springframework.boot From 0cba52168276c886a3dc17aca062e3ace43b9b14 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 14:51:33 +0100 Subject: [PATCH 078/163] update package.lock --- frontend/package-lock.json | 4157 +++++++++++++----------------------- 1 file changed, 1527 insertions(+), 2630 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 1f69ce5e28..7f4f781a41 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -203,88 +203,6 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/core": { - "version": "7.23.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", - "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.7", - "@babel/parser": "^7.23.6", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.7", - "@babel/types": "^7.23.6", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/@angular-devkit/build-angular/node_modules/https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/picomatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", - "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/@angular-devkit/build-webpack": { "version": "0.1701.0", "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1701.0.tgz", @@ -331,18 +249,6 @@ } } }, - "node_modules/@angular-devkit/core/node_modules/picomatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", - "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/@angular-devkit/schematics": { "version": "17.1.0", "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.1.0.tgz", @@ -376,9 +282,9 @@ } }, "node_modules/@angular/cdk": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-17.0.3.tgz", - "integrity": "sha512-Qd5uvC09B3+uk2uX1JxmiWrD7wueMHSxNBoCbDEmnrsdDVUta0wN/jj/CtATljxUM8ZqvEvkqgxJCig1od9oyQ==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-17.1.0.tgz", + "integrity": "sha512-a2+uqr1s2pCStFs78BM1ViVqi0GnxFHGKHo58hiR9pDV/pyg9cvy+d+rsci1HkuF9AC/UqV5Y6rGLfwayO183g==", "dependencies": { "tslib": "^2.3.0" }, @@ -487,6 +393,51 @@ "typescript": ">=5.2 <5.4" } }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@angular/core": { "version": "17.1.0", "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.1.0.tgz", @@ -520,62 +471,62 @@ } }, "node_modules/@angular/material": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-17.0.3.tgz", - "integrity": "sha512-a7l5hMMCMobULAjwPK8HVQmOsbd3pOwju1QdBVhec0XwNGj2pK4ooKWdUmQcwsUA9DaZaOwAgEISHEADXJfKpQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/auto-init": "15.0.0-canary.a246a4439.0", - "@material/banner": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/button": "15.0.0-canary.a246a4439.0", - "@material/card": "15.0.0-canary.a246a4439.0", - "@material/checkbox": "15.0.0-canary.a246a4439.0", - "@material/chips": "15.0.0-canary.a246a4439.0", - "@material/circular-progress": "15.0.0-canary.a246a4439.0", - "@material/data-table": "15.0.0-canary.a246a4439.0", - "@material/density": "15.0.0-canary.a246a4439.0", - "@material/dialog": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/drawer": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/fab": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/floating-label": "15.0.0-canary.a246a4439.0", - "@material/form-field": "15.0.0-canary.a246a4439.0", - "@material/icon-button": "15.0.0-canary.a246a4439.0", - "@material/image-list": "15.0.0-canary.a246a4439.0", - "@material/layout-grid": "15.0.0-canary.a246a4439.0", - "@material/line-ripple": "15.0.0-canary.a246a4439.0", - "@material/linear-progress": "15.0.0-canary.a246a4439.0", - "@material/list": "15.0.0-canary.a246a4439.0", - "@material/menu": "15.0.0-canary.a246a4439.0", - "@material/menu-surface": "15.0.0-canary.a246a4439.0", - "@material/notched-outline": "15.0.0-canary.a246a4439.0", - "@material/radio": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/segmented-button": "15.0.0-canary.a246a4439.0", - "@material/select": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/slider": "15.0.0-canary.a246a4439.0", - "@material/snackbar": "15.0.0-canary.a246a4439.0", - "@material/switch": "15.0.0-canary.a246a4439.0", - "@material/tab": "15.0.0-canary.a246a4439.0", - "@material/tab-bar": "15.0.0-canary.a246a4439.0", - "@material/tab-indicator": "15.0.0-canary.a246a4439.0", - "@material/tab-scroller": "15.0.0-canary.a246a4439.0", - "@material/textfield": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/tooltip": "15.0.0-canary.a246a4439.0", - "@material/top-app-bar": "15.0.0-canary.a246a4439.0", - "@material/touch-target": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-17.1.0.tgz", + "integrity": "sha512-PzHTXAHuap4K7fteQhpR5+BCLV3jSpT9mhaN9evDGYqXS6iMcEX/9RBR7jVqtW2/5pnDopUioBc7pf0JWWI4JA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/auto-init": "15.0.0-canary.7f224ddd4.0", + "@material/banner": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/card": "15.0.0-canary.7f224ddd4.0", + "@material/checkbox": "15.0.0-canary.7f224ddd4.0", + "@material/chips": "15.0.0-canary.7f224ddd4.0", + "@material/circular-progress": "15.0.0-canary.7f224ddd4.0", + "@material/data-table": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dialog": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/drawer": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/fab": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/form-field": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/image-list": "15.0.0-canary.7f224ddd4.0", + "@material/layout-grid": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/linear-progress": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/radio": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/segmented-button": "15.0.0-canary.7f224ddd4.0", + "@material/select": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/slider": "15.0.0-canary.7f224ddd4.0", + "@material/snackbar": "15.0.0-canary.7f224ddd4.0", + "@material/switch": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "@material/tab-bar": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/tab-scroller": "15.0.0-canary.7f224ddd4.0", + "@material/textfield": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tooltip": "15.0.0-canary.7f224ddd4.0", + "@material/top-app-bar": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.3.0" }, "peerDependencies": { "@angular/animations": "^17.0.0 || ^18.0.0", - "@angular/cdk": "17.0.3", + "@angular/cdk": "17.1.0", "@angular/common": "^17.0.0 || ^18.0.0", "@angular/core": "^17.0.0 || ^18.0.0", "@angular/forms": "^17.0.0 || ^18.0.0", @@ -584,15 +535,15 @@ } }, "node_modules/@angular/material-moment-adapter": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-17.0.3.tgz", - "integrity": "sha512-lfewFCPpFKNJlEgsnOtDJOwOKS5Ha/VHxwhv4b9hVcIHHUmF7V4NU+TBl+7g2UtYjgYGFaMg47yLYFXFEF+42Q==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-17.1.0.tgz", + "integrity": "sha512-KdiJ/qXQanQItCC16MJj50s8f8gO4uLdT+CFqZetzgpjQXSiuNDZxdbHoB9U3IBv44gqKNdf+0Y4ckIIJ7EpZA==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { "@angular/core": "^17.0.0 || ^18.0.0", - "@angular/material": "17.0.3", + "@angular/material": "17.1.0", "moment": "^2.18.1" } }, @@ -680,21 +631,21 @@ } }, "node_modules/@babel/core": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", - "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", + "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.7", + "@babel/parser": "^7.23.6", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0", + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -789,9 +740,9 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz", - "integrity": "sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.7.tgz", + "integrity": "sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -1562,16 +1513,15 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", - "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-split-export-declaration": "^7.22.6", @@ -3787,9 +3737,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -3815,754 +3765,754 @@ } }, "node_modules/@material/animation": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/animation/-/animation-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-0eV06UGYeuFwC/4t+yjg3LCRGRLq72ybBtJYzcBDpP4ASTjie0WmpAOFJYXRq2U5X/yxLviDMhpRemoSUjgZ0Q==", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/animation/-/animation-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-1GSJaPKef+7HRuV+HusVZHps64cmZuOItDbt40tjJVaikcaZvwmHlcTxRIqzcRoCdt5ZKHh3NoO7GB9Khg4Jnw==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@material/auto-init": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-0QfmjT5elQ10hCxToVgq/WaC3301tVH1sJaO3O2yocVzr7s6iWm8/zch16V5hcHzQHbtcT3Rf4y1ZzmdNys2Iw==", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-t7ZGpRJ3ec0QDUO0nJu/SMgLW7qcuG2KqIsEYD1Ej8qhI2xpdR2ydSDQOkVEitXmKoGol1oq4nYSBjTlB65GqA==", "dependencies": { - "@material/base": "15.0.0-canary.a246a4439.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/banner": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/banner/-/banner-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-PBLgH7JEbEpTkLy33oyWXUhIFmSsdOrR6Gn6qIgQRo1qrnk5RSBGW2gEq4Z6793vjxM107gKudDb23E4Fcu4vg==", - "dependencies": { - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/button": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/tokens": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/banner/-/banner-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-g9wBUZzYBizyBcBQXTIafnRUUPi7efU9gPJfzeGgkynXiccP/vh5XMmH+PBxl5v+4MlP/d4cZ2NUYoAN7UTqSA==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/base": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/base/-/base-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-/ob3v3IFU8q2gGdVNWw5kNPjW2mRTeBIz1YdhGWUmRxKn2Kl8bdLOvrAmZtQMmPn/4cGXvinxpec/zVBWQKDkA==", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/base/-/base-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-I9KQOKXpLfJkP8MqZyr8wZIzdPHrwPjFvGd9zSK91/vPyE4hzHRJc/0njsh9g8Lm9PRYLbifXX+719uTbHxx+A==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@material/button": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/button/-/button-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-rGpVRde0Aqhv2t9QvT8Zl3HvG89BeUNPOpgfpaLBZ4SGGAO4rIrckl/eCENibKgmmdCKcYZlG9gc5abQVPfUvw==", - "dependencies": { - "@material/density": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/focus-ring": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/tokens": "15.0.0-canary.a246a4439.0", - "@material/touch-target": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/button/-/button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-BHB7iyHgRVH+JF16+iscR+Qaic+p7LU1FOLgP8KucRlpF9tTwIxQA6mJwGRi5gUtcG+vyCmzVS+hIQ6DqT/7BA==", + "dependencies": { + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/card": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/card/-/card-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-+rYUnBPgv5QVF6BeUs3toIRdSwFVohGmjk2ptTXMZkKxqAJt7Nr9Znbm3Ym2hD8GUHJeh3pyGFvEs6rG6JMYAw==", - "dependencies": { - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/tokens": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/card/-/card-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-kt7y9/IWOtJTr3Z/AoWJT3ZLN7CLlzXhx2udCLP9ootZU2bfGK0lzNwmo80bv/pJfrY9ihQKCtuGTtNxUy+vIw==", + "dependencies": { + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/checkbox": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-sQwHzm1TSxHUoPrqplWTk/BhyzdDhzcwlbucwJK9W0o9WXMDk+d9PvcCxpP/9sAnVqZk42BfE89Y0T1DHglZ9A==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/density": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/focus-ring": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/touch-target": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-rURcrL5O1u6hzWR+dNgiQ/n89vk6tdmdP3mZgnxJx61q4I/k1yijKqNJSLrkXH7Rto3bM5NRKMOlgvMvVd7UMQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/chips": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/chips/-/chips-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-TiV9WJ5taEHPGWPhXbxJvUJhLzThg+VpK7aAlvL4RurtmJ7pURuEdRS4Z6o0OEqi3wKQ4z/+K44kZUn/+9HALg==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/checkbox": "15.0.0-canary.a246a4439.0", - "@material/density": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/focus-ring": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/tokens": "15.0.0-canary.a246a4439.0", - "@material/touch-target": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/chips/-/chips-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-AYAivV3GSk/T/nRIpH27sOHFPaSMrE3L0WYbnb5Wa93FgY8a0fbsFYtSH2QmtwnzXveg+B1zGTt7/xIIcynKdQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/checkbox": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "safevalues": "^0.3.4", "tslib": "^2.1.0" } }, "node_modules/@material/circular-progress": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-+QTfyExPWzgm2tqMInd32qQOftsC1b8MUhAhZSfuecYBfqAc7KZkQEKa2nm4y8EHKMFWe8/DcxLV6IxMBLgHwA==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/progress-indicator": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-DJrqCKb+LuGtjNvKl8XigvyK02y36GRkfhMUYTcJEi3PrOE00bwXtyj7ilhzEVshQiXg6AHGWXtf5UqwNrx3Ow==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/data-table": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-89qVOjR7gqby6fsmh7tKj29SjQ2sGLXu2IzCeX3Vni4mz+xxo5dv11jxYNADvdgJDfhyDJFPh1FlqAH7O09nFA==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/checkbox": "15.0.0-canary.a246a4439.0", - "@material/density": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/icon-button": "15.0.0-canary.a246a4439.0", - "@material/linear-progress": "15.0.0-canary.a246a4439.0", - "@material/list": "15.0.0-canary.a246a4439.0", - "@material/menu": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/select": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/tokens": "15.0.0-canary.a246a4439.0", - "@material/touch-target": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-/2WZsuBIq9z9RWYF5Jo6b7P6u0fwit+29/mN7rmAZ6akqUR54nXyNfoSNiyydMkzPlZZsep5KrSHododDhBZbA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/checkbox": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/linear-progress": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/select": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/density": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/density/-/density-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-h8BJVCWkPR97WeWCN6/atVbSOP8J4+ZbbssidcwsnX7b3+3IaWdtBxGii25dsILX8pUVwwqxVis24y211b+8rg==", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/density/-/density-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-o9EXmGKVpiQ6mHhyV3oDDzc78Ow3E7v8dlaOhgaDSXgmqaE8v5sIlLNa/LKSyUga83/fpGk3QViSGXotpQx0jA==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@material/dialog": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-4lyxd+5ccOEMUGKzZcssaYyzkCsYTpYCSQSANR0toQPLv3voDwKMfA709uZI6+nL7Re6Xdf7jx8qe+QpTTjVcw==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/button": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/icon-button": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/tokens": "15.0.0-canary.a246a4439.0", - "@material/touch-target": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-u0XpTlv1JqWC/bQ3DavJ1JguofTelLT2wloj59l3/1b60jv42JQ6Am7jU3I8/SIUB1MKaW7dYocXjDWtWJakLA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/dom": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/dom/-/dom-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-AftSOGQoQg/Ys2kOVjZzvqWmsnhg3Kam/2UC4Gj0DMMCu36J4MAoD+3PpnOd1aG3wiJKtUXR2vPIwE8I/PM9yg==", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/dom/-/dom-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-mQ1HT186GPQSkRg5S18i70typ5ZytfjL09R0gJ2Qg5/G+MLCGi7TAjZZSH65tuD/QGOjel4rDdWOTmYbPYV6HA==", "dependencies": { - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/drawer": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-/JUmbzRBaikdbZ250yA9ZTPqp2W5nGvvuHYoNVAAmtOmxuwGvvNNpWiVZy2lIYeYcf1hA7hJ5mEQxs0aSD7iWQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/list": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-qyO0W0KBftfH8dlLR0gVAgv7ZHNvU8ae11Ao6zJif/YxcvK4+gph1z8AO4H410YmC2kZiwpSKyxM1iQCCzbb4g==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/elevation": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-lwPIOb8fHyOljIWYcVLPT73dPIEOKat/CXu6gqYIVMQgZQIksQNUA7z1O3l7apkRSuYUOYSXqrgU7AnWP4KcJg==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-tV6s4/pUBECedaI36Yj18KmRCk1vfue/JP/5yYRlFNnLMRVISePbZaKkn/BHXVf+26I3W879+XqIGlDVdmOoMA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/fab": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/fab/-/fab-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-XUex3FNqxPD1i/4jITucB/RWTNkkdv52mbNmwrvbuThZlhuhyH9GzOQYTDop/b2783TPcv++xr8UUbuh8GWYzA==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/focus-ring": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/tokens": "15.0.0-canary.a246a4439.0", - "@material/touch-target": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/fab/-/fab-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-4h76QrzfZTcPdd+awDPZ4Q0YdSqsXQnS540TPtyXUJ/5G99V6VwGpjMPIxAsW0y+pmI9UkLL/srrMaJec+7r4Q==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/feature-targeting": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-/SU9X5y8CRp6RS9qnjnM/N5qfsJ8bYILpR841eZmN6DLqMupaM9Yy7Mx8+v/QvpBLLhk+jmu79nFzwkwW54d6Q==", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-SAjtxYh6YlKZriU83diDEQ7jNSP2MnxKsER0TvFeyG1vX/DWsUyYDOIJTOEa9K1N+fgJEBkNK8hY55QhQaspew==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@material/floating-label": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-832qZ/qxKx0KUatoeVY3Q2NmboVgiWBG0/1VsbJyodHrgQWfnBOHgLE+M322o6uM3OhvO+kWm4iYbvwhmLZGsw==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-0KMo5ijjYaEHPiZ2pCVIcbaTS2LycvH9zEhEMKwPPGssBCX7iz5ffYQFk7e5yrQand1r3jnQQgYfHAwtykArnQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/focus-ring": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-ar0BtACFS3K14k/enAg0ePeEA/f/RJY4Ji4L/00Dw/B3XVpNRbqLH49jkcbtcQjdTS0FEyk2sWSNMZl6wVi0/A==", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Jmg1nltq4J6S6A10EGMZnvufrvU3YTi+8R8ZD9lkSbun0Fm2TVdICQt/Auyi6An9zP66oQN6c31eqO6KfIPsDg==", "dependencies": { - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0" + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0" } }, "node_modules/@material/form-field": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-Q/+ErgtAUFUPPUmWA1m5IP5voiN8XjPRwyoAlFxSTa/4t+EA5B18Z8Bsn9b6I0AC8RHke06H7UWrKz8XUDIFpw==", - "dependencies": { - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-fEPWgDQEPJ6WF7hNnIStxucHR9LE4DoDSMqCsGWS2Yu+NLZYLuCEecgR0UqQsl1EQdNRaFh8VH93KuxGd2hiPg==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/icon-button": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-Igyo94rkIlqC91BR1Tv+WLTz1ZWcZZjl1xU7Vsx8mbWA1PnaRDUTNVV5LFi4e0ORp6GSblFTImpHngEy4agMEg==", - "dependencies": { - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/density": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/focus-ring": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/touch-target": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-DcK7IL4ICY/DW+48YQZZs9g0U1kRaW0Wb0BxhvppDMYziHo/CTpFdle4gjyuTyRxPOdHQz5a97ru48Z9O4muTw==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/image-list": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-Rcj3q7Tp7Nwbe5ht6ptTc3zqK8TSDJHaPDBf+kzi0kkh6MAB4qoHPgn+HnA+zIZ79CScU56bN7zjA6XYaZvsLw==", - "dependencies": { - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-voMjG2p80XbjL1B2lmF65zO5gEgJOVKClLdqh4wbYzYfwY/SR9c8eLvlYG7DLdFaFBl/7gGxD8TvvZ329HUFPw==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/layout-grid": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-bkfxZuVzgtjEJgR3n8pvDQbe88ffULDJ5d2DF34IR8SOiRmQcj7UzqAt95XwIUcWlfisLCoIryP4U8XSpFb1EQ==", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-veDABLxMn2RmvfnUO2RUmC1OFfWr4cU+MrxKPoDD2hl3l3eDYv5fxws6r5T1JoSyXoaN+oEZpheS0+M9Ure8Pg==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@material/line-ripple": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-20WmwRrejmtOdI37+959UqEVIjbMtAXlkDOkfCIA3OUhp+oZSjVkCqKxI16jxxVlnzJ353fy8xeSKzOHe4sExQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-f60hVJhIU6I3/17Tqqzch1emUKEcfVVgHVqADbU14JD+oEIz429ZX9ksZ3VChoU3+eejFl+jVdZMLE/LrAuwpg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/linear-progress": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-IcCd4476pXHloTYadHDJ+2c2lntoVigeNnQEiD/ASQTKqKrJqkIdvvczFm9Ryu+V2+TKhp7vvQGFLUMaLPcmhw==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/progress-indicator": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-pRDEwPQielDiC9Sc5XhCXrGxP8wWOnAO8sQlMebfBYHYqy5hhiIzibezS8CSaW4MFQFyXmCmpmqWlbqGYRmiyg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/list": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/list/-/list-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-4H5dKIjCUGIPmKjfcegV0SBybD5NNdHp26OU6sovvWIvxSGQtDJr6z9I7i+0vF/HIS5ScbHD2+9/txtL80iqCA==", - "dependencies": { - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/density": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/tokens": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/list/-/list-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Is0NV91sJlXF5pOebYAtWLF4wU2MJDbYqztML/zQNENkQxDOvEXu3nWNb3YScMIYJJXvARO0Liur5K4yPagS1Q==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/menu": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/menu/-/menu-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-2HOHQAIdWQtXjSvEIrW3lnbcIwFf5XaQhFzCEZ04FcSGApc4iLwsmRFVW3PzWx+mVrUrEfO/K42DVULIX9J1Pg==", - "dependencies": { - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/list": "15.0.0-canary.a246a4439.0", - "@material/menu-surface": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/tokens": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/menu/-/menu-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-D11QU1dXqLbh5X1zKlEhS3QWh0b5BPNXlafc5MXfkdJHhOiieb7LC9hMJhbrHtj24FadJ7evaFW/T2ugJbJNnQ==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/menu-surface": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-4h4wZ0Rs7qBg1Otldw8ljp+LCULNL42pqbqcTXhKAkJM7pHcSw4k7IfoThSRLU3+V8T3/+qiAXyeQix2OGHzwg==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-7RZHvw0gbwppaAJ/Oh5SWmfAKJ62aw1IMB3+3MRwsb5PLoV666wInYa+zJfE4i7qBeOn904xqT2Nko5hY0ssrg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/notched-outline": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-zmRZHJ+5cOWsBatRyK50wuht78olXySyKOJIIEmy8lxSMZefI1764u0mr8tS1KYF8vSAl5cUlwCC3/2Njz1FPg==", - "dependencies": { - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/floating-label": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Yg2usuKB2DKlKIBISbie9BFsOVuffF71xjbxPbybvqemxqUBd+bD5/t6H1fLE+F8/NCu5JMigho4ewUU+0RCiw==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/progress-indicator": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-92HM5niUnqG5Y3M/xkscBD+2lkaWPDcIRPo0RHPYcyldL+EhWRv/sdQpfdiXw/h3uvKSowKxBMCHm8krAyf+sQ==", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-UPbDjE5CqT+SqTs0mNFG6uFEw7wBlgYmh+noSkQ6ty/EURm8lF125dmi4dv4kW0+octonMXqkGtAoZwLIHKf/w==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@material/radio": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/radio/-/radio-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-on8EVztWXc/ajcaowFZ31ClGADYxQrhj4ulMne0NxdHHWQ44ttf5aXOVqtv5mxeOzrRACOkQyTUXBG07yTWCEQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/density": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/focus-ring": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/touch-target": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/radio/-/radio-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-wR1X0Sr0KmQLu6+YOFKAI84G3L6psqd7Kys5kfb8WKBM36zxO5HQXC5nJm/Y0rdn22ixzsIz2GBo0MNU4V4k1A==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/ripple": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-Vl615/PIBpBD+IOI9Xypz0SV3RsmYJYSNx890Rih7irhUOaPsOUBmTYOWF5AsGBynqLcXoTNVhK92drYLKtJwQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-JqOsWM1f4aGdotP0rh1vZlPZTg6lZgh39FIYHFMfOwfhR+LAikUJ+37ciqZuewgzXB6iiRO6a8aUH6HR5SJYPg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/rtl": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-pgJFw8ZRpWGpwv7ZuBTJ+WdNmFBKoLVoMbbxKQWTHXVwhAqn3aoIq95o62T5QeEG/+sguNShdquG45CpAMmSRw==", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-UVf14qAtmPiaaZjuJtmN36HETyoKWmsZM/qn1L5ciR2URb8O035dFWnz4ZWFMmAYBno/L7JiZaCkPurv2ZNrGA==", "dependencies": { - "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/segmented-button": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-oqGHs2C7C+yJW/xZf/wP8jBGLs6HcerhM3CsorLAEMH3MGuIlVC17WcisBewEWucsILYEWbySXy/7T4h6/psZA==", - "dependencies": { - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/touch-target": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-LCnVRUSAhELTKI/9hSvyvIvQIpPpqF29BV+O9yM4WoNNmNWqTulvuiv7grHZl6Z+kJuxSg4BGbsPxxb9dXozPg==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/select": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/select/-/select-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-odoNLiVOgdwbEeePkjHtlr43pjskDwyO8hi4z3jcud1Rg1czk5zoJ2mUI0+olOJjBQ26PGocwrSLqf3qaThbIA==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/density": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/floating-label": "15.0.0-canary.a246a4439.0", - "@material/line-ripple": "15.0.0-canary.a246a4439.0", - "@material/list": "15.0.0-canary.a246a4439.0", - "@material/menu": "15.0.0-canary.a246a4439.0", - "@material/menu-surface": "15.0.0-canary.a246a4439.0", - "@material/notched-outline": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/tokens": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/select/-/select-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-WioZtQEXRpglum0cMSzSqocnhsGRr+ZIhvKb3FlaNrTaK8H3Y4QA7rVjv3emRtrLOOjaT6/RiIaUMTo9AGzWQQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/shape": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/shape/-/shape-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-rcWPlCoHyP79ozeEKk73KWt9WTWdh6R68+n75l08TSTvnWZB5RRTmsI9BMkz55O9OJD/8H8ZsOxBe4x2QXUT7w==", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/shape/-/shape-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-8z8l1W3+cymObunJoRhwFPKZ+FyECfJ4MJykNiaZq7XJFZkV6xNmqAVrrbQj93FtLsECn9g4PjjIomguVn/OEw==", "dependencies": { - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/slider": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/slider/-/slider-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-is1BSBpxaXBBv+wSVpe9WGWmWl59yJEeDNubTES2UFD0er3BmA+PdKkL09vvytDnBcbKf77TbxaRiUSGVaKUQA==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/tokens": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/slider/-/slider-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-QU/WSaSWlLKQRqOhJrPgm29wqvvzRusMqwAcrCh1JTrCl+xwJ43q5WLDfjYhubeKtrEEgGu9tekkAiYfMG7EBw==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/snackbar": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-2NAtC1qozR/uajszZnPy08Ej8HNnpgvCjNCBerDN4SLH2Q0/aWrVrUjqRCp2ayAvsX+szoroGbCboMhaWRzDuQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/button": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/icon-button": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/tokens": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-sm7EbVKddaXpT/aXAYBdPoN0k8yeg9+dprgBUkrdqGzWJAeCkxb4fv2B3He88YiCtvkTz2KLY4CThPQBSEsMFQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/switch": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/switch/-/switch-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-o0wcbYgm2yRs4een5uxT4RJnJ003DxXe33rk8vTBG2o7cdiSR3X7GJQxeIK3D9wPgWCAwBLhNYSzXrlTL5pkMw==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/density": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/focus-ring": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/tokens": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/switch/-/switch-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-lEDJfRvkVyyeHWIBfoxYjJVl+WlEAE2kZ/+6OqB1FW0OV8ftTODZGhHRSzjVBA1/p4FPuhAtKtoK9jTpa4AZjA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", "safevalues": "^0.3.4", "tslib": "^2.1.0" } }, "node_modules/@material/tab": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/tab/-/tab-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-HGLK774uMeLnhbjDJBOjft7S6SurZnKb+6Und88OMDUVUEG6MkFBAKQQr09iBIeLE2sUAiGQhBVQtb7LJKwolQ==", - "dependencies": { - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/focus-ring": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/tab-indicator": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/tokens": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab/-/tab-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-E1xGACImyCLurhnizyOTCgOiVezce4HlBFAI6YhJo/AyVwjN2Dtas4ZLQMvvWWqpyhITNkeYdOchwCC1mrz3AQ==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/tab-bar": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-dMQb1vXsBchQXcjbwgJZIGqTZHngm+3QGSOSb4LWjqHIgC5+w2RRrHsIAjNTyRhKssJ9nKKrbpM/Yz5vTPWH6w==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/density": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/tab": "15.0.0-canary.a246a4439.0", - "@material/tab-indicator": "15.0.0-canary.a246a4439.0", - "@material/tab-scroller": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/tokens": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-p1Asb2NzrcECvAQU3b2SYrpyJGyJLQWR+nXTYzDKE8WOpLIRCXap2audNqD7fvN/A20UJ1J8U01ptrvCkwJ4eA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/tab-scroller": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/tab-indicator": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-gG2BgHT+ggKnUOaT8LjmH/+9nknRLh8v9qemrhUkDuCtZ8inlaC33OVbbxfrpQW3J+UzBh5YCUSC+2KrN39uUA==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-h9Td3MPqbs33spcPS7ecByRHraYgU4tNCZpZzZXw31RypjKvISDv/PS5wcA4RmWqNGih78T7xg4QIGsZg4Pk4w==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/tab-scroller": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-6KvBpalc4SwLbHFm0rnuIE64VffUj7AKhnPc+mqM6VmxOvDzQ/ZSYga0rWlUfM4mCDFX3ZkSxim+iNzVF+Ejaw==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/tab": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-LFeYNjQpdXecwECd8UaqHYbhscDCwhGln5Yh+3ctvcEgvmDPNjhKn/DL3sWprWvG8NAhP6sHMrsGhQFVdCWtTg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/textfield": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-4BW5bUERPlIeiPnLSby21h1/xDmySuAG9Ucn1LM801a0+5mK3IwWb8031AP3filKZZqTx5JJvOJYZd6/OWBJVA==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/density": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/floating-label": "15.0.0-canary.a246a4439.0", - "@material/line-ripple": "15.0.0-canary.a246a4439.0", - "@material/notched-outline": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/tokens": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-AExmFvgE5nNF0UA4l2cSzPghtxSUQeeoyRjFLHLy+oAaE4eKZFrSy0zEpqPeWPQpEMDZk+6Y+6T3cOFYBeSvsw==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/theme": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/theme/-/theme-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-HWxC5Nhz8JZKTLTVmAsNxIGB3Kzr53+YFMg327S8/XuEDmI0RFHFvtwM9rADmyrHFBmUaVhV4iELyxFdi67c9w==", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/theme/-/theme-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-hs45hJoE9yVnoVOcsN1jklyOa51U4lzWsEnQEuJTPOk2+0HqCQ0yv/q0InpSnm2i69fNSyZC60+8HADZGF8ugQ==", "dependencies": { - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/tokens": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-+5iGfQ51YSb0Qau8uC6/jHXCSC3enKaQKDf/iPHfuXAe04UznW3tmm1/Ju227aZXNISTJcnQYa2rpm1M14MeUg==", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-r9TDoicmcT7FhUXC4eYMFnt9TZsz0G8T3wXvkKncLppYvZ517gPyD/1+yhuGfGOxAzxTrM66S/oEc1fFE2q4hw==", "dependencies": { - "@material/elevation": "15.0.0-canary.a246a4439.0" + "@material/elevation": "15.0.0-canary.7f224ddd4.0" } }, "node_modules/@material/tooltip": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-Ja2Z4aZQkYWD6InXA+MG4M9zdKR6dYsXXlYzQppYpfcQzXylZqh5Y7WBLulG5fA2o83pHVwILfwFZM7j7ht08Q==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/button": "15.0.0-canary.a246a4439.0", - "@material/dom": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/tokens": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-8qNk3pmPLTnam3XYC1sZuplQXW9xLn4Z4MI3D+U17Q7pfNZfoOugGr+d2cLA9yWAEjVJYB0mj8Yu86+udo4N9w==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "safevalues": "^0.3.4", "tslib": "^2.1.0" } }, "node_modules/@material/top-app-bar": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-twQchmCa1In/FFrALPYojgeM8vmV7KH96wRY9NmPSJ046ANgPCicLBgLuSzrLETCFqAwbztqzxSG4xMBL81rYg==", - "dependencies": { - "@material/animation": "15.0.0-canary.a246a4439.0", - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/elevation": "15.0.0-canary.a246a4439.0", - "@material/ripple": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/shape": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", - "@material/typography": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-SARR5/ClYT4CLe9qAXakbr0i0cMY0V3V4pe3ElIJPfL2Z2c4wGR1mTR8m2LxU1MfGKK8aRoUdtfKaxWejp+eNA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/touch-target": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-ubyD1TUjZnRPEdDnk6Lrcm2ZsjnU7CV5y7IX8pj9IPawiM6bx4FkjZBxUvclbv3WiTGk5UOnwPOySYAJYAMQ1w==", - "dependencies": { - "@material/base": "15.0.0-canary.a246a4439.0", - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/rtl": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-BJo/wFKHPYLGsRaIpd7vsQwKr02LtO2e89Psv0on/p0OephlNIgeB9dD9W+bQmaeZsZ6liKSKRl6wJWDiK71PA==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, "node_modules/@material/typography": { - "version": "15.0.0-canary.a246a4439.0", - "resolved": "https://registry.npmjs.org/@material/typography/-/typography-15.0.0-canary.a246a4439.0.tgz", - "integrity": "sha512-eXzBl9ROzWZ+41nan5pCrn1C/Zq3o/VsrLFaGv8fdRmhRR6/wHMeuvCCwGf5VtEmWdAE9FpJzRU/4ZPiJCJUyg==", + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/typography/-/typography-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-kBaZeCGD50iq1DeRRH5OM5Jl7Gdk+/NOfKArkY4ksBZvJiStJ7ACAhpvb8MEGm4s3jvDInQFLsDq3hL+SA79sQ==", "dependencies": { - "@material/feature-targeting": "15.0.0-canary.a246a4439.0", - "@material/theme": "15.0.0-canary.a246a4439.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", "tslib": "^2.1.0" } }, @@ -4660,31 +4610,19 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@npmcli/agent/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "node_modules/@npmcli/agent/node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", "dev": true, "dependencies": { + "agent-base": "^7.1.0", "debug": "^4.3.4" }, "engines": { "node": ">= 14" } }, - "node_modules/@npmcli/agent/node_modules/https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/@npmcli/agent/node_modules/lru-cache": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", @@ -4707,9 +4645,9 @@ } }, "node_modules/@npmcli/git": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.3.tgz", - "integrity": "sha512-UZp9NwK+AynTrKvHn5k3KviW/hA5eENmFsu3iAPe7sWRt0lFUdsY/wXIYjpDFe7cdSNwOIzbObfwgt6eL5/2zw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.4.tgz", + "integrity": "sha512-nr6/WezNzuYUppzXRaYu/W4aT5rLxdXqEFupbh6e/ovlYFQ8hpu1UUPV3Ir/YTl+74iXl2ZOMlGzudh9ZPUchQ==", "dev": true, "dependencies": { "@npmcli/promise-spawn": "^7.0.0", @@ -4784,9 +4722,9 @@ } }, "node_modules/@npmcli/promise-spawn": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.0.tgz", - "integrity": "sha512-wBqcGsMELZna0jDblGd7UXgOby45TQaMWmbFwWX+SEotk4HV6zG2t6rT9siyLhPk4P6YYqgfL1UO8nMWDBVJXQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.1.tgz", + "integrity": "sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg==", "dev": true, "dependencies": { "which": "^4.0.0" @@ -4820,9 +4758,9 @@ } }, "node_modules/@npmcli/run-script": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.2.tgz", - "integrity": "sha512-Omu0rpA8WXvcGeY6DDzyRoY1i5DkCBkzyJ+m2u7PD6quzb0TvSqdIPOkTn8ZBOj7LbbcbMfZ3c5skwSu6m8y2w==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.3.tgz", + "integrity": "sha512-ZMWGLHpzMq3rBGIwPyeaoaleaLMvrBrH8nugHxTi5ACkJZXTxXPtVuEH91ifgtss5hUwJQ2VDnzDBWPmz78rvg==", "dev": true, "dependencies": { "@npmcli/node-gyp": "^3.0.0", @@ -5065,9 +5003,9 @@ } }, "node_modules/@sigstore/bundle": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.1.0.tgz", - "integrity": "sha512-89uOo6yh/oxaU8AeOUnVrTdVMcGk9Q1hJa7Hkvalc6G3Z3CupWk4Xe9djSgJm9fMkH69s0P0cVHUoKSOemLdng==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.1.1.tgz", + "integrity": "sha512-v3/iS+1nufZdKQ5iAlQKcCsoh0jffQyABvYIxKsZQFWc4ubuGjwZklFHpDgV6O6T7vvV78SW5NHI91HFKEcxKg==", "dev": true, "dependencies": { "@sigstore/protobuf-specs": "^0.2.1" @@ -5076,6 +5014,15 @@ "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/@sigstore/core": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-0.2.0.tgz", + "integrity": "sha512-THobAPPZR9pDH2CAvDLpkrYedt7BlZnsyxDe+Isq4ZmGfPy5juOFZq487vCU2EgKD7aHSiTfE/i7sN7aEdzQnA==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, "node_modules/@sigstore/protobuf-specs": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", @@ -5086,12 +5033,13 @@ } }, "node_modules/@sigstore/sign": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.2.0.tgz", - "integrity": "sha512-AAbmnEHDQv6CSfrWA5wXslGtzLPtAtHZleKOgxdQYvx/s76Fk6T6ZVt7w2IGV9j1UrFeBocTTQxaXG2oRrDhYA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.2.1.tgz", + "integrity": "sha512-U5sKQEj+faE1MsnLou1f4DQQHeFZay+V9s9768lw48J4pKykPj34rWyI1lsMOGJ3Mae47Ye6q3HAJvgXO21rkQ==", "dev": true, "dependencies": { - "@sigstore/bundle": "^2.1.0", + "@sigstore/bundle": "^2.1.1", + "@sigstore/core": "^0.2.0", "@sigstore/protobuf-specs": "^0.2.1", "make-fetch-happen": "^13.0.0" }, @@ -5100,13 +5048,27 @@ } }, "node_modules/@sigstore/tuf": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.2.0.tgz", - "integrity": "sha512-KKATZ5orWfqd9ZG6MN8PtCIx4eevWSuGRKQvofnWXRpyMyUEpmrzg5M5BrCpjM+NfZ0RbNGOh5tCz/P2uoRqOA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.0.tgz", + "integrity": "sha512-S98jo9cpJwO1mtQ+2zY7bOdcYyfVYCUaofCG6wWRzk3pxKHVAkSfshkfecto2+LKsx7Ovtqbgb2LS8zTRhxJ9Q==", "dev": true, "dependencies": { "@sigstore/protobuf-specs": "^0.2.1", - "tuf-js": "^2.1.0" + "tuf-js": "^2.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/verify": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-0.1.0.tgz", + "integrity": "sha512-2UzMNYAa/uaz11NhvgRnIQf4gpLTJ59bhb8ESXaoSS5sxedfS+eLak8bsdMc+qpNQfITUTFoSKFx5h8umlRRiA==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^2.1.1", + "@sigstore/core": "^0.2.0", + "@sigstore/protobuf-specs": "^0.2.1" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -5119,9 +5081,9 @@ "dev": true }, "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "dependencies": { "type-detect": "4.0.8" @@ -5136,13 +5098,14 @@ "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, - "optional": true, - "peer": true + "engines": { + "node": ">= 10" + } }, "node_modules/@tufjs/canonical-json": { "version": "2.0.0", @@ -5204,9 +5167,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", - "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" @@ -5223,9 +5186,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", - "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", "dev": true, "dependencies": { "@babel/types": "^7.20.7" @@ -5269,29 +5232,10 @@ "@types/node": "*" } }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/@types/cors": { - "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/eslint": { - "version": "8.44.8", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.8.tgz", - "integrity": "sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==", + "version": "8.56.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.2.tgz", + "integrity": "sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==", "dev": true, "dependencies": { "@types/estree": "*", @@ -5420,27 +5364,27 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.19.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.3.tgz", - "integrity": "sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==", + "version": "20.11.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.5.tgz", + "integrity": "sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==", "dev": true, "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/node-forge": { - "version": "1.3.10", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.10.tgz", - "integrity": "sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw==", + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/qs": { - "version": "6.9.10", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", - "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==", + "version": "6.9.11", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", "dev": true }, "node_modules/@types/range-parser": { @@ -5758,9 +5702,9 @@ } }, "node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -5769,6 +5713,16 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "dev": true, + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, "node_modules/acorn-import-assertions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", @@ -5778,6 +5732,15 @@ "acorn": "^8" } }, + "node_modules/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/adjust-sourcemap-loader": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", @@ -5806,15 +5769,15 @@ } }, "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dev": true, "dependencies": { - "debug": "4" + "debug": "^4.3.4" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/aggregate-error": { @@ -5957,9 +5920,21 @@ "node": ">= 8" } }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", "dev": true, "funding": [ @@ -5987,9 +5962,9 @@ } }, "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, "node_modules/asn1": { @@ -6025,17 +6000,6 @@ "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "dev": true }, - "node_modules/async-each-series": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", - "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -6380,17 +6344,6 @@ } ] }, - "node_modules/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": "^4.5.0 || >= 5.9" - } - }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -6471,6 +6424,15 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/body-parser/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -6480,34 +6442,12 @@ "ms": "2.0.0" } }, - "node_modules/body-parser/node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/body-parser/node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/body-parser/node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -6523,29 +6463,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/body-parser/node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/bonjour-service": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", - "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dev": true, "dependencies": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" } @@ -6596,458 +6519,152 @@ "node": ">=8" } }, - "node_modules/browser-sync": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.2.tgz", - "integrity": "sha512-PC9c7aWJFVR4IFySrJxOqLwB9ENn3/TaXCXtAa0SzLwocLN3qMjN+IatbjvtCX92BjNXsY6YWg9Eb7F3Wy255g==", + "node_modules/browserslist": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", "dev": true, - "optional": true, - "peer": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "browser-sync-client": "^3.0.2", - "browser-sync-ui": "^3.0.2", - "bs-recipes": "1.3.4", - "chalk": "4.1.2", - "chokidar": "^3.5.1", - "connect": "3.6.6", - "connect-history-api-fallback": "^1", - "dev-ip": "^1.0.1", - "easy-extender": "^2.3.4", - "eazy-logger": "^4.0.1", - "etag": "^1.8.1", - "fresh": "^0.5.2", - "fs-extra": "3.0.1", - "http-proxy": "^1.18.1", - "immutable": "^3", - "micromatch": "^4.0.2", - "opn": "5.3.0", - "portscanner": "2.2.0", - "raw-body": "^2.3.2", - "resp-modifier": "6.0.2", - "rx": "4.1.0", - "send": "0.16.2", - "serve-index": "1.9.1", - "serve-static": "1.13.2", - "server-destroy": "1.0.1", - "socket.io": "^4.4.1", - "ua-parser-js": "^1.0.33", - "yargs": "^17.3.1" + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { - "browser-sync": "dist/bin.js" + "browserslist": "cli.js" }, "engines": { - "node": ">= 8.0.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/browser-sync-client": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.2.tgz", - "integrity": "sha512-tBWdfn9L0wd2Pjuz/NWHtNEKthVb1Y67vg8/qyGNtCqetNz5lkDkFnrsx5UhPNPYUO8vci50IWC/BhYaQskDiQ==", + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "etag": "1.8.1", - "fresh": "0.5.2", - "mitt": "^1.1.3" + "fast-json-stable-stringify": "2.x" }, "engines": { - "node": ">=8.0.0" + "node": ">= 6" } }, - "node_modules/browser-sync-ui": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.2.tgz", - "integrity": "sha512-V3FwWAI+abVbFLTyJjXJlCMBwjc3GXf/BPGfwO2fMFACWbIGW9/4SrBOFYEOOtqzCjQE0Di+U3VIb7eES4omNA==", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "async-each-series": "0.1.1", - "chalk": "4.1.2", - "connect-history-api-fallback": "^1", - "immutable": "^3", - "server-destroy": "1.0.1", - "socket.io-client": "^4.4.1", - "stream-throttle": "^0.1.3" + "node-int64": "^0.4.0" } }, - "node_modules/browser-sync-ui/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, - "optional": true, - "peer": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/browser-sync-ui/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "*" } }, - "node_modules/browser-sync-ui/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "semver": "^7.0.0" } }, - "node_modules/browser-sync-ui/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/browser-sync-ui/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true, - "optional": true, - "peer": true, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/browser-sync-ui/node_modules/immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "node_modules/cacache": { + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.2.tgz", + "integrity": "sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==", "dev": true, - "optional": true, - "peer": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/browser-sync-ui/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "balanced-match": "^1.0.0" } }, - "node_modules/browser-sync/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/browser-sync/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/browser-sync/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/browser-sync/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/browser-sync/node_modules/fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^3.0.0", - "universalify": "^0.1.0" - } - }, - "node_modules/browser-sync/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-sync/node_modules/immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/browser-sync/node_modules/jsonfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", - "dev": true, - "optional": true, - "peer": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/browser-sync/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-sync/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bs-recipes": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", - "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacache": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.1.tgz", - "integrity": "sha512-g4Uf2CFZPaxtJKre6qr4zqLDOOPU7bNVhWjlNhvzc51xaTOx2noMOLhfFkTAqwtrAZAKQUuDfyjitzilpA8WsQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^10.0.1", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/cacache/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "node_modules/cacache/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", @@ -7132,9 +6749,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001566", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001566.tgz", - "integrity": "sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==", + "version": "1.0.30001579", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001579.tgz", + "integrity": "sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==", "dev": true, "funding": [ { @@ -7348,13 +6965,63 @@ "node": ">=12" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.8" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cliui/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" } }, "node_modules/clone-deep": { @@ -7474,15 +7141,6 @@ "node": ">= 0.8.0" } }, - "node_modules/compression/node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -7510,53 +7168,15 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "node_modules/connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, - "optional": true, - "peer": true, "engines": { "node": ">=0.8" } }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -7585,12 +7205,10 @@ "dev": true }, "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dev": true, - "optional": true, - "peer": true, "engines": { "node": ">= 0.6" } @@ -7668,21 +7286,6 @@ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "dev": true }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/cosmiconfig": { "version": "8.3.6", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", @@ -7983,6 +7586,12 @@ "node": ">=4" } }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true + }, "node_modules/cssstyle": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", @@ -8164,6 +7773,20 @@ "node": ">=0.10" } }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/dayjs": { "version": "1.11.10", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", @@ -8326,12 +7949,14 @@ } }, "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, - "optional": true, - "peer": true + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } }, "node_modules/detect-newline": { "version": "3.1.0", @@ -8348,20 +7973,6 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, - "node_modules/dev-ip": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", - "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "dev-ip": "lib/dev-ip.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -8383,12 +7994,6 @@ "node": ">=8" } }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -8427,6 +8032,19 @@ } ] }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", @@ -8462,116 +8080,6 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, - "node_modules/easy-extender": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", - "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "lodash": "^4.17.10" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/eazy-logger": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.0.1.tgz", - "integrity": "sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "chalk": "4.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eazy-logger/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/eazy-logger/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eazy-logger/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eazy-logger/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/eazy-logger/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eazy-logger/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -8589,9 +8097,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.607", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.607.tgz", - "integrity": "sha512-YUlnPwE6eYxzwBnFmawA8LiLRfm70R2aJRIUv0n03uHt/cUzzYACOogmvk8M2+hVzt/kB80KJXx7d5f5JofPvQ==", + "version": "1.4.640", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.640.tgz", + "integrity": "sha512-z/6oZ/Muqk4BaE7P69bXhUhpJbUM9ZJeka43ZwxsDshKtePns4mhBlh8bU5+yrnOnz3fhG82XLzGUXazOmsWnA==", "dev": true }, "node_modules/emittery": { @@ -8662,66 +8170,17 @@ "once": "^1.4.0" } }, - "node_modules/engine.io": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", - "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, - "optional": true, - "peer": true, "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": "~5.2.1", - "ws": "~8.11.0" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">=10.2.0" - } - }, - "node_modules/engine.io-client": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.3.tgz", - "integrity": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.11.0", - "xmlhttprequest-ssl": "~2.0.0" - } - }, - "node_modules/engine.io-parser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", - "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" + "node": ">=10.13.0" } }, "node_modules/enquirer": { @@ -9100,21 +8559,6 @@ "node": ">= 0.10.0" } }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "node_modules/express/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -9124,52 +8568,12 @@ "ms": "2.0.0" } }, - "node_modules/express/node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/express/node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/express/node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/express/node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -9185,60 +8589,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/express/node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/express/node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/express/node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/express/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -9329,9 +8679,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -9395,19 +8745,17 @@ } }, "node_modules/finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.1", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "engines": { @@ -9419,8 +8767,6 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "ms": "2.0.0" } @@ -9429,9 +8775,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/find-cache-dir": { "version": "4.0.0", @@ -9472,9 +8816,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "dev": true, "funding": [ { @@ -9961,6 +9305,18 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/html-entities": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", @@ -10030,15 +9386,6 @@ "node": ">= 0.8" } }, - "node_modules/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/http-parser-js": { "version": "0.5.8", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", @@ -10060,28 +9407,29 @@ } }, "node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">= 14" + "node": ">= 6" } }, "node_modules/http-proxy-agent/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "dependencies": { - "debug": "^4.3.4" + "debug": "4" }, "engines": { - "node": ">= 14" + "node": ">= 6.0.0" } }, "node_modules/http-proxy-middleware": { @@ -10123,16 +9471,16 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", "dev": true, "dependencies": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/human-signals": { @@ -10377,21 +9725,6 @@ "node": ">=14.18.0" } }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/inquirer/node_modules/chalk": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", @@ -10404,24 +9737,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/inquirer/node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", @@ -10462,20 +9777,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/inquirer/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", @@ -10627,17 +9928,6 @@ "node": ">=0.12.0" } }, - "node_modules/is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "lodash.isfinite": "^3.3.2" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -11390,389 +10680,122 @@ "detect-newline": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-each/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-each/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-jsdom": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jest-environment-jsdom/node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/jest-environment-jsdom/node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "dev": true, - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, - "node_modules/jest-environment-jsdom/node_modules/acorn-walk": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", - "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true - }, - "node_modules/jest-environment-jsdom/node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-environment-jsdom/node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-environment-jsdom/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-environment-jsdom/node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/jest-environment-jsdom/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jest-environment-jsdom/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-environment-jsdom/node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jest-environment-jsdom/node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "dependencies": { - "punycode": "^2.1.1" + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "xml-name-validator": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=14" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-environment-jsdom/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-environment-jsdom/node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "iconv-lite": "0.6.3" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12" + "node": ">=7.0.0" } }, - "node_modules/jest-environment-jsdom/node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom/node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom/node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "node_modules/jest-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" + }, "engines": { - "node": ">=10.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "canvas": "^2.5.0" }, "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { + "canvas": { "optional": true } } }, - "node_modules/jest-environment-jsdom/node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/jest-environment-node": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", @@ -12610,6 +11633,18 @@ "node": ">=8" } }, + "node_modules/jest-util/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/jest-util/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -12883,6 +11918,90 @@ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true }, + "node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/jsdom/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -13144,14 +12263,6 @@ } } }, - "node_modules/limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -13185,6 +12296,56 @@ } } }, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/listr2/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/listr2/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -13227,14 +12388,6 @@ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, - "node_modules/lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -13401,20 +12554,6 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -13552,6 +12691,18 @@ "node": ">=8.6" } }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -13827,14 +12978,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/mitt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", - "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -13917,13 +13060,12 @@ "dev": true }, "node_modules/needle": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", - "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", "dev": true, "optional": true, "dependencies": { - "debug": "^3.2.6", "iconv-lite": "^0.6.3", "sax": "^1.2.4" }, @@ -13934,16 +13076,6 @@ "node": ">= 4.4.x" } }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "optional": true, - "dependencies": { - "ms": "^2.1.1" - } - }, "node_modules/needle/node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -14056,9 +13188,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz", - "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", "dev": true, "optional": true, "bin": { @@ -14246,9 +13378,9 @@ } }, "node_modules/npm-packlist": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.1.tgz", - "integrity": "sha512-MQpL27ZrsJQ2kiAuQPpZb5LtJwydNRnI15QWXsf3WHERu4rzjRj6Zju/My2fov7tLuu3Gle/uoIX/DDZ3u4O4Q==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", + "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", "dev": true, "dependencies": { "ignore-walk": "^6.0.4" @@ -14320,17 +13452,6 @@ "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", "dev": true }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", @@ -14347,12 +13468,10 @@ "dev": true }, "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "ee-first": "1.1.1" }, @@ -14410,31 +13529,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/opn/node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/ora": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", @@ -14847,12 +13941,12 @@ "dev": true }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", + "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", "dev": true, "engines": { - "node": ">=8.6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -14986,33 +14080,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/portscanner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", - "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" - }, - "engines": { - "node": ">=0.4", - "npm": ">=1.0.0" - } - }, - "node_modules/portscanner/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, "node_modules/postcss": { "version": "8.4.33", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", @@ -15076,9 +14143,9 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", - "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", + "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", "dev": true, "dependencies": { "icss-utils": "^5.0.0", @@ -15093,9 +14160,9 @@ } }, "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", + "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.4" @@ -15123,9 +14190,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -15142,9 +14209,9 @@ "dev": true }, "node_modules/prettier": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", - "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.4.tgz", + "integrity": "sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -15386,12 +14453,10 @@ } }, "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -15402,6 +14467,15 @@ "node": ">= 0.8" } }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", @@ -15526,10 +14600,22 @@ "node": ">=8.10.0" } }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", + "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", "dev": true }, "node_modules/regenerate": { @@ -15551,9 +14637,9 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "dev": true }, "node_modules/regenerator-transform": { @@ -15566,9 +14652,9 @@ } }, "node_modules/regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", + "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", "dev": true }, "node_modules/regexpu-core": { @@ -15728,40 +14814,6 @@ "node": ">=10" } }, - "node_modules/resp-modifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", - "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "debug": "^2.2.0", - "minimatch": "^3.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/resp-modifier/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/resp-modifier/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -15795,9 +14847,9 @@ } }, "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", + "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", "dev": true }, "node_modules/rimraf": { @@ -15879,14 +14931,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/rx": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", @@ -15987,6 +15031,18 @@ "dev": true, "optional": true }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, "node_modules/schema-utils": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", @@ -16059,26 +15115,24 @@ "dev": true }, "node_modules/send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "depd": "2.0.0", + "destroy": "1.2.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" @@ -16087,92 +15141,28 @@ "node_modules/send/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/send/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/send/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/send/node_modules/mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "mime": "cli.js" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/send/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/send/node_modules/statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.6" + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" } }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -16257,40 +15247,31 @@ } }, "node_modules/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" + "parseurl": "~1.3.3", + "send": "0.18.0" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/server-destroy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", + "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", "dev": true, "dependencies": { "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.2", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -16365,15 +15346,17 @@ "dev": true }, "node_modules/sigstore": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.1.0.tgz", - "integrity": "sha512-kPIj+ZLkyI3QaM0qX8V/nSsweYND3W448pwkDgS6CQ74MfhEkIR8ToK5Iyx46KJYRjseVcD3Rp9zAmUAj6ZjPw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.2.0.tgz", + "integrity": "sha512-fcU9clHwEss2/M/11FFM8Jwc4PjBgbhXoNskoK5guoK0qGQBSeUbQZRJ+B2fDFIvhyf0gqCaPrel9mszbhAxug==", "dev": true, "dependencies": { - "@sigstore/bundle": "^2.1.0", + "@sigstore/bundle": "^2.1.1", + "@sigstore/core": "^0.2.0", "@sigstore/protobuf-specs": "^0.2.1", - "@sigstore/sign": "^2.1.0", - "@sigstore/tuf": "^2.1.0" + "@sigstore/sign": "^2.2.1", + "@sigstore/tuf": "^2.3.0", + "@sigstore/verify": "^0.1.0" }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -16454,69 +15437,6 @@ "npm": ">= 3.0.0" } }, - "node_modules/socket.io": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", - "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "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" - }, - "engines": { - "node": ">=10.2.0" - } - }, - "node_modules/socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ws": "~8.11.0" - } - }, - "node_modules/socket.io-client": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.4.tgz", - "integrity": "sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.5.2", - "socket.io-parser": "~4.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", @@ -16556,18 +15476,6 @@ "node": ">= 14" } }, - "node_modules/socks-proxy-agent/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", @@ -16764,42 +15672,14 @@ } }, "node_modules/statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/stream-throttle": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", - "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "commander": "^2.2.0", - "limiter": "^1.0.5" - }, - "bin": { - "throttleproxy": "bin/throttleproxy.js" - }, "engines": { - "node": ">= 0.10.0" + "node": ">= 0.8" } }, - "node_modules/stream-throttle/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -17029,16 +15909,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -17268,6 +16148,18 @@ "node": ">= 4.0.0" } }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -17278,9 +16170,9 @@ } }, "node_modules/ts-jest": { - "version": "29.1.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", - "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", + "version": "29.1.2", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz", + "integrity": "sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -17296,7 +16188,7 @@ "ts-jest": "cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^16.10.0 || ^18.0.0 || >=20.0.0" }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", @@ -17326,9 +16218,9 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/tuf-js": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.1.0.tgz", - "integrity": "sha512-eD7YPPjVlMzdggrOeE8zwoegUaG/rt6Bt3jwoQPunRiNVzgcCE009UDFJKJjG+Gk9wFu6W/Vi+P5d/5QpdD9jA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.0.tgz", + "integrity": "sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg==", "dev": true, "dependencies": { "@tufjs/models": "2.0.0", @@ -17398,9 +16290,9 @@ "dev": true }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -17410,31 +16302,6 @@ "node": ">=14.17" } }, - "node_modules/ua-parser-js": { - "version": "1.0.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", - "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], - "optional": true, - "peer": true, - "engines": { - "node": "*" - } - }, "node_modules/undici": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/undici/-/undici-6.2.1.tgz", @@ -17737,6 +16604,18 @@ } } }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", @@ -17777,6 +16656,15 @@ "defaults": "^1.0.3" } }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/webpack": { "version": "5.89.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", @@ -17911,15 +16799,6 @@ } } }, - "node_modules/webpack-dev-server/node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", @@ -17943,27 +16822,6 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/webpack-merge": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", @@ -18080,6 +16938,52 @@ "node": ">=0.8.0" } }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -18102,9 +17006,9 @@ "dev": true }, "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "dependencies": { "ansi-styles": "^4.0.0", @@ -18112,10 +17016,7 @@ "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=8" } }, "node_modules/wrap-ansi-cjs": { @@ -18222,18 +17123,16 @@ } }, "node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "dev": true, - "optional": true, - "peer": true, "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -18244,23 +17143,21 @@ } } }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, - "node_modules/xmlhttprequest-ssl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", - "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", From 898554b997dd7ed63692f96ec66a2c4b537a7c4a Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 14:52:13 +0100 Subject: [PATCH 079/163] format --- frontend/cypress/tsconfig.json | 4 ++-- frontend/tsconfig.json | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/cypress/tsconfig.json b/frontend/cypress/tsconfig.json index d3c39e3dd1..60372c9693 100644 --- a/frontend/cypress/tsconfig.json +++ b/frontend/cypress/tsconfig.json @@ -3,6 +3,6 @@ "include": ["**/*.ts"], "compilerOptions": { "sourceMap": false, - "types": ["cypress", "node", "cypress-real-events"] - } + "types": ["cypress", "node", "cypress-real-events"], + }, } diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index c4e3ae25fd..2a3b5bd381 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -22,13 +22,13 @@ "resolveJsonModule": true, "esModuleInterop": true, "useDefineForClassFields": false, - "allowSyntheticDefaultImports": true + "allowSyntheticDefaultImports": true, }, "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false, "strictInjectionParameters": true, "strictInputAccessModifiers": true, - "strictTemplates": true + "strictTemplates": true, }, - "exclude": ["**/*.spec.ts"] + "exclude": ["**/*.spec.ts"], } From baf078d75d3e21eab60a487f95953c7b4d848c53 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 14:57:40 +0100 Subject: [PATCH 080/163] import MatIcon instead of declerate it inside the teamcomponent test --- frontend/src/app/team/team.component.spec.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/team/team.component.spec.ts b/frontend/src/app/team/team.component.spec.ts index 21f808a76a..6c3149b6f6 100644 --- a/frontend/src/app/team/team.component.spec.ts +++ b/frontend/src/app/team/team.component.spec.ts @@ -41,8 +41,9 @@ describe('TeamComponent', () => { TranslateTestingModule.withTranslations({ de: de, }), + MatIcon, ], - declarations: [TeamComponent, MatIcon, ObjectiveComponent, KeyresultComponent], + declarations: [TeamComponent, ObjectiveComponent, KeyresultComponent], providers: [ { provide: OrganisationService, From fd72c074a3769592b1c91068bf09703ae9fbdd0a Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 14:36:49 +0000 Subject: [PATCH 081/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 8eddc49ca0..8fd512b431 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.27-SNAPSHOT + 2.0.28-SNAPSHOT backend - 2.0.27-SNAPSHOT + 2.0.28-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index 45207566db..3f7cecb98e 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.27-SNAPSHOT + 2.0.28-SNAPSHOT org.springframework.boot From 17b934311e0976b2e0f59eb3338979c590613781 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Jan 2024 14:38:49 +0000 Subject: [PATCH 082/163] Update dependency org.flywaydb:flyway-core to v10.6.0 --- backend/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/pom.xml b/backend/pom.xml index 8fd512b431..672b3ce145 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -59,7 +59,7 @@ org.flywaydb flyway-core - 10.1.0 + 10.6.0 org.flywaydb From 239ffebbfd5a824ae65b7cc3713dda2845a5d292 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 15:42:02 +0100 Subject: [PATCH 083/163] update prettier --- frontend/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/package.json b/frontend/package.json index 34af053994..613428d5b3 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -54,7 +54,7 @@ "jest": "^29.7.0", "jest-preset-angular": "^14.0.0", "ngx-translate-testing": "^7.0.0", - "prettier": "^3.1.0", + "prettier": "^3.2.4", "typescript": "^5.2.2" }, "jest": { From 8c0529cc3a5d2da25451ab6da97b13d83568b911 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 15:42:16 +0100 Subject: [PATCH 084/163] format --- frontend/cypress/tsconfig.json | 4 ++-- frontend/tsconfig.json | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/cypress/tsconfig.json b/frontend/cypress/tsconfig.json index d3c39e3dd1..60372c9693 100644 --- a/frontend/cypress/tsconfig.json +++ b/frontend/cypress/tsconfig.json @@ -3,6 +3,6 @@ "include": ["**/*.ts"], "compilerOptions": { "sourceMap": false, - "types": ["cypress", "node", "cypress-real-events"] - } + "types": ["cypress", "node", "cypress-real-events"], + }, } diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index c4e3ae25fd..2a3b5bd381 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -22,13 +22,13 @@ "resolveJsonModule": true, "esModuleInterop": true, "useDefineForClassFields": false, - "allowSyntheticDefaultImports": true + "allowSyntheticDefaultImports": true, }, "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false, "strictInjectionParameters": true, "strictInputAccessModifiers": true, - "strictTemplates": true + "strictTemplates": true, }, - "exclude": ["**/*.spec.ts"] + "exclude": ["**/*.spec.ts"], } From 0c20ec4a3639eb81919d1824773db6a0d72e7ccd Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 15:43:26 +0100 Subject: [PATCH 085/163] update lockfile --- frontend/package-lock.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 1f69ce5e28..0e2323b49a 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -41,7 +41,7 @@ "jest": "^29.7.0", "jest-preset-angular": "^14.0.0", "ngx-translate-testing": "^7.0.0", - "prettier": "^3.1.0", + "prettier": "^3.2.4", "typescript": "^5.2.2" } }, @@ -15142,9 +15142,9 @@ "dev": true }, "node_modules/prettier": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", - "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.4.tgz", + "integrity": "sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" From feef97b880b12a559c43029652f5df2981679e24 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 14:44:23 +0000 Subject: [PATCH 086/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 672b3ce145..dfdcd2750a 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.28-SNAPSHOT + 2.0.29-SNAPSHOT backend - 2.0.28-SNAPSHOT + 2.0.29-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index 3f7cecb98e..b85e61b5fc 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.28-SNAPSHOT + 2.0.29-SNAPSHOT org.springframework.boot From 953380b655f4a923cce13e370aa5341d9c91c98b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Jan 2024 14:44:59 +0000 Subject: [PATCH 087/163] Update quay.io/keycloak/keycloak Docker tag to v23.0.4 --- docker/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 92d7b7119d..d34b5d2120 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -13,7 +13,7 @@ services: - 5432:5432 keycloak: - image: quay.io/keycloak/keycloak:23.0.1 + image: quay.io/keycloak/keycloak:23.0.4 environment: - KEYCLOAK_ADMIN=admin - KEYCLOAK_ADMIN_PASSWORD=keycloak From b31fa62762cb6bbec39b3e645510da861a82a529 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 14:45:41 +0000 Subject: [PATCH 088/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index dfdcd2750a..189b596471 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.29-SNAPSHOT + 2.0.30-SNAPSHOT backend - 2.0.29-SNAPSHOT + 2.0.30-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index b85e61b5fc..d8317b956e 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.29-SNAPSHOT + 2.0.30-SNAPSHOT org.springframework.boot From 15ef84a6ee931fef6d36deb7f732460fb2481fcb Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 14:47:14 +0000 Subject: [PATCH 089/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 189b596471..33268dfe35 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.30-SNAPSHOT + 2.0.31-SNAPSHOT backend - 2.0.30-SNAPSHOT + 2.0.31-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index d8317b956e..e3e3f06cda 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.30-SNAPSHOT + 2.0.31-SNAPSHOT org.springframework.boot From 8b0618dd4429c016c0c50465c8e8f67f08e4fe53 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Jan 2024 14:47:35 +0000 Subject: [PATCH 090/163] Update dependency angular-oauth2-oidc to v17 --- frontend/package-lock.json | 10 +++++----- frontend/package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 417328eafa..31aa5d32ee 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -21,7 +21,7 @@ "@angular/router": "^17.0.6", "@ngx-translate/core": "^15.0.0", "@ngx-translate/http-loader": "^8.0.0", - "angular-oauth2-oidc": "^15.0.1", + "angular-oauth2-oidc": "^17.0.0", "bootstrap": "^5.3.2", "moment": "^2.30.1", "ngx-toastr": "^18.0.0", @@ -5839,11 +5839,11 @@ } }, "node_modules/angular-oauth2-oidc": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/angular-oauth2-oidc/-/angular-oauth2-oidc-15.0.1.tgz", - "integrity": "sha512-5gpqO9QL+qFqMItYFHe8F6H5nOIEaowcNUc9iTDs3P1bfVYnoKoVAaijob53PuPTF4YwzdfwKWZi4Mq6P7GENQ==", + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/angular-oauth2-oidc/-/angular-oauth2-oidc-17.0.1.tgz", + "integrity": "sha512-Yl4It9zFsYmoNS73sUvNJstbMW1x73ejKonzXLgU4XnSuBCt/0x8PnY5R3mHX4ZC/WmXBqQ/RfFwClrYW9Ywcg==", "dependencies": { - "tslib": "^2.0.0" + "tslib": "^2.5.2" }, "peerDependencies": { "@angular/common": ">=14.0.0", diff --git a/frontend/package.json b/frontend/package.json index acb98aaff3..e73e23f669 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -34,7 +34,7 @@ "@angular/router": "^17.0.6", "@ngx-translate/core": "^15.0.0", "@ngx-translate/http-loader": "^8.0.0", - "angular-oauth2-oidc": "^15.0.1", + "angular-oauth2-oidc": "^17.0.0", "bootstrap": "^5.3.2", "moment": "^2.30.1", "ngx-toastr": "^18.0.0", From f6f46b56b18e6d8643dcd3f1d23c26d00077b23e Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 14:51:18 +0000 Subject: [PATCH 091/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 33268dfe35..8e898a70cd 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.31-SNAPSHOT + 2.0.32-SNAPSHOT backend - 2.0.31-SNAPSHOT + 2.0.32-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index e3e3f06cda..abf4098bb0 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.31-SNAPSHOT + 2.0.32-SNAPSHOT org.springframework.boot From db4f838902b2c5e71f76330896e8bd5e6cb6ddc2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 22 Jan 2024 14:51:33 +0000 Subject: [PATCH 092/163] Update dependency org.assertj:assertj-core to v3.25.1 --- backend/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/pom.xml b/backend/pom.xml index 8e898a70cd..e8530b59c5 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -84,7 +84,7 @@ org.assertj assertj-core - 3.24.2 + 3.25.1 test From 0880f3b485aad8c651995ba90643edb5b773e234 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 14:55:40 +0000 Subject: [PATCH 093/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index e8530b59c5..646ad2b01f 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.32-SNAPSHOT + 2.0.33-SNAPSHOT backend - 2.0.32-SNAPSHOT + 2.0.33-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index abf4098bb0..3ca309dc7a 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.32-SNAPSHOT + 2.0.33-SNAPSHOT org.springframework.boot From 053dbb3bc20c68187f345603a342116c0661815e Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 15:53:04 +0100 Subject: [PATCH 094/163] update maven plugins --- backend/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 646ad2b01f..03badc75d1 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -208,7 +208,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.2.2 + 3.2.5 @@ -224,7 +224,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.2.2 + 3.2.5 From 6a6573dcc7b6fbf4baca42a71f7e01cc1878849e Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 14:58:15 +0000 Subject: [PATCH 095/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 03badc75d1..f90b0b95cd 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.33-SNAPSHOT + 2.0.34-SNAPSHOT backend - 2.0.33-SNAPSHOT + 2.0.34-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index 3ca309dc7a..0223bf04e0 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.33-SNAPSHOT + 2.0.34-SNAPSHOT org.springframework.boot From 40f2205177f116984063c21bdbdce5b006ac4406 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 17:07:22 +0100 Subject: [PATCH 096/163] override angualr var --- frontend/src/style/_variables.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/frontend/src/style/_variables.scss b/frontend/src/style/_variables.scss index 49ce977a5f..3abebd5ae8 100644 --- a/frontend/src/style/_variables.scss +++ b/frontend/src/style/_variables.scss @@ -42,3 +42,7 @@ $pz-dark-blue-palette: ( 900: white, ), ); + +:root { + --mdc-text-button-label-text-tracking: normal; +} From b6627448ea9b385d2c604087fcc714ab5a868937 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 17:12:25 +0100 Subject: [PATCH 097/163] restore letterspacing --- frontend/src/style/_variables.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/src/style/_variables.scss b/frontend/src/style/_variables.scss index 3abebd5ae8..6cb19bf774 100644 --- a/frontend/src/style/_variables.scss +++ b/frontend/src/style/_variables.scss @@ -45,4 +45,6 @@ $pz-dark-blue-palette: ( :root { --mdc-text-button-label-text-tracking: normal; + --mdc-filled-button-label-text-tracking: normal; + --mdc-outlined-button-label-text-tracking: normal; } From 42f87294688abec9194c79c8c598db72162fc126 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 22 Jan 2024 16:23:32 +0000 Subject: [PATCH 098/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index f90b0b95cd..441ce7317e 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.34-SNAPSHOT + 2.0.35-SNAPSHOT backend - 2.0.34-SNAPSHOT + 2.0.35-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index 0223bf04e0..ef164d2f16 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.34-SNAPSHOT + 2.0.35-SNAPSHOT org.springframework.boot From 266255ac8a40652ca2897198c8b47e81a9b54b4b Mon Sep 17 00:00:00 2001 From: Manuel Date: Mon, 22 Jan 2024 10:54:00 +0100 Subject: [PATCH 099/163] Change svg and try to fix spacing --- frontend/src/assets/icons/new-icon.svg | 13 ++++++++++--- frontend/src/style/styles.scss | 3 ++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/frontend/src/assets/icons/new-icon.svg b/frontend/src/assets/icons/new-icon.svg index a3cccfd175..f781743378 100644 --- a/frontend/src/assets/icons/new-icon.svg +++ b/frontend/src/assets/icons/new-icon.svg @@ -1,4 +1,11 @@ - - - + + + + + + + + + + diff --git a/frontend/src/style/styles.scss b/frontend/src/style/styles.scss index 388e1da5a0..f34ba22d3d 100644 --- a/frontend/src/style/styles.scss +++ b/frontend/src/style/styles.scss @@ -267,7 +267,8 @@ mat-form-field.quarter-filter .mat-mdc-text-field-wrapper { } .add-cross-button { - margin-bottom: 1px; + width: 1rem !important; + margin: 0 4px 1px 9px !important; } .add-text { From ee36a624b96282b34e1145550e75397bfd812e05 Mon Sep 17 00:00:00 2001 From: Manuel Date: Mon, 22 Jan 2024 13:29:56 +0100 Subject: [PATCH 100/163] Find first solution not approved from UX or PO yet --- frontend/src/assets/icons/new-icon.svg | 11 ++--------- frontend/src/style/styles.scss | 3 ++- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/frontend/src/assets/icons/new-icon.svg b/frontend/src/assets/icons/new-icon.svg index f781743378..f2b141beea 100644 --- a/frontend/src/assets/icons/new-icon.svg +++ b/frontend/src/assets/icons/new-icon.svg @@ -1,11 +1,4 @@ - - - - - - - - - + + diff --git a/frontend/src/style/styles.scss b/frontend/src/style/styles.scss index f34ba22d3d..933e3566cc 100644 --- a/frontend/src/style/styles.scss +++ b/frontend/src/style/styles.scss @@ -267,12 +267,13 @@ mat-form-field.quarter-filter .mat-mdc-text-field-wrapper { } .add-cross-button { - width: 1rem !important; + width: 0.88rem !important; margin: 0 4px 1px 9px !important; } .add-text { margin-top: 1px; + height: 2rem; } .align-new-icon { From 91eda2a8b72c505816bb838fa898b944fa0c09c6 Mon Sep 17 00:00:00 2001 From: Manuel Date: Mon, 22 Jan 2024 14:10:04 +0100 Subject: [PATCH 101/163] Fix placment of plus in actionplan --- frontend/src/app/action-plan/action-plan.component.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/action-plan/action-plan.component.scss b/frontend/src/app/action-plan/action-plan.component.scss index b29c10bca7..ce0966283e 100644 --- a/frontend/src/app/action-plan/action-plan.component.scss +++ b/frontend/src/app/action-plan/action-plan.component.scss @@ -57,5 +57,5 @@ } #add-action { - margin-left: -0.8rem !important; + margin-left: -0.3rem !important; } From 39e6e68fbb6fcda0efa5a70928d0c6e3bb7fdf39 Mon Sep 17 00:00:00 2001 From: Manuel Date: Tue, 23 Jan 2024 10:36:55 +0100 Subject: [PATCH 102/163] Implement smaller version of plussign after talking to UX again --- frontend/src/style/styles.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/style/styles.scss b/frontend/src/style/styles.scss index 933e3566cc..030f5acfb9 100644 --- a/frontend/src/style/styles.scss +++ b/frontend/src/style/styles.scss @@ -267,8 +267,8 @@ mat-form-field.quarter-filter .mat-mdc-text-field-wrapper { } .add-cross-button { - width: 0.88rem !important; - margin: 0 4px 1px 9px !important; + width: 0.65rem !important; + margin: 0 6px 1px 9px !important; } .add-text { From 2d6e92f847ef72561643306d4b766f5ef6372de1 Mon Sep 17 00:00:00 2001 From: Manuel Date: Tue, 23 Jan 2024 11:51:26 +0100 Subject: [PATCH 103/163] Make shadow of button a bit smaller --- frontend/src/app/objective/objective.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/objective/objective.component.html b/frontend/src/app/objective/objective.component.html index 72bb5dee60..63cca208cf 100644 --- a/frontend/src/app/objective/objective.component.html +++ b/frontend/src/app/objective/objective.component.html @@ -49,7 +49,7 @@

{{ objective.title }}

*ngIf="!isComplete && isWritable" mat-button color="primary" - class="fw-bold" + class="fw-bold px-0 pe-2 ms-2" [attr.data-testId]="'add-keyResult'" (click)="openAddKeyResultDialog(); $event.stopPropagation()" (keydown.enter)="$event.stopPropagation()" From 520ada8d15e6f54b22380d33a571e1750c1da308 Mon Sep 17 00:00:00 2001 From: Manuel Date: Tue, 23 Jan 2024 11:52:00 +0100 Subject: [PATCH 104/163] Format code --- frontend/cypress/tsconfig.json | 4 ++-- frontend/tsconfig.json | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/cypress/tsconfig.json b/frontend/cypress/tsconfig.json index 60372c9693..d3c39e3dd1 100644 --- a/frontend/cypress/tsconfig.json +++ b/frontend/cypress/tsconfig.json @@ -3,6 +3,6 @@ "include": ["**/*.ts"], "compilerOptions": { "sourceMap": false, - "types": ["cypress", "node", "cypress-real-events"], - }, + "types": ["cypress", "node", "cypress-real-events"] + } } diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index 2a3b5bd381..c4e3ae25fd 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -22,13 +22,13 @@ "resolveJsonModule": true, "esModuleInterop": true, "useDefineForClassFields": false, - "allowSyntheticDefaultImports": true, + "allowSyntheticDefaultImports": true }, "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false, "strictInjectionParameters": true, "strictInputAccessModifiers": true, - "strictTemplates": true, + "strictTemplates": true }, - "exclude": ["**/*.spec.ts"], + "exclude": ["**/*.spec.ts"] } From ec6e48413104809bf8530d14c0ef7d67ca291c14 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Tue, 23 Jan 2024 10:52:46 +0000 Subject: [PATCH 105/163] [FM] Automated formating frontend --- frontend/cypress/tsconfig.json | 4 ++-- frontend/tsconfig.json | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/cypress/tsconfig.json b/frontend/cypress/tsconfig.json index d3c39e3dd1..60372c9693 100644 --- a/frontend/cypress/tsconfig.json +++ b/frontend/cypress/tsconfig.json @@ -3,6 +3,6 @@ "include": ["**/*.ts"], "compilerOptions": { "sourceMap": false, - "types": ["cypress", "node", "cypress-real-events"] - } + "types": ["cypress", "node", "cypress-real-events"], + }, } diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index c4e3ae25fd..2a3b5bd381 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -22,13 +22,13 @@ "resolveJsonModule": true, "esModuleInterop": true, "useDefineForClassFields": false, - "allowSyntheticDefaultImports": true + "allowSyntheticDefaultImports": true, }, "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false, "strictInjectionParameters": true, "strictInputAccessModifiers": true, - "strictTemplates": true + "strictTemplates": true, }, - "exclude": ["**/*.spec.ts"] + "exclude": ["**/*.spec.ts"], } From 31e4c261c6babd2bd3be4915ecbe12fb104a9028 Mon Sep 17 00:00:00 2001 From: Manuel Date: Wed, 24 Jan 2024 09:26:42 +0100 Subject: [PATCH 106/163] Remove unnecessary important tags to resolve conversation --- frontend/src/style/styles.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/style/styles.scss b/frontend/src/style/styles.scss index 030f5acfb9..5f7e9e093f 100644 --- a/frontend/src/style/styles.scss +++ b/frontend/src/style/styles.scss @@ -267,8 +267,8 @@ mat-form-field.quarter-filter .mat-mdc-text-field-wrapper { } .add-cross-button { - width: 0.65rem !important; - margin: 0 6px 1px 9px !important; + width: 0.65rem; + margin: 0 6px 1px 9px; } .add-text { From 012fece860d311c2e2a11fadd3e75524224878af Mon Sep 17 00:00:00 2001 From: Manuel Date: Wed, 24 Jan 2024 09:39:33 +0100 Subject: [PATCH 107/163] Fix button size after re-reading conversation --- frontend/src/style/styles.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/style/styles.scss b/frontend/src/style/styles.scss index 5f7e9e093f..2d6e4db109 100644 --- a/frontend/src/style/styles.scss +++ b/frontend/src/style/styles.scss @@ -266,7 +266,7 @@ mat-form-field.quarter-filter .mat-mdc-text-field-wrapper { line-height: 115% !important; } -.add-cross-button { +img.add-cross-button { width: 0.65rem; margin: 0 6px 1px 9px; } From a2aa39703522e3db5fc42af1b6d0a0f8bbcaf555 Mon Sep 17 00:00:00 2001 From: Manuel Date: Wed, 24 Jan 2024 09:40:15 +0100 Subject: [PATCH 108/163] Format code --- frontend/cypress/tsconfig.json | 4 ++-- frontend/tsconfig.json | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/cypress/tsconfig.json b/frontend/cypress/tsconfig.json index 60372c9693..d3c39e3dd1 100644 --- a/frontend/cypress/tsconfig.json +++ b/frontend/cypress/tsconfig.json @@ -3,6 +3,6 @@ "include": ["**/*.ts"], "compilerOptions": { "sourceMap": false, - "types": ["cypress", "node", "cypress-real-events"], - }, + "types": ["cypress", "node", "cypress-real-events"] + } } diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index 2a3b5bd381..c4e3ae25fd 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -22,13 +22,13 @@ "resolveJsonModule": true, "esModuleInterop": true, "useDefineForClassFields": false, - "allowSyntheticDefaultImports": true, + "allowSyntheticDefaultImports": true }, "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false, "strictInjectionParameters": true, "strictInputAccessModifiers": true, - "strictTemplates": true, + "strictTemplates": true }, - "exclude": ["**/*.spec.ts"], + "exclude": ["**/*.spec.ts"] } From 17b5c4d3ef48b694a7c05b548719543e6681c2c1 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 24 Jan 2024 08:41:03 +0000 Subject: [PATCH 109/163] [FM] Automated formating frontend --- frontend/cypress/tsconfig.json | 4 ++-- frontend/tsconfig.json | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/cypress/tsconfig.json b/frontend/cypress/tsconfig.json index d3c39e3dd1..60372c9693 100644 --- a/frontend/cypress/tsconfig.json +++ b/frontend/cypress/tsconfig.json @@ -3,6 +3,6 @@ "include": ["**/*.ts"], "compilerOptions": { "sourceMap": false, - "types": ["cypress", "node", "cypress-real-events"] - } + "types": ["cypress", "node", "cypress-real-events"], + }, } diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index c4e3ae25fd..2a3b5bd381 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -22,13 +22,13 @@ "resolveJsonModule": true, "esModuleInterop": true, "useDefineForClassFields": false, - "allowSyntheticDefaultImports": true + "allowSyntheticDefaultImports": true, }, "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false, "strictInjectionParameters": true, "strictInputAccessModifiers": true, - "strictTemplates": true + "strictTemplates": true, }, - "exclude": ["**/*.spec.ts"] + "exclude": ["**/*.spec.ts"], } From b021ae430352e03d72219de57f77bed08406a8d2 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 24 Jan 2024 11:08:03 +0000 Subject: [PATCH 110/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 441ce7317e..6faa14bc2a 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.35-SNAPSHOT + 2.0.36-SNAPSHOT backend - 2.0.35-SNAPSHOT + 2.0.36-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index ef164d2f16..24e467561b 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.35-SNAPSHOT + 2.0.36-SNAPSHOT org.springframework.boot From 688eb76132c8d3f5e78a8b1169aef2d408c1970f Mon Sep 17 00:00:00 2001 From: Jannik Pulfer Date: Tue, 16 Jan 2024 16:16:19 +0100 Subject: [PATCH 111/163] remove notnull constraint from dates on quarter model in backend write new db migration file to remove not null constraints from db --- backend/src/main/java/ch/puzzle/okr/models/Quarter.java | 4 ---- .../V2_1_2_removeNotNullConstraintFromQuarterDates.sql | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) create mode 100644 backend/src/main/resources/db/migration/V2_1_2_removeNotNullConstraintFromQuarterDates.sql diff --git a/backend/src/main/java/ch/puzzle/okr/models/Quarter.java b/backend/src/main/java/ch/puzzle/okr/models/Quarter.java index 0dbff2e007..537e0aa955 100644 --- a/backend/src/main/java/ch/puzzle/okr/models/Quarter.java +++ b/backend/src/main/java/ch/puzzle/okr/models/Quarter.java @@ -1,9 +1,7 @@ package ch.puzzle.okr.models; import jakarta.persistence.*; -import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; -import jakarta.validation.constraints.Size; import java.time.LocalDate; import java.util.Objects; @@ -19,10 +17,8 @@ public class Quarter { @Column(unique = true) private String label; - @NotNull(message = MessageKey.ATTRIBUTE_NOT_NULL) private LocalDate startDate; - @NotNull(message = MessageKey.ATTRIBUTE_NOT_NULL) private LocalDate endDate; public Quarter() { diff --git a/backend/src/main/resources/db/migration/V2_1_2_removeNotNullConstraintFromQuarterDates.sql b/backend/src/main/resources/db/migration/V2_1_2_removeNotNullConstraintFromQuarterDates.sql new file mode 100644 index 0000000000..a4a1d48422 --- /dev/null +++ b/backend/src/main/resources/db/migration/V2_1_2_removeNotNullConstraintFromQuarterDates.sql @@ -0,0 +1,3 @@ +ALTER TABLE quarter + ALTER column start_date DROP NOT NULL, + ALTER column end_date DROP NOT NULL; \ No newline at end of file From 5c3190b9e28cd17d3933a9db767fa49439b13b08 Mon Sep 17 00:00:00 2001 From: Lias Kleisa Date: Wed, 17 Jan 2024 14:30:17 +0100 Subject: [PATCH 112/163] Fix new migration and add insert of backlog quarter --- .../V2_0_11__removeNotNullConstraintFromQuarterDates.sql | 6 ++++++ ...11__updateSequences.sql => V2_0_12__updateSequences.sql} | 0 .../V2_1_2_removeNotNullConstraintFromQuarterDates.sql | 3 --- 3 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 backend/src/main/resources/db/migration/V2_0_11__removeNotNullConstraintFromQuarterDates.sql rename backend/src/main/resources/db/migration/{V2_0_11__updateSequences.sql => V2_0_12__updateSequences.sql} (100%) delete mode 100644 backend/src/main/resources/db/migration/V2_1_2_removeNotNullConstraintFromQuarterDates.sql diff --git a/backend/src/main/resources/db/migration/V2_0_11__removeNotNullConstraintFromQuarterDates.sql b/backend/src/main/resources/db/migration/V2_0_11__removeNotNullConstraintFromQuarterDates.sql new file mode 100644 index 0000000000..c6f818ba3f --- /dev/null +++ b/backend/src/main/resources/db/migration/V2_0_11__removeNotNullConstraintFromQuarterDates.sql @@ -0,0 +1,6 @@ +alter table quarter + alter column start_date drop not null, + alter column end_date drop not null; + +INSERT INTO quarter (id, label, start_date, end_date) +VALUES (999, 'Backlog', null, null); \ No newline at end of file diff --git a/backend/src/main/resources/db/migration/V2_0_11__updateSequences.sql b/backend/src/main/resources/db/migration/V2_0_12__updateSequences.sql similarity index 100% rename from backend/src/main/resources/db/migration/V2_0_11__updateSequences.sql rename to backend/src/main/resources/db/migration/V2_0_12__updateSequences.sql diff --git a/backend/src/main/resources/db/migration/V2_1_2_removeNotNullConstraintFromQuarterDates.sql b/backend/src/main/resources/db/migration/V2_1_2_removeNotNullConstraintFromQuarterDates.sql deleted file mode 100644 index a4a1d48422..0000000000 --- a/backend/src/main/resources/db/migration/V2_1_2_removeNotNullConstraintFromQuarterDates.sql +++ /dev/null @@ -1,3 +0,0 @@ -ALTER TABLE quarter - ALTER column start_date DROP NOT NULL, - ALTER column end_date DROP NOT NULL; \ No newline at end of file From 7cbfd41b7f712e06481cd9265ec9d7580e73396b Mon Sep 17 00:00:00 2001 From: Lias Kleisa Date: Wed, 17 Jan 2024 15:15:26 +0100 Subject: [PATCH 113/163] Pass backlog to frontend --- .../java/ch/puzzle/okr/repository/QuarterRepository.java | 3 ++- .../puzzle/okr/service/business/QuarterBusinessService.java | 5 ++++- .../okr/service/persistence/QuarterPersistenceService.java | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/ch/puzzle/okr/repository/QuarterRepository.java b/backend/src/main/java/ch/puzzle/okr/repository/QuarterRepository.java index 77dacbe7e3..5cef0f60dc 100644 --- a/backend/src/main/java/ch/puzzle/okr/repository/QuarterRepository.java +++ b/backend/src/main/java/ch/puzzle/okr/repository/QuarterRepository.java @@ -12,7 +12,8 @@ @Repository public interface QuarterRepository extends CrudRepository { - List getTop6ByOrderByStartDateDesc(); + @Query("SELECT q FROM Quarter q WHERE q.startDate IS NOT NULL ORDER BY q.startDate DESC LIMIT 6") + List findTop6ByOrderByStartDateDescWithoutNullStartDate(); @Query(value = "Select q from Quarter q where q.startDate <= :date and q.endDate >= :date") Quarter getActiveQuarter(@Param("date") LocalDate date); diff --git a/backend/src/main/java/ch/puzzle/okr/service/business/QuarterBusinessService.java b/backend/src/main/java/ch/puzzle/okr/service/business/QuarterBusinessService.java index b65b6b36b8..adc119554e 100644 --- a/backend/src/main/java/ch/puzzle/okr/service/business/QuarterBusinessService.java +++ b/backend/src/main/java/ch/puzzle/okr/service/business/QuarterBusinessService.java @@ -31,7 +31,10 @@ public Quarter getQuarterById(Long quarterId) { } public List getQuarters() { - return quarterPersistenceService.getMostCurrentQuarters(); + List mostCurrentQuarterList = quarterPersistenceService.getMostCurrentQuarters(); + Quarter backlog = quarterPersistenceService.findById(999L); + mostCurrentQuarterList.add(backlog); + return mostCurrentQuarterList; } public Quarter getCurrentQuarter() { diff --git a/backend/src/main/java/ch/puzzle/okr/service/persistence/QuarterPersistenceService.java b/backend/src/main/java/ch/puzzle/okr/service/persistence/QuarterPersistenceService.java index bd142bd71a..c8c53e22dc 100644 --- a/backend/src/main/java/ch/puzzle/okr/service/persistence/QuarterPersistenceService.java +++ b/backend/src/main/java/ch/puzzle/okr/service/persistence/QuarterPersistenceService.java @@ -22,7 +22,7 @@ public String getModelName() { } public List getMostCurrentQuarters() { - return getRepository().getTop6ByOrderByStartDateDesc(); + return getRepository().findTop6ByOrderByStartDateDescWithoutNullStartDate(); } public Quarter getCurrentQuarter() { From 7b546268484f592d30f60759d0dadc7bce8d1207 Mon Sep 17 00:00:00 2001 From: Lias Kleisa Date: Wed, 17 Jan 2024 15:15:47 +0100 Subject: [PATCH 114/163] Disable button in frontend when adding no draft objective to backlog --- .../dialog/objective-dialog/objective-form.component.html | 2 +- .../dialog/objective-dialog/objective-form.component.ts | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.html b/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.html index dbb5758d2b..f9906e18fd 100644 --- a/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.html +++ b/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.html @@ -75,7 +75,7 @@
- +
+
+ +
diff --git a/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.ts b/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.ts index 9b52f43e14..7a0f53f5c2 100644 --- a/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.ts +++ b/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.ts @@ -13,7 +13,7 @@ import { Objective } from '../../types/model/Objective'; import { ConfirmDialogComponent } from '../confirm-dialog/confirm-dialog.component'; import { formInputCheck, getQuarterLabel, getValueFromQuery, hasFormFieldErrors, isMobileDevice } from '../../common'; import { ActivatedRoute } from '@angular/router'; -import { CONFIRM_DIALOG_WIDTH } from '../../constantLibary'; +import { CONFIRM_DIALOG_WIDTH, GJ_REGEX_PATTERN } from '../../constantLibary'; import { TranslateService } from '@ngx-translate/core'; @Component({ @@ -190,7 +190,7 @@ export class ObjectiveFormComponent implements OnInit { let currentQuarter: Quarter | undefined = this.quarters.find( (quarter) => quarter.id == this.objectiveForm.value.quarter, ); - let isBacklogCurrent: boolean = currentQuarter?.startDate == null && currentQuarter?.endDate == null; + let isBacklogCurrent: boolean = !GJ_REGEX_PATTERN.test(currentQuarter!.label); if (this.data.action == 'duplicate') return true; if (this.data.objective.objectiveId) { return isBacklogCurrent ? this.state == 'DRAFT' : true; From 99b6425e3841f01d4d4c00b7c12a666aaf3ffeb4 Mon Sep 17 00:00:00 2001 From: Lias Kleisa Date: Mon, 22 Jan 2024 17:13:40 +0100 Subject: [PATCH 145/163] Fix bugs with new option to publish from backlog --- .../okr/controller/ObjectiveControllerIT.java | 2 +- frontend/cypress/e2e/objective-backlog.cy.ts | 14 +++++-- .../objective-form.component.html | 17 +++++--- .../objective-form.component.ts | 40 +++++++++++++++---- frontend/src/app/shared/testData.ts | 6 +-- 5 files changed, 58 insertions(+), 21 deletions(-) diff --git a/backend/src/test/java/ch/puzzle/okr/controller/ObjectiveControllerIT.java b/backend/src/test/java/ch/puzzle/okr/controller/ObjectiveControllerIT.java index 70e9274bb0..f4fbc5d68a 100644 --- a/backend/src/test/java/ch/puzzle/okr/controller/ObjectiveControllerIT.java +++ b/backend/src/test/java/ch/puzzle/okr/controller/ObjectiveControllerIT.java @@ -65,7 +65,7 @@ class ObjectiveControllerIT { } """; private static final String RESPONSE_NEW_OBJECTIVE = """ - {"id":null,"version":1,"title":"Program Faster","teamId":1,"quarterId":1,"quarterStartDate":"2023-04-01","quarterEndDate":"2023-06-30","description":"Just be faster","state":"DRAFT","createdOn":null,"modifiedOn":null,"writeable":true}"""; + {"id":null,"version":1,"title":"Program Faster","teamId":1,"quarterId":1,"quarterLabel":"GJ 22/23-Q2","description":"Just be faster","state":"DRAFT","createdOn":null,"modifiedOn":null,"writeable":true}"""; private static final String JSON_PATH_TITLE = "$.title"; private static final Objective objective1 = Objective.Builder.builder().withId(5L).withTitle(OBJECTIVE_TITLE_1) .build(); diff --git a/frontend/cypress/e2e/objective-backlog.cy.ts b/frontend/cypress/e2e/objective-backlog.cy.ts index d98b8316b7..a623dc0b6c 100644 --- a/frontend/cypress/e2e/objective-backlog.cy.ts +++ b/frontend/cypress/e2e/objective-backlog.cy.ts @@ -6,7 +6,7 @@ describe('OKR Objective Backlog e2e tests', () => { cy.visit('/?quarter=2'); }); - it.only(`Create Objective in backlog quarter`, () => { + it(`Create Objective in backlog quarter`, () => { cy.getByTestId('add-objective').first().click(); cy.fillOutObjective('Objective in quarter backlog', 'safe-draft', 'Backlog', '', false); @@ -59,11 +59,11 @@ describe('OKR Objective Backlog e2e tests', () => { cy.getByTestId('safe').should('be.disabled'); }); - it(`Can not make Objective public in backlog`, () => { + it(`Can publish Objective to another quarter from backlog`, () => { cy.visit('/?quarter=199'); cy.getByTestId('add-objective').first().click(); cy.getByTestId('title').first().clear().type('We can not public this'); - cy.getByTestId('safe').should('be.disabled'); + cy.getByTestId('safe').should('not.exist'); cy.getByTestId('safe-draft').click(); cy.getByTestId('objective') @@ -75,7 +75,13 @@ describe('OKR Objective Backlog e2e tests', () => { cy.wait(500); cy.contains('Objective bearbeiten'); cy.contains('Objective duplizieren'); - cy.contains('Objective veröffentlichen').should('not.exist'); + cy.contains('Objective veröffentlichen'); + + cy.get('.objective-menu-option').contains('Objective veröffentlichen').click(); + + cy.contains('Objective veröffentlichen und in Quartal verschieben'); + + cy.get('select#quarter').find(':selected').contains('hello'); }); it(`Can edit Objective title in backlog`, () => { diff --git a/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.html b/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.html index b13fd0d187..1de582ffa0 100644 --- a/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.html +++ b/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.html @@ -5,7 +5,7 @@ >
- +
- + + +
{ this.quarters = quarters; const teamId = isCreating ? objective.teamId : this.data.objective.teamId; - const quarterId = getValueFromQuery(this.route.snapshot.queryParams['quarter'], quarters[1].id)[0]; + let quarterId = getValueFromQuery(this.route.snapshot.queryParams['quarter'], quarters[1].id)[0]; + + let currentQuarter: Quarter | undefined = this.quarters.find((quarter) => quarter.id == quarterId); + if (currentQuarter && !GJ_REGEX_PATTERN.test(currentQuarter.label) && this.data.action == 'releaseBacklog') { + quarterId = quarters[1].id; + } + this.state = objective.state; this.version = objective.version; this.teams$.subscribe((value) => { @@ -186,16 +192,36 @@ export class ObjectiveFormComponent implements OnInit { } as Objective; } - allowedToSaveBacklog(): boolean { + allowedToSaveBacklog() { let currentQuarter: Quarter | undefined = this.quarters.find( (quarter) => quarter.id == this.objectiveForm.value.quarter, ); - let isBacklogCurrent: boolean = !GJ_REGEX_PATTERN.test(currentQuarter!.label); - if (this.data.action == 'duplicate') return true; - if (this.data.objective.objectiveId) { - return isBacklogCurrent ? this.state == 'DRAFT' : true; + if (currentQuarter) { + let isBacklogCurrent: boolean = !GJ_REGEX_PATTERN.test(currentQuarter.label); + if (this.data.action == 'duplicate') return true; + if (this.data.objective.objectiveId) { + return isBacklogCurrent ? this.state == 'DRAFT' : true; + } else { + return !isBacklogCurrent; + } + } else { + return true; + } + } + + allowedOption(quarter: Quarter) { + if (quarter.label == 'Backlog') { + if (this.data.action == 'duplicate') { + return true; + } else if (this.data.action == 'releaseBacklog') { + return false; + } else if (this.data.objective.objectiveId) { + return this.state == 'DRAFT'; + } else { + return true; + } } else { - return !isBacklogCurrent; + return true; } } diff --git a/frontend/src/app/shared/testData.ts b/frontend/src/app/shared/testData.ts index 6075d4c9f3..930e424e55 100644 --- a/frontend/src/app/shared/testData.ts +++ b/frontend/src/app/shared/testData.ts @@ -361,8 +361,7 @@ export const objective: Objective = { description: 'description', teamId: 2, quarterId: 2, - quarterStartDate: new Date('2022-01-01'), - quarterEndDate: new Date('2022-03-31'), + quarterLabel: 'GJ 22/23-Q2', state: State.SUCCESSFUL, writeable: true, }; @@ -374,8 +373,7 @@ export const objectiveWriteableFalse: Objective = { description: 'descriptionWriteableFalse', teamId: 2, quarterId: 2, - quarterStartDate: new Date('2022-01-01'), - quarterEndDate: new Date('2022-03-31'), + quarterLabel: 'GJ 22/23-Q2', state: State.NOTSUCCESSFUL, writeable: false, }; From a46e86cec764f60eac1f17964683dd753dd4879c Mon Sep 17 00:00:00 2001 From: Lias Kleisa Date: Wed, 24 Jan 2024 09:30:44 +0100 Subject: [PATCH 146/163] Fix frontend test for new quarter backlog --- frontend/cypress/e2e/objective-backlog.cy.ts | 42 +- .../app/objective/objective.component.spec.ts | 9 +- .../objective-form.component.spec.ts | 485 +++++++++++------- .../objective-form.component.ts | 8 +- 4 files changed, 345 insertions(+), 199 deletions(-) diff --git a/frontend/cypress/e2e/objective-backlog.cy.ts b/frontend/cypress/e2e/objective-backlog.cy.ts index a623dc0b6c..410b77d84e 100644 --- a/frontend/cypress/e2e/objective-backlog.cy.ts +++ b/frontend/cypress/e2e/objective-backlog.cy.ts @@ -6,9 +6,15 @@ describe('OKR Objective Backlog e2e tests', () => { cy.visit('/?quarter=2'); }); - it(`Create Objective in backlog quarter`, () => { + it(`Create Objective in backlog quarter should not have save button`, () => { cy.getByTestId('add-objective').first().click(); - cy.fillOutObjective('Objective in quarter backlog', 'safe-draft', 'Backlog', '', false); + + cy.getByTestId('title').first().clear().type('Objective in quarter backlog'); + cy.get('select#quarter').select('Backlog'); + + cy.contains('Speichern').should('not.exist'); + cy.contains('Als Draft speichern'); + cy.getByTestId('safe-draft').click(); cy.get('Objective in quarter backlog').should('not.exist'); @@ -40,7 +46,7 @@ describe('OKR Objective Backlog e2e tests', () => { cy.contains('This goes now to backlog'); }); - it(`Edit ongoing Objective can not move to backlog`, () => { + it(`Edit ongoing Objective can not choose backlog in quarter select`, () => { cy.getByTestId('add-objective').first().click(); cy.fillOutObjective('We can not move this to backlog', 'safe', undefined, '', false); @@ -54,20 +60,19 @@ describe('OKR Objective Backlog e2e tests', () => { .contains('Objective bearbeiten') .click(); - cy.get('select#quarter').select('Backlog'); - - cy.getByTestId('safe').should('be.disabled'); + cy.get('select#quarter').should('contain', 'GJ 23/24-Q1'); + cy.get('select#quarter').should('not.contain', 'Backlog'); }); - it(`Can publish Objective to another quarter from backlog`, () => { + it(`Can release Objective to another quarter from backlog`, () => { cy.visit('/?quarter=199'); cy.getByTestId('add-objective').first().click(); - cy.getByTestId('title').first().clear().type('We can not public this'); + cy.getByTestId('title').first().clear().type('We can not release this'); cy.getByTestId('safe').should('not.exist'); cy.getByTestId('safe-draft').click(); cy.getByTestId('objective') - .filter(':contains("We can not public this")') + .filter(':contains("We can not release this")') .last() .getByTestId('three-dot-menu') .click(); @@ -81,7 +86,20 @@ describe('OKR Objective Backlog e2e tests', () => { cy.contains('Objective veröffentlichen und in Quartal verschieben'); - cy.get('select#quarter').find(':selected').contains('hello'); + cy.getByTestId('title').first().clear().type('This is our first released objective'); + + cy.get('select#quarter').should('not.contain', 'Backlog'); + cy.get('select#quarter').select('GJ 22/23-Q4'); + + cy.contains('Als Draft speichern').should('not.exist'); + cy.contains('Speichern'); + cy.getByTestId('safe').click(); + + cy.contains('This is our first released objective').should('not.exist'); + + cy.visit('/?quarter=1'); + + cy.contains('This is our first released objective'); }); it(`Can edit Objective title in backlog`, () => { @@ -106,7 +124,7 @@ describe('OKR Objective Backlog e2e tests', () => { cy.contains('My new title'); }); - it(`Can edit Objective and change quarter`, () => { + it(`Can edit Objective in backlog and change quarter`, () => { cy.visit('/?quarter=199'); cy.getByTestId('add-objective').first().click(); cy.fillOutObjective('This goes to other quarter later', 'safe-draft', undefined, '', false); @@ -128,7 +146,7 @@ describe('OKR Objective Backlog e2e tests', () => { cy.contains('This goes to other quarter later'); }); - it(`Can duplicate in backlog`, () => { + it(`Can duplicate from backlog`, () => { cy.visit('/?quarter=199'); cy.getByTestId('add-objective').first().click(); cy.fillOutObjective('Ready for duplicate', 'safe-draft', undefined, '', false); diff --git a/frontend/src/app/objective/objective.component.spec.ts b/frontend/src/app/objective/objective.component.spec.ts index 8a2499643b..8467049416 100644 --- a/frontend/src/app/objective/objective.component.spec.ts +++ b/frontend/src/app/objective/objective.component.spec.ts @@ -134,8 +134,7 @@ describe('ObjectiveColumnComponent', () => { test('Should set isBacklogQuarter right', async () => { expect(component.isBacklogQuarter).toBeFalsy(); - objectiveMin.quarter.startDate = null; - objectiveMin.quarter.endDate = null; + objectiveMin.quarter.label = 'Backlog'; component.objective = objectiveMin; fixture.detectChanges(); @@ -145,16 +144,16 @@ describe('ObjectiveColumnComponent', () => { }); test('Should return correct menu entries when backlog', async () => { - objectiveMin.quarter.startDate = null; - objectiveMin.quarter.endDate = null; + objectiveMin.quarter.label = 'Backlog'; component.objective = objectiveMin; fixture.detectChanges(); component.ngOnInit(); let menuActions = component.getDraftMenuActions(); - expect(menuActions.length).toEqual(2); + expect(menuActions.length).toEqual(3); expect(menuActions[0].displayName).toEqual('Objective bearbeiten'); expect(menuActions[1].displayName).toEqual('Objective duplizieren'); + expect(menuActions[2].displayName).toEqual('Objective veröffentlichen'); }); }); diff --git a/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.spec.ts b/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.spec.ts index 7165cbba11..bae1fc2c25 100644 --- a/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.spec.ts +++ b/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.spec.ts @@ -26,6 +26,7 @@ import { RouterTestingHarness, RouterTestingModule } from '@angular/router/testi import { DialogHeaderComponent } from '../../custom/dialog-header/dialog-header.component'; import { TranslateTestingModule } from 'ngx-translate-testing'; import * as de from '../../../../assets/i18n/de.json'; +import { ActivatedRoute } from '@angular/router'; let objectiveService = { getFullObjective: jest.fn(), @@ -39,6 +40,7 @@ const quarterService = { return of([ { id: 1, startDate: quarter.startDate, endDate: quarter.endDate, label: quarter.label }, { id: 2, startDate: quarter.startDate, endDate: quarter.endDate, label: quarter.label }, + { id: 199, startDate: null, endDate: null, label: 'Backlog' }, ]); }, }; @@ -62,216 +64,339 @@ let matDataMock: { objective: { objectiveId: number | undefined; teamId: number teamId: 1, }, }; + +const mockActivatedRoute = { + snapshot: { + queryParams: { + quarter: '199', + }, + }, +}; + describe('ObjectiveDialogComponent', () => { let component: ObjectiveFormComponent; let fixture: ComponentFixture; let loader: HarnessLoader; - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [ - HttpClientTestingModule, - MatDialogModule, - MatIconModule, - MatFormFieldModule, - MatSelectModule, - ReactiveFormsModule, - MatInputModule, - NoopAnimationsModule, - MatCheckboxModule, - RouterTestingModule, - TranslateTestingModule.withTranslations({ - de: de, - }), - ], - declarations: [ObjectiveFormComponent, DialogHeaderComponent], - providers: [ - { provide: MatDialogRef, useValue: dialogMock }, - { provide: MAT_DIALOG_DATA, useValue: matDataMock }, - { provide: ObjectiveService, useValue: objectiveService }, - { provide: QuarterService, useValue: quarterService }, - { provide: TeamService, useValue: teamService }, - ], + describe('Normal Objective dialog', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ + HttpClientTestingModule, + MatDialogModule, + MatIconModule, + MatFormFieldModule, + MatSelectModule, + ReactiveFormsModule, + MatInputModule, + NoopAnimationsModule, + MatCheckboxModule, + RouterTestingModule, + TranslateTestingModule.withTranslations({ + de: de, + }), + ], + declarations: [ObjectiveFormComponent, DialogHeaderComponent], + providers: [ + { provide: MatDialogRef, useValue: dialogMock }, + { provide: MAT_DIALOG_DATA, useValue: matDataMock }, + { provide: ObjectiveService, useValue: objectiveService }, + { provide: QuarterService, useValue: quarterService }, + { provide: TeamService, useValue: teamService }, + ], + }); + fixture = TestBed.createComponent(ObjectiveFormComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + loader = TestbedHarnessEnvironment.loader(fixture); }); - fixture = TestBed.createComponent(ObjectiveFormComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - loader = TestbedHarnessEnvironment.loader(fixture); - }); - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it.each([['DRAFT'], ['ONGOING']])('onSubmit create', async (state: string) => { - //Prepare data - let title: string = 'title'; - let description: string = 'description'; - let createKeyresults: boolean = true; - let quarter: number = 0; - let team: number = 0; - teamService.getAllTeams().subscribe((teams) => { - team = teams[0].id; - }); - quarterService.getAllQuarters().subscribe((quarters) => { - quarter = quarters[1].id; + it('should create', () => { + expect(component).toBeTruthy(); }); - // Get input elements and set values - const titleInput: HTMLInputElement = fixture.debugElement.query(By.css('[data-testId="title"]')).nativeElement; - titleInput.value = title; - const descriptionInput: HTMLInputElement = fixture.debugElement.query( - By.css('[data-testId="description"]'), - ).nativeElement; - descriptionInput.value = description; - const checkBox = await loader.getHarness(MatCheckboxHarness); - await checkBox.check(); - const quarterSelect: HTMLSelectElement = fixture.debugElement.query(By.css('#quarter')).nativeElement; - quarterSelect.value = quarter.toString(); - - // Trigger update of form - fixture.detectChanges(); - titleInput.dispatchEvent(new Event('input')); - descriptionInput.dispatchEvent(new Event('input')); - quarterSelect.dispatchEvent(new Event('input')); - - const rawFormValue = component.objectiveForm.getRawValue(); - expect(rawFormValue.description).toBe(description); - expect(rawFormValue.quarter).toBe(quarter); - expect(rawFormValue.team).toBe(team); - expect(rawFormValue.title).toBe(title); - expect(rawFormValue.createKeyResults).toBe(createKeyresults); - - objectiveService.createObjective.mockReturnValue(of({ ...objective, state: state })); - component.onSubmit(state); - - expect(dialogMock.close).toHaveBeenCalledWith({ - addKeyResult: createKeyresults, - delete: false, - objective: { - description: description, - id: 5, - version: 1, - quarterId: 2, - quarterStartDate: new Date('2022-01-01'), - quarterEndDate: new Date('2022-03-31'), - state: State[state as keyof typeof State], - teamId: 2, - title: title, - writeable: true, - }, - teamId: 1, + it.each([['DRAFT'], ['ONGOING']])('onSubmit create', async (state: string) => { + //Prepare data + let title: string = 'title'; + let description: string = 'description'; + let createKeyresults: boolean = true; + let quarter: number = 0; + let team: number = 0; + teamService.getAllTeams().subscribe((teams) => { + team = teams[0].id; + }); + quarterService.getAllQuarters().subscribe((quarters) => { + quarter = quarters[1].id; + }); + + // Get input elements and set values + const titleInput: HTMLInputElement = fixture.debugElement.query(By.css('[data-testId="title"]')).nativeElement; + titleInput.value = title; + const descriptionInput: HTMLInputElement = fixture.debugElement.query( + By.css('[data-testId="description"]'), + ).nativeElement; + descriptionInput.value = description; + const checkBox = await loader.getHarness(MatCheckboxHarness); + await checkBox.check(); + const quarterSelect: HTMLSelectElement = fixture.debugElement.query(By.css('#quarter')).nativeElement; + quarterSelect.value = quarter.toString(); + + // Trigger update of form + fixture.detectChanges(); + titleInput.dispatchEvent(new Event('input')); + descriptionInput.dispatchEvent(new Event('input')); + quarterSelect.dispatchEvent(new Event('input')); + + const rawFormValue = component.objectiveForm.getRawValue(); + expect(rawFormValue.description).toBe(description); + expect(rawFormValue.quarter).toBe(quarter); + expect(rawFormValue.team).toBe(team); + expect(rawFormValue.title).toBe(title); + expect(rawFormValue.createKeyResults).toBe(createKeyresults); + + objectiveService.createObjective.mockReturnValue(of({ ...objective, state: state })); + component.onSubmit(state); + + expect(dialogMock.close).toHaveBeenCalledWith({ + addKeyResult: createKeyresults, + delete: false, + objective: { + description: description, + id: 5, + version: 1, + quarterId: 2, + quarterLabel: 'GJ 22/23-Q2', + state: State[state as keyof typeof State], + teamId: 2, + title: title, + writeable: true, + }, + teamId: 1, + }); }); - }); - it('should create objective', () => { - matDataMock.objective.objectiveId = undefined; - component.objectiveForm.setValue({ - title: 'Test title', - description: 'Test description', - quarter: 0, - team: 0, - relation: 0, - createKeyResults: false, + it('should create objective', () => { + matDataMock.objective.objectiveId = undefined; + component.objectiveForm.setValue({ + title: 'Test title', + description: 'Test description', + quarter: 0, + team: 0, + relation: 0, + createKeyResults: false, + }); + + objectiveService.createObjective.mockReturnValue(of({ ...objective, state: 'DRAFT' })); + component.onSubmit('DRAFT'); + + fixture.detectChanges(); + + expect(objectiveService.createObjective).toHaveBeenCalledWith({ + description: 'Test description', + id: undefined, + state: 'DRAFT', + title: 'Test title', + quarterId: 0, + teamId: 0, + }); }); - objectiveService.createObjective.mockReturnValue(of({ ...objective, state: 'DRAFT' })); - component.onSubmit('DRAFT'); + it('should update objective', () => { + matDataMock.objective.objectiveId = 1; + component.objectiveForm.setValue({ + title: 'Test title', + description: 'Test description', + quarter: 1, + team: 1, + relation: 0, + createKeyResults: false, + }); + + objectiveService.updateObjective.mockReturnValue(of({ ...objective, state: 'ONGOING' })); + component.onSubmit('DRAFT'); - fixture.detectChanges(); + fixture.detectChanges(); - expect(objectiveService.createObjective).toHaveBeenCalledWith({ - description: 'Test description', - id: undefined, - state: 'DRAFT', - title: 'Test title', - quarterId: 0, - teamId: 0, + expect(objectiveService.updateObjective).toHaveBeenCalledWith({ + description: 'Test description', + id: 1, + state: 'DRAFT', + title: 'Test title', + quarterId: 1, + teamId: 1, + }); }); - }); - it('should update objective', () => { - matDataMock.objective.objectiveId = 1; - component.objectiveForm.setValue({ - title: 'Test title', - description: 'Test description', - quarter: 1, - team: 1, - relation: 0, - createKeyResults: false, + it('should load default values into form onInit with undefined objectiveId', () => { + matDataMock.objective.objectiveId = undefined; + matDataMock.objective.teamId = 1; + component.ngOnInit(); + const rawFormValue = component.objectiveForm.getRawValue(); + const defaultComponent = component.getDefaultObjective(); + expect(rawFormValue.title).toBe(defaultComponent.title); + expect(rawFormValue.description).toBe(defaultComponent.description); + expect(rawFormValue.team).toBe(matDataMock.objective.teamId); + quarterService.getAllQuarters().subscribe((quarters) => { + expect(rawFormValue.quarter).toBe([quarters[0].id]); + }); }); - objectiveService.updateObjective.mockReturnValue(of({ ...objective, state: 'ONGOING' })); - component.onSubmit('DRAFT'); + it('should load default values into form onInit with defined objectiveId', async () => { + matDataMock.objective.objectiveId = 1; + const routerHarness = await RouterTestingHarness.create(); + await routerHarness.navigateByUrl('/?quarter=2'); + objectiveService.getFullObjective.mockReturnValue(of(objective)); + component.ngOnInit(); + const rawFormValue = component.objectiveForm.getRawValue(); + expect(rawFormValue.title).toBe(objective.title); + expect(rawFormValue.description).toBe(objective.description); + expect(rawFormValue.team).toBe(objective.teamId); + expect(rawFormValue.quarter).toBe(objective.quarterId); + }); - fixture.detectChanges(); + it('should return correct value if allowed to save to backlog', async () => { + component.quarters = quarterList; + const isBacklogQuarterSpy = jest.spyOn(component, 'isBacklogQuarter'); + isBacklogQuarterSpy.mockReturnValue(false); - expect(objectiveService.updateObjective).toHaveBeenCalledWith({ - description: 'Test description', - id: 1, - state: 'DRAFT', - title: 'Test title', - quarterId: 1, - teamId: 1, - }); - }); + component.data.action = 'duplicate'; + fixture.detectChanges(); + expect(component.allowedToSaveBacklog()).toBeTruthy(); + + component.objectiveForm.controls.quarter.setValue(999); + component.data.action = ''; + component.data.objective.objectiveId = 5; + component.state = 'DRAFT'; + fixture.detectChanges(); + expect(component.allowedToSaveBacklog()).toBeTruthy(); + + component.state = 'ONGOING'; + fixture.detectChanges(); + expect(component.allowedToSaveBacklog()).toBeFalsy(); + + component.objectiveForm.controls.quarter.setValue(2); + isBacklogQuarterSpy.mockReturnValue(true); + fixture.detectChanges(); + expect(component.allowedToSaveBacklog()).toBeTruthy(); - it('should load default values into form onInit with undefined objectiveId', () => { - matDataMock.objective.objectiveId = undefined; - matDataMock.objective.teamId = 1; - component.ngOnInit(); - const rawFormValue = component.objectiveForm.getRawValue(); - const defaultComponent = component.getDefaultObjective(); - expect(rawFormValue.title).toBe(defaultComponent.title); - expect(rawFormValue.description).toBe(defaultComponent.description); - expect(rawFormValue.team).toBe(matDataMock.objective.teamId); - quarterService.getAllQuarters().subscribe((quarters) => { - expect(rawFormValue.quarter).toBe([quarters[0].id]); + component.objectiveForm.controls.quarter.setValue(999); + component.data.objective.objectiveId = undefined; + isBacklogQuarterSpy.mockReturnValue(false); + fixture.detectChanges(); + expect(component.allowedToSaveBacklog()).toBeFalsy(); + + component.objectiveForm.controls.quarter.setValue(2); + isBacklogQuarterSpy.mockReturnValue(true); + fixture.detectChanges(); + expect(component.allowedToSaveBacklog()).toBeTruthy(); }); - }); - it('should load default values into form onInit with defined objectiveId', async () => { - matDataMock.objective.objectiveId = 1; - const routerHarness = await RouterTestingHarness.create(); - await routerHarness.navigateByUrl('/?quarter=2'); - objectiveService.getFullObjective.mockReturnValue(of(objective)); - component.ngOnInit(); - const rawFormValue = component.objectiveForm.getRawValue(); - expect(rawFormValue.title).toBe(objective.title); - expect(rawFormValue.description).toBe(objective.description); - expect(rawFormValue.team).toBe(objective.teamId); - expect(rawFormValue.quarter).toBe(objective.quarterId); - }); + it('should return if option is allowed for quarter select', async () => { + let quarter: Quarter = { + id: 199, + label: 'GJ 22/23-Q3', + startDate: null, + endDate: null, + }; + let data = { + action: 'duplicate', + objective: { + objectiveId: 22, + }, + }; + component.data = data; + component.state = 'DRAFT'; + fixture.detectChanges(); - it('should return correct value if allowed to save to backlog', async () => { - component.quarters = quarterList; + expect(component.allowedOption(quarter)).toBeTruthy(); - component.data.action = 'duplicate'; - fixture.detectChanges(); - expect(component.allowedToSaveBacklog()).toBeTruthy(); + quarter.label = 'Backlog'; + expect(component.allowedOption(quarter)).toBeTruthy(); + data.action = 'releaseBacklog'; + fixture.detectChanges(); + expect(component.allowedOption(quarter)).toBeFalsy(); - component.objectiveForm.controls.quarter.setValue(999); - component.data.action = ''; - component.data.objective.objectiveId = 5; - component.state = 'DRAFT'; - fixture.detectChanges(); - expect(component.allowedToSaveBacklog()).toBeTruthy(); + data.action = 'edit'; + fixture.detectChanges(); - component.state = 'ONGOING'; - fixture.detectChanges(); - expect(component.allowedToSaveBacklog()).toBeFalsy(); + expect(component.allowedOption(quarter)).toBeTruthy(); - component.objectiveForm.controls.quarter.setValue(2); - fixture.detectChanges(); - expect(component.allowedToSaveBacklog()).toBeTruthy(); + component.state = 'ONGOING'; + fixture.detectChanges(); + expect(component.allowedOption(quarter)).toBeFalsy(); - component.objectiveForm.controls.quarter.setValue(999); - component.data.objective.objectiveId = undefined; - fixture.detectChanges(); - expect(component.allowedToSaveBacklog()).toBeFalsy(); + component.data = { + action: 'duplicate', + objective: {}, + }; - component.objectiveForm.controls.quarter.setValue(2); - fixture.detectChanges(); - expect(component.allowedToSaveBacklog()).toBeTruthy(); + fixture.detectChanges(); + expect(component.allowedOption(quarter)).toBeTruthy(); + }); + }); + + describe('Backlog quarter', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ + HttpClientTestingModule, + MatDialogModule, + MatIconModule, + MatFormFieldModule, + MatSelectModule, + ReactiveFormsModule, + MatInputModule, + NoopAnimationsModule, + MatCheckboxModule, + RouterTestingModule, + TranslateTestingModule.withTranslations({ + de: de, + }), + ], + declarations: [ObjectiveFormComponent, DialogHeaderComponent], + providers: [ + { provide: MatDialogRef, useValue: dialogMock }, + { provide: MAT_DIALOG_DATA, useValue: matDataMock }, + { provide: ObjectiveService, useValue: objectiveService }, + { provide: QuarterService, useValue: quarterService }, + { provide: TeamService, useValue: teamService }, + { provide: ActivatedRoute, useValue: mockActivatedRoute }, + ], + }); + fixture = TestBed.createComponent(ObjectiveFormComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + loader = TestbedHarnessEnvironment.loader(fixture); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should set correct default value if objective is released in backlog', async () => { + component.data = { + objective: { + objectiveId: 1, + teamId: 1, + }, + action: 'releaseBacklog', + }; + + const isBacklogQuarterSpy = jest.spyOn(component, 'isBacklogQuarter'); + isBacklogQuarterSpy.mockReturnValue(false); + + const routerHarness = await RouterTestingHarness.create(); + await routerHarness.navigateByUrl('/?quarter=199'); + objectiveService.getFullObjective.mockReturnValue(of(objective)); + fixture.detectChanges(); + component.ngOnInit(); + + const rawFormValue = component.objectiveForm.getRawValue(); + expect(rawFormValue.title).toBe(objective.title); + expect(rawFormValue.description).toBe(objective.description); + expect(rawFormValue.team).toBe(objective.teamId); + expect(rawFormValue.quarter).not.toBe(199); + expect(rawFormValue.quarter).toBe(2); + }); }); }); diff --git a/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.ts b/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.ts index 3f3a0cb70d..1ffeb1aa49 100644 --- a/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.ts +++ b/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.ts @@ -92,7 +92,7 @@ export class ObjectiveFormComponent implements OnInit { let quarterId = getValueFromQuery(this.route.snapshot.queryParams['quarter'], quarters[1].id)[0]; let currentQuarter: Quarter | undefined = this.quarters.find((quarter) => quarter.id == quarterId); - if (currentQuarter && !GJ_REGEX_PATTERN.test(currentQuarter.label) && this.data.action == 'releaseBacklog') { + if (currentQuarter && !this.isBacklogQuarter(currentQuarter.label) && this.data.action == 'releaseBacklog') { quarterId = quarters[1].id; } @@ -197,7 +197,7 @@ export class ObjectiveFormComponent implements OnInit { (quarter) => quarter.id == this.objectiveForm.value.quarter, ); if (currentQuarter) { - let isBacklogCurrent: boolean = !GJ_REGEX_PATTERN.test(currentQuarter.label); + let isBacklogCurrent: boolean = !this.isBacklogQuarter(currentQuarter.label); if (this.data.action == 'duplicate') return true; if (this.data.objective.objectiveId) { return isBacklogCurrent ? this.state == 'DRAFT' : true; @@ -225,5 +225,9 @@ export class ObjectiveFormComponent implements OnInit { } } + isBacklogQuarter(label: string) { + return GJ_REGEX_PATTERN.test(label); + } + protected readonly getQuarterLabel = getQuarterLabel; } From c666472d959fd06d2ea9b3970297d09a90617fec Mon Sep 17 00:00:00 2001 From: Lias Kleisa Date: Wed, 24 Jan 2024 10:55:34 +0100 Subject: [PATCH 147/163] Adjust code and add ongoing state on release of backlog objective --- frontend/src/app/objective/objective.component.ts | 4 ++-- .../dialog/objective-dialog/objective-form.component.html | 2 +- .../dialog/objective-dialog/objective-form.component.ts | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/frontend/src/app/objective/objective.component.ts b/frontend/src/app/objective/objective.component.ts index 9c20aeb426..349f7808c5 100644 --- a/frontend/src/app/objective/objective.component.ts +++ b/frontend/src/app/objective/objective.component.ts @@ -104,7 +104,7 @@ export class ObjectiveComponent implements OnInit { } getDraftMenuActions() { - let element = { + let menuEntries = { displayName: 'Objective veröffentlichen', action: this.isBacklogQuarter ? 'releaseBacklog' : 'release', dialog: { @@ -117,7 +117,7 @@ export class ObjectiveComponent implements OnInit { }, }; - return [...this.getDefaultMenuActions(), element]; + return [...this.getDefaultMenuActions(), menuEntries]; } getDefaultMenuActions() { diff --git a/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.html b/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.html index 1de582ffa0..28e461b3bf 100644 --- a/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.html +++ b/frontend/src/app/shared/dialog/objective-dialog/objective-form.component.html @@ -5,7 +5,7 @@ >
- +
Date: Wed, 24 Jan 2024 11:07:51 +0100 Subject: [PATCH 148/163] Fix e2e test --- frontend/cypress/e2e/objective-backlog.cy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/cypress/e2e/objective-backlog.cy.ts b/frontend/cypress/e2e/objective-backlog.cy.ts index 410b77d84e..bf7aefb375 100644 --- a/frontend/cypress/e2e/objective-backlog.cy.ts +++ b/frontend/cypress/e2e/objective-backlog.cy.ts @@ -84,7 +84,7 @@ describe('OKR Objective Backlog e2e tests', () => { cy.get('.objective-menu-option').contains('Objective veröffentlichen').click(); - cy.contains('Objective veröffentlichen und in Quartal verschieben'); + cy.contains('Objective veröffentlichen'); cy.getByTestId('title').first().clear().type('This is our first released objective'); From ef198da046e9981fd098898a5dcaf08fd42a285c Mon Sep 17 00:00:00 2001 From: Lias Kleisa Date: Wed, 24 Jan 2024 12:48:27 +0100 Subject: [PATCH 149/163] Rename migration --- ...es.sql => V2_1_2__removeNotNullConstraintFromQuarterDates.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename backend/src/main/resources/db/migration/{V2_1_3__removeNotNullConstraintFromQuarterDates.sql => V2_1_2__removeNotNullConstraintFromQuarterDates.sql} (100%) diff --git a/backend/src/main/resources/db/migration/V2_1_3__removeNotNullConstraintFromQuarterDates.sql b/backend/src/main/resources/db/migration/V2_1_2__removeNotNullConstraintFromQuarterDates.sql similarity index 100% rename from backend/src/main/resources/db/migration/V2_1_3__removeNotNullConstraintFromQuarterDates.sql rename to backend/src/main/resources/db/migration/V2_1_2__removeNotNullConstraintFromQuarterDates.sql From 00dbb614a42bbaced1ab4da88272f1d798fb5b7f Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 24 Jan 2024 14:13:34 +0000 Subject: [PATCH 150/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 6faa14bc2a..bd6a4c39e9 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.36-SNAPSHOT + 2.0.37-SNAPSHOT backend - 2.0.36-SNAPSHOT + 2.0.37-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index 24e467561b..f56c04f9e3 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.36-SNAPSHOT + 2.0.37-SNAPSHOT org.springframework.boot From 7bd4c355c35ac3e063d349a1eed4ff232703b47a Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Thu, 25 Jan 2024 09:40:37 +0100 Subject: [PATCH 151/163] update icon --- frontend/src/assets/icons/ongoing-icon.svg | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/frontend/src/assets/icons/ongoing-icon.svg b/frontend/src/assets/icons/ongoing-icon.svg index 596dc9ea66..7acf2e9db3 100644 --- a/frontend/src/assets/icons/ongoing-icon.svg +++ b/frontend/src/assets/icons/ongoing-icon.svg @@ -1,10 +1,9 @@ - - + + + + + + - - - - - From b43fb54521a75f3c2c546ea1dda68df99eba7b36 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 29 Jan 2024 07:08:27 +0000 Subject: [PATCH 152/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index bd6a4c39e9..8baf4c05ca 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.37-SNAPSHOT + 2.0.38-SNAPSHOT backend - 2.0.37-SNAPSHOT + 2.0.38-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index f56c04f9e3..fa777b7614 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.37-SNAPSHOT + 2.0.38-SNAPSHOT org.springframework.boot From f62ae6ffddc3aaf9e3e5b6a9751a3ec03a3e638b Mon Sep 17 00:00:00 2001 From: megli2 Date: Tue, 16 Jan 2024 09:33:55 +0100 Subject: [PATCH 153/163] implement field on form and media queries to switch places of divs in mobile view --- .../check-in-form-metric.component.html | 34 ++++++++++++------- .../check-in-form-metric.component.scss | 23 +++++++++++++ 2 files changed, 45 insertions(+), 12 deletions(-) diff --git a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html index d16ee9f51b..dc5d0216e1 100644 --- a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html +++ b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html @@ -1,16 +1,26 @@
- -
-
- -
- {{ generateUnitLabel() }} +
+
+ +
+
+ +
+ {{ generateUnitLabel() }} +
+
+
+ +
+ {{ checkIn.value }} {{ generateUnitLabel() }} +
+
{{ getErrorMessage("MUST_BE_NUMBER", "Neuer Wert") }} diff --git a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.scss b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.scss index 2a38f70db7..fc84c72642 100644 --- a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.scss +++ b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.scss @@ -14,3 +14,26 @@ mat-label { .unit-label { margin-left: 10px; } + +.disabled-field { + background-color: #f5f5f5; + width: 218px; +} + +@media only screen and (min-width: 601px) { + #new-value { + order: 0; + } + #old-value { + order: 1; + } +} + +@media only screen and (max-width: 600px) { + #new-value { + order: 1; + } + #old-value { + order: 0; + } +} From 388a1dea57dfbfae65e600792280789b7bc97092 Mon Sep 17 00:00:00 2001 From: megli2 Date: Tue, 16 Jan 2024 09:40:52 +0100 Subject: [PATCH 154/163] add margin-bottom when divs are under each other --- .../check-in-form-metric/check-in-form-metric.component.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.scss b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.scss index fc84c72642..753afacc62 100644 --- a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.scss +++ b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.scss @@ -34,6 +34,7 @@ mat-label { order: 1; } #old-value { + margin-bottom: 2%; order: 0; } } From 22afaa9dfb1ada60e1835cc71ea58510113f0a73 Mon Sep 17 00:00:00 2001 From: megli2 Date: Tue, 16 Jan 2024 10:11:46 +0100 Subject: [PATCH 155/163] change naming of label --- .../check-in-form-metric/check-in-form-metric.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html index dc5d0216e1..11232974d8 100644 --- a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html +++ b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html @@ -16,7 +16,7 @@
- +
{{ checkIn.value }} {{ generateUnitLabel() }}
From 18e93822739f1985843236c69d96b766b90c2519 Mon Sep 17 00:00:00 2001 From: megli2 Date: Tue, 16 Jan 2024 11:04:37 +0100 Subject: [PATCH 156/163] write e2e test and add double dot in label of check-in --- frontend/cypress/e2e/checkIn.cy.ts | 20 +++++++++++++++++++ .../check-in-form-metric.component.html | 4 ++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/frontend/cypress/e2e/checkIn.cy.ts b/frontend/cypress/e2e/checkIn.cy.ts index e0d6a7c3cf..937a6f51ca 100644 --- a/frontend/cypress/e2e/checkIn.cy.ts +++ b/frontend/cypress/e2e/checkIn.cy.ts @@ -287,6 +287,26 @@ describe('OKR Check-in e2e tests', () => { cy.contains('Check-in im Draft-Status'); cy.contains('Dein Objective befindet sich noch im DRAFT Status. Möchtest du das Check-in trotzdem erfassen?'); }); + + it(`Should not display last value div if last checkin is not present`, () => { + cy.getByTestId('add-objective').first().click(); + cy.fillOutObjective('new objective', 'safe', '3'); + cy.visit('/?quarter=3'); + cy.contains('new objective').first().parentsUntil('#objective-column').last().focus(); + + cy.tabForwardUntil('[data-testId="add-keyResult"]'); + cy.focused().contains('Key Result hinzufügen'); + cy.realPress('Enter'); + + cy.fillOutKeyResult('I am a keyresult metric', 'PERCENT', '45', '60', null, null, null, null, 'Description'); + cy.getByTestId('submit').click(); + cy.getByTestId('keyresult').contains('I am a keyresult metric').click(); + cy.getByTestId('add-check-in').first().click(); + cy.get('#old-value').should('not.exist'); + cy.fillOutCheckInMetric(10, false, 'changeinfo', 'initiatives'); + cy.getByTestId('add-check-in').first().click(); + cy.get('#old-value').should('not.exist'); + }); }); }); diff --git a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html index 11232974d8..bc365e03cc 100644 --- a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html +++ b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html @@ -1,7 +1,7 @@
- +
- +
{{ checkIn.value }} {{ generateUnitLabel() }}
From 8544ce6e5a7cb9832d4f4a1407a0d231fbe8d72b Mon Sep 17 00:00:00 2001 From: megli2 Date: Tue, 16 Jan 2024 11:29:27 +0100 Subject: [PATCH 157/163] decrease breaktpoint of input fields --- .../check-in-form-metric.component.html | 4 ++-- .../check-in-form-metric.component.scss | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html index bc365e03cc..5605a5b4e9 100644 --- a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html +++ b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html @@ -1,6 +1,6 @@
-
+
@@ -15,7 +15,7 @@ {{ generateUnitLabel() }}
-
+
{{ checkIn.value }} {{ generateUnitLabel() }} diff --git a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.scss b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.scss index 753afacc62..e0bc6699e8 100644 --- a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.scss +++ b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.scss @@ -20,7 +20,7 @@ mat-label { width: 218px; } -@media only screen and (min-width: 601px) { +@media only screen and (min-width: 575px) { #new-value { order: 0; } @@ -29,12 +29,12 @@ mat-label { } } -@media only screen and (max-width: 600px) { +@media only screen and (max-width: 574px) { #new-value { order: 1; } #old-value { - margin-bottom: 2%; + margin-bottom: 3%; order: 0; } } From 3d6466e1c05ef570a3cde1091534f2aa1ab88ab2 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 11:52:20 +0100 Subject: [PATCH 158/163] fix styling --- .../check-in-form-metric.component.html | 6 +++--- .../checkin/check-in-form/check-in-form.component.html | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html index 5605a5b4e9..0ba76e9e05 100644 --- a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html +++ b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html @@ -1,6 +1,6 @@
-
+
@@ -15,9 +15,9 @@ {{ generateUnitLabel() }}
-
+
-
+
{{ checkIn.value }} {{ generateUnitLabel() }}
diff --git a/frontend/src/app/shared/dialog/checkin/check-in-form/check-in-form.component.html b/frontend/src/app/shared/dialog/checkin/check-in-form/check-in-form.component.html index d86f4c6897..c821f83b3e 100644 --- a/frontend/src/app/shared/dialog/checkin/check-in-form/check-in-form.component.html +++ b/frontend/src/app/shared/dialog/checkin/check-in-form/check-in-form.component.html @@ -9,8 +9,8 @@ tabindex="-1" > -
-

Key Result

+
+

Key Result

{{ keyResult.title }}

From db707fbfe93f3ad5e5a88d5beebe2d5d8a9f399e Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 11:56:41 +0100 Subject: [PATCH 159/163] remove double dot --- .../check-in-form-metric/check-in-form-metric.component.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html index 0ba76e9e05..ca2d8eb392 100644 --- a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html +++ b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html @@ -1,7 +1,7 @@
- +
- +
{{ checkIn.value }} {{ generateUnitLabel() }}
From 2cabd3feb39bc797bc0ed904aed13afd211d5d40 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Mon, 22 Jan 2024 12:56:02 +0100 Subject: [PATCH 160/163] divide aktuller wert and letzter wert as much as possible --- .../check-in-form-metric.component.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html index ca2d8eb392..2afbad4c3c 100644 --- a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html +++ b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html @@ -1,6 +1,6 @@
-
-
+
+
@@ -15,7 +15,7 @@ {{ generateUnitLabel() }}
-
+
{{ checkIn.value }} {{ generateUnitLabel() }} From 7f84884ef7119599952ed8c0a934630683ba0273 Mon Sep 17 00:00:00 2001 From: Yanick Minder Date: Tue, 23 Jan 2024 11:42:45 +0100 Subject: [PATCH 161/163] split with gap --- .../check-in-form-metric/check-in-form-metric.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html index 2afbad4c3c..ea43c797ef 100644 --- a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html +++ b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html @@ -1,5 +1,5 @@
-
+
From 924bad2971560453b1214b23cde2e1ecbf7668cd Mon Sep 17 00:00:00 2001 From: Lias Kleisa Date: Mon, 29 Jan 2024 08:45:06 +0100 Subject: [PATCH 162/163] Adjust height on mobile device between input field and current value --- .../check-in-form-metric.component.html | 2 +- .../check-in-form-metric.component.scss | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html index ea43c797ef..45d9ce03ec 100644 --- a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html +++ b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.html @@ -1,5 +1,5 @@
-
+
diff --git a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.scss b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.scss index e0bc6699e8..46bd29b25b 100644 --- a/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.scss +++ b/frontend/src/app/shared/dialog/checkin/check-in-form-metric/check-in-form-metric.component.scss @@ -20,13 +20,22 @@ mat-label { width: 218px; } -@media only screen and (min-width: 575px) { +@media only screen and (min-width: 601px) { + .gap-between { + gap: 5rem; + } +} + +@media only screen and (min-width: 575px) and (max-width: 600px) { #new-value { order: 0; } #old-value { order: 1; } + .gap-between { + gap: 3rem; + } } @media only screen and (max-width: 574px) { @@ -34,7 +43,9 @@ mat-label { order: 1; } #old-value { - margin-bottom: 3%; order: 0; } + .gap-between { + gap: 1rem; + } } From 8fa02deb6017c0e0650612f4695be7adbfe2cf97 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 29 Jan 2024 08:54:51 +0000 Subject: [PATCH 163/163] [VU] Automated version update --- backend/pom.xml | 4 ++-- pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/pom.xml b/backend/pom.xml index 8baf4c05ca..303223ff75 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -6,11 +6,11 @@ ch.puzzle.okr parent - 2.0.38-SNAPSHOT + 2.0.39-SNAPSHOT backend - 2.0.38-SNAPSHOT + 2.0.39-SNAPSHOT backend Puzzle OKR Tool diff --git a/pom.xml b/pom.xml index fa777b7614..be0582eca6 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ ch.puzzle.okr parent - 2.0.38-SNAPSHOT + 2.0.39-SNAPSHOT org.springframework.boot