From ce37bf27689744a6f43be46912be0d14e2cdbc6b Mon Sep 17 00:00:00 2001 From: Andrew Cain Date: Thu, 20 Feb 2025 13:54:27 +1100 Subject: [PATCH 01/14] fix: correct ability to edit teaching periods --- .../teaching-period-list.component.ts | 67 ++++++++++--------- 1 file changed, 36 insertions(+), 31 deletions(-) diff --git a/src/app/admin/states/teaching-periods/teaching-period-list/teaching-period-list.component.ts b/src/app/admin/states/teaching-periods/teaching-period-list/teaching-period-list.component.ts index 17dc7efdf9..f4099456cf 100644 --- a/src/app/admin/states/teaching-periods/teaching-period-list/teaching-period-list.component.ts +++ b/src/app/admin/states/teaching-periods/teaching-period-list/teaching-period-list.component.ts @@ -1,14 +1,14 @@ -import { Component, Inject, OnInit, ViewChild } from '@angular/core'; -import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog'; -import { MatPaginator } from '@angular/material/paginator'; -import { MatSnackBar } from '@angular/material/snack-bar'; -import { MatSort, Sort } from '@angular/material/sort'; -import { MatTableDataSource } from '@angular/material/table'; -import { TeachingPeriodBreak } from 'src/app/api/models/teaching-period'; -import { TeachingPeriod } from 'src/app/api/models/teaching-period'; -import { TeachingPeriodBreakService } from 'src/app/api/services/teaching-period-break.service'; -import { TeachingPeriodService } from 'src/app/api/services/teaching-period.service'; -import { TeachingPeriodUnitImportService } from '../teaching-period-unit-import/teaching-period-unit-import.dialog'; +import {Component, Inject, OnInit, ViewChild} from '@angular/core'; +import {MAT_DIALOG_DATA, MatDialog, MatDialogRef} from '@angular/material/dialog'; +import {MatPaginator} from '@angular/material/paginator'; +import {MatSort, Sort} from '@angular/material/sort'; +import {MatTableDataSource} from '@angular/material/table'; +import {TeachingPeriodBreak} from 'src/app/api/models/teaching-period'; +import {TeachingPeriod} from 'src/app/api/models/teaching-period'; +import {TeachingPeriodBreakService} from 'src/app/api/services/teaching-period-break.service'; +import {TeachingPeriodService} from 'src/app/api/services/teaching-period.service'; +import {TeachingPeriodUnitImportService} from '../teaching-period-unit-import/teaching-period-unit-import.dialog'; +import {AlertService} from 'src/app/common/services/alert.service'; @Component({ selector: 'f-teaching-period-list', @@ -53,7 +53,7 @@ export class TeachingPeriodListComponent implements OnInit { selectTeachingPeriod(selectedTeachingPeriod: TeachingPeriod) { this.teachingPeriodsService.get(selectedTeachingPeriod.id).subscribe((teachingPeriod) => { - this.dialog.open(NewTeachingPeriodDialogComponent, { data: { teachingPeriod: teachingPeriod } }); + this.dialog.open(NewTeachingPeriodDialogComponent, {data: {teachingPeriod: teachingPeriod}}); }); } @@ -101,18 +101,24 @@ export class NewTeachingPeriodDialogComponent { private dialogRef: MatDialogRef, public teachingPeriodService: TeachingPeriodService, public teachingPeriodBreakService: TeachingPeriodBreakService, - private _snackBar: MatSnackBar + public alertService: AlertService, ) {} public newOrSelectedTeachingPeriod = this.data.teachingPeriod || new TeachingPeriod(); public tempBreak = new TeachingPeriodBreak(); addTeachingBreak() { - this.newOrSelectedTeachingPeriod.addBreak(this.tempBreak.startDate, this.tempBreak.numberOfWeeks).subscribe({ - next: (teachingPeriodBreak) => { - console.log(teachingPeriodBreak); - }, - }); + this.newOrSelectedTeachingPeriod + .addBreak(this.tempBreak.startDate, this.tempBreak.numberOfWeeks) + .subscribe({ + next: (teachingPeriodBreak) => { + this.alertService.success('Break added'); + console.log(teachingPeriodBreak); + }, + error: (response) => { + this.alertService.error(`Error adding break. ${response}`); + }, + }); } deleteBreak(teachingPeriod: TeachingPeriod, teachingBreak: TeachingPeriodBreak): void { @@ -120,26 +126,25 @@ export class NewTeachingPeriodDialogComponent { next: (teachingPeriodBreak) => { console.log(teachingPeriodBreak); }, - error: (response) => {}, + error: (response) => { + this.alertService.error(`Error deleting break. ${response}`); + }, }); } submitTeachingPeriod() { - // todo: use alert service - this.teachingPeriodService.store(this.newOrSelectedTeachingPeriod).subscribe({ + // Check if we are updating or creating a new teaching period + const observer = this.newOrSelectedTeachingPeriod.id + ? this.teachingPeriodService.update(this.newOrSelectedTeachingPeriod) + : this.teachingPeriodService.store(this.newOrSelectedTeachingPeriod); + + // Save the teaching period + observer.subscribe({ next: (teachingPeriod) => { - this._snackBar.open(`${teachingPeriod.name} saved`, 'dismiss', { - duration: 2000, - horizontalPosition: 'end', - verticalPosition: 'top', - }); + this.alertService.success(`${teachingPeriod.name} saved`); }, error: (response) => { - this._snackBar.open(response, 'dismiss', { - duration: 5000, - horizontalPosition: 'end', - verticalPosition: 'top', - }); + this.alertService.error(`Error saving teaching period. ${response}`); }, }); } From 7daacd1bf0af050aeb6db503d963e574f68b9a94 Mon Sep 17 00:00:00 2001 From: Andrew Cain Date: Thu, 20 Feb 2025 13:55:10 +1100 Subject: [PATCH 02/14] fix: ensure an old grade is present in portfolio assessment Fixes an issue where this somehow becomes null or undefined. --- src/app/api/models/project.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/api/models/project.ts b/src/app/api/models/project.ts index bde396b74b..d8f6548398 100644 --- a/src/app/api/models/project.ts +++ b/src/app/api/models/project.ts @@ -229,7 +229,7 @@ export class Project extends Entity { public assignGrade(score: number, rationale: string): void { const alerts = AppInjector.get(AlertService); const projectService: ProjectService = AppInjector.get(ProjectService); - const oldGrade: number = this.grade; + const oldGrade: number = this.grade || 0; this.grade = score; this.gradeRationale = rationale; From 3479b7af589b9ba986ddbb7dc8a84fd0be3e66e6 Mon Sep 17 00:00:00 2001 From: Andrew Cain Date: Tue, 25 Feb 2025 13:59:56 +1100 Subject: [PATCH 03/14] fix: ensure overseer images can be edited --- src/app/api/models/unit.ts | 20 +++++++++++++ src/app/api/services/unit.service.ts | 2 +- .../task-definition-editor.component.ts | 30 ++++++++++++------- 3 files changed, 40 insertions(+), 12 deletions(-) diff --git a/src/app/api/models/unit.ts b/src/app/api/models/unit.ts index f157355da0..73c58642c2 100644 --- a/src/app/api/models/unit.ts +++ b/src/app/api/models/unit.ts @@ -23,6 +23,8 @@ import { TutorialStreamService, UnitRoleService, D2lAssessmentMappingService, + OverseerImage, + OverseerImageService, } from './doubtfire-model'; import {LearningOutcome} from './learning-outcome'; import {AlertService} from 'src/app/common/services/alert.service'; @@ -53,6 +55,7 @@ export class Unit extends Entity { assessmentEnabled: boolean; overseerImageId: number = null; // image needs to be lazy loadaed + private _overseerImage: OverseerImage; autoApplyExtensionBeforeDeadline: boolean; sendNotifications: boolean; @@ -446,6 +449,23 @@ export class Unit extends Entity { return this.groupSetsCache.currentValues; } + public set overseerImage(image: OverseerImage) { + this._overseerImage = image; + this.overseerImageId = image.id; + } + + public get overseerImage(): OverseerImage { + if (this._overseerImage === undefined && this.overseerImageId) { + const overseerImageService = AppInjector.get(OverseerImageService); + overseerImageService.get(this.overseerImageId).subscribe({ + next: (image) => { + this._overseerImage = image; + }, + }); + } + return this._overseerImage; + } + public get overseerEnabled(): boolean { return this.assessmentEnabled && AppInjector.get(DoubtfireConstants).IsOverseerEnabled.value; // && this.overseerImageId !== null && this.overseerImageId !== undefined; } diff --git a/src/app/api/services/unit.service.ts b/src/app/api/services/unit.service.ts index c3c38c7406..95b4161d75 100644 --- a/src/app/api/services/unit.service.ts +++ b/src/app/api/services/unit.service.ts @@ -227,7 +227,7 @@ export class UnitService extends CachedEntityService { 'portfolioAutoGenerationDate', 'assessmentEnabled', - // 'overseerImage', - map to overseer image + 'overseerImageId', 'autoApplyExtensionBeforeDeadline', 'sendNotifications', diff --git a/src/app/units/states/edit/directives/unit-tasks-editor/task-definition-editor/task-definition-editor.component.ts b/src/app/units/states/edit/directives/unit-tasks-editor/task-definition-editor/task-definition-editor.component.ts index 88f7ccfe2d..d77a3d5ad8 100644 --- a/src/app/units/states/edit/directives/unit-tasks-editor/task-definition-editor/task-definition-editor.component.ts +++ b/src/app/units/states/edit/directives/unit-tasks-editor/task-definition-editor/task-definition-editor.component.ts @@ -1,25 +1,33 @@ -import { Component, Input } from '@angular/core'; -import { TaskDefinition } from 'src/app/api/models/task-definition'; -import { Unit } from 'src/app/api/models/unit'; -import { TaskDefinitionService } from 'src/app/api/services/task-definition.service'; -import { AlertService } from 'src/app/common/services/alert.service'; -import { DoubtfireConstants } from 'src/app/config/constants/doubtfire-constants'; +import {Component, Input, OnInit} from '@angular/core'; +import {TaskDefinition} from 'src/app/api/models/task-definition'; +import {Unit} from 'src/app/api/models/unit'; +import {TaskDefinitionService} from 'src/app/api/services/task-definition.service'; +import {AlertService} from 'src/app/common/services/alert.service'; +import {DoubtfireConstants} from 'src/app/config/constants/doubtfire-constants'; @Component({ selector: 'f-task-definition-editor', templateUrl: 'task-definition-editor.component.html', styleUrls: ['task-definition-editor.component.scss'], }) -export class TaskDefinitionEditorComponent { +export class TaskDefinitionEditorComponent implements OnInit { @Input() taskDefinition: TaskDefinition; @Input() unit: Unit; - constructor(private taskDefinitionService: TaskDefinitionService, private alerts: AlertService, private constants: DoubtfireConstants) { - constants.IsOverseerEnabled.subscribe((enabled) => (this.overseerEnabled = enabled && this.unit.overseerEnabled)); - } - public overseerEnabled: boolean = false; + constructor( + private taskDefinitionService: TaskDefinitionService, + private alerts: AlertService, + private constants: DoubtfireConstants, + ) {} + + public ngOnInit() { + this.constants.IsOverseerEnabled.subscribe((enabled) => { + this.overseerEnabled = enabled && this.unit.overseerEnabled; + }); + } + public save() { this.taskDefinition.save().subscribe({ next: (response) => { From 34beff4c45227ba9fe496e3c6a9f90a72e720260 Mon Sep 17 00:00:00 2001 From: Andrew Cain Date: Fri, 28 Feb 2025 13:43:32 +1100 Subject: [PATCH 04/14] chore(release): 8.0.35 --- CHANGELOG.md | 9 +++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 922a094cf6..6a17667d20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [8.0.35](https://github.com/macite/doubtfire-deploy/compare/v8.0.34...v8.0.35) (2025-02-28) + + +### Bug Fixes + +* correct ability to edit teaching periods ([ce37bf2](https://github.com/macite/doubtfire-deploy/commit/ce37bf27689744a6f43be46912be0d14e2cdbc6b)) +* ensure an old grade is present in portfolio assessment ([7daacd1](https://github.com/macite/doubtfire-deploy/commit/7daacd1bf0af050aeb6db503d963e574f68b9a94)) +* ensure overseer images can be edited ([3479b7a](https://github.com/macite/doubtfire-deploy/commit/3479b7af589b9ba986ddbb7dc8a84fd0be3e66e6)) + ### [8.0.34](https://github.com/macite/doubtfire-deploy/compare/v8.0.33...v8.0.34) (2025-02-12) diff --git a/package-lock.json b/package-lock.json index 4ea52bbbb1..ee2bf0f666 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "doubtfire", - "version": "8.0.34", + "version": "8.0.35", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "doubtfire", - "version": "8.0.34", + "version": "8.0.35", "license": "AGPL-3.0", "dependencies": { "@angular/animations": "^17.3.6", diff --git a/package.json b/package.json index 5ac6c30eb8..0a9c62b3a6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "doubtfire", - "version": "8.0.34", + "version": "8.0.35", "homepage": "http://github.com/doubtfire-lms/", "description": "Learning and feedback tool.", "license": "AGPL-3.0", From 72c89b30cca426d56c7efbbac34e00fd734fe714 Mon Sep 17 00:00:00 2001 From: Andrew Cain Date: Thu, 6 Mar 2025 20:36:45 +1100 Subject: [PATCH 05/14] fix: overseer image admin in unit and task Correct connections and concurrency bug in loading overseer image when unit loaded. --- package-lock.json | 8 ++-- package.json | 2 +- src/app/api/models/task-definition.ts | 6 +-- src/app/api/models/unit.ts | 8 ---- .../api/services/task-definition.service.ts | 10 ++++- src/app/api/services/unit.service.ts | 22 ++++++++++- .../task-definition-overseer.component.html | 38 ++++++++++++++----- .../task-definition-overseer.component.ts | 30 +++++++++++++-- 8 files changed, 90 insertions(+), 34 deletions(-) diff --git a/package-lock.json b/package-lock.json index ee2bf0f666..d88d723428 100644 --- a/package-lock.json +++ b/package-lock.json @@ -66,7 +66,7 @@ "ng-flex-layout": "^17.3.7-beta.1", "ng2-pdf-viewer": "^10.2", "ngx-bootstrap": "^6.1.0", - "ngx-entity-service": "^0.0.40", + "ngx-entity-service": "^0.0.41", "ngx-lottie": "^11.0.2", "nvd3": "1.8.6", "rxjs": "~7.4.0", @@ -15812,9 +15812,9 @@ } }, "node_modules/ngx-entity-service": { - "version": "0.0.40", - "resolved": "https://registry.npmjs.org/ngx-entity-service/-/ngx-entity-service-0.0.40.tgz", - "integrity": "sha512-JEYUAAp83zfw6d9ETBYgNxSh1VB4Ko0fACF6OQiEYHbqQye/Yb0De4Md+FHJPDQ1DBjJk8GjT328cEPbW8xlNQ==", + "version": "0.0.41", + "resolved": "https://registry.npmjs.org/ngx-entity-service/-/ngx-entity-service-0.0.41.tgz", + "integrity": "sha512-rf3gZQr4CthXV34WKySg200c06ZuXm2Z7EclUR6bAuiuvUDwRAPMEAJmtSmDyYbnpQqLMMb+5rfaQQakkTNotA==", "dependencies": { "tslib": "^2.3.0" }, diff --git a/package.json b/package.json index 0a9c62b3a6..a3e5c190a1 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "ng-flex-layout": "^17.3.7-beta.1", "ng2-pdf-viewer": "^10.2", "ngx-bootstrap": "^6.1.0", - "ngx-entity-service": "^0.0.40", + "ngx-entity-service": "^0.0.41", "ngx-lottie": "^11.0.2", "nvd3": "1.8.6", "rxjs": "~7.4.0", diff --git a/src/app/api/models/task-definition.ts b/src/app/api/models/task-definition.ts index b848686768..9bda428e75 100644 --- a/src/app/api/models/task-definition.ts +++ b/src/app/api/models/task-definition.ts @@ -202,7 +202,7 @@ export class TaskDefinition extends Entity { }/scorm_data`; } - public get taskAssessmentResourcesUploadUrl(): string { + public get taskOverseerResourcesUploadUrl(): string { return `${AppInjector.get(DoubtfireConstants).API_URL}/units/${this.unit.id}/task_definitions/${ this.id }/task_assessment_resources`; @@ -229,10 +229,10 @@ export class TaskDefinition extends Entity { return httpClient.delete(this.scormDataUploadUrl).pipe(tap(() => (this.hasScormData = false))); } - public deleteTaskAssessmentResources(): Observable { + public deleteOverseerResources(): Observable { const httpClient = AppInjector.get(HttpClient); return httpClient - .delete(this.taskAssessmentResourcesUploadUrl) + .delete(this.taskOverseerResourcesUploadUrl) .pipe(tap(() => (this.hasTaskAssessmentResources = false))); } } diff --git a/src/app/api/models/unit.ts b/src/app/api/models/unit.ts index 73c58642c2..7d5c35745e 100644 --- a/src/app/api/models/unit.ts +++ b/src/app/api/models/unit.ts @@ -455,14 +455,6 @@ export class Unit extends Entity { } public get overseerImage(): OverseerImage { - if (this._overseerImage === undefined && this.overseerImageId) { - const overseerImageService = AppInjector.get(OverseerImageService); - overseerImageService.get(this.overseerImageId).subscribe({ - next: (image) => { - this._overseerImage = image; - }, - }); - } return this._overseerImage; } diff --git a/src/app/api/services/task-definition.service.ts b/src/app/api/services/task-definition.service.ts index 0914929fbe..f646d763f3 100644 --- a/src/app/api/services/task-definition.service.ts +++ b/src/app/api/services/task-definition.service.ts @@ -133,13 +133,19 @@ export class TaskDefinitionService extends CachedEntityService { public uploadTaskResources(taskDefinition: TaskDefinition, file: File): Observable { const formData = new FormData(); formData.append('file', file); - return AppInjector.get(HttpClient).post(taskDefinition.taskResourcesUploadUrl, formData); + return AppInjector.get(HttpClient).post( + taskDefinition.taskResourcesUploadUrl, + formData, + ); } public uploadOverseerResources(taskDefinition: TaskDefinition, file: File): Observable { const formData = new FormData(); formData.append('file', file); - return AppInjector.get(HttpClient).post(taskDefinition.taskAssessmentResourcesUploadUrl, formData); + return AppInjector.get(HttpClient).post( + taskDefinition.taskOverseerResourcesUploadUrl, + formData, + ); } public uploadScormData(taskDefinition: TaskDefinition, file: File): Observable { diff --git a/src/app/api/services/unit.service.ts b/src/app/api/services/unit.service.ts index 95b4161d75..8151cbb6cc 100644 --- a/src/app/api/services/unit.service.ts +++ b/src/app/api/services/unit.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; -import { GroupSetService, LearningOutcomeService, TaskOutcomeAlignmentService, TeachingPeriodService, TutorialService, TutorialStreamService, Unit, UserService } from 'src/app/api/models/doubtfire-model'; +import { GroupSetService, LearningOutcomeService, OverseerImageService, TaskOutcomeAlignmentService, TeachingPeriodService, TutorialService, TutorialStreamService, Unit, UserService } from 'src/app/api/models/doubtfire-model'; import { CachedEntityService, Entity, EntityMapping } from 'ngx-entity-service'; import API_URL from 'src/app/config/constants/apiURL'; import { UnitRoleService } from './unit-role.service'; @@ -124,7 +124,25 @@ export class UnitService extends CachedEntityService { } }, 'assessmentEnabled', - 'overseerImageId', + // 'overseerImageId', + { + keys: 'overseerImageId', + toEntityFn: (data, key, entity) => { + const overSeerEntityId = data[key]; + if (overSeerEntityId) { + const overseerImageService = AppInjector.get(OverseerImageService); + overseerImageService.get(data[key]).subscribe({ + next: (image) => { + entity.overseerImage = image; + }, + }); + } + return overSeerEntityId; + }, + toJsonFn: (unit: Unit, _key: string) => { + return unit.overseerImage?.id; + }, + }, 'autoApplyExtensionBeforeDeadline', 'sendNotifications', 'enableSyncEnrolments', diff --git a/src/app/units/states/edit/directives/unit-tasks-editor/task-definition-editor/task-definition-overseer/task-definition-overseer.component.html b/src/app/units/states/edit/directives/unit-tasks-editor/task-definition-editor/task-definition-overseer/task-definition-overseer.component.html index 31c683077f..bf187030aa 100644 --- a/src/app/units/states/edit/directives/unit-tasks-editor/task-definition-editor/task-definition-overseer/task-definition-overseer.component.html +++ b/src/app/units/states/edit/directives/unit-tasks-editor/task-definition-editor/task-definition-overseer/task-definition-overseer.component.html @@ -12,8 +12,8 @@ Docker Image @for (image of images | async; track image) { - {{ image.description }} -} + {{ image.description }} + } Docker image for Overseer @@ -24,27 +24,45 @@ accept="application/zip,application/x-zip-compressed" [desiredFileName]="'Task ' + taskDefinition.abbreviation + ' Overseer zip'" /> + @if (taskDefinition.hasTaskAssessmentResources) { +
+ + +
+ } -
+
diff --git a/src/app/units/states/edit/directives/unit-tasks-editor/task-definition-editor/task-definition-overseer/task-definition-overseer.component.ts b/src/app/units/states/edit/directives/unit-tasks-editor/task-definition-editor/task-definition-overseer/task-definition-overseer.component.ts index 0cf7764274..d3de432e9f 100644 --- a/src/app/units/states/edit/directives/unit-tasks-editor/task-definition-editor/task-definition-overseer/task-definition-overseer.component.ts +++ b/src/app/units/states/edit/directives/unit-tasks-editor/task-definition-editor/task-definition-overseer/task-definition-overseer.component.ts @@ -11,6 +11,7 @@ import { import { TaskDefinition } from 'src/app/api/models/task-definition'; import { Unit } from 'src/app/api/models/unit'; import { TaskDefinitionService } from 'src/app/api/services/task-definition.service'; +import { FileDownloaderService } from 'src/app/common/file-downloader/file-downloader.service'; import { TaskAssessmentModalService } from 'src/app/common/modals/task-assessment-modal/task-assessment-modal.service'; import { AlertService } from 'src/app/common/services/alert.service'; import { TaskSubmissionService } from 'src/app/common/services/task-submission.service'; @@ -31,7 +32,8 @@ export class TaskDefinitionOverseerComponent implements OnChanges { private modalService: TaskAssessmentModalService, private submissions: TaskSubmissionService, private userService: UserService, - private taskDefinitionService: TaskDefinitionService + private taskDefinitionService: TaskDefinitionService, + private fileDownloaderService: FileDownloaderService, ) {} public get overseerEnabled(): boolean { @@ -86,18 +88,38 @@ export class TaskDefinitionOverseerComponent implements OnChanges { }); } + public removeOverseerResources() { + this.taskDefinition.deleteOverseerResources().subscribe({ + next: () => { + this.alerts.success('Deleted Overseer Resources', 2000); + this.taskDefinition.hasTaskAssessmentResources = false; + } + }); + } + + public downloadOverseerResources() { + this.fileDownloaderService.downloadFile( + this.taskDefinition.getTaskPDFUrl(), + this.taskDefinition.name + '.pdf', + ); + } + + public uploadOverseerResources(files: FileList) { const validFiles = Array.from(files as ArrayLike).filter( (f) => f.type === 'application/zip' || f.type === 'application/x-zip-compressed', ); if (validFiles.length > 0) { const file = validFiles[0]; - this.taskDefinitionService.uploadTaskResources(this.taskDefinition, file).subscribe({ - next: () => this.alerts.success('Uploaded task sheet', 2000), + this.taskDefinitionService.uploadOverseerResources(this.taskDefinition, file).subscribe({ + next: () => { + this.alerts.success('Uploaded Overseer Resources', 2000); + this.taskDefinition.hasTaskAssessmentResources = true; + }, error: (message) => this.alerts.error(message, 6000), }); } else { - this.alerts.error('Please drop a PDF to upload for this task', 6000); + this.alerts.error('Please drop a zip with scripts for this task to upload', 6000); } } } From 8a0ca1cdc42890c317d4a143f1277b184a6a9be8 Mon Sep 17 00:00:00 2001 From: Andrew Cain Date: Thu, 6 Mar 2025 20:37:14 +1100 Subject: [PATCH 06/14] chore: add proxy for running in dev using compose --- package.json | 2 ++ proxy-compose.conf.json | 6 ++++++ 2 files changed, 8 insertions(+) create mode 100644 proxy-compose.conf.json diff --git a/package.json b/package.json index a3e5c190a1..fe262a3f69 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,9 @@ "lint:fix": "ng lint --fix", "lint": "ng lint", "serve:angular17": "export NODE_OPTIONS=--max_old_space_size=4096 && ng serve --configuration $NODE_ENV --proxy-config proxy.conf.json", + "serve:angular17-compose": "export NODE_OPTIONS=--max_old_space_size=4096 && ng serve --configuration $NODE_ENV --proxy-config proxy-compose.conf.json", "start": "npm-run-all -l -s build:angular1 serve:angular17", + "start-compose": "npm-run-all -l -s build:angular1 serve:angular17-compose", "watch:angular1": "grunt delta", "deploy:build2api": "ng build --delete-output-path=true --optimization=true --configuration production --output-path dist", "deploy": "run-s -l build:angular1 deploy:build2api", diff --git a/proxy-compose.conf.json b/proxy-compose.conf.json new file mode 100644 index 0000000000..4b62591235 --- /dev/null +++ b/proxy-compose.conf.json @@ -0,0 +1,6 @@ +{ + "/api": { + "target": "http://doubtfire-api:3000", + "secure": false + } +} From d224680eeb8f57460f6b3990140cc5dad0e759a0 Mon Sep 17 00:00:00 2001 From: Andrew Cain Date: Fri, 7 Mar 2025 21:18:44 +1100 Subject: [PATCH 07/14] chore(release): 8.0.36 --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a17667d20..975163dc71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [8.0.36](https://github.com/macite/doubtfire-deploy/compare/v8.0.35...v8.0.36) (2025-03-07) + + +### Bug Fixes + +* overseer image admin in unit and task ([72c89b3](https://github.com/macite/doubtfire-deploy/commit/72c89b30cca426d56c7efbbac34e00fd734fe714)) + ### [8.0.35](https://github.com/macite/doubtfire-deploy/compare/v8.0.34...v8.0.35) (2025-02-28) diff --git a/package-lock.json b/package-lock.json index d88d723428..b0f8bb6ef3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "doubtfire", - "version": "8.0.35", + "version": "8.0.36", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "doubtfire", - "version": "8.0.35", + "version": "8.0.36", "license": "AGPL-3.0", "dependencies": { "@angular/animations": "^17.3.6", diff --git a/package.json b/package.json index fe262a3f69..219f72d7ef 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "doubtfire", - "version": "8.0.35", + "version": "8.0.36", "homepage": "http://github.com/doubtfire-lms/", "description": "Learning and feedback tool.", "license": "AGPL-3.0", From a1e4d71b34733bc53cd2cfa63ee1e70f8f43386f Mon Sep 17 00:00:00 2001 From: Andrew Cain Date: Mon, 10 Mar 2025 20:04:27 +1100 Subject: [PATCH 08/14] fix: ensure overseer download get resources zip --- src/app/api/models/task-definition.ts | 2 +- .../task-definition-overseer.component.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/api/models/task-definition.ts b/src/app/api/models/task-definition.ts index 9bda428e75..934d8d6df6 100644 --- a/src/app/api/models/task-definition.ts +++ b/src/app/api/models/task-definition.ts @@ -208,7 +208,7 @@ export class TaskDefinition extends Entity { }/task_assessment_resources`; } - public getTaskAssessmentResourcesUrl(): string { + public getOverseerResourcesUrl(): string { return `${AppInjector.get(DoubtfireConstants).API_URL}/units/${this.unit.id}/task_definitions/${ this.id }/task_assessment_resources.json`; diff --git a/src/app/units/states/edit/directives/unit-tasks-editor/task-definition-editor/task-definition-overseer/task-definition-overseer.component.ts b/src/app/units/states/edit/directives/unit-tasks-editor/task-definition-editor/task-definition-overseer/task-definition-overseer.component.ts index d3de432e9f..597296d707 100644 --- a/src/app/units/states/edit/directives/unit-tasks-editor/task-definition-editor/task-definition-overseer/task-definition-overseer.component.ts +++ b/src/app/units/states/edit/directives/unit-tasks-editor/task-definition-editor/task-definition-overseer/task-definition-overseer.component.ts @@ -99,8 +99,8 @@ export class TaskDefinitionOverseerComponent implements OnChanges { public downloadOverseerResources() { this.fileDownloaderService.downloadFile( - this.taskDefinition.getTaskPDFUrl(), - this.taskDefinition.name + '.pdf', + this.taskDefinition.getOverseerResourcesUrl(), + this.taskDefinition.name + '.zip', ); } From 54ac9243265ff2302939c83e59b5a0c1f2692dc1 Mon Sep 17 00:00:00 2001 From: Andrew Cain Date: Mon, 10 Mar 2025 20:06:06 +1100 Subject: [PATCH 09/14] chore(release): 8.0.37 --- CHANGELOG.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 975163dc71..b15ccc9c5d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [8.0.37](https://github.com/macite/doubtfire-deploy/compare/v8.0.36...v8.0.37) (2025-03-10) + + +### Bug Fixes + +* ensure overseer download get resources zip ([a1e4d71](https://github.com/macite/doubtfire-deploy/commit/a1e4d71b34733bc53cd2cfa63ee1e70f8f43386f)) + ### [8.0.36](https://github.com/macite/doubtfire-deploy/compare/v8.0.35...v8.0.36) (2025-03-07) diff --git a/package-lock.json b/package-lock.json index b0f8bb6ef3..fdc977e148 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "doubtfire", - "version": "8.0.36", + "version": "8.0.37", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "doubtfire", - "version": "8.0.36", + "version": "8.0.37", "license": "AGPL-3.0", "dependencies": { "@angular/animations": "^17.3.6", diff --git a/package.json b/package.json index 219f72d7ef..b8bc8a0e0e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "doubtfire", - "version": "8.0.36", + "version": "8.0.37", "homepage": "http://github.com/doubtfire-lms/", "description": "Learning and feedback tool.", "license": "AGPL-3.0", From 5141529b1ed37f8ca254e89e1b91edac3139f166 Mon Sep 17 00:00:00 2001 From: Andrew Cain Date: Mon, 17 Mar 2025 09:56:11 +1100 Subject: [PATCH 10/14] feat: add option for institution logo Embedded top left in toolbar. --- src/app/common/header/header.component.html | 6 +++ src/app/common/header/header.component.ts | 37 +++++++++++++++--- .../config/constants/doubtfire-constants.ts | 24 ++++++++++++ src/assets/images/institution-logo.png | Bin 0 -> 2278 bytes 4 files changed, 62 insertions(+), 5 deletions(-) create mode 100644 src/assets/images/institution-logo.png diff --git a/src/app/common/header/header.component.html b/src/app/common/header/header.component.html index bac6b77c07..f6bb52f08c 100644 --- a/src/app/common/header/header.component.html +++ b/src/app/common/header/header.component.html @@ -5,6 +5,12 @@ style="min-height: 85px" > @if (!media.isActive('xs')) { + @if (logoSettings.hasLogo) { + + + + } + {}, + error: (err) => { + console.log(`Error showing header: ${err}`); + }, }), ); @@ -64,7 +73,9 @@ export class HeaderComponent implements OnInit, OnDestroy { .transform(this.unitRoles) .filter((role) => this.isUniqueRole(role)); }, - error: (err) => {}, + error: (err) => { + console.log(`Error fetching unit roles: ${err}`); + }, }), ); @@ -74,7 +85,9 @@ export class HeaderComponent implements OnInit, OnDestroy { if (projects == null) return; this.projects = projects.filter((project) => project.unit.myRole === 'Student'); }, - error: (err) => {}, + error: (err) => { + console.log(`Error fetching projects: ${err}`); + }, }), ); @@ -94,7 +107,21 @@ export class HeaderComponent implements OnInit, OnDestroy { } }, // eslint-disable-next-line @typescript-eslint/no-unused-vars - error: (_err) => {}, + error: (err) => { + console.log(`Error on switching view and entity: ${err}`); + }, + }), + ); + + // Subscribe to logo changes + this.subscriptions.push( + this.doubtfireConstants.LogoSettings.subscribe({ + next: (settings) => { + this.logoSettings = settings; + }, + error: (err) => { + console.log(`Error getting settings: ${err}`); + } }), ); } diff --git a/src/app/config/constants/doubtfire-constants.ts b/src/app/config/constants/doubtfire-constants.ts index 32f05ac739..67a8bbea42 100644 --- a/src/app/config/constants/doubtfire-constants.ts +++ b/src/app/config/constants/doubtfire-constants.ts @@ -6,11 +6,20 @@ import API_URL from 'src/app/config/constants/apiURL'; interface SettingsResponseFormat { externalName: string; + hasLogo: boolean; + logoUrl: string; + logoLinkUrl: string; overseerEnabled: boolean; tiiEnabled: boolean; d2lEnabled: boolean; } +export interface LogoSettings { + hasLogo: boolean; + logoUrl: string; + logoLinkUrl: string; +} + interface SignOutUrlResponseFormat { auth_signout_url: string; } @@ -43,6 +52,15 @@ export class DoubtfireConstants { */ public IsD2LEnabled: BehaviorSubject = new BehaviorSubject(false); + /** + * Details on the logo + */ + public LogoSettings: BehaviorSubject = new BehaviorSubject({ + hasLogo: false, + logoUrl: '/assets/images/institution-logo.png', + logoLinkUrl: '/', + }); + /** * Whether or not the TurnItIn integration is enabled. */ @@ -73,6 +91,12 @@ export class DoubtfireConstants { this.IsOverseerEnabled.next(result.overseerEnabled); this.IsTiiEnabled.next(result.tiiEnabled); this.IsD2LEnabled.next(result.d2lEnabled); + + this.LogoSettings.next({ + hasLogo: result.hasLogo, + logoUrl: result.logoUrl, + logoLinkUrl: result.logoLinkUrl + }); }); } } diff --git a/src/assets/images/institution-logo.png b/src/assets/images/institution-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b1d13c1071e991cab1c7ade45a7c3319e04ef289 GIT binary patch literal 2278 zcmZ`)3pkVQ8-JNYW+If$aprUSv`v_#jmqRu4y|%1CWjfHW@{V6@wV`%3LYIri^BsYIcq_=n|tS3Y(1zy8m4-S2%r_xt(@wSR|)yKuwqSIJn8B__&0+xdFd|_9{S5N)CWXAOMJ$ zQeC#CKwA@#{ptq*FDb1Rn=EDW9iI^n$Sh+*K`mL%pn&XU4JnrT9}Wd}tfk$7fEs4a=O zeVGpK2&gbNn_-K^ayT3e#}Y$lQn4F0ZQ6u2x4>Fhpg{zh6&uM8j6p}T488^VHx7}) z3TB2g*x~d@q$F-&5Iu@bK%pdwR@S#V+2NtzGexqNj|CnOD|v(6fHB9e#0IH&iPx4y zVbKppNy6`q3}@R};J<=@c7MIH{m2gPGo25krJgT65V z0NIBw#I1Y6WG4%DID73^zayN*C@D1TtS9Y?PYTQO;%BPjYLkzQl&SY6rz7)`6>uoR zmExiKk@SnPp&P$l+h==u_?kCccAV=VAIZ-nT%N*uafT0f&zZ(&MA+C+8LbV2U*1K{ zlDQX`_7(MZ7uhe>>BxJeor|7CHLz5Q@!r<;xq3N>>3cP-md@xmMefvBmeN%6hL z2qcku>Z#rAY(AIEJ$>rbYHgchE7Z%;(NaAf9g5GcUC9R*)HO6LMI|3isZ^?-UQu&% z^G5p65mU&P@0m7U!jJ7aXU^qtd{KhGK)8!N>%qIcEN%+u4;tGtB+fo}(e z8j7Mn&}OEldFONV?5#I$EV55bU@&T1TAr>eUSGYh!S(JE^tz&>(fviSnD&X7TToC? zSxF5DC=yVFO`LbPpG?2F;~4w?*;ZcjTDfFHVlUV-M_*4*VD#^kmbP+v7j z)=p?D7LCU3Jd{3WIB-uS%Hzhx!QhBT1oi2^_=CcL)JuxB5zq=qbM*6eS$I}FOhMs! z@CTK&DqBn2(ol|2?+_V=VeYvAvU{~DT2eYJ2aA3^LhSLl^t=YHW0E?XtuDhkUl=t z!gXpEslR+YFko$A!JM7&l|4Ix^{pc+t$FsJ&77$*%{-m=ns>vR$X4aL(n%ggcKTa9 zpbCgXRlhlJSi8B7IPT~f4U0oC55LNWuG~>A3w??^!w$c#DT`!zEtWq_=uQfh)xb?7! zp{n7COxe)AV?ATie|r1-UyP`$uU8_!;9rC5l!cV;KYX0|q^~b6=iG(C8hs;G-TJj<2<&$*d-|h_cq2IsbO1q(t8ruB+>AZf#`+ zpD?c$3SYaG)SjMC#NEf}R`Q~wqE6OMBn>i|%p-NdcaFK}A@#~;9@bNptu7@lC0Lb1 z{0&!MsIKng+~TudcV)`i_mJ)4J{}2myyMrFAikGxHa$H}di3!;g74tqP-3lidy;CR zqtaJZm}+!1E6e>1-o>H&W^QnB@VLH>@!@q7NHly$$C|Eyy?Y&Vw$mz1OXO=VUaXM! z!krm{THJ0sF1on?s%qTv!QM)b8BR)q&r(g91wm=yf%lq6kFU^rajv5|N-}e^llujp z$FEdwcd@)2J-M&p}3} zsxom2%6MPyl%Dj;VGlLz?dO@-yv`2BJVs;pjdBt0V4?n@&h;5}w5REYre)H#{zrK! z2Hg9@?y!l{O79VkFIpq_&R>9uF2NQ^jqUC2quoXHK_q-^QB;8a<>+;VrVift>oW^yNnX$@7Hk|2z0~h0`N6w5x)W=*9Z2~H8Qi2g literal 0 HcmV?d00001 From e065c46c3fe6689a7b295a3f91a576eabc11f7bd Mon Sep 17 00:00:00 2001 From: Andrew Cain Date: Fri, 21 Mar 2025 10:51:20 +1100 Subject: [PATCH 11/14] fix: reply to position and wrapping --- .../task-comment-composer.component.html | 26 +++++++++---------- .../task-comments-viewer.component.scss | 2 +- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/app/tasks/task-comment-composer/task-comment-composer.component.html b/src/app/tasks/task-comment-composer/task-comment-composer.component.html index 448f88f46c..c1bb1e7014 100644 --- a/src/app/tasks/task-comment-composer/task-comment-composer.component.html +++ b/src/app/tasks/task-comment-composer/task-comment-composer.component.html @@ -11,21 +11,19 @@ @if (task) {
-
-
- Replying to: - {{ originalComment !== null ? originalComment.author.name : '' }} - -
-

{{ originalComment !== null ? originalComment.text : '' }}

+
+ + Replying to: + {{ originalComment !== null ? originalComment.author.name : '' }}
+

{{ originalComment !== null ? originalComment.text : '' }}

} diff --git a/src/app/tasks/task-comments-viewer/task-comments-viewer.component.scss b/src/app/tasks/task-comments-viewer/task-comments-viewer.component.scss index a1b4811941..5f78a88a4c 100644 --- a/src/app/tasks/task-comments-viewer/task-comments-viewer.component.scss +++ b/src/app/tasks/task-comments-viewer/task-comments-viewer.component.scss @@ -230,7 +230,7 @@ $comment-inner-border-radius: 4px; overflow-y: hidden; -webkit-box-orient: vertical; -webkit-font-smoothing: antialiased; - overflow-wrap: break-word; + overflow-wrap: anywhere; text-align: left; text-rendering: optimizelegibility; user-select: text; From 92ecdfb7013f8da3b30c87b523b24068782138bb Mon Sep 17 00:00:00 2001 From: Andrew Cain Date: Fri, 21 Mar 2025 10:52:03 +1100 Subject: [PATCH 12/14] chore: remove unused old angular tools --- package-lock.json | 442 +----------------- package.json | 3 - src/app/config/config.coffee | 1 - .../config/local-storage/local-storage.coffee | 7 - .../vendor-dependencies.coffee | 3 - src/app/doubtfire-angularjs.module.ts | 4 - 6 files changed, 9 insertions(+), 451 deletions(-) delete mode 100644 src/app/config/local-storage/local-storage.coffee diff --git a/package-lock.json b/package-lock.json index fdc977e148..0ecc508840 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,10 +31,7 @@ "@uirouter/core": "^6.1.0", "@uirouter/rx": "^1.0.0", "angular": "1.5.11", - "angular-cookies": "1.5.11", - "angular-file-upload": "~1", "angular-filter": "0.5.17", - "angular-local-storage": "0.7.1", "angular-markdown-filter": "1.3.2", "angular-md5": "0.1.10", "angular-mocks": "1.5.11", @@ -5685,6 +5682,7 @@ }, "node_modules/abbrev": { "version": "1.1.1", + "dev": true, "license": "ISC" }, "node_modules/accepts": { @@ -5883,408 +5881,10 @@ "stable": "~0.1.3" } }, - "node_modules/amdefine": { - "version": "1.0.1", - "license": "BSD-3-Clause OR MIT", - "engines": { - "node": ">=0.4.2" - } - }, "node_modules/angular": { "version": "1.5.11", "license": "MIT" }, - "node_modules/angular-cookies": { - "version": "1.5.11", - "license": "MIT" - }, - "node_modules/angular-file-upload": { - "version": "1.1.6", - "dependencies": { - "coffee-script": "~1.6.2", - "grunt": "~0.4.1", - "grunt-contrib-clean": "~0.4.0", - "grunt-contrib-concat": "~0.3.0", - "grunt-contrib-copy": "~0.4.1", - "grunt-contrib-uglify": "~0.2.1" - } - }, - "node_modules/angular-file-upload/node_modules/argparse": { - "version": "0.1.16", - "license": "MIT", - "dependencies": { - "underscore": "~1.7.0", - "underscore.string": "~2.4.0" - } - }, - "node_modules/angular-file-upload/node_modules/argparse/node_modules/underscore.string": { - "version": "2.4.0", - "engines": { - "node": "*" - } - }, - "node_modules/angular-file-upload/node_modules/async": { - "version": "0.1.22" - }, - "node_modules/angular-file-upload/node_modules/camelcase": { - "version": "1.2.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/angular-file-upload/node_modules/colors": { - "version": "0.6.2", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/angular-file-upload/node_modules/dateformat": { - "version": "1.0.2-1.2.3", - "engines": { - "node": "*" - } - }, - "node_modules/angular-file-upload/node_modules/esprima": { - "version": "1.0.4", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/angular-file-upload/node_modules/findup-sync": { - "version": "0.1.3", - "dependencies": { - "glob": "~3.2.9", - "lodash": "~2.4.1" - }, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/angular-file-upload/node_modules/findup-sync/node_modules/glob": { - "version": "3.2.11", - "license": "BSD", - "dependencies": { - "inherits": "2", - "minimatch": "0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/angular-file-upload/node_modules/findup-sync/node_modules/lodash": { - "version": "2.4.2", - "engines": [ - "node", - "rhino" - ], - "license": "MIT" - }, - "node_modules/angular-file-upload/node_modules/findup-sync/node_modules/minimatch": { - "version": "0.3.0", - "license": "MIT", - "dependencies": { - "lru-cache": "2", - "sigmund": "~1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/angular-file-upload/node_modules/getobject": { - "version": "0.1.0", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/angular-file-upload/node_modules/glob": { - "version": "3.1.21", - "license": "BSD", - "dependencies": { - "graceful-fs": "~1.2.0", - "inherits": "1", - "minimatch": "~0.2.11" - }, - "engines": { - "node": "*" - } - }, - "node_modules/angular-file-upload/node_modules/glob/node_modules/inherits": { - "version": "1.0.2" - }, - "node_modules/angular-file-upload/node_modules/graceful-fs": { - "version": "1.2.3", - "license": "BSD", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/angular-file-upload/node_modules/grunt": { - "version": "0.4.5", - "dependencies": { - "async": "~0.1.22", - "coffee-script": "~1.3.3", - "colors": "~0.6.2", - "dateformat": "1.0.2-1.2.3", - "eventemitter2": "~0.4.13", - "exit": "~0.1.1", - "findup-sync": "~0.1.2", - "getobject": "~0.1.0", - "glob": "~3.1.21", - "grunt-legacy-log": "~0.1.0", - "grunt-legacy-util": "~0.2.0", - "hooker": "~0.2.3", - "iconv-lite": "~0.2.11", - "js-yaml": "~2.0.5", - "lodash": "~0.9.2", - "minimatch": "~0.2.12", - "nopt": "~1.0.10", - "rimraf": "~2.2.8", - "underscore.string": "~2.2.1", - "which": "~1.0.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/angular-file-upload/node_modules/grunt-contrib-clean": { - "version": "0.4.1", - "engines": { - "node": ">= 0.8.0" - }, - "peerDependencies": { - "grunt": "~0.4.0" - } - }, - "node_modules/angular-file-upload/node_modules/grunt-contrib-concat": { - "version": "0.3.0", - "engines": { - "node": ">= 0.8.0" - }, - "peerDependencies": { - "grunt": "~0.4.0" - } - }, - "node_modules/angular-file-upload/node_modules/grunt-contrib-copy": { - "version": "0.4.1", - "engines": { - "node": ">= 0.8.0" - }, - "peerDependencies": { - "grunt": "~0.4.0" - } - }, - "node_modules/angular-file-upload/node_modules/grunt-contrib-uglify": { - "version": "0.2.7", - "dependencies": { - "grunt-lib-contrib": "~0.6.1", - "uglify-js": "~2.4.0" - }, - "engines": { - "node": ">= 0.8.0" - }, - "peerDependencies": { - "grunt": "~0.4.0" - } - }, - "node_modules/angular-file-upload/node_modules/grunt-legacy-log": { - "version": "0.1.3", - "license": "MIT", - "dependencies": { - "colors": "~0.6.2", - "grunt-legacy-log-utils": "~0.1.1", - "hooker": "~0.2.3", - "lodash": "~2.4.1", - "underscore.string": "~2.3.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/angular-file-upload/node_modules/grunt-legacy-log-utils": { - "version": "0.1.1", - "dependencies": { - "colors": "~0.6.2", - "lodash": "~2.4.1", - "underscore.string": "~2.3.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/angular-file-upload/node_modules/grunt-legacy-log-utils/node_modules/lodash": { - "version": "2.4.2", - "engines": [ - "node", - "rhino" - ], - "license": "MIT" - }, - "node_modules/angular-file-upload/node_modules/grunt-legacy-log/node_modules/lodash": { - "version": "2.4.2", - "engines": [ - "node", - "rhino" - ], - "license": "MIT" - }, - "node_modules/angular-file-upload/node_modules/grunt-legacy-util": { - "version": "0.2.0", - "dependencies": { - "async": "~0.1.22", - "exit": "~0.1.1", - "getobject": "~0.1.0", - "hooker": "~0.2.3", - "lodash": "~0.9.2", - "underscore.string": "~2.2.1", - "which": "~1.0.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/angular-file-upload/node_modules/grunt-legacy-util/node_modules/underscore.string": { - "version": "2.2.1", - "engines": { - "node": "*" - } - }, - "node_modules/angular-file-upload/node_modules/grunt/node_modules/coffee-script": { - "version": "1.3.3", - "bin": { - "cake": "bin/cake", - "coffee": "bin/coffee" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/angular-file-upload/node_modules/grunt/node_modules/underscore.string": { - "version": "2.2.1", - "engines": { - "node": "*" - } - }, - "node_modules/angular-file-upload/node_modules/iconv-lite": { - "version": "0.2.11", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/angular-file-upload/node_modules/js-yaml": { - "version": "2.0.5", - "license": "MIT", - "dependencies": { - "argparse": "~ 0.1.11", - "esprima": "~ 1.0.2" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - }, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/angular-file-upload/node_modules/lodash": { - "version": "0.9.2", - "engines": [ - "node", - "rhino" - ], - "license": "MIT" - }, - "node_modules/angular-file-upload/node_modules/lru-cache": { - "version": "2.7.3", - "license": "ISC" - }, - "node_modules/angular-file-upload/node_modules/minimatch": { - "version": "0.2.14", - "license": "MIT", - "dependencies": { - "lru-cache": "2", - "sigmund": "~1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/angular-file-upload/node_modules/nopt": { - "version": "1.0.10", - "license": "MIT", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/angular-file-upload/node_modules/rimraf": { - "version": "2.2.8", - "license": "MIT", - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/angular-file-upload/node_modules/source-map": { - "version": "0.1.34", - "dependencies": { - "amdefine": ">=0.0.4" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/angular-file-upload/node_modules/uglify-js": { - "version": "2.4.24", - "license": "BSD", - "dependencies": { - "async": "~0.2.6", - "source-map": "0.1.34", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.5.4" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/angular-file-upload/node_modules/uglify-js/node_modules/async": { - "version": "0.2.10" - }, - "node_modules/angular-file-upload/node_modules/underscore": { - "version": "1.7.0" - }, - "node_modules/angular-file-upload/node_modules/which": { - "version": "1.0.9", - "license": "ISC", - "bin": { - "which": "bin/which" - } - }, - "node_modules/angular-file-upload/node_modules/wordwrap": { - "version": "0.0.2", - "license": "MIT/X11", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/angular-file-upload/node_modules/yargs": { - "version": "3.5.4", - "license": "MIT/X11", - "dependencies": { - "camelcase": "^1.0.2", - "decamelize": "^1.0.0", - "window-size": "0.1.0", - "wordwrap": "0.0.2" - } - }, "node_modules/angular-filter": { "version": "0.5.17", "license": "MIT", @@ -6295,10 +5895,6 @@ "node": ">=0.10.0" } }, - "node_modules/angular-local-storage": { - "version": "0.7.1", - "license": "MIT" - }, "node_modules/angular-markdown-filter": { "version": "1.3.2", "license": "MIT", @@ -7783,16 +7379,6 @@ "version": "5.65.0", "license": "MIT" }, - "node_modules/coffee-script": { - "version": "1.6.3", - "bin": { - "cake": "bin/cake", - "coffee": "bin/coffee" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/coffeelint": { "version": "1.16.2", "dev": true, @@ -10031,6 +9617,7 @@ }, "node_modules/eventemitter2": { "version": "0.4.14", + "dev": true, "license": "MIT" }, "node_modules/eventemitter3": { @@ -10070,6 +9657,7 @@ }, "node_modules/exit": { "version": "0.1.2", + "dev": true, "engines": { "node": ">= 0.8.0" } @@ -12038,15 +11626,6 @@ "node": "*" } }, - "node_modules/grunt-lib-contrib": { - "version": "0.6.1", - "dependencies": { - "zlib-browserify": "0.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/grunt-newer": { "version": "1.3.0", "dev": true, @@ -12483,6 +12062,7 @@ }, "node_modules/hooker": { "version": "0.2.3", + "dev": true, "engines": { "node": "*" } @@ -20009,10 +19589,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sigmund": { - "version": "1.0.1", - "license": "ISC" - }, "node_modules/signal-exit": { "version": "3.0.7", "license": "ISC" @@ -21597,7 +21173,9 @@ }, "node_modules/uglify-to-browserify": { "version": "1.0.2", - "license": "MIT" + "dev": true, + "license": "MIT", + "optional": true }, "node_modules/unbox-primitive": { "version": "1.0.2", @@ -22536,6 +22114,8 @@ }, "node_modules/window-size": { "version": "0.1.0", + "dev": true, + "optional": true, "engines": { "node": ">= 0.8.0" } @@ -22772,10 +22352,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/zlib-browserify": { - "version": "0.0.1", - "license": "MIT" - }, "node_modules/zone.js": { "version": "0.14.5", "license": "MIT", diff --git a/package.json b/package.json index b8bc8a0e0e..226d4856db 100644 --- a/package.json +++ b/package.json @@ -50,10 +50,7 @@ "@uirouter/core": "^6.1.0", "@uirouter/rx": "^1.0.0", "angular": "1.5.11", - "angular-cookies": "1.5.11", - "angular-file-upload": "~1", "angular-filter": "0.5.17", - "angular-local-storage": "0.7.1", "angular-markdown-filter": "1.3.2", "angular-md5": "0.1.10", "angular-mocks": "1.5.11", diff --git a/src/app/config/config.coffee b/src/app/config/config.coffee index 853d046373..b7699efbf5 100644 --- a/src/app/config/config.coffee +++ b/src/app/config/config.coffee @@ -7,7 +7,6 @@ # angular.module('doubtfire.config', [ 'doubtfire.config.vendor-dependencies' - 'doubtfire.config.local-storage' 'doubtfire.config.routing' 'doubtfire.config.analytics' 'doubtfire.config.runtime' diff --git a/src/app/config/local-storage/local-storage.coffee b/src/app/config/local-storage/local-storage.coffee deleted file mode 100644 index f6b5c0403e..0000000000 --- a/src/app/config/local-storage/local-storage.coffee +++ /dev/null @@ -1,7 +0,0 @@ -angular.module('doubtfire.config.local-storage', []) -# -# Local Storage Configuration -# -.config((localStorageServiceProvider) -> - localStorageServiceProvider.setPrefix('doubtfire') -) diff --git a/src/app/config/vendor-dependencies/vendor-dependencies.coffee b/src/app/config/vendor-dependencies/vendor-dependencies.coffee index 5d91403d40..2d1aca3a25 100644 --- a/src/app/config/vendor-dependencies/vendor-dependencies.coffee +++ b/src/app/config/vendor-dependencies/vendor-dependencies.coffee @@ -4,7 +4,6 @@ # angular.module('doubtfire.config.vendor-dependencies', [ # ng* - 'ngCookies' 'ngCsv' 'ngSanitize' @@ -18,13 +17,11 @@ angular.module('doubtfire.config.vendor-dependencies', [ 'ui.codemirror' # other libraries - 'angularFileUpload' 'angular.filter' 'localization' 'markdown' 'nvd3' 'xeditable' - 'LocalStorageModule' 'angular-md5' # analytics diff --git a/src/app/doubtfire-angularjs.module.ts b/src/app/doubtfire-angularjs.module.ts index c7b5c2502c..26e631048f 100644 --- a/src/app/doubtfire-angularjs.module.ts +++ b/src/app/doubtfire-angularjs.module.ts @@ -10,12 +10,9 @@ import {downgradeInjectable, downgradeComponent} from '@angular/upgrade/static'; // Here are the old angular node modules, previously loaded via grunt //#region -import 'angular-cookies/angular-cookies.js'; -import 'angular-local-storage/dist/angular-local-storage.js'; import 'angular-resource/angular-resource.js'; import 'angular-ui-bootstrap/ui-bootstrap-tpls.js'; import 'angular-nvd3/dist/angular-nvd3.js'; -import 'angular-file-upload/angular-file-upload.js'; import 'ng-file-upload/dist/ng-file-upload-all.min.js'; import 'angular-sanitize/angular-sanitize.js'; import 'ng-csv/build/ng-csv.js'; @@ -57,7 +54,6 @@ import 'build/src/app/config/privacy-policy/privacy-policy.js'; import 'build/src/app/config/runtime/runtime.js'; import 'build/src/app/config/config.js'; import 'build/src/app/config/root-controller/root-controller.js'; -import 'build/src/app/config/local-storage/local-storage.js'; import 'build/src/app/config/routing/routing.js'; import 'build/src/app/config/vendor-dependencies/vendor-dependencies.js'; import 'build/src/app/config/analytics/analytics.js'; From f705851107c24bd6790cab9b140463ed986239e6 Mon Sep 17 00:00:00 2001 From: Atharv Bhandare Date: Wed, 2 Apr 2025 12:17:08 +1100 Subject: [PATCH 13/14] wip: committing package.json files before reviewing visualisation-service --- package-lock.json | 1474 +++++++++++++++++++++++++++++++++++++-------- package.json | 4 +- 2 files changed, 1226 insertions(+), 252 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0ecc508840..788783ac2d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -146,10 +146,12 @@ "node": ">=20.9.0" }, "optionalDependencies": { + "@esbuild/linux-x64": "0.25.1", "@nx/nx-darwin-arm64": "^18.0", "@nx/nx-darwin-x64": "^18.0", "@nx/nx-linux-x64-gnu": "^18.0", - "@nx/nx-win32-x64-msvc": "^18.0" + "@nx/nx-win32-x64-msvc": "^18.0", + "@rollup/rollup-linux-x64-gnu": "*" } }, "node_modules/@alloc/quick-lru": { @@ -3160,399 +3162,750 @@ "node": "^14 || ^16 || ^17 || ^18" } }, - "node_modules/@esbuild/linux-arm64": { + "node_modules/@esbuild/aix-ppc64": { "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.1.tgz", + "integrity": "sha512-m55cpeupQ2DbuRGQMMZDzbv9J9PgVelPjlcmM5kxHnrBdBx6REaEd7LamYV7Dm8N7rCyR/XwU6rVP8ploKtIkA==", "cpu": [ - "arm64" + "ppc64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ - "linux" + "aix" ], "engines": { "node": ">=12" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", + "node_modules/@esbuild/android-arm": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.1.tgz", + "integrity": "sha512-4j0+G27/2ZXGWR5okcJi7pQYhmkVgb4D7UKwxcqrjhvp5TKWx3cUjgB1CGj1mfdmJBQ9VnUGgUhign+FPF2Zgw==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": ">=12" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", + "node_modules/@esbuild/android-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.1.tgz", + "integrity": "sha512-hCnXNF0HM6AjowP+Zou0ZJMWWa1VkD77BXe959zERgGJBBxB+sV+J9f/rcjeg2c5bsukD/n17RKWXGFCO5dD5A==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=12" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", + "node_modules/@esbuild/android-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.1.tgz", + "integrity": "sha512-MSfZMBoAsnhpS+2yMFYIQUPs8Z19ajwfuaSZx+tSl09xrHZCjbeXXMsUF/0oq7ojxYEpsSo4c0SfjxOYXRbpaA==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=12" } }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.1.tgz", + "integrity": "sha512-Ylk6rzgMD8klUklGPzS414UQLa5NPXZD5tf8JmQU8GQrj6BrFA/Ic9tb2zRe1kOZyCbGl+e8VMbDRazCEBqPvA==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.1.tgz", + "integrity": "sha512-pFIfj7U2w5sMp52wTY1XVOdoxw+GDwy9FsK3OFz4BpMAjvZVs0dT1VXs8aQm22nhwoIWUmIRaE+4xow8xfIDZA==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.1.tgz", + "integrity": "sha512-UyW1WZvHDuM4xDz0jWun4qtQFauNdXjXOtIy7SYdf7pbxSWWVlqhnR/T2TpX6LX5NI62spt0a3ldIIEkPM6RHw==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.1.tgz", + "integrity": "sha512-itPwCw5C+Jh/c624vcDd9kRCCZVpzpQn8dtwoYIt2TJF3S9xJLiRohnnNrKwREvcZYx0n8sCSbvGH349XkcQeg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/@esbuild/linux-arm": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.1.tgz", + "integrity": "sha512-LojC28v3+IhIbfQ+Vu4Ut5n3wKcgTu6POKIHN9Wpt0HnfgUGlBuyDDQR4jWZUZFyYLiz4RBBBmfU6sNfn6RhLw==", + "cpu": [ + "arm" + ], "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "*" + "node": ">=12" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.1", + "cpu": [ + "arm64" + ], "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/@eslint/js": { - "version": "8.57.0", + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.1.tgz", + "integrity": "sha512-4H/sQCy1mnnGkUt/xszaLlYJVTz3W9ep52xEefGtd6yXDQbz/5fZE5dFLUgsPdbUOQANcVUa5iO6g3nyy5BJiw==", + "cpu": [ + "ia32" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.1.tgz", + "integrity": "sha512-c0jgtB+sRHCciVXlyjDcWb2FUuzlGVRwGXgI+3WqKOIuoo8AmZAddzeOHeYLtD+dmtHw3B4Xo9wAUdjlfW5yYA==", + "cpu": [ + "loong64" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10.10.0" + "node": ">=12" } }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.1.tgz", + "integrity": "sha512-TgFyCfIxSujyuqdZKDZ3yTwWiGv+KnlOeXXitCQ+trDODJ+ZtGOzLkSWngynP0HZnTsDyBbPy7GWVXWaEl6lhA==", + "cpu": [ + "mips64el" + ], "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.1.tgz", + "integrity": "sha512-b+yuD1IUeL+Y93PmFZDZFIElwbmFfIKLKlYI8M6tRyzE6u7oEP7onGk0vZRh8wfVGC2dZoy0EqX1V8qok4qHaw==", + "cpu": [ + "ppc64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "*" + "node": ">=12" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.1.tgz", + "integrity": "sha512-wpDlpE0oRKZwX+GfomcALcouqjjV8MIX8DyTrxfyCfXxoKQSDm45CZr9fanJ4F6ckD4yDEPT98SrjvLwIqUCgg==", + "cpu": [ + "riscv64" + ], "dev": true, - "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node": ">=12" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.1.tgz", + "integrity": "sha512-5BepC2Au80EohQ2dBpyTquqGCES7++p7G+7lXe1bAIvMdXm4YYcEfZtQrP4gaoZ96Wv1Ute61CEHFU7h4FMueQ==", + "cpu": [ + "s390x" + ], "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=12" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "license": "MIT", + "node_modules/@esbuild/linux-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz", + "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=18" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "license": "MIT", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.1.tgz", + "integrity": "sha512-4fL68JdrLV2nVW2AaWZBv3XEm3Ae3NZn/7qy2KGAt3dexAgSVT+Hc97JKSZnqezgMlv9x6KV0ZkZY7UO5cNLCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "license": "MIT" + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.1.tgz", + "integrity": "sha512-GhRuXlvRE+twf2ES+8REbeCb/zeikNqwD3+6S5y5/x+DYbAQUNl0HNBs4RQJqrechS4v4MruEr8ZtAin/hK5iw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.1.tgz", + "integrity": "sha512-ZnWEyCM0G1Ex6JtsygvC3KUUrlDXqOihw8RicRuQAzw+c4f1D66YlPNNV3rkjVW90zXVsHwZYWbJh3v+oQFM9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.1.tgz", + "integrity": "sha512-QZ6gXue0vVQY2Oon9WyLFCdSuYbXSoxaZrPuJ4c20j6ICedfsDilNPYfHLlMH7vGfU5DQR0czHLmJvH4Nzis/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.1.tgz", + "integrity": "sha512-HzcJa1NcSWTAU0MJIxOho8JftNp9YALui3o+Ny7hCh0v5f90nprly1U3Sj1Ldj/CvKKdvvFsCRvDkpsEMp4DNw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", + "node_modules/@esbuild/win32-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.1.tgz", + "integrity": "sha512-0MBh53o6XtI6ctDnRMeQ+xoCN8kD2qI1rY1KgF/xdWQwoFeKou7puvDfV8/Wv4Ctx2rRpET/gGdz3YlNtNACSA==", + "cpu": [ + "x64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", "dev": true, "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, "engines": { - "node": ">=8" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "type-fest": "^0.20.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=6.0.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@jridgewell/resolve-uri": { + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=6.0.0" + "node": "*" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", "dev": true, - "license": "MIT", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=6.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", + "node_modules/@eslint/js": { + "version": "8.57.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", "dev": true, "license": "MIT", "dependencies": { @@ -4802,10 +5155,88 @@ "url": "https://opencollective.com/unts" } }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { + "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.17.2.tgz", + "integrity": "sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==", "cpu": [ - "arm64" + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.17.2.tgz", + "integrity": "sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.17.2.tgz", + "integrity": "sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.17.2.tgz", + "integrity": "sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.17.2.tgz", + "integrity": "sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.17.2.tgz", + "integrity": "sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.17.2", + "cpu": [ + "arm64" ], "dev": true, "license": "MIT", @@ -4826,6 +5257,109 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.17.2.tgz", + "integrity": "sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.17.2.tgz", + "integrity": "sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.17.2.tgz", + "integrity": "sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.38.0.tgz", + "integrity": "sha512-vPvNgFlZRAgO7rwncMeE0+8c4Hmc+qixnp00/Uv3ht2x7KYrJ6ERVd3/R0nUtlE6/hu7/HiiNHJ/rP6knRFt1w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.17.2.tgz", + "integrity": "sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.17.2.tgz", + "integrity": "sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.17.2.tgz", + "integrity": "sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.17.2.tgz", + "integrity": "sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@scarf/scarf": { "version": "1.3.0", "hasInstallScript": true, @@ -6711,6 +7245,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, "node_modules/bl": { "version": "4.1.0", "license": "MIT", @@ -9069,6 +9613,22 @@ "node": ">=12" } }, + "node_modules/esbuild/node_modules/@esbuild/linux-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.1.tgz", + "integrity": "sha512-5gRPk7pKuaIB+tmH+yKd2aQTRpqlf1E4f/mC+tawIm/CGJemZcHZpp2ic8oD83nKgUPMEd0fNanrnFljiruuyA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/escalade": { "version": "3.1.2", "license": "MIT", @@ -10007,6 +10567,13 @@ "dev": true, "license": "MIT" }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "node_modules/filelist": { "version": "1.0.4", "dev": true, @@ -10335,6 +10902,20 @@ "dev": true, "license": "ISC" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "license": "MIT", @@ -11309,6 +11890,25 @@ "node": ">=0.10.0" } }, + "node_modules/grunt-html2js/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "Upgrade to fsevents v2 to mitigate potential security issues", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, "node_modules/grunt-html2js/node_modules/glob-parent": { "version": "3.1.0", "dev": true, @@ -15187,6 +15787,13 @@ "thenify-all": "^1.0.0" } }, + "node_modules/nan": { + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz", + "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==", + "dev": true, + "optional": true + }, "node_modules/nanoid": { "version": "3.3.7", "dev": true, @@ -18861,6 +19468,19 @@ "fsevents": "~2.3.2" } }, + "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.17.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.17.2.tgz", + "integrity": "sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/run-async": { "version": "3.0.0", "license": "MIT", @@ -21555,6 +22175,150 @@ } } }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/vite/node_modules/@esbuild/linux-arm64": { "version": "0.19.12", "cpu": [ @@ -21570,6 +22334,214 @@ "node": ">=12" } }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/vite/node_modules/esbuild": { "version": "0.19.12", "dev": true, diff --git a/package.json b/package.json index 226d4856db..09cca7cb01 100644 --- a/package.json +++ b/package.json @@ -165,6 +165,8 @@ "@nx/nx-darwin-arm64": "^18.0", "@nx/nx-darwin-x64": "^18.0", "@nx/nx-linux-x64-gnu": "^18.0", - "@nx/nx-win32-x64-msvc": "^18.0" + "@nx/nx-win32-x64-msvc": "^18.0", + "@rollup/rollup-linux-x64-gnu": "*", + "@esbuild/linux-x64": "0.25.1" } } From c73e594521ac343b0aceef7186bb83f93390bf4c Mon Sep 17 00:00:00 2001 From: Atharv Bhandare Date: Sat, 19 Apr 2025 22:56:43 +1000 Subject: [PATCH 14/14] commented headers for content security policy in nginx --- nginx.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nginx.conf b/nginx.conf index 2c812d87e0..326da977a9 100644 --- a/nginx.conf +++ b/nginx.conf @@ -10,8 +10,8 @@ http { root /usr/share/nginx/html/; index index.html; listen 80; - - add_header Content-Security-Policy "default-src https: 'unsafe-inline' 'unsafe-eval' blob: data: ws:" always; + # Commenting out add_headers here so that it won't create over-ride conflict with the security headers mentioned in proxy-nginx.conf + # add_header Content-Security-Policy "default-src https: 'unsafe-inline' 'unsafe-eval' blob: data: ws:" always; # add_header Feature-Policy "microphone=(self),speaker=(self),fullscreen=(self),payment=(none);" always; add_header Permissions-Policy "microphone=(self),speaker=(self),fullscreen=(self),payment=(none)" always;