From 92505ad5e5faf1d1519686f88b817480e9cf85df Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 16 Mar 2024 23:17:56 +0000 Subject: [PATCH 1/7] feat(Dependencies): Update dependency follow-redirects to v1.15.6 [SECURITY] | datasource | package | from | to | | ---------- | ---------------- | ------ | ------ | | npm | follow-redirects | 1.15.4 | 1.15.6 | --- package-lock.json | 20 ++++++++++---------- package.json | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7a336625b8..0c48351763 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@denbi/cloud-portal-webapp", - "version": "4.808.0", + "version": "4.809.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@denbi/cloud-portal-webapp", - "version": "4.808.0", + "version": "4.809.0", "dependencies": { "@angular-eslint/eslint-plugin": "^16.0.3", "@angular/animations": "16.2.12", @@ -42,7 +42,7 @@ "d3": "7.8.5", "export-to-csv": "1.2.1", "file-saver": "2.0.5", - "follow-redirects": "1.15.4", + "follow-redirects": "1.15.6", "html2canvas": "1.4.1", "is-promise": "4.0.0", "jsnlog": "2.30.0", @@ -89,7 +89,7 @@ "eslint-config-airbnb-base": "15.0.0", "eslint-plugin-import": "^2.29.0", "eslint-plugin-jsdoc": "46.8.2", - "eslint-plugin-no-null": "*", + "eslint-plugin-no-null": "latest", "eslint-plugin-prefer-arrow": "1.2.3", "exports-loader": "4.0.0", "file-loader": "6.2.0", @@ -11339,9 +11339,9 @@ "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -28843,9 +28843,9 @@ "dev": true }, "follow-redirects": { - "version": "1.15.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", - "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==" + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, "font-family-papandreou": { "version": "0.2.0-patch2" diff --git a/package.json b/package.json index fd17418d6d..12c673659c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@denbi/cloud-portal-webapp", - "version": "4.808.0", + "version": "4.809.0", "description": "de.NBI Cloud Portal", "scripts": { "ng": "ng serve", @@ -52,7 +52,7 @@ "d3": "7.8.5", "export-to-csv": "1.2.1", "file-saver": "2.0.5", - "follow-redirects": "1.15.4", + "follow-redirects": "1.15.6", "html2canvas": "1.4.1", "is-promise": "4.0.0", "jsnlog": "2.30.0", From 763d37dde0413e5904ee45c39071b514300f6898 Mon Sep 17 00:00:00 2001 From: dweinholz Date: Tue, 19 Mar 2024 17:19:15 +0100 Subject: [PATCH 2/7] feat(Client):using extern simplevm ep for limits (#5997) * feat(Client):using extern simplevm ep for limits * linting * adjusted wiki link * linkcheck --------- Co-authored-by: denbicloud <46009071+denbicloud@users.noreply.github.com> Co-authored-by: vktrrdk --- .../application-base-class.component.ts | 171 ++++++++------- .../vo_manager/clients/client-limit.model.ts | 26 +++ src/app/vo_manager/clients/client.model.ts | 63 +++--- .../modals/client-limits..component.ts | 98 +-------- .../modals/client-limits.component.html | 195 +++++++++++------- src/links/check_links.sh | 2 +- src/links/links.ts | 2 +- 7 files changed, 270 insertions(+), 287 deletions(-) create mode 100644 src/app/vo_manager/clients/client-limit.model.ts diff --git a/src/app/shared/shared_modules/baseClass/application-base-class.component.ts b/src/app/shared/shared_modules/baseClass/application-base-class.component.ts index 55fc87ad99..4d488be035 100644 --- a/src/app/shared/shared_modules/baseClass/application-base-class.component.ts +++ b/src/app/shared/shared_modules/baseClass/application-base-class.component.ts @@ -9,7 +9,6 @@ import { FlavorService } from '../../../api-connector/flavor.service'; import { FacilityService } from '../../../api-connector/facility.service'; import { UserService } from '../../../api-connector/user.service'; import { FlavorTypeShortcuts } from './flavor-type-shortcuts'; -import { VolumeActionStates } from '../../../virtualmachines/volumes/volume-action-states.enum'; /** * Application base component.. @@ -21,54 +20,54 @@ import { VolumeActionStates } from '../../../virtualmachines/volumes/volume-acti }) export class ApplicationBaseClassComponent extends AbstractBaseClass { /** - * If all Applications are loaded, important for the loader. - * - * @type {boolean} - */ + * If all Applications are loaded, important for the loader. + * + * @type {boolean} + */ isLoaded: boolean = false; FlavorTypeShortcuts: typeof FlavorTypeShortcuts = FlavorTypeShortcuts; /** - * Selected Application. - */ + * Selected Application. + */ selectedApplication: Application; /** - * All available compute centers. - * - * @type {Array} - */ + * All available compute centers. + * + * @type {Array} + */ computeCenters: ComputecenterComponent[] = []; /** - * List of flavor types. - */ + * List of flavor types. + */ typeList: FlavorType[]; /** - * Total number of cores. - * - * @type {number} - */ + * Total number of cores. + * + * @type {number} + */ totalNumberOfCores: number = 0; /** - * Total number of ram. - * - * @type {number} - */ + * Total number of ram. + * + * @type {number} + */ totalRAM: number = 0; /** - * Total number of GPUs - */ + * Total number of GPUs + */ totalGPU: number = 0; newFlavors: { - [id: string]: { - counter: number - flavor: Flavor - } - } = {}; + [id: string]: { + counter: number + flavor: Flavor + } + } = {}; GPU_SHORTCUT = 'GPU'; HMF_SHORTCUT = 'HMF'; @@ -76,57 +75,57 @@ export class ApplicationBaseClassComponent extends AbstractBaseClass { extension_request: boolean = false; /** - * If shortname is valid. - * - * @type {boolean} - */ + * If shortname is valid. + * + * @type {boolean} + */ public wronginput: boolean = false; /** - * - */ + * + */ constantStrings: Object; /** - * List of flavors. - */ + * List of flavors. + */ flavorList: Flavor[] = []; extraResourceCommentRequired: boolean = false; /** - * If all userApplications are loaded, important for the loader. - * - * @type {boolean} - */ + * If all userApplications are loaded, important for the loader. + * + * @type {boolean} + */ isLoaded_userApplication: boolean = false; public project_application_pi_approved: boolean = false; /** - * Name of the project. - */ + * Name of the project. + */ public projectName: string; public project_application_report_allowed: boolean = false; /** - * Applications of the user viewing the Application overview. - * - * @type {Array} - */ + * Applications of the user viewing the Application overview. + * + * @type {Array} + */ user_applications: Application[] = []; constructor( - protected userService: UserService, - protected applicationsService: ApplicationsService, - protected facilityService: FacilityService, - private cdRef: ChangeDetectorRef, + protected userService: UserService, + protected applicationsService: ApplicationsService, + protected facilityService: FacilityService, + private cdRef: ChangeDetectorRef, ) { super(); } /** - * Gets all available compute centers and saves them in the computeCenters attribute. - */ + * Gets all available compute centers and saves them in the computeCenters attribute. + */ getComputeCenters(): void { this.facilityService.getComputeCenters().subscribe((result: [{ [key: string]: string }]): void => { for (const cc of result) { @@ -162,8 +161,8 @@ export class ApplicationBaseClassComponent extends AbstractBaseClass { if ( (entry?.flavor?.type?.shortcut.toUpperCase() === this.GPU_SHORTCUT - || entry?.flavor?.type?.shortcut.toUpperCase() === this.HMF_SHORTCUT) - && entry.counter > 0 + || entry?.flavor?.type?.shortcut.toUpperCase() === this.HMF_SHORTCUT) + && entry.counter > 0 ) { this.extraResourceCommentRequired = true; this.cdRef.detectChanges(); @@ -189,11 +188,11 @@ export class ApplicationBaseClassComponent extends AbstractBaseClass { } /** - * Get details of member like name and email by elixir. - * - * @param application - * @param collapse_id - */ + * Get details of member like name and email by elixir. + * + * @param application + * @param collapse_id + */ public getMemberDetailsByElixirIdIfCollapsed(application: Application, collapse_id: string): void { if (!this.getCollapseStatus(collapse_id)) { this.getMemberDetailsByElixirId(application); @@ -214,11 +213,11 @@ export class ApplicationBaseClassComponent extends AbstractBaseClass { } /** - * Get status name by status id. - * - * @param id - * @returns - */ + * Get status name by status id. + * + * @param id + * @returns + */ public getStatusById(id: number): string { const dummy: string = 'Unknown'; if (Application_States_Strings[Application_States[id]]) { @@ -229,20 +228,20 @@ export class ApplicationBaseClassComponent extends AbstractBaseClass { } /** - * Sets the selected application. - * - * @param application - */ + * Sets the selected application. + * + * @param application + */ setSelectedApplication(application: Application): void { this.selectedApplication = application; } /** - * Uses the param types to safe the available FlavorTypes to the array typeList. - * Also it fills the array collapseList with booleans of value 'false' so all flavor-categories are shown in the application form. - * - * @param types array of all available FlavorTypes - */ + * Uses the param types to safe the available FlavorTypes to the array typeList. + * Also it fills the array collapseList with booleans of value 'false' so all flavor-categories are shown in the application form. + * + * @param types array of all available FlavorTypes + */ setListOfTypes(types: FlavorType[]): void { let index: number = -1; for (let i: number = 0; i < types.length; i += 1) { @@ -261,17 +260,17 @@ export class ApplicationBaseClassComponent extends AbstractBaseClass { } /** - * Check if short name is valid. - * - * @param shortname - */ + * Check if short name is valid. + * + * @param shortname + */ public checkShortname(shortname: string): void { this.wronginput = !/^[a-zA-Z0-9\s]*$/.test(shortname); } /** - * Fills the array constantStrings with values dependent of keys which are used to indicate inputs from the application-form - */ + * Fills the array constantStrings with values dependent of keys which are used to indicate inputs from the application-form + */ generateConstants(): void { this.constantStrings = []; this.constantStrings['project_application_shortname'] = 'Shortname: '; @@ -308,13 +307,13 @@ export class ApplicationBaseClassComponent extends AbstractBaseClass { } /** - * This function concatenates a given key combined with a given value to a string - * which is used on the confirmation-modal. - * - * @param key the key to access a string in the array constantStrings - * @param val the value that is concatenated with the string from the array and an optional addition (depending on the key) - * @returns the concatenated string for the confirmation-modal - */ + * This function concatenates a given key combined with a given value to a string + * which is used on the confirmation-modal. + * + * @param key the key to access a string in the array constantStrings + * @param val the value that is concatenated with the string from the array and an optional addition (depending on the key) + * @returns the concatenated string for the confirmation-modal + */ matchString(key: string, val: string): string { if (key in this.constantStrings) { switch (key) { diff --git a/src/app/vo_manager/clients/client-limit.model.ts b/src/app/vo_manager/clients/client-limit.model.ts new file mode 100644 index 0000000000..4bf07b2bd3 --- /dev/null +++ b/src/app/vo_manager/clients/client-limit.model.ts @@ -0,0 +1,26 @@ +export class ClientLimit { + maxVolumes: number = 0; + assignedVolumes: number = 0; + currentUsedVolumes: number = 0; + newVolumes: number = 0; + + maxVMs: number = 0; + assignedVMs: number = 0; + currentUsedVms: number = 0; + newVms: number = 0; + + maxVolumeLimit: number = 0; + currentUsedVolumeStorage: number = 0; + assignedVolumesStorage: number = 0; + newVolumeLimit: number = 0; + + maxCores: number = 0; + assignedCores: number = 0; + currentUsedCores: number = 0; + newCores: number = 0; + + maxRam: number = 0; + assignedRam: number = 0; + currentUsedRam: number = 0; + newRam: number = 0; +} diff --git a/src/app/vo_manager/clients/client.model.ts b/src/app/vo_manager/clients/client.model.ts index 6a4b6b8549..7030ec197d 100644 --- a/src/app/vo_manager/clients/client.model.ts +++ b/src/app/vo_manager/clients/client.model.ts @@ -1,8 +1,9 @@ +import { ClientLimit } from './client-limit.model'; + /** * Clientclass */ export class Client { - id: string; host: string; status: string; @@ -10,30 +11,7 @@ export class Client { version: string; features: string[]; - maxVolumes: number; - assignedVolumes: number; - currentUsedVolumes: number; - newVolumes: number; - - maxVMs: number; - assignedVMs: number; - currentUsedVms: number; - newVms: number; - - maxVolumeLimit: number; - currentUsedVolumeStorage: number; - assignedVolumesStorage: number; - newVolumeLimit: number; - - maxCores: number; - assignedCores: number; - currentUsedCores: number; - newCores: number; - - maxRam: number; - assignedRam: number; - currentUsedRam: number; - newRam: number; + limits: ClientLimit; activated: boolean; forc_url: string; @@ -51,11 +29,32 @@ export class Client { } } - // constructor(host: string, port: string, location: string, id: string) { - // this.host = host; - // this.port = port; - // this.location = location; - // this.id = id; - // } - + setLimit(limit_dict: any) { + const limit = new ClientLimit(); + limit.maxVolumeLimit = limit_dict['volume_storage_limit'] || 0; + limit.assignedVolumesStorage = limit_dict['assigned_volume_gb'] || 0; + limit.currentUsedVolumeStorage = limit_dict['current_used_volume_storage'] || 0; + limit.newVolumeLimit = limit_dict['new_volume_gb'] || 0; + + limit.maxVolumes = limit_dict['volume_counter_limit'] || 0; + limit.assignedVolumes = limit_dict['assigned_volumes'] || 0; + limit.currentUsedVolumes = limit_dict['current_used_volumes'] || 0; + limit.newVolumes = limit_dict['new_volumes'] || 0; + + limit.maxVMs = limit_dict['vms_limit'] || 0; + limit.assignedVMs = limit_dict['assigned_instances'] || 0; + limit.currentUsedVms = limit_dict['current_used_vms'] || 0; + limit.newVms = limit_dict['additional_instances'] || 0; + + limit.maxCores = limit_dict['cores_limit'] || 0; + limit.assignedCores = limit_dict['assigned_cores'] || 0; + limit.currentUsedCores = limit_dict['current_used_cores'] || 0; + limit.newCores = limit_dict['new_cores'] || 0; + + limit.maxRam = limit_dict['ram_limit'] || 0; + limit.assignedRam = limit_dict['assigned_ram'] || 0; + limit.currentUsedRam = limit_dict['current_used_ram'] || 0; + limit.newRam = limit_dict['new_ram'] || 0; + this.limits = limit; + } } diff --git a/src/app/vo_manager/clients/modals/client-limits..component.ts b/src/app/vo_manager/clients/modals/client-limits..component.ts index 2cffe1731f..7c3922f4c8 100644 --- a/src/app/vo_manager/clients/modals/client-limits..component.ts +++ b/src/app/vo_manager/clients/modals/client-limits..component.ts @@ -33,56 +33,6 @@ export class ClientLimitsComponent implements OnDestroy, OnInit { // eslint-disable-next-line no-empty-function } - getComputeCenterClientModificationLimitsAvailable() { - // eslint-disable-next-line max-len - this.facilityService - .getComputeCenterClientLimitsAvailable(this.compute_center_id, this.application.project_application_id.toString()) - .subscribe( - (cl: any) => { - this.client = new Client(null, null, null, cl['client_name'], null); - this.client.maxVolumeLimit = cl['max_total_volumeGigabytes']; - this.client.assignedVolumesStorage = cl['assigned_volume_gb']; - this.client.currentUsedVolumeStorage = cl['total_gigabytes_used']; - this.client.newVolumeLimit = cl['new_volume_gb']; - - this.client.maxVolumes = cl['max_total_volumes']; - this.client.assignedVolumes = cl['assigned_volumes']; - this.client.currentUsedVolumes = cl['total_volumesUsed']; - this.client.newVolumes = cl['new_volumes']; - - this.client.maxVMs = cl['max_total_instances']; - this.client.assignedVMs = cl['assigned_instances']; - this.client.currentUsedVms = cl['total_instances_used']; - this.client.newVms = cl['additional_instances']; - - this.client.maxCores = cl['max_total_cores']; - this.client.assignedCores = cl['assigned_cores']; - this.client.currentUsedCores = cl['total_cores_used']; - this.client.newCores = cl['new_cores']; - - this.client.maxRam = cl['max_total_ram_size']; - this.client.assignedRam = cl['assigned_ram']; - this.client.currentUsedRam = cl['total_ram_used']; - this.client.newRam = cl['new_ram']; - if (cl['client_available']) { - this.message_type = 'success'; - this.limits_message = `The client [${this.client.location}] has enough resources left!.`; - this.approvable = true; - } else { - this.message_type = 'danger'; - this.limits_message = `The client [${this.client.location}] has not the necessary resources left!`; - // this.approvable = false; - } - }, - (error: object): void => { - console.log(error); - this.message_type = 'danger'; - this.limits_message = 'The connection to chosen client cannot be established!'; - this.request_failed = true; - }, - ); - } - getComputeCenterClientLimitsAvailable() { // eslint-disable-next-line max-len this.facilityService @@ -90,30 +40,7 @@ export class ClientLimitsComponent implements OnDestroy, OnInit { .subscribe( (cl: any) => { this.client = new Client(null, null, null, cl['client_name'], null); - this.client.maxVolumeLimit = cl['max_total_volume_gigabytes']; - this.client.assignedVolumesStorage = cl['assigned_volume_gb']; - this.client.currentUsedVolumeStorage = cl['total_gigabytes_used']; - this.client.newVolumeLimit = cl['new_volume_gb']; - - this.client.maxVolumes = cl['max_total_volumes']; - this.client.assignedVolumes = cl['assigned_volumes']; - this.client.currentUsedVolumes = cl['total_volumes_used']; - this.client.newVolumes = cl['new_volumes']; - - this.client.maxVMs = cl['max_total_instances']; - this.client.assignedVMs = cl['assigned_instances']; - this.client.currentUsedVms = cl['total_instances_used']; - this.client.newVms = cl['additional_instances']; - - this.client.maxCores = cl['max_total_cores']; - this.client.assignedCores = cl['assigned_cores']; - this.client.currentUsedCores = cl['total_cores_used']; - this.client.newCores = cl['new_cores']; - - this.client.maxRam = cl['max_total_ram_size']; - this.client.assignedRam = cl['assigned_ram']; - this.client.currentUsedRam = cl['total_ram_used']; - this.client.newRam = cl['new_ram']; + this.client.setLimit(cl); if (cl['client_available']) { this.message_type = 'success'; this.limits_message = `The client [${this.client.location}] has enough resources left!.`; @@ -137,29 +64,8 @@ export class ClientLimitsComponent implements OnDestroy, OnInit { this.clientService.getClientLimits(this.client.id).subscribe( (cl: any) => { this.client = new Client(null, null, null, cl['client_name'], null); - this.client.maxVolumeLimit = cl['max_total_volume_gigabytes']; - this.client.assignedVolumesStorage = cl['assigned_volume_gb']; - this.client.currentUsedVolumeStorage = cl['total_gigabytes_used']; - // this.client.newVolumeLimit = client['new_volume_gb']; - - this.client.maxVolumes = cl['max_total_volumes']; - this.client.assignedVolumes = cl['assigned_volumes']; - this.client.currentUsedVolumes = cl['total_volumes_used']; - // this.client.newVolumes = client['new_volumes']; - - this.client.maxVMs = cl['max_total_instances']; - this.client.assignedVMs = cl['assigned_instances']; - this.client.currentUsedVms = cl['total_instances_used']; - // this.client.newVms = client['additional_instances']; - - this.client.maxCores = cl['max_total_cores']; - this.client.assignedCores = cl['assigned_cores']; - this.client.currentUsedCores = cl['total_cores_used']; - // this.client.newCores = client['new_cores']; + this.client.setLimit(cl); - this.client.maxRam = cl['max_total_ram_size']; - this.client.assignedRam = cl['assigned_ram']; - this.client.currentUsedRam = cl['total_ram_used']; // this.client.newRam = client['new_ram']; }, (error: object): void => { diff --git a/src/app/vo_manager/clients/modals/client-limits.component.html b/src/app/vo_manager/clients/modals/client-limits.component.html index e4dca6f768..9555d19724 100644 --- a/src/app/vo_manager/clients/modals/client-limits.component.html +++ b/src/app/vo_manager/clients/modals/client-limits.component.html @@ -1,98 +1,151 @@ @@ -181,7 +181,7 @@ data-toggle="tooltip" data-placement="right" title="The termination of the project was requested." - *ngIf="application | hasstatusinlist : Application_States.TERMINATION_REQUESTED" + *ngIf="application | hasstatusinlist: Application_States.TERMINATION_REQUESTED" > @@ -190,7 +190,7 @@ data-toggle="tooltip" data-placement="right" title="This project is disabled!" - *ngIf="application | hasstatusinlist : Application_States.DISABLED" + *ngIf="application | hasstatusinlist: Application_States.DISABLED" > @@ -200,8 +200,8 @@ data-placement="right" title="An extension request was submitted for this project." *ngIf=" - (application | hasstatusinlist : Application_States.LIFETIME_EXTENSION_REQUESTED) || - (application | hasstatusinlist : Application_States.WAIT_FOR_CONFIRMATION_EXTENSION) + (application | hasstatusinlist: Application_States.LIFETIME_EXTENSION_REQUESTED) || + (application | hasstatusinlist: Application_States.WAIT_FOR_CONFIRMATION_EXTENSION) " > @@ -212,8 +212,8 @@ data-placement="right" title="A modification request was submitted for this project." *ngIf=" - (application | hasstatusinlist : Application_States.MODIFICATION_REQUESTED) || - (application | hasstatusinlist : Application_States.WAIT_FOR_CONFIRMATION_MODIFICATION) + (application | hasstatusinlist: Application_States.MODIFICATION_REQUESTED) || + (application | hasstatusinlist: Application_States.WAIT_FOR_CONFIRMATION_MODIFICATION) " > @@ -223,7 +223,7 @@ data-toggle="tooltip" data-placement="right" title="The project application was submitted but not approved yet." - *ngIf="application | hasstatusinlist : Application_States.SUBMITTED" + *ngIf="application | hasstatusinlist: Application_States.SUBMITTED" > @@ -233,8 +233,8 @@ data-placement="right" title="A request for additional credits was submitted for this project." *ngIf=" - (application | hasstatusinlist : Application_States.CREDITS_EXTENSION_REQUESTED) || - (application | hasstatusinlist : Application_States.WAIT_FOR_CONFIRMATION_CREDITS) + (application | hasstatusinlist: Application_States.CREDITS_EXTENSION_REQUESTED) || + (application | hasstatusinlist: Application_States.WAIT_FOR_CONFIRMATION_CREDITS) " > @@ -300,7 +300,7 @@ data-toggle="tooltip" data-placement="right" title="This project was initially approved within the last 2 weeks." - *ngIf="application | hasstatusinlist : Application_States.APPROVED_LAST_2_WEEKS" + *ngIf="application | hasstatusinlist: Application_States.APPROVED_LAST_2_WEEKS" > @@ -310,8 +310,8 @@ data-placement="right" title="The project lifetime expires soon." *ngIf=" - (application | hasstatusinlist : Application_States.EXPIRES_SOON) && - !(application | hasstatusinlist : Application_States.EXPIRED) + (application | hasstatusinlist: Application_States.EXPIRES_SOON) && + !(application | hasstatusinlist: Application_States.EXPIRED) " > @@ -321,7 +321,7 @@ data-toggle="tooltip" data-placement="right" title="The lifetime of this project is expired." - *ngIf="application | hasstatusinlist : Application_States.EXPIRED" + *ngIf="application | hasstatusinlist: Application_States.EXPIRED" > @@ -330,7 +330,7 @@ data-toggle="tooltip" data-placement="right" title="The termination of the project was requested." - *ngIf="application | hasstatusinlist : Application_States.TERMINATION_REQUESTED" + *ngIf="application | hasstatusinlist: Application_States.TERMINATION_REQUESTED" > @@ -339,7 +339,7 @@ data-toggle="tooltip" data-placement="right" title="This project is disabled!" - *ngIf="application | hasstatusinlist : Application_States.DISABLED" + *ngIf="application | hasstatusinlist: Application_States.DISABLED" > @@ -349,8 +349,8 @@ data-placement="right" title="An extension request was submitted for this project." *ngIf=" - (application | hasstatusinlist : Application_States.LIFETIME_EXTENSION_REQUESTED) || - (application | hasstatusinlist : Application_States.WAIT_FOR_CONFIRMATION_EXTENSION) + (application | hasstatusinlist: Application_States.LIFETIME_EXTENSION_REQUESTED) || + (application | hasstatusinlist: Application_States.WAIT_FOR_CONFIRMATION_EXTENSION) " > @@ -361,8 +361,8 @@ data-placement="right" title="A modification request was submitted for this project." *ngIf=" - (application | hasstatusinlist : Application_States.MODIFICATION_REQUESTED) || - (application | hasstatusinlist : Application_States.WAIT_FOR_CONFIRMATION_MODIFICATION) + (application | hasstatusinlist: Application_States.MODIFICATION_REQUESTED) || + (application | hasstatusinlist: Application_States.WAIT_FOR_CONFIRMATION_MODIFICATION) " > @@ -372,7 +372,7 @@ data-toggle="tooltip" data-placement="right" title="The project application was submitted but not approved yet." - *ngIf="application | hasstatusinlist : Application_States.SUBMITTED" + *ngIf="application | hasstatusinlist: Application_States.SUBMITTED" > @@ -382,8 +382,8 @@ data-placement="right" title="A request for additional credits was submitted for this project." *ngIf=" - (application | hasstatusinlist : Application_States.CREDITS_EXTENSION_REQUESTED) || - (application | hasstatusinlist : Application_States.WAIT_FOR_CONFIRMATION_CREDITS) + (application | hasstatusinlist: Application_States.CREDITS_EXTENSION_REQUESTED) || + (application | hasstatusinlist: Application_States.WAIT_FOR_CONFIRMATION_CREDITS) " > diff --git a/src/app/shared/shared_modules/components/applications/application-badges/application-badges.component.html b/src/app/shared/shared_modules/components/applications/application-badges/application-badges.component.html index a313b99b7f..4af94504a8 100644 --- a/src/app/shared/shared_modules/components/applications/application-badges/application-badges.component.html +++ b/src/app/shared/shared_modules/components/applications/application-badges/application-badges.component.html @@ -1,25 +1,27 @@ - - + - - - - - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + From 3ef9edffd53de9b29fe7d4d6983e73cb1305c303 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Apr 2024 09:39:14 +0200 Subject: [PATCH 7/7] build(deps-dev): bump webpack-dev-middleware from 5.3.3 to 5.3.4 (#6004) * build(deps): bump follow-redirects from 1.15.4 to 1.15.6 Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.4 to 1.15.6. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.4...v1.15.6) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: direct:production ... Signed-off-by: dependabot[bot] * build(deps-dev): bump webpack-dev-middleware from 5.3.3 to 5.3.4 Bumps [webpack-dev-middleware](https://github.com/webpack/webpack-dev-middleware) from 5.3.3 to 5.3.4. - [Release notes](https://github.com/webpack/webpack-dev-middleware/releases) - [Changelog](https://github.com/webpack/webpack-dev-middleware/blob/v5.3.4/CHANGELOG.md) - [Commits](https://github.com/webpack/webpack-dev-middleware/compare/v5.3.3...v5.3.4) --- updated-dependencies: - dependency-name: webpack-dev-middleware dependency-type: indirect ... Signed-off-by: dependabot[bot] * fix(Vulnerabilities): npm audit fix --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: dweinholz Co-authored-by: vktrrdk --- package-lock.json | 264 ++++++++++++++++++++++++---------------------- 1 file changed, 138 insertions(+), 126 deletions(-) diff --git a/package-lock.json b/package-lock.json index b2f2dc4e02..ff8e10d188 100644 --- a/package-lock.json +++ b/package-lock.json @@ -165,15 +165,15 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.2.12.tgz", - "integrity": "sha512-VVGKZ0N3gyR0DP7VrcZl4io3ruWYT94mrlyJsJMLlrYy/EX8JCvqrJC9c+dscrtKjhZzjwdyhszkJQY4JfwACA==", + "version": "16.2.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.2.13.tgz", + "integrity": "sha512-2G8gnBpBKcu+/jJH5DJZyMgn2RwDFPgiNSkcLKFg5DdqVFVT3CCoZAobfpAEMndrysfMmoUPGuAmsgCfdczQjg==", "dev": true, "dependencies": { "@ampproject/remapping": "2.2.1", - "@angular-devkit/architect": "0.1602.12", - "@angular-devkit/build-webpack": "0.1602.12", - "@angular-devkit/core": "16.2.12", + "@angular-devkit/architect": "0.1602.13", + "@angular-devkit/build-webpack": "0.1602.13", + "@angular-devkit/core": "16.2.13", "@babel/core": "7.22.9", "@babel/generator": "7.22.9", "@babel/helper-annotate-as-pure": "7.22.5", @@ -185,7 +185,7 @@ "@babel/runtime": "7.22.6", "@babel/template": "7.22.5", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "16.2.12", + "@ngtools/webpack": "16.2.13", "@vitejs/plugin-basic-ssl": "1.0.1", "ansi-colors": "4.1.3", "autoprefixer": "10.4.14", @@ -230,7 +230,7 @@ "tslib": "2.6.1", "vite": "4.5.2", "webpack": "5.88.2", - "webpack-dev-middleware": "6.1.1", + "webpack-dev-middleware": "6.1.2", "webpack-dev-server": "4.15.1", "webpack-merge": "5.9.0", "webpack-subresource-integrity": "5.1.0" @@ -287,12 +287,12 @@ } }, "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/architect": { - "version": "0.1602.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.12.tgz", - "integrity": "sha512-19Fwwfx+KvJ01SyI6cstRgqT9+cwer8Ro1T27t1JqlGyOX8tY3pV78ulwxy2+wCzPjR18V6W7cb7Cv6fyK4xog==", + "version": "0.1602.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.13.tgz", + "integrity": "sha512-ejrOYoXgbhDYjdaW4B2SyWeb6AqR8vqqzMyvCq2JX7fo08IhLnVu1fcl0fwr161l37TuzgPNWrHSciOzzmZDkw==", "dev": true, "dependencies": { - "@angular-devkit/core": "16.2.12", + "@angular-devkit/core": "16.2.13", "rxjs": "7.8.1" }, "engines": { @@ -302,9 +302,9 @@ } }, "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/core": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.12.tgz", - "integrity": "sha512-o6ziQs+EcEonFezrsA46jbZqkQrs4ckS1bAQj93g5ZjGtieUz8l/U3lclvKpL/iEzWkGVViSYuP2KyW2oqTDiQ==", + "version": "16.2.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.13.tgz", + "integrity": "sha512-6jTlYOIeYsOF/Vw/hBNusjoCmKJBByoyGS1Fu2Yav8ltxYK04aDtI73l9JJB/5Cpzhc4YELrMqBMH7in5Vowaw==", "dev": true, "dependencies": { "ajv": "8.12.0", @@ -547,12 +547,12 @@ "dev": true }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1602.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1602.12.tgz", - "integrity": "sha512-1lmR4jCkxPJuAFXReesEY3CB+/5jSebGE5ry6qJJvNm6kuSc9bzfTytrcwosVY+Q7kAA2ij7kAYw0loGbTjLWA==", + "version": "0.1602.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1602.13.tgz", + "integrity": "sha512-H7CqnC0kvWR0Q45ZXsCO3M9lGd4dOajEmkCVmq7vVptU3nJRbCqJ0ZScj9bH5YSlcdO0jPbOdcTELWyEZ3BMFQ==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1602.12", + "@angular-devkit/architect": "0.1602.13", "rxjs": "7.8.1" }, "engines": { @@ -566,12 +566,12 @@ } }, "node_modules/@angular-devkit/build-webpack/node_modules/@angular-devkit/architect": { - "version": "0.1602.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.12.tgz", - "integrity": "sha512-19Fwwfx+KvJ01SyI6cstRgqT9+cwer8Ro1T27t1JqlGyOX8tY3pV78ulwxy2+wCzPjR18V6W7cb7Cv6fyK4xog==", + "version": "0.1602.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.13.tgz", + "integrity": "sha512-ejrOYoXgbhDYjdaW4B2SyWeb6AqR8vqqzMyvCq2JX7fo08IhLnVu1fcl0fwr161l37TuzgPNWrHSciOzzmZDkw==", "dev": true, "dependencies": { - "@angular-devkit/core": "16.2.12", + "@angular-devkit/core": "16.2.13", "rxjs": "7.8.1" }, "engines": { @@ -581,9 +581,9 @@ } }, "node_modules/@angular-devkit/build-webpack/node_modules/@angular-devkit/core": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.12.tgz", - "integrity": "sha512-o6ziQs+EcEonFezrsA46jbZqkQrs4ckS1bAQj93g5ZjGtieUz8l/U3lclvKpL/iEzWkGVViSYuP2KyW2oqTDiQ==", + "version": "16.2.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.13.tgz", + "integrity": "sha512-6jTlYOIeYsOF/Vw/hBNusjoCmKJBByoyGS1Fu2Yav8ltxYK04aDtI73l9JJB/5Cpzhc4YELrMqBMH7in5Vowaw==", "dev": true, "dependencies": { "ajv": "8.12.0", @@ -4200,9 +4200,9 @@ "license": "MIT" }, "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", "dev": true }, "node_modules/@ng-bootstrap/ng-bootstrap": { @@ -4239,9 +4239,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.12.tgz", - "integrity": "sha512-f9R9Qsk8v+ffDxryl6PQ7Wnf2JCNd4dDXOH+d/AuF06VFiwcwGDRDZpmqkAXbFxQfcWTbT1FFvfoJ+SFcJgXLA==", + "version": "16.2.13", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.13.tgz", + "integrity": "sha512-P5OiVp9MeMwVxihtC9NB4mx1Zlbup2DLMAWYAl8/kcFdRrRW+1YDQn93tlFToQDHGpPxkqW7cnFUPnA+QwQMYA==", "dev": true, "engines": { "node": "^16.14.0 || >=18.10.0", @@ -5224,9 +5224,9 @@ } }, "node_modules/@types/qs": { - "version": "6.9.11", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", - "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", + "version": "6.9.14", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.14.tgz", + "integrity": "sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==", "dev": true }, "node_modules/@types/raf": { @@ -5272,14 +5272,14 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", - "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, "dependencies": { "@types/http-errors": "*", - "@types/mime": "*", - "@types/node": "*" + "@types/node": "*", + "@types/send": "*" } }, "node_modules/@types/sizzle": { @@ -7029,12 +7029,13 @@ } }, "node_modules/body-parser": { - "version": "1.20.1", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dev": true, - "license": "MIT", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -7042,7 +7043,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -7276,8 +7277,9 @@ }, "node_modules/bytes": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } @@ -7944,9 +7946,9 @@ "license": "MIT" }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true, "engines": { "node": ">= 0.6" @@ -10808,17 +10810,17 @@ } }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -11500,9 +11502,9 @@ } }, "node_modules/fs-monkey": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", - "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", "dev": true }, "node_modules/fs.realpath": { @@ -17308,9 +17310,10 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, - "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -17323,8 +17326,9 @@ }, "node_modules/raw-body/node_modules/iconv-lite": { "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, - "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -20519,9 +20523,9 @@ } }, "node_modules/webpack-dev-middleware": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.1.tgz", - "integrity": "sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.2.tgz", + "integrity": "sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ==", "dev": true, "dependencies": { "colorette": "^2.0.10", @@ -20606,9 +20610,9 @@ } }, "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "dev": true, "dependencies": { "colorette": "^2.0.10", @@ -21260,15 +21264,15 @@ } }, "@angular-devkit/build-angular": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.2.12.tgz", - "integrity": "sha512-VVGKZ0N3gyR0DP7VrcZl4io3ruWYT94mrlyJsJMLlrYy/EX8JCvqrJC9c+dscrtKjhZzjwdyhszkJQY4JfwACA==", + "version": "16.2.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.2.13.tgz", + "integrity": "sha512-2G8gnBpBKcu+/jJH5DJZyMgn2RwDFPgiNSkcLKFg5DdqVFVT3CCoZAobfpAEMndrysfMmoUPGuAmsgCfdczQjg==", "dev": true, "requires": { "@ampproject/remapping": "2.2.1", - "@angular-devkit/architect": "0.1602.12", - "@angular-devkit/build-webpack": "0.1602.12", - "@angular-devkit/core": "16.2.12", + "@angular-devkit/architect": "0.1602.13", + "@angular-devkit/build-webpack": "0.1602.13", + "@angular-devkit/core": "16.2.13", "@babel/core": "7.22.9", "@babel/generator": "7.22.9", "@babel/helper-annotate-as-pure": "7.22.5", @@ -21280,7 +21284,7 @@ "@babel/runtime": "7.22.6", "@babel/template": "7.22.5", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "16.2.12", + "@ngtools/webpack": "16.2.13", "@vitejs/plugin-basic-ssl": "1.0.1", "ansi-colors": "4.1.3", "autoprefixer": "10.4.14", @@ -21326,26 +21330,26 @@ "tslib": "2.6.1", "vite": "4.5.2", "webpack": "5.88.2", - "webpack-dev-middleware": "6.1.1", + "webpack-dev-middleware": "6.1.2", "webpack-dev-server": "4.15.1", "webpack-merge": "5.9.0", "webpack-subresource-integrity": "5.1.0" }, "dependencies": { "@angular-devkit/architect": { - "version": "0.1602.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.12.tgz", - "integrity": "sha512-19Fwwfx+KvJ01SyI6cstRgqT9+cwer8Ro1T27t1JqlGyOX8tY3pV78ulwxy2+wCzPjR18V6W7cb7Cv6fyK4xog==", + "version": "0.1602.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.13.tgz", + "integrity": "sha512-ejrOYoXgbhDYjdaW4B2SyWeb6AqR8vqqzMyvCq2JX7fo08IhLnVu1fcl0fwr161l37TuzgPNWrHSciOzzmZDkw==", "dev": true, "requires": { - "@angular-devkit/core": "16.2.12", + "@angular-devkit/core": "16.2.13", "rxjs": "7.8.1" } }, "@angular-devkit/core": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.12.tgz", - "integrity": "sha512-o6ziQs+EcEonFezrsA46jbZqkQrs4ckS1bAQj93g5ZjGtieUz8l/U3lclvKpL/iEzWkGVViSYuP2KyW2oqTDiQ==", + "version": "16.2.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.13.tgz", + "integrity": "sha512-6jTlYOIeYsOF/Vw/hBNusjoCmKJBByoyGS1Fu2Yav8ltxYK04aDtI73l9JJB/5Cpzhc4YELrMqBMH7in5Vowaw==", "dev": true, "requires": { "ajv": "8.12.0", @@ -21505,29 +21509,29 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.1602.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1602.12.tgz", - "integrity": "sha512-1lmR4jCkxPJuAFXReesEY3CB+/5jSebGE5ry6qJJvNm6kuSc9bzfTytrcwosVY+Q7kAA2ij7kAYw0loGbTjLWA==", + "version": "0.1602.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1602.13.tgz", + "integrity": "sha512-H7CqnC0kvWR0Q45ZXsCO3M9lGd4dOajEmkCVmq7vVptU3nJRbCqJ0ZScj9bH5YSlcdO0jPbOdcTELWyEZ3BMFQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1602.12", + "@angular-devkit/architect": "0.1602.13", "rxjs": "7.8.1" }, "dependencies": { "@angular-devkit/architect": { - "version": "0.1602.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.12.tgz", - "integrity": "sha512-19Fwwfx+KvJ01SyI6cstRgqT9+cwer8Ro1T27t1JqlGyOX8tY3pV78ulwxy2+wCzPjR18V6W7cb7Cv6fyK4xog==", + "version": "0.1602.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.13.tgz", + "integrity": "sha512-ejrOYoXgbhDYjdaW4B2SyWeb6AqR8vqqzMyvCq2JX7fo08IhLnVu1fcl0fwr161l37TuzgPNWrHSciOzzmZDkw==", "dev": true, "requires": { - "@angular-devkit/core": "16.2.12", + "@angular-devkit/core": "16.2.13", "rxjs": "7.8.1" } }, "@angular-devkit/core": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.12.tgz", - "integrity": "sha512-o6ziQs+EcEonFezrsA46jbZqkQrs4ckS1bAQj93g5ZjGtieUz8l/U3lclvKpL/iEzWkGVViSYuP2KyW2oqTDiQ==", + "version": "16.2.13", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.13.tgz", + "integrity": "sha512-6jTlYOIeYsOF/Vw/hBNusjoCmKJBByoyGS1Fu2Yav8ltxYK04aDtI73l9JJB/5Cpzhc4YELrMqBMH7in5Vowaw==", "dev": true, "requires": { "ajv": "8.12.0", @@ -23944,9 +23948,9 @@ "version": "0.3.2" }, "@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", "dev": true }, "@ng-bootstrap/ng-bootstrap": { @@ -23966,9 +23970,9 @@ } }, "@ngtools/webpack": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.12.tgz", - "integrity": "sha512-f9R9Qsk8v+ffDxryl6PQ7Wnf2JCNd4dDXOH+d/AuF06VFiwcwGDRDZpmqkAXbFxQfcWTbT1FFvfoJ+SFcJgXLA==", + "version": "16.2.13", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.13.tgz", + "integrity": "sha512-P5OiVp9MeMwVxihtC9NB4mx1Zlbup2DLMAWYAl8/kcFdRrRW+1YDQn93tlFToQDHGpPxkqW7cnFUPnA+QwQMYA==", "dev": true, "requires": {} }, @@ -24690,9 +24694,9 @@ } }, "@types/qs": { - "version": "6.9.11", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", - "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", + "version": "6.9.14", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.14.tgz", + "integrity": "sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==", "dev": true }, "@types/raf": { @@ -24737,14 +24741,14 @@ } }, "@types/serve-static": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", - "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, "requires": { "@types/http-errors": "*", - "@types/mime": "*", - "@types/node": "*" + "@types/node": "*", + "@types/send": "*" } }, "@types/sizzle": { @@ -25935,11 +25939,13 @@ } }, "body-parser": { - "version": "1.20.1", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dev": true, "requires": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -25947,7 +25953,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -26095,6 +26101,8 @@ }, "bytes": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true }, "cacache": { @@ -26564,9 +26572,9 @@ "version": "1.9.0" }, "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true }, "cookie-signature": { @@ -28481,17 +28489,17 @@ } }, "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dev": true, "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -28975,9 +28983,9 @@ } }, "fs-monkey": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", - "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", "dev": true }, "fs.realpath": { @@ -32800,7 +32808,9 @@ "version": "1.2.5" }, "raw-body": { - "version": "2.5.1", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "requires": { "bytes": "3.1.2", @@ -32811,6 +32821,8 @@ "dependencies": { "iconv-lite": { "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" @@ -34988,9 +35000,9 @@ } }, "webpack-dev-middleware": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.1.tgz", - "integrity": "sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.2.tgz", + "integrity": "sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ==", "dev": true, "requires": { "colorette": "^2.0.10", @@ -35039,9 +35051,9 @@ }, "dependencies": { "webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "dev": true, "requires": { "colorette": "^2.0.10",