AAE-21047 Get rid of enums (#11643)

* Refactor enums to const objects and update ESLint rules

- Converted several TypeScript enums to const objects for better type inference and immutability.
- Updated ESLint configuration to disable 'no-redeclare' rule and added new restrictions on schema usage.
- Adjusted package-lock.json to mark several dependencies as peer dependencies.

* Refactor enums to const objects in site-dropdown and new-version-uploader models

- Converted TypeScript enums to const objects for improved type safety and immutability in `sites-dropdown.component.ts` and `new-version-uploader.model.ts`.
- Updated related types to reflect the changes in both files.
- Enhanced error handling in the `DropdownSitesComponent` by using the `subscribe` method with an object for better readability.

* Refactor TypeScript types and improve error handling in component tests

- Updated type annotations in `upload.service.ts` and `node-actions.service.ts` for better type safety.
- Enhanced error handling in various component tests by using more descriptive error messages in `task-attachment-list.component.spec.ts`, `attach-file-widget-dialog.component.spec.ts`, and `task-form.component.spec.ts`.
- Removed unnecessary schemas from test configurations in several component spec files to streamline the testing setup.

* Refactor TypeScript enums to const objects for improved type safety

- Converted multiple TypeScript enums to const objects across various models, including `AppConfigValues`, `Status`, `ShowHeaderMode`, `WidgetTypeEnum`, and others.
- Updated related type definitions to enhance type inference and immutability.
- Adjusted ESLint configurations by removing the 'no-redeclare' rule to streamline code quality checks.

* Refactor TypeScript types for improved type safety and consistency

- Updated type annotations in `document-list.component.ts`, `document-actions.service.ts`, and `node-actions.service.ts` to use `Observable` instead of `Subject` for better reactive programming practices.
- Enhanced type definitions in `search-date-range.component.ts` and related spec files to allow `inLastValue` to be either a string or a number, improving flexibility in handling date range inputs.
- Adjusted test cases to reflect these type changes, ensuring consistency across the application.

* Enhance type safety in ViewerComponent by specifying type for closeButtonPosition

- Updated the type annotation for `closeButtonPosition` in `viewer.component.ts` to explicitly define it as `CloseButtonPosition`, improving type safety and clarity.

* Enhance type safety in DataTableComponent by specifying type for showHeader

- Updated the type annotation for `showHeader` in `datatable.component.ts` to explicitly define it as `ShowHeaderMode`, improving type safety and clarity.

* Update PDF viewer test to accommodate varying date formats

- Modified the test for the annotation popup in `pdf-viewer.component.spec.ts` to check for the presence of date components instead of a specific date format, enhancing test robustness across different locales.
This commit is contained in:
Denys Vuika
2026-02-12 16:28:45 +00:00
committed by GitHub
parent d274d62d73
commit 40b15689d5
54 changed files with 503 additions and 415 deletions
+17 -1
View File
@@ -141,7 +141,8 @@ module.exports = {
], ],
'no-duplicate-imports': 'error', 'no-duplicate-imports': 'error',
'no-multiple-empty-lines': 'error', 'no-multiple-empty-lines': 'error',
'no-redeclare': 'error', 'no-redeclare': 'off',
'@typescript-eslint/no-redeclare': ['off', { ignoreDeclarationMerge: true }],
'no-return-await': 'error', 'no-return-await': 'error',
'rxjs/no-create': 'error', 'rxjs/no-create': 'error',
'rxjs/no-subject-unsubscribe': 'error', 'rxjs/no-subject-unsubscribe': 'error',
@@ -176,6 +177,21 @@ module.exports = {
' * limitations under the License.', ' * limitations under the License.',
' */' ' */'
] ]
],
'no-restricted-syntax': [
'error',
{
selector: "Identifier[name='CUSTOM_ELEMENTS_SCHEMA']",
message: 'The use of CUSTOM_ELEMENTS_SCHEMA is not allowed. Consider alternatives for proper schema handling.'
},
{
selector: "Identifier[name='NO_ERRORS_SCHEMA']",
message: 'The use of NO_ERRORS_SCHEMA is not allowed. Consider alternatives for proper schema handling.'
},
{
selector: 'TSEnumDeclaration',
message: 'Enums are not allowed. Use string literal types (e.g., type Foo = "a" | "b") or const objects instead.'
}
] ]
} }
}, },
-1
View File
@@ -78,7 +78,6 @@
"no-bitwise": "off", "no-bitwise": "off",
"no-duplicate-imports": "error", "no-duplicate-imports": "error",
"no-multiple-empty-lines": "error", "no-multiple-empty-lines": "error",
"no-redeclare": "error",
"no-return-await": "error", "no-return-await": "error",
"rxjs/no-create": "error", "rxjs/no-create": "error",
"rxjs/no-subject-unsubscribe": "error", "rxjs/no-subject-unsubscribe": "error",
@@ -15,7 +15,9 @@
* limitations under the License. * limitations under the License.
*/ */
export enum CategoriesManagementMode { export const CategoriesManagementMode = {
CRUD, CRUD: 'CRUD',
ASSIGN ASSIGN: 'ASSIGN'
} } as const;
export type CategoriesManagementMode = (typeof CategoriesManagementMode)[keyof typeof CategoriesManagementMode];
@@ -74,17 +74,18 @@ export class FileUploadOptions {
versioningEnabled?: boolean; versioningEnabled?: boolean;
} }
// eslint-disable-next-line no-shadow export const FileUploadStatus = {
export enum FileUploadStatus { Pending: 0,
Pending = 0, Complete: 1,
Complete = 1, Starting: 2,
Starting = 2, Progress: 3,
Progress = 3, Cancelled: 4,
Cancelled = 4, Aborted: 5,
Aborted = 5, Error: 6,
Error = 6, Deleted: 7
Deleted = 7 } as const;
}
export type FileUploadStatus = (typeof FileUploadStatus)[keyof typeof FileUploadStatus];
export class FileModel { export class FileModel {
readonly name: string; readonly name: string;
@@ -103,7 +103,7 @@ export class UploadService {
* @returns True if files in the queue are still uploading, false otherwise * @returns True if files in the queue are still uploading, false otherwise
*/ */
isUploading(): boolean { isUploading(): boolean {
const finishedFileStates = [ const finishedFileStates: FileUploadStatus[] = [
FileUploadStatus.Complete, FileUploadStatus.Complete,
FileUploadStatus.Cancelled, FileUploadStatus.Cancelled,
FileUploadStatus.Aborted, FileUploadStatus.Aborted,
@@ -55,11 +55,13 @@ import { CategoriesManagementComponent } from '../../../category/categories-mana
const DEFAULT_SEPARATOR = ', '; const DEFAULT_SEPARATOR = ', ';
enum DefaultPanels { const DefaultPanels = {
PROPERTIES = 'Properties', PROPERTIES: 'Properties',
TAGS = 'Tags', TAGS: 'Tags',
CATEGORIES = 'Categories' CATEGORIES: 'Categories'
} } as const;
export type DefaultPanels = (typeof DefaultPanels)[keyof typeof DefaultPanels];
@Component({ @Component({
selector: 'adf-content-metadata', selector: 'adf-content-metadata',
@@ -28,10 +28,12 @@ import { MatFormFieldModule } from '@angular/material/form-field';
/* eslint-disable no-shadow */ /* eslint-disable no-shadow */
/* eslint-disable @typescript-eslint/naming-convention */ /* eslint-disable @typescript-eslint/naming-convention */
export enum Relations { export const Relations = {
Members = 'members', Members: 'members',
Containers = 'containers' Containers: 'containers'
} } as const;
export type Relations = (typeof Relations)[keyof typeof Relations];
@Component({ @Component({
selector: 'adf-sites-dropdown', selector: 'adf-sites-dropdown',
@@ -124,7 +126,7 @@ export class DropdownSitesComponent implements OnInit {
} }
private loadSiteList() { private loadSiteList() {
const extendedOptions: any = { const extendedOptions: { skipCount: number; maxItems: number; relations?: string[] } = {
skipCount: this.skipCount, skipCount: this.skipCount,
maxItems: InfiniteSelectScrollDirective.MAX_ITEMS maxItems: InfiniteSelectScrollDirective.MAX_ITEMS
}; };
@@ -135,8 +137,8 @@ export class DropdownSitesComponent implements OnInit {
extendedOptions.relations = [this.relations]; extendedOptions.relations = [this.relations];
} }
this.sitesService.getSites(extendedOptions).subscribe( this.sitesService.getSites(extendedOptions).subscribe({
(sitePaging: SitePaging) => { next: (sitePaging: SitePaging) => {
if (!this.siteList) { if (!this.siteList) {
this.siteList = this.relations === Relations.Members ? this.filteredResultsByMember(sitePaging) : sitePaging; this.siteList = this.relations === Relations.Members ? this.filteredResultsByMember(sitePaging) : sitePaging;
@@ -163,13 +165,15 @@ export class DropdownSitesComponent implements OnInit {
if (this.value && !this.selected && this.siteListHasMoreItems()) { if (this.value && !this.selected && this.siteListHasMoreItems()) {
this.loadSiteList(); this.loadSiteList();
} }
this.loading = false;
}, },
(error) => { error: (error) => {
this.loading = false;
this.error.emit(error); this.error.emit(error);
},
complete: () => {
this.loading = false;
} }
); });
} }
showLoading(): boolean { showLoading(): boolean {
@@ -171,7 +171,7 @@ export class DocumentListComponent extends DataTableSchema implements OnInit, On
/** Toggles the header */ /** Toggles the header */
@Input() @Input()
showHeader = ShowHeaderMode.Data; showHeader: ShowHeaderMode = ShowHeaderMode.Data;
/** /**
* User interaction for folder navigation or file preview. * User interaction for folder navigation or file preview.
@@ -50,10 +50,12 @@ export class ContentActionModel {
} }
} }
export enum ContentActionTarget { export const ContentActionTarget = {
Document = 'document', Document: 'document',
Folder = 'folder', Folder: 'folder',
All = 'all' All: 'all'
} } as const;
export type ContentActionTarget = (typeof ContentActionTarget)[keyof typeof ContentActionTarget];
export type ContentActionHandler = (obj: any, target?: any, permission?: string) => any; export type ContentActionHandler = (obj: any, target?: any, permission?: string) => any;
@@ -18,10 +18,12 @@
/* eslint-disable no-shadow */ /* eslint-disable no-shadow */
/* eslint-disable @typescript-eslint/naming-convention */ /* eslint-disable @typescript-eslint/naming-convention */
export enum NodeAction { export const NodeAction = {
ATTACH = 'ATTACH', ATTACH: 'ATTACH',
CHOOSE = 'CHOOSE', CHOOSE: 'CHOOSE',
COPY = 'COPY', COPY: 'COPY',
MOVE = 'MOVE', MOVE: 'MOVE',
NEXT = 'NEXT' NEXT: 'NEXT'
} } as const;
export type NodeAction = (typeof NodeAction)[keyof typeof NodeAction];
@@ -114,7 +114,7 @@ export class DocumentActionsService {
return actionObservable; return actionObservable;
} }
private prepareHandlers(actionObservable: Subject<string>): void { private prepareHandlers(actionObservable: Observable<string>): void {
actionObservable.subscribe((fileOperationMessage) => { actionObservable.subscribe((fileOperationMessage) => {
this.success.next(fileOperationMessage); this.success.next(fileOperationMessage);
}, this.error.next.bind(this.error)); }, this.error.next.bind(this.error));
@@ -17,7 +17,8 @@
import { Injectable, Output, EventEmitter } from '@angular/core'; import { Injectable, Output, EventEmitter } from '@angular/core';
import { Node, NodeEntry } from '@alfresco/js-api'; import { Node, NodeEntry } from '@alfresco/js-api';
import { Subject } from 'rxjs'; import { Observable } from 'rxjs';
import { switchMap, map } from 'rxjs/operators';
import { DownloadService } from '@alfresco/adf-core'; import { DownloadService } from '@alfresco/adf-core';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import { ContentService } from '../../common/services/content.service'; import { ContentService } from '../../common/services/content.service';
@@ -57,7 +58,7 @@ export class NodeActionsService {
* @param permission permission which is needed to apply the action * @param permission permission which is needed to apply the action
* @returns operation result * @returns operation result
*/ */
copyContent(contentEntry: Node, permission?: string): Subject<string> { copyContent(contentEntry: Node, permission?: string): Observable<string> {
return this.doFileOperation(NodeAction.COPY, 'content', contentEntry, permission); return this.doFileOperation(NodeAction.COPY, 'content', contentEntry, permission);
} }
@@ -68,7 +69,7 @@ export class NodeActionsService {
* @param permission permission which is needed to apply the action * @param permission permission which is needed to apply the action
* @returns operation result * @returns operation result
*/ */
copyFolder(contentEntry: Node, permission?: string): Subject<string> { copyFolder(contentEntry: Node, permission?: string): Observable<string> {
return this.doFileOperation(NodeAction.COPY, 'folder', contentEntry, permission); return this.doFileOperation(NodeAction.COPY, 'folder', contentEntry, permission);
} }
@@ -79,7 +80,7 @@ export class NodeActionsService {
* @param permission permission which is needed to apply the action * @param permission permission which is needed to apply the action
* @returns operation result * @returns operation result
*/ */
moveContent(contentEntry: Node, permission?: string): Subject<string> { moveContent(contentEntry: Node, permission?: string): Observable<string> {
return this.doFileOperation(NodeAction.MOVE, 'content', contentEntry, permission); return this.doFileOperation(NodeAction.MOVE, 'content', contentEntry, permission);
} }
@@ -90,7 +91,7 @@ export class NodeActionsService {
* @param permission permission which is needed to apply the action * @param permission permission which is needed to apply the action
* @returns operation result * @returns operation result
*/ */
moveFolder(contentEntry: Node, permission?: string): Subject<string> { moveFolder(contentEntry: Node, permission?: string): Observable<string> {
return this.doFileOperation(NodeAction.MOVE, 'folder', contentEntry, permission); return this.doFileOperation(NodeAction.MOVE, 'folder', contentEntry, permission);
} }
@@ -103,29 +104,14 @@ export class NodeActionsService {
* @param permission permission which is needed to apply the action * @param permission permission which is needed to apply the action
* @returns operation result * @returns operation result
*/ */
private doFileOperation( private doFileOperation(action: 'COPY' | 'MOVE', type: 'content' | 'folder', contentEntry: Node, permission?: string): Observable<string> {
action: NodeAction.COPY | NodeAction.MOVE, return this.contentDialogService.openCopyMoveDialog(action, contentEntry, permission).pipe(
type: 'content' | 'folder', switchMap((selections) => {
contentEntry: Node,
permission?: string
): Subject<string> {
const observable = new Subject<string>();
this.contentDialogService.openCopyMoveDialog(action, contentEntry, permission).subscribe(
(selections: Node[]) => {
const selection = selections[0]; const selection = selections[0];
this.documentListService[`${action.toLowerCase()}Node`] return this.documentListService[`${action.toLowerCase()}Node`]
.call(this.documentListService, contentEntry.id, selection.id) .call(this.documentListService, contentEntry.id, selection.id)
.subscribe( .pipe(map(() => `OPERATION.SUCCESS.${type.toUpperCase()}.${action}`));
observable.next.bind(observable, `OPERATION.SUCCESS.${type.toUpperCase()}.${action}`), })
observable.error.bind(observable)
); );
},
(error) => {
observable.error(error);
return observable;
}
);
return observable;
} }
} }
@@ -33,29 +33,30 @@ export interface NewVersionUploaderDialogData {
export type NewVersionUploaderData = VersionManagerUploadData | ViewVersion | RefreshData; export type NewVersionUploaderData = VersionManagerUploadData | ViewVersion | RefreshData;
// eslint-disable-next-line no-shadow export const NewVersionUploaderDataAction = {
export enum NewVersionUploaderDataAction { refresh: 'refresh',
refresh = 'refresh', upload: 'upload',
upload = 'upload', view: 'view'
view = 'view' } as const;
}
export type NewVersionUploaderDataAction = (typeof NewVersionUploaderDataAction)[keyof typeof NewVersionUploaderDataAction];
interface BaseData { interface BaseData {
action: NewVersionUploaderDataAction; action: NewVersionUploaderDataAction;
} }
export interface VersionManagerUploadData extends BaseData { export interface VersionManagerUploadData extends BaseData {
action: NewVersionUploaderDataAction.upload; action: 'upload';
newVersion: NodeEntityEvent; newVersion: NodeEntityEvent;
currentVersion: NodeChildAssociation; currentVersion: NodeChildAssociation;
} }
export interface ViewVersion extends BaseData { export interface ViewVersion extends BaseData {
action: NewVersionUploaderDataAction.view; action: 'view';
versionId: string; versionId: string;
} }
export interface RefreshData extends BaseData { export interface RefreshData extends BaseData {
action: NewVersionUploaderDataAction.refresh; action: 'refresh';
node: Node; node: Node;
} }
@@ -106,7 +106,7 @@ describe('SearchDateRangeTabbedComponent', () => {
inLastMockData = { inLastMockData = {
dateRangeType: DateRangeType.IN_LAST, dateRangeType: DateRangeType.IN_LAST,
inLastValueType: InLastDateType.WEEKS, inLastValueType: InLastDateType.WEEKS,
inLastValue: '5', inLastValue: 5,
betweenStartDate: undefined, betweenStartDate: undefined,
betweenEndDate: undefined betweenEndDate: undefined
}; };
@@ -173,7 +173,7 @@ describe('SearchDateRangeTabbedComponent', () => {
inLastMockData = { inLastMockData = {
dateRangeType: DateRangeType.IN_LAST, dateRangeType: DateRangeType.IN_LAST,
inLastValueType: InLastDateType.DAYS, inLastValueType: InLastDateType.DAYS,
inLastValue: '9', inLastValue: 9,
betweenStartDate: null, betweenStartDate: null,
betweenEndDate: null betweenEndDate: null
}; };
@@ -189,7 +189,7 @@ describe('SearchDateRangeTabbedComponent', () => {
inLastMockData = { inLastMockData = {
dateRangeType: DateRangeType.IN_LAST, dateRangeType: DateRangeType.IN_LAST,
inLastValueType: InLastDateType.MONTHS, inLastValueType: InLastDateType.MONTHS,
inLastValue: '7', inLastValue: 7,
betweenStartDate: null, betweenStartDate: null,
betweenEndDate: null betweenEndDate: null
}; };
@@ -155,15 +155,16 @@ export class SearchDateRangeTabbedComponent implements SearchWidget, OnInit {
let endDate: Date; let endDate: Date;
if (value.dateRangeType === DateRangeType.IN_LAST) { if (value.dateRangeType === DateRangeType.IN_LAST) {
if (value.inLastValue) { if (value.inLastValue) {
const numValue = typeof value.inLastValue === 'number' ? value.inLastValue : parseInt(value.inLastValue, 10);
switch (value.inLastValueType) { switch (value.inLastValueType) {
case InLastDateType.DAYS: case InLastDateType.DAYS:
startDate = startOfDay(subDays(new Date(), parseInt(value.inLastValue, 10))); startDate = startOfDay(subDays(new Date(), numValue));
break; break;
case InLastDateType.WEEKS: case InLastDateType.WEEKS:
startDate = startOfWeek(subWeeks(new Date(), parseInt(value.inLastValue, 10))); startDate = startOfWeek(subWeeks(new Date(), numValue));
break; break;
case InLastDateType.MONTHS: case InLastDateType.MONTHS:
startDate = startOfMonth(subMonths(new Date(), parseInt(value.inLastValue, 10))); startDate = startOfMonth(subMonths(new Date(), numValue));
break; break;
default: default:
break; break;
@@ -15,8 +15,10 @@
* limitations under the License. * limitations under the License.
*/ */
export enum DateRangeType { export const DateRangeType = {
ANY = 'ANY', ANY: 'ANY',
IN_LAST = 'IN_LAST', IN_LAST: 'IN_LAST',
BETWEEN = 'BETWEEN', BETWEEN: 'BETWEEN'
} } as const;
export type DateRangeType = (typeof DateRangeType)[keyof typeof DateRangeType];
@@ -15,8 +15,10 @@
* limitations under the License. * limitations under the License.
*/ */
export enum InLastDateType { export const InLastDateType = {
DAYS = 'DAYS', DAYS: 'DAYS',
WEEKS = 'WEEKS', WEEKS: 'WEEKS',
MONTHS = 'MONTHS' MONTHS: 'MONTHS'
} } as const;
export type InLastDateType = (typeof InLastDateType)[keyof typeof InLastDateType];
@@ -18,6 +18,7 @@
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { SearchDateRangeComponent } from './search-date-range.component'; import { SearchDateRangeComponent } from './search-date-range.component';
import { SearchDateRange } from './search-date-range';
import { addDays, endOfToday, format, parse, startOfYesterday, subDays } from 'date-fns'; import { addDays, endOfToday, format, parse, startOfYesterday, subDays } from 'date-fns';
import { Validators } from '@angular/forms'; import { Validators } from '@angular/forms';
import { HarnessLoader } from '@angular/cdk/testing'; import { HarnessLoader } from '@angular/cdk/testing';
@@ -226,7 +227,7 @@ describe('SearchDateRangeComponent', () => {
it('should not emit values when form is invalid', async () => { it('should not emit values when form is invalid', async () => {
spyOn(component.changed, 'emit'); spyOn(component.changed, 'emit');
let value = { let value: Partial<SearchDateRange> = {
dateRangeType: component.DateRangeType.IN_LAST, dateRangeType: component.DateRangeType.IN_LAST,
inLastValueType: component.InLastDateType.WEEKS, inLastValueType: component.InLastDateType.WEEKS,
inLastValue: '', inLastValue: '',
@@ -251,8 +252,8 @@ describe('SearchDateRangeComponent', () => {
dateRangeType: component.DateRangeType.BETWEEN, dateRangeType: component.DateRangeType.BETWEEN,
inLastValueType: component.InLastDateType.DAYS, inLastValueType: component.InLastDateType.DAYS,
inLastValue: undefined, inLastValue: undefined,
betweenStartDate: '', betweenStartDate: undefined,
betweenEndDate: '' betweenEndDate: undefined
}; };
dateRangeTypeRadioButton = await loader.getHarness(MatRadioButtonHarness.with({ selector: '[data-automation-id="date-range-between"]' })); dateRangeTypeRadioButton = await loader.getHarness(MatRadioButtonHarness.with({ selector: '[data-automation-id="date-range-between"]' }));
await dateRangeTypeRadioButton.check(); await dateRangeTypeRadioButton.check();
@@ -262,7 +263,7 @@ describe('SearchDateRangeComponent', () => {
it('should emit values when form is valid', async () => { it('should emit values when form is valid', async () => {
spyOn(component.changed, 'emit'); spyOn(component.changed, 'emit');
let value = { let value: Partial<SearchDateRange> = {
dateRangeType: component.DateRangeType.IN_LAST, dateRangeType: component.DateRangeType.IN_LAST,
inLastValueType: component.InLastDateType.WEEKS, inLastValueType: component.InLastDateType.WEEKS,
inLastValue: 5, inLastValue: 5,
@@ -21,7 +21,7 @@ import { InLastDateType } from './in-last-date-type';
export interface SearchDateRange { export interface SearchDateRange {
dateRangeType: DateRangeType; dateRangeType: DateRangeType;
inLastValueType?: InLastDateType; inLastValueType?: InLastDateType;
inLastValue?: string; inLastValue?: string | number;
betweenStartDate?: Date; betweenStartDate?: Date;
betweenEndDate?: Date; betweenEndDate?: Date;
} }
@@ -136,7 +136,7 @@ export class SearchFilterAutocompleteChipsComponent implements SearchWidget, OnI
private updateQuery(updateContext = true) { private updateQuery(updateContext = true) {
this.context.filterRawParams[this.id] = this.selectedOptions.length > 0 ? this.selectedOptions : undefined; this.context.filterRawParams[this.id] = this.selectedOptions.length > 0 ? this.selectedOptions : undefined;
this.displayValue$.next(this.selectedOptions.map((option) => option.value).join(', ')); this.displayValue$.next(this.selectedOptions.map((option) => option.value).join(', '));
if (this.context && this.settings && this.settings.field) { if (this.context && this.settings?.field) {
let queryFragments; let queryFragments;
switch (this.settings.field) { switch (this.settings.field) {
case AutocompleteField.CATEGORIES: case AutocompleteField.CATEGORIES:
@@ -28,12 +28,14 @@ import { TranslatePipe } from '@ngx-translate/core';
import { FormsModule } from '@angular/forms'; import { FormsModule } from '@angular/forms';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
export enum LogicalSearchFields { export const LogicalSearchFields = {
MATCH_ALL = 'matchAll', MATCH_ALL: 'matchAll',
MATCH_ANY = 'matchAny', MATCH_ANY: 'matchAny',
EXCLUDE = 'exclude', EXCLUDE: 'exclude',
MATCH_EXACT = 'matchExact' MATCH_EXACT: 'matchExact'
} } as const;
export type LogicalSearchFields = (typeof LogicalSearchFields)[keyof typeof LogicalSearchFields];
export type LogicalSearchConditionEnumValuedKeys = { [T in LogicalSearchFields]: string }; export type LogicalSearchConditionEnumValuedKeys = { [T in LogicalSearchFields]: string };
// eslint-disable-next-line @typescript-eslint/no-empty-interface // eslint-disable-next-line @typescript-eslint/no-empty-interface
@@ -15,8 +15,10 @@
* limitations under the License. * limitations under the License.
*/ */
export enum FileSizeOperator { export const FileSizeOperator = {
AT_LEAST = 'SEARCH.SEARCH_PROPERTIES.FILE_SIZE_OPERATOR.AT_LEAST', AT_LEAST: 'SEARCH.SEARCH_PROPERTIES.FILE_SIZE_OPERATOR.AT_LEAST',
AT_MOST = 'SEARCH.SEARCH_PROPERTIES.FILE_SIZE_OPERATOR.AT_MOST', AT_MOST: 'SEARCH.SEARCH_PROPERTIES.FILE_SIZE_OPERATOR.AT_MOST',
EXACTLY = 'SEARCH.SEARCH_PROPERTIES.FILE_SIZE_OPERATOR.EXACTLY' EXACTLY: 'SEARCH.SEARCH_PROPERTIES.FILE_SIZE_OPERATOR.EXACTLY'
} } as const;
export type FileSizeOperator = (typeof FileSizeOperator)[keyof typeof FileSizeOperator];
@@ -22,8 +22,10 @@ export interface AutocompleteOption {
query?: string; query?: string;
} }
export enum AutocompleteField { export const AutocompleteField = {
TAG = 'TAG', TAG: 'TAG',
CATEGORIES = 'cm:categories', CATEGORIES: 'cm:categories',
LOCATION = 'SITE' LOCATION: 'SITE'
} } as const;
export type AutocompleteField = (typeof AutocompleteField)[keyof typeof AutocompleteField];
@@ -48,14 +48,16 @@ export interface FacetFieldSettings {
bucketSortDirection?: FacetBucketSortDirection; bucketSortDirection?: FacetBucketSortDirection;
} }
// eslint-disable-next-line no-shadow export const FacetBucketSortBy = {
export enum FacetBucketSortBy { LABEL: 'LABEL',
LABEL = 'LABEL', COUNT: 'COUNT'
COUNT = 'COUNT' } as const;
}
// eslint-disable-next-line no-shadow export type FacetBucketSortBy = (typeof FacetBucketSortBy)[keyof typeof FacetBucketSortBy];
export enum FacetBucketSortDirection {
ASCENDING = 'ASCENDING', export const FacetBucketSortDirection = {
DESCENDING = 'DESCENDING' ASCENDING: 'ASCENDING',
} DESCENDING: 'DESCENDING'
} as const;
export type FacetBucketSortDirection = (typeof FacetBucketSortDirection)[keyof typeof FacetBucketSortDirection];
@@ -20,7 +20,9 @@
* Create mode allows only for creating completely new tags. * Create mode allows only for creating completely new tags.
* Create and Assign mode allows for both - creation of new tags and selection of existing tags. * Create and Assign mode allows for both - creation of new tags and selection of existing tags.
*/ */
export enum TagsCreatorMode { export const TagsCreatorMode = {
CREATE, CREATE: 'CREATE',
CREATE_AND_ASSIGN CREATE_AND_ASSIGN: 'CREATE_AND_ASSIGN'
} } as const;
export type TagsCreatorMode = (typeof TagsCreatorMode)[keyof typeof TagsCreatorMode];
@@ -15,10 +15,12 @@
* limitations under the License. * limitations under the License.
*/ */
export enum TreeNodeType { export const TreeNodeType = {
RegularNode, RegularNode: 'RegularNode',
LoadMoreNode LoadMoreNode: 'LoadMoreNode'
} } as const;
export type TreeNodeType = (typeof TreeNodeType)[keyof typeof TreeNodeType];
export interface TreeNode { export interface TreeNode {
id: string; id: string;
-1
View File
@@ -75,7 +75,6 @@
"no-bitwise": "off", "no-bitwise": "off",
"no-duplicate-imports": "error", "no-duplicate-imports": "error",
"no-multiple-empty-lines": "error", "no-multiple-empty-lines": "error",
"no-redeclare": "error",
"no-return-await": "error", "no-return-await": "error",
"rxjs/no-create": "error", "rxjs/no-create": "error",
"rxjs/no-subject-unsubscribe": "error", "rxjs/no-subject-unsubscribe": "error",
@@ -27,37 +27,40 @@ import { OauthConfigModel } from '../auth/models/oauth-config.model';
/* spellchecker: disable */ /* spellchecker: disable */
// eslint-disable-next-line no-shadow // eslint-disable-next-line no-shadow
export enum AppConfigValues { export const AppConfigValues = {
APP_CONFIG_LANGUAGES_KEY = 'languages', APP_CONFIG_LANGUAGES_KEY: 'languages',
PROVIDERS = 'providers', PROVIDERS: 'providers',
OAUTHCONFIG = 'oauth2', OAUTHCONFIG: 'oauth2',
ECMHOST = 'ecmHost', ECMHOST: 'ecmHost',
BASESHAREURL = 'baseShareUrl', BASESHAREURL: 'baseShareUrl',
OOI_CONNECTOR_URL = 'ooiServiceUrl', OOI_CONNECTOR_URL: 'ooiServiceUrl',
BPMHOST = 'bpmHost', BPMHOST: 'bpmHost',
IDENTITY_HOST = 'identityHost', IDENTITY_HOST: 'identityHost',
AUTHTYPE = 'authType', AUTHTYPE: 'authType',
CONTEXTROOTECM = 'contextRootEcm', CONTEXTROOTECM: 'contextRootEcm',
CONTEXTROOTBPM = 'contextRootBpm', CONTEXTROOTBPM: 'contextRootBpm',
ALFRESCO_REPOSITORY_NAME = 'alfrescoRepositoryName', ALFRESCO_REPOSITORY_NAME: 'alfrescoRepositoryName',
LOG_LEVEL = 'logLevel', LOG_LEVEL: 'logLevel',
LOGIN_ROUTE = 'loginRoute', LOGIN_ROUTE: 'loginRoute',
DISABLECSRF = 'disableCSRF', DISABLECSRF: 'disableCSRF',
AUTH_WITH_CREDENTIALS = 'auth.withCredentials', AUTH_WITH_CREDENTIALS: 'auth.withCredentials',
APPLICATION = 'application', APPLICATION: 'application',
STORAGE_PREFIX = 'application.storagePrefix', STORAGE_PREFIX: 'application.storagePrefix',
NOTIFY_DURATION = 'notificationDefaultDuration', NOTIFY_DURATION: 'notificationDefaultDuration',
CONTENT_TICKET_STORAGE_LABEL = 'ticket-ECM', CONTENT_TICKET_STORAGE_LABEL: 'ticket-ECM',
PROCESS_TICKET_STORAGE_LABEL = 'ticket-BPM', PROCESS_TICKET_STORAGE_LABEL: 'ticket-BPM',
UNSAVED_CHANGES_MODAL_HIDDEN = 'unsaved_changes__modal_hidden' UNSAVED_CHANGES_MODAL_HIDDEN: 'unsaved_changes__modal_hidden'
} } as const;
// eslint-disable-next-line no-shadow export type AppConfigValues = (typeof AppConfigValues)[keyof typeof AppConfigValues];
export enum Status {
INIT = 'init', export const Status = {
LOADING = 'loading', INIT: 'init',
LOADED = 'loaded' LOADING: 'loading',
} LOADED: 'loaded'
} as const;
export type Status = (typeof Status)[keyof typeof Status];
/* spellchecker: enable */ /* spellchecker: enable */
@@ -27,13 +27,14 @@ import { Directionality, Direction } from '@angular/cdk/bidi';
import { DEFAULT_LANGUAGE_LIST } from '../models/default-languages.model'; import { DEFAULT_LANGUAGE_LIST } from '../models/default-languages.model';
import { toSignal } from '@angular/core/rxjs-interop'; import { toSignal } from '@angular/core/rxjs-interop';
// eslint-disable-next-line no-shadow export const UserPreferenceValues = {
export enum UserPreferenceValues { PaginationSize: 'paginationSize',
PaginationSize = 'paginationSize', Locale: 'locale',
Locale = 'locale', SupportedPageSizes: 'supportedPageSizes',
SupportedPageSizes = 'supportedPageSizes', ExpandedSideNavStatus: 'expandedSidenav'
ExpandedSideNavStatus = 'expandedSidenav' } as const;
}
export type UserPreferenceValues = (typeof UserPreferenceValues)[keyof typeof UserPreferenceValues];
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
@@ -85,12 +85,13 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { IconModule } from '../../../icon/icon.module'; import { IconModule } from '../../../icon/icon.module';
import { MatTooltipModule } from '@angular/material/tooltip'; import { MatTooltipModule } from '@angular/material/tooltip';
// eslint-disable-next-line no-shadow export const ShowHeaderMode = {
export enum ShowHeaderMode { Never: 'never',
Never = 'never', Always: 'always',
Always = 'always', Data: 'data'
Data = 'data' } as const;
}
export type ShowHeaderMode = (typeof ShowHeaderMode)[keyof typeof ShowHeaderMode];
@Component({ @Component({
selector: 'adf-datatable', selector: 'adf-datatable',
@@ -216,7 +217,7 @@ export class DataTableComponent implements OnInit, AfterContentInit, OnChanges,
/** Toggles the header. */ /** Toggles the header. */
@Input() @Input()
showHeader = ShowHeaderMode.Data; showHeader: ShowHeaderMode = ShowHeaderMode.Data;
/** Toggles the sticky header mode. */ /** Toggles the sticky header mode. */
@Input() @Input()
@@ -102,9 +102,10 @@ export class WidgetVisibilityModel {
} }
} }
// eslint-disable-next-line no-shadow export const WidgetTypeEnum = {
export enum WidgetTypeEnum { field: 'field',
field = 'field', variable: 'variable',
variable = 'variable', value: 'value'
value = 'value' } as const;
}
export type WidgetTypeEnum = (typeof WidgetTypeEnum)[keyof typeof WidgetTypeEnum];
@@ -15,13 +15,14 @@
* limitations under the License. * limitations under the License.
*/ */
// eslint-disable-next-line no-shadow export const NOTIFICATION_TYPE = {
export enum NOTIFICATION_TYPE { INFO: 'info',
INFO = 'info', WARN: 'warning',
WARN = 'warning', ERROR: 'error',
ERROR = 'error', RECURSIVE: 'recursive'
RECURSIVE = 'recursive' } as const;
}
export type NOTIFICATION_TYPE = (typeof NOTIFICATION_TYPE)[keyof typeof NOTIFICATION_TYPE];
export interface NotificationInitiator { export interface NotificationInitiator {
key: string | symbol; key: string | symbol;
@@ -15,11 +15,11 @@
* limitations under the License. * limitations under the License.
*/ */
// eslint-disable-next-line no-shadow export const SearchTextStateEnum = {
export enum SearchTextStateEnum { expanded: 'expanded',
expanded = 'expanded', collapsed: 'collapsed'
collapsed = 'collapsed' } as const;
} export type SearchTextStateEnum = (typeof SearchTextStateEnum)[keyof typeof SearchTextStateEnum];
export interface SearchAnimationState { export interface SearchAnimationState {
value: string; value: string;
@@ -660,7 +660,11 @@ describe('Test PdfViewer - User interaction', () => {
it('should have corrected content in annotation popup', fakeAsync(() => { it('should have corrected content in annotation popup', fakeAsync(() => {
dispatchAnnotationLayerRenderedEvent(); dispatchAnnotationLayerRenderedEvent();
expect(annotationElement.querySelector('.title').textContent).toBe('Annotation title'); expect(annotationElement.querySelector('.title').textContent).toBe('Annotation title');
expect(annotationElement.querySelector('.popupDate').textContent).toBe('2/2/2026, 10:41:06 AM'); // Date format can vary by locale, so we just check it contains the expected date components
const dateText = annotationElement.querySelector('.popupDate').textContent;
expect(dateText).toContain('2026');
expect(dateText).toContain('02');
expect(dateText).toContain('10:41:06');
expect(annotationElement.querySelector('.popupContent').textContent).toBe('Annotation contents'); expect(annotationElement.querySelector('.popupContent').textContent).toBe('Annotation contents');
expect(getAnnotationPopupElement()).toBeDefined(); expect(getAnnotationPopupElement()).toBeDefined();
})); }));
@@ -230,7 +230,7 @@ export class ViewerComponent<T> implements OnDestroy, OnInit, OnChanges {
* Change the close button position Right/Left. * Change the close button position Right/Left.
*/ */
@Input() @Input()
closeButtonPosition = CloseButtonPosition.Left; closeButtonPosition: CloseButtonPosition = CloseButtonPosition.Left;
/** Toggles the 'Info Button' */ /** Toggles the 'Info Button' */
@Input() @Input()
@@ -16,7 +16,9 @@
*/ */
/* Enum listing the allowed actions that can be emitted from the NonResponsivePreview dialog component */ /* Enum listing the allowed actions that can be emitted from the NonResponsivePreview dialog component */
export enum DownloadPromptActions { export const DownloadPromptActions = {
'WAIT', WAIT: 'WAIT',
'DOWNLOAD' DOWNLOAD: 'DOWNLOAD'
} } as const;
export type DownloadPromptActions = (typeof DownloadPromptActions)[keyof typeof DownloadPromptActions];
@@ -15,10 +15,12 @@
* limitations under the License. * limitations under the License.
*/ */
export enum CloseButtonPosition { export const CloseButtonPosition = {
Right = 'right', Right: 'right',
Left = 'left' Left: 'left'
} } as const;
export type CloseButtonPosition = (typeof CloseButtonPosition)[keyof typeof CloseButtonPosition];
export interface Track { export interface Track {
src: string; src: string;
-1
View File
@@ -56,7 +56,6 @@
"no-bitwise": "off", "no-bitwise": "off",
"no-duplicate-imports": "error", "no-duplicate-imports": "error",
"no-multiple-empty-lines": "error", "no-multiple-empty-lines": "error",
"no-redeclare": "error",
"no-return-await": "error", "no-return-await": "error",
"rxjs/no-create": "error", "rxjs/no-create": "error",
"rxjs/no-subject-unsubscribe": "error", "rxjs/no-subject-unsubscribe": "error",
@@ -17,14 +17,15 @@
import { ExtensionElement } from './extension-element'; import { ExtensionElement } from './extension-element';
// eslint-disable-next-line no-shadow export const ContentActionType = {
export enum ContentActionType { default: 'default',
default = 'default', button: 'button',
button = 'button', separator: 'separator',
separator = 'separator', menu: 'menu',
menu = 'menu', custom: 'custom'
custom = 'custom' } as const;
}
export type ContentActionType = (typeof ContentActionType)[keyof typeof ContentActionType];
export interface ContentActionRef extends ExtensionElement { export interface ContentActionRef extends ExtensionElement {
type: ContentActionType; type: ContentActionType;
@@ -38,8 +38,10 @@ export class Prediction {
export type UpdateType = 'AUTOFILL' | 'AUTOCORRECT'; export type UpdateType = 'AUTOFILL' | 'AUTOCORRECT';
export enum ReviewStatus { export const ReviewStatus = {
UNREVIEWED = 'UNREVIEWED', UNREVIEWED: 'UNREVIEWED',
CONFIRMED = 'CONFIRMED', CONFIRMED: 'CONFIRMED',
REJECTED = 'REJECTED' REJECTED: 'REJECTED'
} } as const;
export type ReviewStatus = (typeof ReviewStatus)[keyof typeof ReviewStatus];
@@ -74,7 +74,6 @@
"no-bitwise": "off", "no-bitwise": "off",
"no-duplicate-imports": "error", "no-duplicate-imports": "error",
"no-multiple-empty-lines": "error", "no-multiple-empty-lines": "error",
"no-redeclare": "error",
"no-return-await": "error", "no-return-await": "error",
"rxjs/no-create": "error", "rxjs/no-create": "error",
"rxjs/no-subject-unsubscribe": "error", "rxjs/no-subject-unsubscribe": "error",
@@ -48,10 +48,12 @@ export interface Descriptor {
customUIAuthFlowType?: DescriptorCustomUIAuthFlowType; customUIAuthFlowType?: DescriptorCustomUIAuthFlowType;
} }
export enum DescriptorCustomUIAuthFlowType { export const DescriptorCustomUIAuthFlowType = {
CODE = 'CODE', CODE: 'CODE',
IMPLICIT = 'IMPLICIT' IMPLICIT: 'IMPLICIT'
} } as const;
export type DescriptorCustomUIAuthFlowType = (typeof DescriptorCustomUIAuthFlowType)[keyof typeof DescriptorCustomUIAuthFlowType];
export interface DescriptorSecurity { export interface DescriptorSecurity {
role: string; role: string;
@@ -18,7 +18,6 @@
/* eslint-disable no-shadow */ /* eslint-disable no-shadow */
/* eslint-disable @typescript-eslint/naming-convention */ /* eslint-disable @typescript-eslint/naming-convention */
export class FormCloudRepresentation { export class FormCloudRepresentation {
id?: string; id?: string;
name?: string; name?: string;
description?: string; description?: string;
@@ -57,13 +56,17 @@ export interface DestinationFolderPathModel {
path: string; path: string;
} }
export enum FileSourceTypes { export const FileSourceTypes = {
ALL_FILE_SOURCES_SERVICE_ID = 'all-file-sources', ALL_FILE_SOURCES_SERVICE_ID: 'all-file-sources',
ALFRESCO_CONTENT_SOURCES_SERVICE_ID = 'alfresco-content' ALFRESCO_CONTENT_SOURCES_SERVICE_ID: 'alfresco-content'
} } as const;
export enum DestinationFolderPathType { export type FileSourceTypes = (typeof FileSourceTypes)[keyof typeof FileSourceTypes];
STATIC_TYPE = 'value',
STRING_TYPE = 'string', export const DestinationFolderPathType = {
FOLDER_TYPE = 'folder' STATIC_TYPE: 'value',
} STRING_TYPE: 'string',
FOLDER_TYPE: 'folder'
} as const;
export type DestinationFolderPathType = (typeof DestinationFolderPathType)[keyof typeof DestinationFolderPathType];
@@ -17,18 +17,19 @@
/* eslint-disable @typescript-eslint/naming-convention */ /* eslint-disable @typescript-eslint/naming-convention */
// eslint-disable-next-line no-shadow export const DateCloudFilterType = {
export enum DateCloudFilterType { NO_DATE: 'NO_DATE',
NO_DATE = 'NO_DATE', TODAY: 'TODAY',
TODAY = 'TODAY', TOMORROW: 'TOMORROW',
TOMORROW = 'TOMORROW', NEXT_7_DAYS: 'NEXT_7_DAYS',
NEXT_7_DAYS = 'NEXT_7_DAYS', WEEK: 'WEEK',
WEEK = 'WEEK', MONTH: 'MONTH',
MONTH = 'MONTH', QUARTER: 'QUARTER',
QUARTER = 'QUARTER', YEAR: 'YEAR',
YEAR = 'YEAR', RANGE: 'RANGE'
RANGE = 'RANGE' } as const;
}
export type DateCloudFilterType = (typeof DateCloudFilterType)[keyof typeof DateCloudFilterType];
export interface DateRangeFilter { export interface DateRangeFilter {
startDate: string; startDate: string;
@@ -15,9 +15,10 @@
* limitations under the License. * limitations under the License.
*/ */
// eslint-disable-next-line no-shadow export const ProcessListCloudPreferences = {
export enum ProcessListCloudPreferences { columnOrder: 'processes-cloud-list-columns-order',
columnOrder = 'processes-cloud-list-columns-order', columnsVisibility: 'processes-cloud-columns-visibility',
columnsVisibility = 'processes-cloud-columns-visibility', columnsWidths: 'processes-cloud-columns-widths'
columnsWidths = 'processes-cloud-columns-widths' } as const;
}
export type ProcessListCloudPreferences = (typeof ProcessListCloudPreferences)[keyof typeof ProcessListCloudPreferences];
@@ -225,42 +225,43 @@ export interface TextField extends FormField {
placeholder: string | null; placeholder: string | null;
} }
// eslint-disable-next-line no-shadow export const PeopleModeOptions = {
export enum PeopleModeOptions { single: 'single',
single = 'single', multiple: 'multiple'
multiple = 'multiple' } as const;
}
export type PeopleModeOptions = (typeof PeopleModeOptions)[keyof typeof PeopleModeOptions];
export interface PeopleField extends FormField { export interface PeopleField extends FormField {
required: boolean; required: boolean;
optionType: PeopleModeOptions; optionType: PeopleModeOptions;
} }
// eslint-disable-next-line no-shadow export const FormFieldType = {
export enum FormFieldType { text: 'text',
text = 'text', multiline: 'multi-line-text',
multiline = 'multi-line-text', number: 'integer',
// eslint-disable-next-line id-blacklist checkbox: 'boolean',
number = 'integer', date: 'date',
checkbox = 'boolean', datetime: 'datetime',
date = 'date', dropdown: 'dropdown',
datetime = 'datetime', typeahead: 'typeahead',
dropdown = 'dropdown', amount: 'amount',
typeahead = 'typeahead', radio: 'radio-buttons',
amount = 'amount', people: 'people',
radio = 'radio-buttons', groupOfPeople: 'functional-group',
people = 'people', dynamicTable: 'dynamicTable',
groupOfPeople = 'functional-group', hyperlink: 'hyperlink',
dynamicTable = 'dynamicTable', header: 'group',
hyperlink = 'hyperlink', uploadFile: 'upload',
header = 'group', uploadFolder: 'uploadFolder',
uploadFile = 'upload', displayValue: 'readonly',
uploadFolder = 'uploadFolder', displayText: 'readonly-text',
displayValue = 'readonly', fileViewer: 'file-viewer',
displayText = 'readonly-text', button: 'button'
fileViewer = 'file-viewer', } as const;
button = 'button'
} export type FormFieldType = (typeof FormFieldType)[keyof typeof FormFieldType];
export interface FormCloudDisplayModeConfigurationOptions { export interface FormCloudDisplayModeConfigurationOptions {
onCompleteTask(id?: string): void; onCompleteTask(id?: string): void;
@@ -280,12 +281,13 @@ export interface FormCloudDisplayModeConfiguration {
default?: boolean; default?: boolean;
} }
// eslint-disable-next-line no-shadow export const FormCloudDisplayMode = {
export enum FormCloudDisplayMode { inline: 'inline',
inline = 'inline', fullScreen: 'fullScreen',
fullScreen = 'fullScreen', standalone: 'standalone'
standalone = 'standalone' } as const;
}
export type FormCloudDisplayMode = (typeof FormCloudDisplayMode)[keyof typeof FormCloudDisplayMode];
export interface FormCloudDisplayModeChange { export interface FormCloudDisplayModeChange {
displayMode: string; displayMode: string;
@@ -322,22 +322,26 @@ export interface FilterOptions {
value?: string; value?: string;
} }
export enum AssignmentType { export const AssignmentType = {
CURRENT_USER = 'CURRENT_USER', CURRENT_USER: 'CURRENT_USER',
UNASSIGNED = 'UNASSIGNED', UNASSIGNED: 'UNASSIGNED',
NONE = 'NONE', NONE: 'NONE',
CANDIDATE_GROUPS = 'CANDIDATE_GROUPS', CANDIDATE_GROUPS: 'CANDIDATE_GROUPS',
ASSIGNED_TO = 'ASSIGNED_TO' ASSIGNED_TO: 'ASSIGNED_TO'
} } as const;
export enum TaskStatusFilter { export type AssignmentType = (typeof AssignmentType)[keyof typeof AssignmentType];
ALL = '',
CREATED = 'CREATED', export const TaskStatusFilter = {
ASSIGNED = 'ASSIGNED', ALL: '',
SUSPENDED = 'SUSPENDED', CREATED: 'CREATED',
CANCELLED = 'CANCELLED', ASSIGNED: 'ASSIGNED',
COMPLETED = 'COMPLETED' SUSPENDED: 'SUSPENDED',
} CANCELLED: 'CANCELLED',
COMPLETED: 'COMPLETED'
} as const;
export type TaskStatusFilter = (typeof TaskStatusFilter)[keyof typeof TaskStatusFilter];
export interface TaskFilterProperties { export interface TaskFilterProperties {
label?: string; label?: string;
@@ -51,12 +51,13 @@ import { TaskCloudService } from '../../services/task-cloud.service';
import { PreferenceCloudServiceInterface } from '../../../services/preference-cloud.interface'; import { PreferenceCloudServiceInterface } from '../../../services/preference-cloud.interface';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
// eslint-disable-next-line no-shadow export const TasksListCloudPreferences = {
export enum TasksListCloudPreferences { columnOrder: 'tasks-list-cloud-columns-order',
columnOrder = 'tasks-list-cloud-columns-order', columnsVisibility: 'tasks-list-cloud-columns-visibility',
columnsVisibility = 'tasks-list-cloud-columns-visibility', columnsWidths: 'tasks-list-cloud-columns-widths'
columnsWidths = 'tasks-list-cloud-columns-widths' } as const;
}
export type TasksListCloudPreferences = (typeof TasksListCloudPreferences)[keyof typeof TasksListCloudPreferences];
const taskPresetsCloudDefaultModel = { const taskPresetsCloudDefaultModel = {
default: [ default: [
@@ -15,10 +15,10 @@
* limitations under the License. * limitations under the License.
*/ */
import { SimpleChange, Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { SimpleChange, Component, DebugElement } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { of, throwError } from 'rxjs'; import { of, Subscription, throwError } from 'rxjs';
import { TaskAttachmentListComponent } from './task-attachment-list.component'; import { TaskAttachmentListComponent } from './task-attachment-list.component';
import { mockEmittedTaskAttachments, mockTaskAttachments } from '../../testing/mock/task/task-attachments.mock'; import { mockEmittedTaskAttachments, mockTaskAttachments } from '../../testing/mock/task/task-attachments.mock';
import { ProcessContentService } from '../../form/services/process-content.service'; import { ProcessContentService } from '../../form/services/process-content.service';
@@ -34,7 +34,7 @@ describe('TaskAttachmentList', () => {
let deleteContentSpy: jasmine.Spy; let deleteContentSpy: jasmine.Spy;
let getFileRawContentSpy: jasmine.Spy; let getFileRawContentSpy: jasmine.Spy;
let getContentPreviewSpy: jasmine.Spy; let getContentPreviewSpy: jasmine.Spy;
let disposableSuccess: any; let disposableSuccess: Subscription;
let loader: HarnessLoader; let loader: HarnessLoader;
beforeEach(() => { beforeEach(() => {
@@ -76,7 +76,7 @@ describe('TaskAttachmentList', () => {
it('should emit an error when an error occurs loading attachments', () => { it('should emit an error when an error occurs loading attachments', () => {
const emitSpy = spyOn(component.error, 'emit'); const emitSpy = spyOn(component.error, 'emit');
getTaskRelatedContentSpy.and.returnValue(throwError({})); getTaskRelatedContentSpy.and.returnValue(throwError(() => new Error('Error loading attachments')));
const change = new SimpleChange(null, '123', true); const change = new SimpleChange(null, '123', true);
component.ngOnChanges({ taskId: change }); component.ngOnChanges({ taskId: change });
expect(emitSpy).toHaveBeenCalled(); expect(emitSpy).toHaveBeenCalled();
@@ -296,8 +296,7 @@ describe('Custom CustomEmptyTemplateComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
declarations: [CustomEmptyTemplateComponent], declarations: [CustomEmptyTemplateComponent]
schemas: [CUSTOM_ELEMENTS_SCHEMA]
}); });
fixture = TestBed.createComponent(CustomEmptyTemplateComponent); fixture = TestBed.createComponent(CustomEmptyTemplateComponent);
fixture.detectChanges(); fixture.detectChanges();
@@ -311,7 +310,7 @@ describe('Custom CustomEmptyTemplateComponent', () => {
fixture.detectChanges(); fixture.detectChanges();
await fixture.whenStable(); await fixture.whenStable();
const title: any = fixture.debugElement.queryAll(By.css('[adf-empty-list-header]')); const title: DebugElement[] = fixture.debugElement.queryAll(By.css('[adf-empty-list-header]'));
expect(title.length).toBe(1); expect(title.length).toBe(1);
expect(title[0].nativeElement.innerText).toBe('Custom header'); expect(title[0].nativeElement.innerText).toBe('Custom header');
}); });
@@ -18,7 +18,7 @@
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { ContentNodeSelectorPanelComponent, DocumentListService, SitesService, NodesApiService } from '@alfresco/adf-content-services'; import { ContentNodeSelectorPanelComponent, DocumentListService, SitesService, NodesApiService } from '@alfresco/adf-content-services';
import { EventEmitter, NO_ERRORS_SCHEMA } from '@angular/core'; import { EventEmitter } from '@angular/core';
import { AttachFileWidgetDialogComponent } from './attach-file-widget-dialog.component'; import { AttachFileWidgetDialogComponent } from './attach-file-widget-dialog.component';
import { AuthenticationService, NoopAuthModule } from '@alfresco/adf-core'; import { AuthenticationService, NoopAuthModule } from '@alfresco/adf-core';
import { AttachFileWidgetDialogComponentData } from './attach-file-widget-dialog-component.interface'; import { AttachFileWidgetDialogComponentData } from './attach-file-widget-dialog-component.interface';
@@ -53,8 +53,7 @@ describe('AttachFileWidgetDialogComponent', () => {
providers: [ providers: [
{ provide: MAT_DIALOG_DATA, useValue: data }, { provide: MAT_DIALOG_DATA, useValue: data },
{ provide: MatDialogRef, useValue: { close: () => of() } } { provide: MatDialogRef, useValue: { close: () => of() } }
], ]
schemas: [NO_ERRORS_SCHEMA]
}); });
fixture = TestBed.createComponent(AttachFileWidgetDialogComponent); fixture = TestBed.createComponent(AttachFileWidgetDialogComponent);
widget = fixture.componentInstance; widget = fixture.componentInstance;
@@ -71,7 +70,7 @@ describe('AttachFileWidgetDialogComponent', () => {
authService.onLogin = new Subject<any>(); authService.onLogin = new Subject<any>();
spyOn(documentListService, 'getFolderNode').and.returnValue(of({ entry: { path: { elements: [] } } } as NodeEntry)); spyOn(documentListService, 'getFolderNode').and.returnValue(of({ entry: { path: { elements: [] } } } as NodeEntry));
spyOn(documentListService, 'getFolder').and.returnValue(throwError('No results for test')); spyOn(documentListService, 'getFolder').and.returnValue(throwError(() => new Error('No results for test')));
spyOn(nodeService, 'getNode').and.returnValue( spyOn(nodeService, 'getNode').and.returnValue(
of(new Node({ id: 'fake-node', path: { elements: [{ nodeType: 'st:site', name: 'fake-site' }] } })) of(new Node({ id: 'fake-node', path: { elements: [{ nodeType: 'st:site', name: 'fake-site' }] } }))
); );
@@ -18,7 +18,6 @@
import { FileViewerWidgetComponent } from './file-viewer.widget'; import { FileViewerWidgetComponent } from './file-viewer.widget';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { FormModel, FormService, FormFieldModel, RedirectAuthService } from '@alfresco/adf-core'; import { FormModel, FormService, FormFieldModel, RedirectAuthService } from '@alfresco/adf-core';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { EMPTY, of } from 'rxjs'; import { EMPTY, of } from 'rxjs';
describe('FileViewerWidgetComponent', () => { describe('FileViewerWidgetComponent', () => {
@@ -48,8 +47,7 @@ describe('FileViewerWidgetComponent', () => {
providers: [ providers: [
{ provide: FormService, useValue: formServiceStub }, { provide: FormService, useValue: formServiceStub },
{ provide: RedirectAuthService, useValue: { onLogin: EMPTY, onTokenReceived: of() } } { provide: RedirectAuthService, useValue: { onLogin: EMPTY, onTokenReceived: of() } }
], ]
schemas: [CUSTOM_ELEMENTS_SCHEMA]
}); });
formServiceStub = TestBed.inject(FormService); formServiceStub = TestBed.inject(FormService);
@@ -15,7 +15,7 @@
* limitations under the License. * limitations under the License.
*/ */
import { NO_ERRORS_SCHEMA, SimpleChange } from '@angular/core'; import { SimpleChange } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { of } from 'rxjs'; import { of } from 'rxjs';
@@ -39,8 +39,7 @@ describe('ProcessInstanceDetailsComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProcessInstanceDetailsComponent], imports: [ProcessInstanceDetailsComponent],
providers: [{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }], providers: [{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }]
schemas: [NO_ERRORS_SCHEMA]
}); });
fixture = TestBed.createComponent(ProcessInstanceDetailsComponent); fixture = TestBed.createComponent(ProcessInstanceDetailsComponent);
component = fixture.componentInstance; component = fixture.componentInstance;
@@ -20,7 +20,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
import { TaskFormComponent } from './task-form.component'; import { TaskFormComponent } from './task-form.component';
import { FormModel, FormOutcomeEvent, FormOutcomeModel } from '@alfresco/adf-core'; import { FormModel, FormOutcomeEvent, FormOutcomeModel } from '@alfresco/adf-core';
import { TaskListService } from '../../services/tasklist.service'; import { TaskListService } from '../../services/tasklist.service';
import { NO_ERRORS_SCHEMA, SimpleChange } from '@angular/core'; import { SimpleChange } from '@angular/core';
import { of, throwError } from 'rxjs'; import { of, throwError } from 'rxjs';
import { import {
claimableTaskDetailsMock, claimableTaskDetailsMock,
@@ -45,7 +45,7 @@ import { By } from '@angular/platform-browser';
import { TaskFormService } from '../../../form/services/task-form.service'; import { TaskFormService } from '../../../form/services/task-form.service';
import { TaskService } from '../../../form/services/task.service'; import { TaskService } from '../../../form/services/task.service';
import { PeopleProcessService } from '../../../services/people-process.service'; import { PeopleProcessService } from '../../../services/people-process.service';
import { TaskRepresentation } from '@alfresco/js-api'; import { TaskRepresentation, UserRepresentation } from '@alfresco/js-api';
describe('TaskFormComponent', () => { describe('TaskFormComponent', () => {
let component: TaskFormComponent; let component: TaskFormComponent;
@@ -61,7 +61,7 @@ describe('TaskFormComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
schemas: [NO_ERRORS_SCHEMA] imports: [TaskFormComponent]
}); });
fixture = TestBed.createComponent(TaskFormComponent); fixture = TestBed.createComponent(TaskFormComponent);
component = fixture.componentInstance; component = fixture.componentInstance;
@@ -77,7 +77,7 @@ describe('TaskFormComponent', () => {
taskDetailsMock.processDefinitionId = null; taskDetailsMock.processDefinitionId = null;
spyOn(taskService, 'getTask').and.returnValue(of(taskDetailsMock)); spyOn(taskService, 'getTask').and.returnValue(of(taskDetailsMock));
peopleProcessService = TestBed.inject(PeopleProcessService); peopleProcessService = TestBed.inject(PeopleProcessService);
getBpmLoggedUserSpy = spyOn(peopleProcessService, 'getCurrentUserInfo').and.returnValue(of(fakeUser as any)); getBpmLoggedUserSpy = spyOn(peopleProcessService, 'getCurrentUserInfo').and.returnValue(of(fakeUser as UserRepresentation));
}); });
afterEach(async () => { afterEach(async () => {
@@ -754,12 +754,12 @@ describe('TaskFormComponent', () => {
it('should emit error event in case claim task api fails', (done) => { it('should emit error event in case claim task api fails', (done) => {
const mockError = { message: 'Api Failed' }; const mockError = { message: 'Api Failed' };
spyOn(taskListService, 'claimTask').and.returnValue(throwError(mockError)); spyOn(taskListService, 'claimTask').and.returnValue(throwError(() => mockError));
getTaskDetailsSpy.and.returnValue(of(claimableTaskDetailsMock)); getTaskDetailsSpy.and.returnValue(of(claimableTaskDetailsMock));
component.taskId = 'mock-task-id'; component.taskId = 'mock-task-id';
component.error.subscribe((error) => { component.error.subscribe((error: unknown) => {
expect(error).toEqual(mockError); expect(error).toEqual(mockError);
done(); done();
}); });
@@ -792,13 +792,13 @@ describe('TaskFormComponent', () => {
it('should emit error event in case unclaim task api fails', (done) => { it('should emit error event in case unclaim task api fails', (done) => {
const mockError = { message: 'Api Failed' }; const mockError = { message: 'Api Failed' };
spyOn(taskListService, 'unclaimTask').and.returnValue(throwError(mockError)); spyOn(taskListService, 'unclaimTask').and.returnValue(throwError(() => mockError));
getBpmLoggedUserSpy.and.returnValue(of(claimedTaskDetailsMock.assignee)); getBpmLoggedUserSpy.and.returnValue(of(claimedTaskDetailsMock.assignee));
getTaskDetailsSpy.and.returnValue(of(claimedTaskDetailsMock)); getTaskDetailsSpy.and.returnValue(of(claimedTaskDetailsMock));
component.taskId = 'mock-task-id'; component.taskId = 'mock-task-id';
component.error.subscribe((error: any) => { component.error.subscribe((error: unknown) => {
expect(error).toEqual(mockError); expect(error).toEqual(mockError);
done(); done();
}); });
+105 -74
View File
@@ -201,6 +201,7 @@
"integrity": "sha512-uIxi6Vzss6+ycljVhkyPUPWa20w8qxJL9lEn0h6+sX/fhM8Djt0FHIuTQjoX58EoMaQ/1jrXaRaGimkbaFcG9A==", "integrity": "sha512-uIxi6Vzss6+ycljVhkyPUPWa20w8qxJL9lEn0h6+sX/fhM8Djt0FHIuTQjoX58EoMaQ/1jrXaRaGimkbaFcG9A==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@ampproject/remapping": "2.3.0", "@ampproject/remapping": "2.3.0",
"@angular-devkit/architect": "0.1902.19", "@angular-devkit/architect": "0.1902.19",
@@ -408,6 +409,7 @@
"integrity": "sha512-JbLL+4IMLMBgjLZlnPG4lYDfz4zGrJ/s6Aoon321NJKuw1Kb1k5KpFu9dUY0BqLIe8xPQ2UJBpI+xXdK5MXMHQ==", "integrity": "sha512-JbLL+4IMLMBgjLZlnPG4lYDfz4zGrJ/s6Aoon321NJKuw1Kb1k5KpFu9dUY0BqLIe8xPQ2UJBpI+xXdK5MXMHQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"ajv": "8.17.1", "ajv": "8.17.1",
"ajv-formats": "3.0.1", "ajv-formats": "3.0.1",
@@ -546,6 +548,7 @@
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-19.2.18.tgz", "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-19.2.18.tgz",
"integrity": "sha512-c76x1t+OiSstPsvJdHmV8Q4taF+8SxWKqiY750fOjpd01it4jJbU6YQqIroC6Xie7154zZIxOTHH2uTj+nm5qA==", "integrity": "sha512-c76x1t+OiSstPsvJdHmV8Q4taF+8SxWKqiY750fOjpd01it4jJbU6YQqIroC6Xie7154zZIxOTHH2uTj+nm5qA==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"tslib": "^2.3.0" "tslib": "^2.3.0"
}, },
@@ -563,6 +566,7 @@
"integrity": "sha512-SFzQ1bRkNFiOVu+aaz+9INmts7tDUrsHLEr9HmARXr9qk5UmR8prlw39p2u+Bvi6/lCiJ18TZMQQl9mGyr63lg==", "integrity": "sha512-SFzQ1bRkNFiOVu+aaz+9INmts7tDUrsHLEr9HmARXr9qk5UmR8prlw39p2u+Bvi6/lCiJ18TZMQQl9mGyr63lg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@ampproject/remapping": "2.3.0", "@ampproject/remapping": "2.3.0",
"@angular-devkit/architect": "0.1902.19", "@angular-devkit/architect": "0.1902.19",
@@ -648,6 +652,7 @@
"resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-19.2.19.tgz", "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-19.2.19.tgz",
"integrity": "sha512-PCpJagurPBqciqcq4Z8+3OtKLb7rSl4w/qBJoIMua8CgnrjvA1i+SWawhdtfI1zlY8FSwhzLwXV0CmWWfFzQPg==", "integrity": "sha512-PCpJagurPBqciqcq4Z8+3OtKLb7rSl4w/qBJoIMua8CgnrjvA1i+SWawhdtfI1zlY8FSwhzLwXV0CmWWfFzQPg==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"parse5": "^7.1.2", "parse5": "^7.1.2",
"tslib": "^2.3.0" "tslib": "^2.3.0"
@@ -663,6 +668,7 @@
"resolved": "https://registry.npmjs.org/@angular/common/-/common-19.2.18.tgz", "resolved": "https://registry.npmjs.org/@angular/common/-/common-19.2.18.tgz",
"integrity": "sha512-CrV02Omzw/QtfjlEVXVPJVXipdx83NuA+qSASZYrxrhKFusUZyK3P/Zznqg+wiAeNDbedQwMUVqoAARHf0xQrw==", "integrity": "sha512-CrV02Omzw/QtfjlEVXVPJVXipdx83NuA+qSASZYrxrhKFusUZyK3P/Zznqg+wiAeNDbedQwMUVqoAARHf0xQrw==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"tslib": "^2.3.0" "tslib": "^2.3.0"
}, },
@@ -679,6 +685,7 @@
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-19.2.18.tgz", "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-19.2.18.tgz",
"integrity": "sha512-3MscvODxRVxc3Cs0ZlHI5Pk5rEvE80otfvxZTMksOZuPlv1B+S8MjWfc3X3jk9SbyUEzODBEH55iCaBHD48V3g==", "integrity": "sha512-3MscvODxRVxc3Cs0ZlHI5Pk5rEvE80otfvxZTMksOZuPlv1B+S8MjWfc3X3jk9SbyUEzODBEH55iCaBHD48V3g==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"tslib": "^2.3.0" "tslib": "^2.3.0"
}, },
@@ -692,6 +699,7 @@
"integrity": "sha512-N4TMtLfImJIoMaRL6mx7885UBeQidywptHH6ACZj71Ar6++DBc1mMlcwuvbeJCd3r3y8MQ5nLv5PZSN/tHr13w==", "integrity": "sha512-N4TMtLfImJIoMaRL6mx7885UBeQidywptHH6ACZj71Ar6++DBc1mMlcwuvbeJCd3r3y8MQ5nLv5PZSN/tHr13w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@babel/core": "7.26.9", "@babel/core": "7.26.9",
"@jridgewell/sourcemap-codec": "^1.4.14", "@jridgewell/sourcemap-codec": "^1.4.14",
@@ -768,6 +776,7 @@
"resolved": "https://registry.npmjs.org/@angular/core/-/core-19.2.18.tgz", "resolved": "https://registry.npmjs.org/@angular/core/-/core-19.2.18.tgz",
"integrity": "sha512-+QRrf0Igt8ccUWXHA+7doK5W6ODyhHdqVyblSlcQ8OciwkzIIGGEYNZom5OZyWMh+oI54lcSeyV2O3xaDepSrQ==", "integrity": "sha512-+QRrf0Igt8ccUWXHA+7doK5W6ODyhHdqVyblSlcQ8OciwkzIIGGEYNZom5OZyWMh+oI54lcSeyV2O3xaDepSrQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"tslib": "^2.3.0" "tslib": "^2.3.0"
}, },
@@ -784,6 +793,7 @@
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-19.2.18.tgz", "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-19.2.18.tgz",
"integrity": "sha512-pe40934jWhoS7DyGl7jyZdoj1gvBgur2t1zrJD+csEkTitYnW14+La2Pv6SW1pNX5nIzFsgsS9Nex1KcH5S6Tw==", "integrity": "sha512-pe40934jWhoS7DyGl7jyZdoj1gvBgur2t1zrJD+csEkTitYnW14+La2Pv6SW1pNX5nIzFsgsS9Nex1KcH5S6Tw==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"tslib": "^2.3.0" "tslib": "^2.3.0"
}, },
@@ -802,6 +812,7 @@
"resolved": "https://registry.npmjs.org/@angular/material/-/material-19.2.19.tgz", "resolved": "https://registry.npmjs.org/@angular/material/-/material-19.2.19.tgz",
"integrity": "sha512-auIE6JUzTIA3LyYklh9J/T7u64crmphxUBgAa0zcOMDog6SYfwbNe9YeLQqua5ek4OUAOdK/BHHfVl5W5iaUoQ==", "integrity": "sha512-auIE6JUzTIA3LyYklh9J/T7u64crmphxUBgAa0zcOMDog6SYfwbNe9YeLQqua5ek4OUAOdK/BHHfVl5W5iaUoQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"tslib": "^2.3.0" "tslib": "^2.3.0"
}, },
@@ -833,6 +844,7 @@
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-19.2.18.tgz", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-19.2.18.tgz",
"integrity": "sha512-eahtsHPyXTYLARs9YOlXhnXGgzw0wcyOcDkBvNWK/3lA0NHIgIHmQgXAmBo+cJ+g9skiEQTD2OmSrrwbFKWJkw==", "integrity": "sha512-eahtsHPyXTYLARs9YOlXhnXGgzw0wcyOcDkBvNWK/3lA0NHIgIHmQgXAmBo+cJ+g9skiEQTD2OmSrrwbFKWJkw==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"tslib": "^2.3.0" "tslib": "^2.3.0"
}, },
@@ -855,6 +867,7 @@
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-19.2.18.tgz", "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-19.2.18.tgz",
"integrity": "sha512-wqDtK2yVN5VDqVeOSOfqELdu40fyoIDknBGSxA27CEXzFVdMWJyIpuvUi+GMa+9eGjlS+1uVVBaRwxmnuvHj+A==", "integrity": "sha512-wqDtK2yVN5VDqVeOSOfqELdu40fyoIDknBGSxA27CEXzFVdMWJyIpuvUi+GMa+9eGjlS+1uVVBaRwxmnuvHj+A==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"tslib": "^2.3.0" "tslib": "^2.3.0"
}, },
@@ -891,6 +904,7 @@
"resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.13.1.tgz", "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.13.1.tgz",
"integrity": "sha512-HaAt62h3jNUXpJ1v5HNgUiCzPP1c5zc2Q/FeTb2cTk/v09YlhoqKKHQFJI7St50VCJ5q8JVIc03I5bRcBrQxsg==", "integrity": "sha512-HaAt62h3jNUXpJ1v5HNgUiCzPP1c5zc2Q/FeTb2cTk/v09YlhoqKKHQFJI7St50VCJ5q8JVIc03I5bRcBrQxsg==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@graphql-typed-document-node/core": "^3.1.1", "@graphql-typed-document-node/core": "^3.1.1",
"@wry/caches": "^1.0.0", "@wry/caches": "^1.0.0",
@@ -1011,6 +1025,7 @@
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
"integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@ampproject/remapping": "^2.2.0", "@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.26.2", "@babel/code-frame": "^7.26.2",
@@ -2945,6 +2960,7 @@
"integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@keyv/serialize": "^1.1.1" "@keyv/serialize": "^1.1.1"
} }
@@ -3165,7 +3181,8 @@
"version": "4.0.19", "version": "4.0.19",
"resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.19.tgz", "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.19.tgz",
"integrity": "sha512-VYHtPnZt/Zd/ATbW3rtexWpBnHUohUrQOHff/2JBhsVgxOrksAxJnLAO43Q1ayLJBJUUwNVo+RU0sx0aaysZfg==", "integrity": "sha512-VYHtPnZt/Zd/ATbW3rtexWpBnHUohUrQOHff/2JBhsVgxOrksAxJnLAO43Q1ayLJBJUUwNVo+RU0sx0aaysZfg==",
"license": "MIT" "license": "MIT",
"peer": true
}, },
"node_modules/@cspell/dict-dart": { "node_modules/@cspell/dict-dart": {
"version": "2.3.2", "version": "2.3.2",
@@ -3285,13 +3302,15 @@
"version": "4.0.14", "version": "4.0.14",
"resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.14.tgz", "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.14.tgz",
"integrity": "sha512-2bf7n+kS92g+cMKV0wr9o/Oq9n8JzU7CcrB96gIh2GHgnF+0xDOqO2W/1KeFAqOfqosoOVE48t+4dnEMkkoJ2Q==", "integrity": "sha512-2bf7n+kS92g+cMKV0wr9o/Oq9n8JzU7CcrB96gIh2GHgnF+0xDOqO2W/1KeFAqOfqosoOVE48t+4dnEMkkoJ2Q==",
"license": "MIT" "license": "MIT",
"peer": true
}, },
"node_modules/@cspell/dict-html-symbol-entities": { "node_modules/@cspell/dict-html-symbol-entities": {
"version": "4.0.5", "version": "4.0.5",
"resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.5.tgz", "resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.5.tgz",
"integrity": "sha512-429alTD4cE0FIwpMucvSN35Ld87HCyuM8mF731KU5Rm4Je2SG6hmVx7nkBsLyrmH3sQukTcr1GaiZsiEg8svPA==", "integrity": "sha512-429alTD4cE0FIwpMucvSN35Ld87HCyuM8mF731KU5Rm4Je2SG6hmVx7nkBsLyrmH3sQukTcr1GaiZsiEg8svPA==",
"license": "MIT" "license": "MIT",
"peer": true
}, },
"node_modules/@cspell/dict-java": { "node_modules/@cspell/dict-java": {
"version": "5.0.12", "version": "5.0.12",
@@ -3462,7 +3481,8 @@
"version": "3.2.3", "version": "3.2.3",
"resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.2.3.tgz", "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.2.3.tgz",
"integrity": "sha512-zXh1wYsNljQZfWWdSPYwQhpwiuW0KPW1dSd8idjMRvSD0aSvWWHoWlrMsmZeRl4qM4QCEAjua8+cjflm41cQBg==", "integrity": "sha512-zXh1wYsNljQZfWWdSPYwQhpwiuW0KPW1dSd8idjMRvSD0aSvWWHoWlrMsmZeRl4qM4QCEAjua8+cjflm41cQBg==",
"license": "MIT" "license": "MIT",
"peer": true
}, },
"node_modules/@cspell/dict-vue": { "node_modules/@cspell/dict-vue": {
"version": "3.0.5", "version": "3.0.5",
@@ -3646,6 +3666,7 @@
} }
], ],
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": ">=18" "node": ">=18"
}, },
@@ -3689,6 +3710,7 @@
} }
], ],
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": ">=18" "node": ">=18"
} }
@@ -6938,6 +6960,7 @@
"integrity": "sha512-8PFQxtmXc6ukBC4CqGIoc96M2Ly9WVwCPu4Ffvt+K/SB6rGbeFeZoYAwREV1zGNMJ5v5ly6+AHIEOBxNuSnzSg==", "integrity": "sha512-8PFQxtmXc6ukBC4CqGIoc96M2Ly9WVwCPu4Ffvt+K/SB6rGbeFeZoYAwREV1zGNMJ5v5ly6+AHIEOBxNuSnzSg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@module-federation/bridge-react-webpack-plugin": "0.21.6", "@module-federation/bridge-react-webpack-plugin": "0.21.6",
"@module-federation/cli": "0.21.6", "@module-federation/cli": "0.21.6",
@@ -7274,6 +7297,7 @@
"integrity": "sha512-GzqNytPPnQVejl78XFFvtLyj3XNgPu6rSac2EbQkCxV3uzAD3kFQ7SW0VuwXWbQeRTUgt/4Nl/o+BrJXy14lsw==", "integrity": "sha512-GzqNytPPnQVejl78XFFvtLyj3XNgPu6rSac2EbQkCxV3uzAD3kFQ7SW0VuwXWbQeRTUgt/4Nl/o+BrJXy14lsw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@module-federation/runtime": "0.22.1", "@module-federation/runtime": "0.22.1",
"@module-federation/webpack-bundler-runtime": "0.22.1" "@module-federation/webpack-bundler-runtime": "0.22.1"
@@ -7427,6 +7451,7 @@
"integrity": "sha512-fnP+ZOZTFeBGiTAnxve+axGmiYn2D60h86nUISXjXClK3LUY1krUfPgf6MaD4YDJ4i51OGXZWPekeMe16pkd8Q==", "integrity": "sha512-fnP+ZOZTFeBGiTAnxve+axGmiYn2D60h86nUISXjXClK3LUY1krUfPgf6MaD4YDJ4i51OGXZWPekeMe16pkd8Q==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@module-federation/runtime": "0.21.6", "@module-federation/runtime": "0.21.6",
"@module-federation/webpack-bundler-runtime": "0.21.6" "@module-federation/webpack-bundler-runtime": "0.21.6"
@@ -9201,8 +9226,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"darwin" "darwin"
], ]
"peer": true
}, },
"node_modules/@nx/cypress/node_modules/@nx/nx-darwin-x64": { "node_modules/@nx/cypress/node_modules/@nx/nx-darwin-x64": {
"version": "21.6.10", "version": "21.6.10",
@@ -9216,8 +9240,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"darwin" "darwin"
], ]
"peer": true
}, },
"node_modules/@nx/cypress/node_modules/@nx/nx-freebsd-x64": { "node_modules/@nx/cypress/node_modules/@nx/nx-freebsd-x64": {
"version": "21.6.10", "version": "21.6.10",
@@ -9231,8 +9254,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"freebsd" "freebsd"
], ]
"peer": true
}, },
"node_modules/@nx/cypress/node_modules/@nx/nx-linux-arm-gnueabihf": { "node_modules/@nx/cypress/node_modules/@nx/nx-linux-arm-gnueabihf": {
"version": "21.6.10", "version": "21.6.10",
@@ -9246,8 +9268,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ]
"peer": true
}, },
"node_modules/@nx/cypress/node_modules/@nx/nx-linux-arm64-gnu": { "node_modules/@nx/cypress/node_modules/@nx/nx-linux-arm64-gnu": {
"version": "21.6.10", "version": "21.6.10",
@@ -9261,8 +9282,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ]
"peer": true
}, },
"node_modules/@nx/cypress/node_modules/@nx/nx-linux-arm64-musl": { "node_modules/@nx/cypress/node_modules/@nx/nx-linux-arm64-musl": {
"version": "21.6.10", "version": "21.6.10",
@@ -9276,8 +9296,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ]
"peer": true
}, },
"node_modules/@nx/cypress/node_modules/@nx/nx-linux-x64-gnu": { "node_modules/@nx/cypress/node_modules/@nx/nx-linux-x64-gnu": {
"version": "21.6.10", "version": "21.6.10",
@@ -9291,8 +9310,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ]
"peer": true
}, },
"node_modules/@nx/cypress/node_modules/@nx/nx-linux-x64-musl": { "node_modules/@nx/cypress/node_modules/@nx/nx-linux-x64-musl": {
"version": "21.6.10", "version": "21.6.10",
@@ -9306,8 +9324,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ]
"peer": true
}, },
"node_modules/@nx/cypress/node_modules/@nx/nx-win32-arm64-msvc": { "node_modules/@nx/cypress/node_modules/@nx/nx-win32-arm64-msvc": {
"version": "21.6.10", "version": "21.6.10",
@@ -9321,8 +9338,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"win32" "win32"
], ]
"peer": true
}, },
"node_modules/@nx/cypress/node_modules/@nx/nx-win32-x64-msvc": { "node_modules/@nx/cypress/node_modules/@nx/nx-win32-x64-msvc": {
"version": "21.6.10", "version": "21.6.10",
@@ -9336,8 +9352,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"win32" "win32"
], ]
"peer": true
}, },
"node_modules/@nx/cypress/node_modules/@nx/workspace": { "node_modules/@nx/cypress/node_modules/@nx/workspace": {
"version": "20.8.4", "version": "20.8.4",
@@ -9751,7 +9766,6 @@
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@napi-rs/wasm-runtime": "0.2.4", "@napi-rs/wasm-runtime": "0.2.4",
"@yarnpkg/lockfile": "^1.1.0", "@yarnpkg/lockfile": "^1.1.0",
@@ -9824,7 +9838,6 @@
"integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@jest/diff-sequences": "30.0.1", "@jest/diff-sequences": "30.0.1",
"@jest/get-type": "30.1.0", "@jest/get-type": "30.1.0",
@@ -9882,7 +9895,6 @@
"integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@jest/schemas": "30.0.5", "@jest/schemas": "30.0.5",
"ansi-styles": "^5.2.0", "ansi-styles": "^5.2.0",
@@ -9898,7 +9910,6 @@
"integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": ">=10" "node": ">=10"
}, },
@@ -9911,8 +9922,7 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT"
"peer": true
}, },
"node_modules/@nx/cypress/node_modules/restore-cursor": { "node_modules/@nx/cypress/node_modules/restore-cursor": {
"version": "3.1.0", "version": "3.1.0",
@@ -10507,6 +10517,7 @@
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@napi-rs/wasm-runtime": "0.2.4", "@napi-rs/wasm-runtime": "0.2.4",
"@yarnpkg/lockfile": "^1.1.0", "@yarnpkg/lockfile": "^1.1.0",
@@ -11848,8 +11859,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"darwin" "darwin"
], ]
"peer": true
}, },
"node_modules/@nx/storybook/node_modules/@nx/nx-darwin-x64": { "node_modules/@nx/storybook/node_modules/@nx/nx-darwin-x64": {
"version": "21.6.10", "version": "21.6.10",
@@ -11863,8 +11873,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"darwin" "darwin"
], ]
"peer": true
}, },
"node_modules/@nx/storybook/node_modules/@nx/nx-freebsd-x64": { "node_modules/@nx/storybook/node_modules/@nx/nx-freebsd-x64": {
"version": "21.6.10", "version": "21.6.10",
@@ -11878,8 +11887,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"freebsd" "freebsd"
], ]
"peer": true
}, },
"node_modules/@nx/storybook/node_modules/@nx/nx-linux-arm-gnueabihf": { "node_modules/@nx/storybook/node_modules/@nx/nx-linux-arm-gnueabihf": {
"version": "21.6.10", "version": "21.6.10",
@@ -11893,8 +11901,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ]
"peer": true
}, },
"node_modules/@nx/storybook/node_modules/@nx/nx-linux-arm64-gnu": { "node_modules/@nx/storybook/node_modules/@nx/nx-linux-arm64-gnu": {
"version": "21.6.10", "version": "21.6.10",
@@ -11908,8 +11915,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ]
"peer": true
}, },
"node_modules/@nx/storybook/node_modules/@nx/nx-linux-arm64-musl": { "node_modules/@nx/storybook/node_modules/@nx/nx-linux-arm64-musl": {
"version": "21.6.10", "version": "21.6.10",
@@ -11923,8 +11929,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ]
"peer": true
}, },
"node_modules/@nx/storybook/node_modules/@nx/nx-linux-x64-gnu": { "node_modules/@nx/storybook/node_modules/@nx/nx-linux-x64-gnu": {
"version": "21.6.10", "version": "21.6.10",
@@ -11938,8 +11943,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ]
"peer": true
}, },
"node_modules/@nx/storybook/node_modules/@nx/nx-linux-x64-musl": { "node_modules/@nx/storybook/node_modules/@nx/nx-linux-x64-musl": {
"version": "21.6.10", "version": "21.6.10",
@@ -11953,8 +11957,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"linux" "linux"
], ]
"peer": true
}, },
"node_modules/@nx/storybook/node_modules/@nx/nx-win32-arm64-msvc": { "node_modules/@nx/storybook/node_modules/@nx/nx-win32-arm64-msvc": {
"version": "21.6.10", "version": "21.6.10",
@@ -11968,8 +11971,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"win32" "win32"
], ]
"peer": true
}, },
"node_modules/@nx/storybook/node_modules/@nx/nx-win32-x64-msvc": { "node_modules/@nx/storybook/node_modules/@nx/nx-win32-x64-msvc": {
"version": "21.6.10", "version": "21.6.10",
@@ -11983,8 +11985,7 @@
"optional": true, "optional": true,
"os": [ "os": [
"win32" "win32"
], ]
"peer": true
}, },
"node_modules/@nx/storybook/node_modules/@nx/workspace": { "node_modules/@nx/storybook/node_modules/@nx/workspace": {
"version": "20.8.4", "version": "20.8.4",
@@ -12398,7 +12399,6 @@
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@napi-rs/wasm-runtime": "0.2.4", "@napi-rs/wasm-runtime": "0.2.4",
"@yarnpkg/lockfile": "^1.1.0", "@yarnpkg/lockfile": "^1.1.0",
@@ -12471,7 +12471,6 @@
"integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@jest/diff-sequences": "30.0.1", "@jest/diff-sequences": "30.0.1",
"@jest/get-type": "30.1.0", "@jest/get-type": "30.1.0",
@@ -12529,7 +12528,6 @@
"integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@jest/schemas": "30.0.5", "@jest/schemas": "30.0.5",
"ansi-styles": "^5.2.0", "ansi-styles": "^5.2.0",
@@ -12545,7 +12543,6 @@
"integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": ">=10" "node": ">=10"
}, },
@@ -12558,8 +12555,7 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
"integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT"
"peer": true
}, },
"node_modules/@nx/storybook/node_modules/restore-cursor": { "node_modules/@nx/storybook/node_modules/restore-cursor": {
"version": "3.1.0", "version": "3.1.0",
@@ -13231,6 +13227,7 @@
"integrity": "sha512-pOxtKWUfvf0oD8Geqs8D89Q2xpstRTaSY+F6Ut/Wd0GnEjUjO32SS1ymAM6WggGPHDZN4qpNrd5cfIxQmAbRLg==", "integrity": "sha512-pOxtKWUfvf0oD8Geqs8D89Q2xpstRTaSY+F6Ut/Wd0GnEjUjO32SS1ymAM6WggGPHDZN4qpNrd5cfIxQmAbRLg==",
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@napi-rs/wasm-runtime": "0.2.4", "@napi-rs/wasm-runtime": "0.2.4",
"@yarnpkg/lockfile": "^1.1.0", "@yarnpkg/lockfile": "^1.1.0",
@@ -13888,6 +13885,7 @@
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@napi-rs/wasm-runtime": "0.2.4", "@napi-rs/wasm-runtime": "0.2.4",
"@yarnpkg/lockfile": "^1.1.0", "@yarnpkg/lockfile": "^1.1.0",
@@ -15068,6 +15066,7 @@
"integrity": "sha512-GUiTRTz6+gbfM2g3ixXqrvPSeHmyAFu/qHEZZjbYFeDtZhpy1gVaVAHiZfaaIIm+vRlNi7JmULWFZQFKwpQB9Q==", "integrity": "sha512-GUiTRTz6+gbfM2g3ixXqrvPSeHmyAFu/qHEZZjbYFeDtZhpy1gVaVAHiZfaaIIm+vRlNi7JmULWFZQFKwpQB9Q==",
"devOptional": true, "devOptional": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@module-federation/runtime-tools": "0.22.0", "@module-federation/runtime-tools": "0.22.0",
"@rspack/binding": "1.7.3", "@rspack/binding": "1.7.3",
@@ -15306,6 +15305,7 @@
"integrity": "sha512-q1xbQYLG/JR0P0/jma3sUUWubw/6859WC5Y/+l2xGEvIqtoMKBYBzN4Nrud8rdLVEFfIDNEIbKQ4Rwr/JemO3g==", "integrity": "sha512-q1xbQYLG/JR0P0/jma3sUUWubw/6859WC5Y/+l2xGEvIqtoMKBYBzN4Nrud8rdLVEFfIDNEIbKQ4Rwr/JemO3g==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@angular-devkit/core": "19.2.7", "@angular-devkit/core": "19.2.7",
"@angular-devkit/schematics": "19.2.7", "@angular-devkit/schematics": "19.2.7",
@@ -15527,6 +15527,7 @@
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"fast-deep-equal": "^3.1.1", "fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0", "fast-json-stable-stringify": "^2.0.0",
@@ -15785,7 +15786,6 @@
"integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@babel/code-frame": "^7.10.4", "@babel/code-frame": "^7.10.4",
"@babel/runtime": "^7.12.5", "@babel/runtime": "^7.12.5",
@@ -15806,7 +15806,6 @@
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": ">=8" "node": ">=8"
} }
@@ -15817,7 +15816,6 @@
"integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": ">=10" "node": ">=10"
}, },
@@ -15831,7 +15829,6 @@
"integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
"dev": true, "dev": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"peer": true,
"dependencies": { "dependencies": {
"dequal": "^2.0.3" "dequal": "^2.0.3"
} }
@@ -15842,7 +15839,6 @@
"integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"ansi-regex": "^5.0.1", "ansi-regex": "^5.0.1",
"ansi-styles": "^5.0.0", "ansi-styles": "^5.0.0",
@@ -15857,8 +15853,7 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
"integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT"
"peer": true
}, },
"node_modules/@testing-library/jest-dom": { "node_modules/@testing-library/jest-dom": {
"version": "6.9.1", "version": "6.9.1",
@@ -15963,8 +15958,7 @@
"resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz",
"integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT"
"peer": true
}, },
"node_modules/@types/babel__core": { "node_modules/@types/babel__core": {
"version": "7.20.5", "version": "7.20.5",
@@ -16096,6 +16090,7 @@
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz",
"integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/estree": "*", "@types/estree": "*",
"@types/json-schema": "*" "@types/json-schema": "*"
@@ -16122,6 +16117,7 @@
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz",
"integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/body-parser": "*", "@types/body-parser": "*",
"@types/express-serve-static-core": "^4.17.33", "@types/express-serve-static-core": "^4.17.33",
@@ -16268,6 +16264,7 @@
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz",
"integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==", "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"undici-types": "~5.26.4" "undici-types": "~5.26.4"
} }
@@ -16777,6 +16774,7 @@
"integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==",
"dev": true, "dev": true,
"license": "BSD-2-Clause", "license": "BSD-2-Clause",
"peer": true,
"dependencies": { "dependencies": {
"@typescript-eslint/scope-manager": "6.21.0", "@typescript-eslint/scope-manager": "6.21.0",
"@typescript-eslint/types": "6.21.0", "@typescript-eslint/types": "6.21.0",
@@ -17116,6 +17114,7 @@
"integrity": "sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==", "integrity": "sha512-jr/swrr2aRmUAUjW5/zQHbMaui//vQlsZcJKijZf3M26bnmLj8LyZUpj8/Rd6uzaek06OWsqdofN/Thenm5O8A==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0" "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}, },
@@ -17233,6 +17232,7 @@
"integrity": "sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==", "integrity": "sha512-c4bMvGVWW4hv6JmDUEG7fSYlWOl3II2I4ylt0NM+seinYQlZMQIaKaXIIVJWt9Ofh6whrpM+EdDQXKXjNovvrg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.9.1", "@eslint-community/eslint-utils": "^4.9.1",
"@typescript-eslint/scope-manager": "8.53.1", "@typescript-eslint/scope-manager": "8.53.1",
@@ -18107,6 +18107,7 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"license": "MIT", "license": "MIT",
"peer": true,
"bin": { "bin": {
"acorn": "bin/acorn" "acorn": "bin/acorn"
}, },
@@ -18222,6 +18223,7 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"fast-deep-equal": "^3.1.3", "fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1", "fast-uri": "^3.0.1",
@@ -19206,6 +19208,7 @@
} }
], ],
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"baseline-browser-mapping": "^2.9.0", "baseline-browser-mapping": "^2.9.0",
"caniuse-lite": "^1.0.30001759", "caniuse-lite": "^1.0.30001759",
@@ -19527,6 +19530,7 @@
"resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.4.tgz", "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.4.tgz",
"integrity": "sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==", "integrity": "sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@kurkle/color": "^0.3.0" "@kurkle/color": "^0.3.0"
}, },
@@ -19549,6 +19553,7 @@
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
"integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"readdirp": "^4.0.1" "readdirp": "^4.0.1"
}, },
@@ -21751,6 +21756,7 @@
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
"integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@babel/runtime": "^7.21.0" "@babel/runtime": "^7.21.0"
}, },
@@ -21996,7 +22002,6 @@
"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": ">=6" "node": ">=6"
} }
@@ -22132,8 +22137,7 @@
"resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz",
"integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT"
"peer": true
}, },
"node_modules/dom-converter": { "node_modules/dom-converter": {
"version": "0.2.0", "version": "0.2.0",
@@ -22354,6 +22358,7 @@
"integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"iconv-lite": "^0.6.2" "iconv-lite": "^0.6.2"
} }
@@ -22801,6 +22806,7 @@
"integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
"deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1", "@eslint-community/regexpp": "^4.6.1",
@@ -22857,6 +22863,7 @@
"integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"bin": { "bin": {
"eslint-config-prettier": "bin/cli.js" "eslint-config-prettier": "bin/cli.js"
}, },
@@ -24333,6 +24340,7 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"fast-deep-equal": "^3.1.1", "fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0", "fast-json-stable-stringify": "^2.0.0",
@@ -25058,6 +25066,7 @@
"resolved": "https://registry.npmjs.org/graphql/-/graphql-16.12.0.tgz", "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.12.0.tgz",
"integrity": "sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==", "integrity": "sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
} }
@@ -25082,6 +25091,7 @@
"resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-6.0.6.tgz", "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-6.0.6.tgz",
"integrity": "sha512-zgfER9s+ftkGKUZgc0xbx8T7/HMO4AV5/YuYiFc+AtgcO5T0v8AxYYNQ+ltzuzDZgNkYJaFspm5MMYLjQzrkmw==", "integrity": "sha512-zgfER9s+ftkGKUZgc0xbx8T7/HMO4AV5/YuYiFc+AtgcO5T0v8AxYYNQ+ltzuzDZgNkYJaFspm5MMYLjQzrkmw==",
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": ">=20" "node": ">=20"
}, },
@@ -25437,6 +25447,7 @@
"integrity": "sha512-bLjW01UTrvoWTJQL5LsMRo1SypHW80FTm12OJRSnr3v6YHNhfe+1r0MYUZJMACxnCHURVnBWRwAsWs2yPU9Ezw==", "integrity": "sha512-bLjW01UTrvoWTJQL5LsMRo1SypHW80FTm12OJRSnr3v6YHNhfe+1r0MYUZJMACxnCHURVnBWRwAsWs2yPU9Ezw==",
"devOptional": true, "devOptional": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/html-minifier-terser": "^6.0.0", "@types/html-minifier-terser": "^6.0.0",
"html-minifier-terser": "^6.0.2", "html-minifier-terser": "^6.0.2",
@@ -26755,7 +26766,8 @@
"resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.13.0.tgz", "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.13.0.tgz",
"integrity": "sha512-vsYjfh7lyqvZX5QgqKc4YH8phs7g96Z8bsdIFNEU3VqXhlHaq+vov/Fgn/sr6MiUczdZkyXRC3TX369Ll4Nzbw==", "integrity": "sha512-vsYjfh7lyqvZX5QgqKc4YH8phs7g96Z8bsdIFNEU3VqXhlHaq+vov/Fgn/sr6MiUczdZkyXRC3TX369Ll4Nzbw==",
"dev": true, "dev": true,
"license": "MIT" "license": "MIT",
"peer": true
}, },
"node_modules/jasmine-reporters": { "node_modules/jasmine-reporters": {
"version": "2.5.2", "version": "2.5.2",
@@ -26784,6 +26796,7 @@
"integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@jest/core": "^29.7.0", "@jest/core": "^29.7.0",
"@jest/types": "^29.6.3", "@jest/types": "^29.6.3",
@@ -28526,6 +28539,7 @@
"integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@jest/environment": "^29.7.0", "@jest/environment": "^29.7.0",
"@jest/fake-timers": "^29.7.0", "@jest/fake-timers": "^29.7.0",
@@ -31386,6 +31400,7 @@
"integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==", "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@colors/colors": "1.5.0", "@colors/colors": "1.5.0",
"body-parser": "^1.19.0", "body-parser": "^1.19.0",
@@ -32171,6 +32186,7 @@
"resolved": "https://registry.npmjs.org/less/-/less-4.2.2.tgz", "resolved": "https://registry.npmjs.org/less/-/less-4.2.2.tgz",
"integrity": "sha512-tkuLHQlvWUTeQ3doAqnHbNn8T6WX1KA8yvbKG9x4VtKtIjHsVKQZCH11zRgAfbDAXC2UNIg/K9BYAAcEzUIrNg==", "integrity": "sha512-tkuLHQlvWUTeQ3doAqnHbNn8T6WX1KA8yvbKG9x4VtKtIjHsVKQZCH11zRgAfbDAXC2UNIg/K9BYAAcEzUIrNg==",
"license": "Apache-2.0", "license": "Apache-2.0",
"peer": true,
"dependencies": { "dependencies": {
"copy-anything": "^2.0.1", "copy-anything": "^2.0.1",
"parse-node-version": "^1.0.1", "parse-node-version": "^1.0.1",
@@ -33163,7 +33179,6 @@
"integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"bin": { "bin": {
"lz-string": "bin/bin.js" "lz-string": "bin/bin.js"
} }
@@ -33836,6 +33851,7 @@
"integrity": "sha512-dFuwFsDJMBSd1YtmLLcX5bNNUCQUlRqgf34aXA+79PmkOP+0eF8GP2949wq3+jMjmFTNm80Oo8IUYiSLwklKCQ==", "integrity": "sha512-dFuwFsDJMBSd1YtmLLcX5bNNUCQUlRqgf34aXA+79PmkOP+0eF8GP2949wq3+jMjmFTNm80Oo8IUYiSLwklKCQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@rollup/plugin-json": "^6.1.0", "@rollup/plugin-json": "^6.1.0",
"@rollup/wasm-node": "^4.24.0", "@rollup/wasm-node": "^4.24.0",
@@ -34243,6 +34259,7 @@
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@napi-rs/wasm-runtime": "0.2.4", "@napi-rs/wasm-runtime": "0.2.4",
"@yarnpkg/lockfile": "^1.1.0", "@yarnpkg/lockfile": "^1.1.0",
@@ -35579,6 +35596,7 @@
} }
], ],
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"nanoid": "^3.3.8", "nanoid": "^3.3.8",
"picocolors": "^1.1.1", "picocolors": "^1.1.1",
@@ -36291,6 +36309,7 @@
"integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"bin": { "bin": {
"prettier": "bin/prettier.cjs" "prettier": "bin/prettier.cjs"
}, },
@@ -37577,6 +37596,7 @@
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
"integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
"license": "Apache-2.0", "license": "Apache-2.0",
"peer": true,
"dependencies": { "dependencies": {
"tslib": "^2.1.0" "tslib": "^2.1.0"
} }
@@ -38218,8 +38238,7 @@
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
"integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
"devOptional": true, "devOptional": true,
"license": "MIT", "license": "MIT"
"peer": true
}, },
"node_modules/schema-utils": { "node_modules/schema-utils": {
"version": "4.3.3", "version": "4.3.3",
@@ -39047,6 +39066,7 @@
"integrity": "sha512-fIQnFtpksRRgHR1CO1onGX3djaog4qsW/c5U8arqYTkUEr2TaWpn05mIJDOBoPJFlOdqFrB4Ttv0PZJxV7avhw==", "integrity": "sha512-fIQnFtpksRRgHR1CO1onGX3djaog4qsW/c5U8arqYTkUEr2TaWpn05mIJDOBoPJFlOdqFrB4Ttv0PZJxV7avhw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@storybook/global": "^5.0.0", "@storybook/global": "^5.0.0",
"@storybook/icons": "^2.0.1", "@storybook/icons": "^2.0.1",
@@ -39481,6 +39501,7 @@
} }
], ],
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-parser-algorithms": "^3.0.4",
"@csstools/css-tokenizer": "^3.0.3", "@csstools/css-tokenizer": "^3.0.3",
@@ -39925,6 +39946,7 @@
"integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"cssesc": "^3.0.0", "cssesc": "^3.0.0",
"util-deprecate": "^1.0.2" "util-deprecate": "^1.0.2"
@@ -40971,6 +40993,7 @@
"integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@cspotcode/source-map-support": "^0.8.0", "@cspotcode/source-map-support": "^0.8.0",
"@tsconfig/node10": "^1.0.7", "@tsconfig/node10": "^1.0.7",
@@ -41113,7 +41136,8 @@
"version": "2.8.1", "version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"license": "0BSD" "license": "0BSD",
"peer": true
}, },
"node_modules/tsscmp": { "node_modules/tsscmp": {
"version": "1.0.6", "version": "1.0.6",
@@ -41304,6 +41328,7 @@
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"license": "Apache-2.0", "license": "Apache-2.0",
"peer": true,
"bin": { "bin": {
"tsc": "bin/tsc", "tsc": "bin/tsc",
"tsserver": "bin/tsserver" "tsserver": "bin/tsserver"
@@ -41703,6 +41728,7 @@
"integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"esbuild": "^0.25.0", "esbuild": "^0.25.0",
"fdir": "^6.4.4", "fdir": "^6.4.4",
@@ -42192,6 +42218,7 @@
"resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.3.tgz", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.3.tgz",
"integrity": "sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==", "integrity": "sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/eslint-scope": "^3.7.7", "@types/eslint-scope": "^3.7.7",
"@types/estree": "^1.0.8", "@types/estree": "^1.0.8",
@@ -42298,6 +42325,7 @@
"resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz",
"integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/bonjour": "^3.5.13", "@types/bonjour": "^3.5.13",
"@types/connect-history-api-fallback": "^1.5.4", "@types/connect-history-api-fallback": "^1.5.4",
@@ -42461,6 +42489,7 @@
"integrity": "sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==", "integrity": "sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"ansi-html-community": "0.0.8", "ansi-html-community": "0.0.8",
"html-entities": "^2.1.0", "html-entities": "^2.1.0",
@@ -42947,6 +42976,7 @@
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": ">=10.0.0" "node": ">=10.0.0"
}, },
@@ -43211,7 +43241,8 @@
"version": "0.15.0", "version": "0.15.0",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.0.tgz", "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.0.tgz",
"integrity": "sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==", "integrity": "sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==",
"license": "MIT" "license": "MIT",
"peer": true
} }
} }
} }