diff --git a/.eslintignore b/.eslintignore index 0e67ef1d7f..7d953d5640 100644 --- a/.eslintignore +++ b/.eslintignore @@ -10,3 +10,4 @@ scripts docs/**/*.md lib/js-api/docs/**/*.md .storybook +webpack.config.js diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index abb878f17f..1226369cde 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -234,7 +234,7 @@ jobs: - uses: ./.github/actions/setup - uses: ./.github/actions/download-node-modules-and-artifacts - run: NX_REJECT_UNKNOWN_LOCAL_CACHE=0 npx nx affected:build $NX_CALCULATION_FLAGS --prod - - run: NX_REJECT_UNKNOWN_LOCAL_CACHE=0 npx nx affected --target=build-storybook $NX_CALCULATION_FLAGS --configuration=ci --parallel=1 + - run: NX_REJECT_UNKNOWN_LOCAL_CACHE=0 npx nx affected --target=build-storybook $NX_CALCULATION_FLAGS --configuration=ci - uses: ./.github/actions/upload-node-modules-and-artifacts PR-forbidden-labels: diff --git a/jest.preset.js b/jest.preset.js new file mode 100644 index 0000000000..02f20c0aeb --- /dev/null +++ b/jest.preset.js @@ -0,0 +1,4 @@ +// eslint-disable +const nxPreset = require('@nx/jest/preset').default; + +module.exports = {...nxPreset }; diff --git a/lib/cli/project.json b/lib/cli/project.json index 1096242843..5616b07ffb 100644 --- a/lib/cli/project.json +++ b/lib/cli/project.json @@ -50,7 +50,7 @@ } }, "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["lib/cli/**/*.ts", "lib/cli/**/*.html"] } diff --git a/lib/content-services/project.json b/lib/content-services/project.json index 8cf271560a..501416b1b3 100644 --- a/lib/content-services/project.json +++ b/lib/content-services/project.json @@ -33,7 +33,7 @@ } }, "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["lib/content-services/**/*.ts", "lib/content-services/**/*.html"] } @@ -45,10 +45,7 @@ "browserTarget": "content-services:storybook", "configDir": "lib/content-services/.storybook", "compodoc": false, - "styles": [ - "node_modules/cropperjs/dist/cropper.min.css", - "node_modules/pdfjs-dist/web/pdf_viewer.css" - ], + "styles": ["node_modules/cropperjs/dist/cropper.min.css", "node_modules/pdfjs-dist/web/pdf_viewer.css"], "stylePreprocessorOptions": { "includePaths": ["lib", "lib/core/src/lib"] } @@ -66,10 +63,7 @@ "configDir": "lib/content-services/.storybook", "outputDir": "dist/storybook/content-services", "compodoc": false, - "styles": [ - "node_modules/cropperjs/dist/cropper.min.css", - "node_modules/pdfjs-dist/web/pdf_viewer.css" - ], + "styles": ["node_modules/cropperjs/dist/cropper.min.css", "node_modules/pdfjs-dist/web/pdf_viewer.css"], "stylePreprocessorOptions": { "includePaths": ["lib", "lib/core/src/lib"] } diff --git a/lib/content-services/src/lib/api-factories/alfresco-api-no-auth.service.ts b/lib/content-services/src/lib/api-factories/alfresco-api-no-auth.service.ts index 15420d4fd7..455aba181b 100644 --- a/lib/content-services/src/lib/api-factories/alfresco-api-no-auth.service.ts +++ b/lib/content-services/src/lib/api-factories/alfresco-api-no-auth.service.ts @@ -23,18 +23,17 @@ import { AlfrescoApiService } from '../services/alfresco-api.service'; @Injectable() export class AlfrescoApiNoAuthService extends AlfrescoApiService { - constructor( - storage: StorageService, - appConfig: AppConfigService, - private readonly adfHttpClient: AdfHttpClient - ) { + constructor(storage: StorageService, appConfig: AppConfigService, private readonly adfHttpClient: AdfHttpClient) { super(appConfig, storage); } override createInstance(config: AlfrescoApiConfig) { - return new AlfrescoApi({ - ...config, - oauthInit: false - }, this.adfHttpClient); + return new AlfrescoApi( + { + ...config, + oauthInit: false + }, + this.adfHttpClient + ); } } diff --git a/lib/content-services/src/lib/api-factories/alfresco-api-v2-loader.service.ts b/lib/content-services/src/lib/api-factories/alfresco-api-v2-loader.service.ts index 6c42c6af41..101a6109e3 100644 --- a/lib/content-services/src/lib/api-factories/alfresco-api-v2-loader.service.ts +++ b/lib/content-services/src/lib/api-factories/alfresco-api-v2-loader.service.ts @@ -18,7 +18,7 @@ import { AlfrescoApiConfig } from '@alfresco/js-api'; import { Injectable } from '@angular/core'; import { AppConfigService, AppConfigValues, StorageService } from '@alfresco/adf-core'; -import { AlfrescoApiService } from '../services/alfresco-api.service'; +import { AlfrescoApiService } from '../services/alfresco-api.service'; /** * Create a factory to resolve an api service instance @@ -34,10 +34,11 @@ export function createAlfrescoApiInstance(angularAlfrescoApiService: AlfrescoApi providedIn: 'root' }) export class AlfrescoApiLoaderService { - constructor(private readonly appConfig: AppConfigService, - private readonly apiService: AlfrescoApiService, - private storageService: StorageService) { - } + constructor( + private readonly appConfig: AppConfigService, + private readonly apiService: AlfrescoApiService, + private storageService: StorageService + ) {} async init(): Promise { await this.appConfig.load(); diff --git a/lib/content-services/src/lib/aspect-list/services/aspect-list.service.ts b/lib/content-services/src/lib/aspect-list/services/aspect-list.service.ts index fa05de6c0e..8e59f3e859 100644 --- a/lib/content-services/src/lib/aspect-list/services/aspect-list.service.ts +++ b/lib/content-services/src/lib/aspect-list/services/aspect-list.service.ts @@ -16,7 +16,7 @@ */ import { Injectable } from '@angular/core'; -import { AlfrescoApiService } from '../../services/alfresco-api.service'; +import { AlfrescoApiService } from '../../services/alfresco-api.service'; import { AppConfigService } from '@alfresco/adf-core'; import { from, Observable, of, zip } from 'rxjs'; import { catchError, map } from 'rxjs/operators'; diff --git a/lib/content-services/src/lib/aspect-list/services/node-aspect.service.ts b/lib/content-services/src/lib/aspect-list/services/node-aspect.service.ts index 72b1092104..e9c401bd4c 100644 --- a/lib/content-services/src/lib/aspect-list/services/node-aspect.service.ts +++ b/lib/content-services/src/lib/aspect-list/services/node-aspect.service.ts @@ -25,12 +25,12 @@ import { TagService } from '../../tag/services/tag.service'; providedIn: 'root' }) export class NodeAspectService { - - constructor(private nodesApiService: NodesApiService, - private dialogAspectListService: DialogAspectListService, - private cardViewContentUpdateService: CardViewContentUpdateService, - private tagService: TagService) { - } + constructor( + private nodesApiService: NodesApiService, + private dialogAspectListService: DialogAspectListService, + private cardViewContentUpdateService: CardViewContentUpdateService, + private tagService: TagService + ) {} updateNodeAspects(nodeId: string, selectorAutoFocusedOnClose?: string) { this.dialogAspectListService.openAspectListDialog(nodeId, selectorAutoFocusedOnClose).subscribe((aspectList) => { diff --git a/lib/content-services/src/lib/auth-loader/content-auth-loader.service.spec.ts b/lib/content-services/src/lib/auth-loader/content-auth-loader.service.spec.ts index 088a314c81..b1adc526d8 100644 --- a/lib/content-services/src/lib/auth-loader/content-auth-loader.service.spec.ts +++ b/lib/content-services/src/lib/auth-loader/content-auth-loader.service.spec.ts @@ -54,7 +54,6 @@ describe('ContentAuthLoaderService', () => { basicAlfrescoAuthService = TestBed.inject(BasicAlfrescoAuthService); }); - it('should require Alf ticket on login if OAuth and provider is ALL or ECM', fakeAsync(() => { spyOn(authService, 'isOauth').and.returnValue(true); spyOn(authService, 'isALLProvider').and.returnValue(true); diff --git a/lib/content-services/src/lib/auth-loader/content-auth-loader.service.ts b/lib/content-services/src/lib/auth-loader/content-auth-loader.service.ts index 1ebc1c6e9a..50907012b7 100644 --- a/lib/content-services/src/lib/auth-loader/content-auth-loader.service.ts +++ b/lib/content-services/src/lib/auth-loader/content-auth-loader.service.ts @@ -21,22 +21,15 @@ import { take } from 'rxjs/operators'; @Injectable() export class ContentAuthLoaderService { - - constructor( - private readonly basicAlfrescoAuthService: BasicAlfrescoAuthService, - private readonly authService: AuthenticationService - ) { - } + constructor(private readonly basicAlfrescoAuthService: BasicAlfrescoAuthService, private readonly authService: AuthenticationService) {} init(): void { - this.authService.onLogin - .pipe(take(1)) - .subscribe({ - next: async () => { - if (this.authService.isOauth() && (this.authService.isALLProvider() || this.authService.isECMProvider())) { - await this.basicAlfrescoAuthService.requireAlfTicket(); - } + this.authService.onLogin.pipe(take(1)).subscribe({ + next: async () => { + if (this.authService.isOauth() && (this.authService.isALLProvider() || this.authService.isECMProvider())) { + await this.basicAlfrescoAuthService.requireAlfTicket(); } - }); + } + }); } } diff --git a/lib/content-services/src/lib/breadcrumb/breadcrumb.component.spec.ts b/lib/content-services/src/lib/breadcrumb/breadcrumb.component.spec.ts index 06afd8164c..90e54d801d 100644 --- a/lib/content-services/src/lib/breadcrumb/breadcrumb.component.spec.ts +++ b/lib/content-services/src/lib/breadcrumb/breadcrumb.component.spec.ts @@ -33,8 +33,7 @@ describe('Breadcrumb', () => { }); let documentListComponent: DocumentListComponent; - const getBreadcrumbActionText = (): string => - fixture.debugElement.nativeElement.querySelector('.adf-breadcrumb-item-current').textContent.trim(); + const getBreadcrumbActionText = (): string => fixture.debugElement.nativeElement.querySelector('.adf-breadcrumb-item-current').textContent.trim(); beforeEach(() => { TestBed.configureTestingModule({ diff --git a/lib/content-services/src/lib/category/mock/category-mock.service.ts b/lib/content-services/src/lib/category/mock/category-mock.service.ts index 779715df7d..314bebb401 100644 --- a/lib/content-services/src/lib/category/mock/category-mock.service.ts +++ b/lib/content-services/src/lib/category/mock/category-mock.service.ts @@ -18,7 +18,10 @@ import { Injectable } from '@angular/core'; import { CategoryEntry, - CategoryPaging, Pagination, PathInfo, ResultNode, + CategoryPaging, + Pagination, + PathInfo, + ResultNode, ResultSetPaging, ResultSetPagingList, ResultSetRowEntry @@ -27,7 +30,6 @@ import { Observable, of } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class CategoryServiceMock { - public getSubcategories(parentNodeId: string, skipCount?: number, maxItems?: number): Observable { return parentNodeId ? of(this.getChildrenLevelResponse(skipCount, maxItems)) : of(this.getRootLevelResponse(skipCount, maxItems)); } @@ -66,12 +68,12 @@ export class CategoryServiceMock { } private getRootLevelResponse(skipCount?: number, maxItems?: number): CategoryPaging { - const rootCategoryEntry: CategoryEntry = {entry: {id: 'testId', name: 'testNode', parentId: '-root-', hasChildren: true}}; - return {list: {pagination: {skipCount, maxItems, hasMoreItems: false}, entries: [rootCategoryEntry]}}; + const rootCategoryEntry: CategoryEntry = { entry: { id: 'testId', name: 'testNode', parentId: '-root-', hasChildren: true } }; + return { list: { pagination: { skipCount, maxItems, hasMoreItems: false }, entries: [rootCategoryEntry] } }; } private getChildrenLevelResponse(skipCount?: number, maxItems?: number): CategoryPaging { - const childCategoryEntry: CategoryEntry = {entry: {id: 'childId', name: 'childNode', parentId: 'testId', hasChildren: false}}; - return {list: {pagination: {skipCount, maxItems, hasMoreItems: true}, entries: [childCategoryEntry]}}; + const childCategoryEntry: CategoryEntry = { entry: { id: 'childId', name: 'childNode', parentId: 'testId', hasChildren: false } }; + return { list: { pagination: { skipCount, maxItems, hasMoreItems: true }, entries: [childCategoryEntry] } }; } } diff --git a/lib/content-services/src/lib/category/services/category-tree-datasource.service.ts b/lib/content-services/src/lib/category/services/category-tree-datasource.service.ts index 3b74c5076d..7cfae3cf8f 100644 --- a/lib/content-services/src/lib/category/services/category-tree-datasource.service.ts +++ b/lib/content-services/src/lib/category/services/category-tree-datasource.service.ts @@ -24,59 +24,65 @@ import { from, Observable } from 'rxjs'; import { map, mergeMap, toArray } from 'rxjs/operators'; @Injectable({ providedIn: 'root' }) -export class CategoryTreeDatasourceService extends TreeService { - +export class CategoryTreeDatasourceService extends TreeService { constructor(private categoryService: CategoryService) { super(); } public getSubNodes(parentNodeId: string, skipCount?: number, maxItems?: number, name?: string): Observable> { - return !name ? this.categoryService.getSubcategories(parentNodeId, skipCount, maxItems).pipe(map((response: CategoryPaging) => { - const parentNode: CategoryNode = this.getParentNode(parentNodeId); - const nodesList: CategoryNode[] = response.list.entries.map((entry: CategoryEntry) => ({ - id: entry.entry.id, - nodeName: entry.entry.name, - parentId: entry.entry.parentId, - hasChildren: entry.entry.hasChildren, - level: parentNode ? parentNode.level + 1 : 0, - isLoading: false, - nodeType: TreeNodeType.RegularNode - })); - if (response.list.pagination.hasMoreItems && parentNode) { - const loadMoreNode: CategoryNode = { - id: 'loadMore', - nodeName: '', - parentId: parentNode.id, - hasChildren: false, - level: parentNode.level + 1, - isLoading: false, - nodeType: TreeNodeType.LoadMoreNode - }; - nodesList.push(loadMoreNode); - } - const treeResponse: TreeResponse = {entries: nodesList, pagination: response.list.pagination}; - return treeResponse; - })) : this.categoryService.searchCategories(name, skipCount, maxItems).pipe(mergeMap((pagingResult) => { - const nextAfterGeneralPathPartIndex = 3; - const pathSeparator = '/'; - return from(pagingResult.list.entries).pipe(mergeMap((category) => { - const path = category.entry.path.name.split(pathSeparator).slice(nextAfterGeneralPathPartIndex) - .join(pathSeparator); + return !name + ? this.categoryService.getSubcategories(parentNodeId, skipCount, maxItems).pipe( + map((response: CategoryPaging) => { + const parentNode: CategoryNode = this.getParentNode(parentNodeId); + const nodesList: CategoryNode[] = response.list.entries.map((entry: CategoryEntry) => ({ + id: entry.entry.id, + nodeName: entry.entry.name, + parentId: entry.entry.parentId, + hasChildren: entry.entry.hasChildren, + level: parentNode ? parentNode.level + 1 : 0, + isLoading: false, + nodeType: TreeNodeType.RegularNode + })); + if (response.list.pagination.hasMoreItems && parentNode) { + const loadMoreNode: CategoryNode = { + id: 'loadMore', + nodeName: '', + parentId: parentNode.id, + hasChildren: false, + level: parentNode.level + 1, + isLoading: false, + nodeType: TreeNodeType.LoadMoreNode + }; + nodesList.push(loadMoreNode); + } + const treeResponse: TreeResponse = { entries: nodesList, pagination: response.list.pagination }; + return treeResponse; + }) + ) + : this.categoryService.searchCategories(name, skipCount, maxItems).pipe( + mergeMap((pagingResult) => { + const nextAfterGeneralPathPartIndex = 3; + const pathSeparator = '/'; + return from(pagingResult.list.entries).pipe( + mergeMap((category) => { + const path = category.entry.path.name.split(pathSeparator).slice(nextAfterGeneralPathPartIndex).join(pathSeparator); - return this.categoryService.getCategory(category.entry.id).pipe( - map((res) => ({ - id: category.entry.id, - nodeName: path ? `${path}/${category.entry.name}` : category.entry.name, - parentId: category.entry.parentId, - level: 0, - nodeType: TreeNodeType.RegularNode, - hasChildren: res.entry.hasChildren, - isLoading: false - })) - ); - }), - toArray(), - map(res => ({entries: res, pagination: pagingResult.list.pagination}))); - })); + return this.categoryService.getCategory(category.entry.id).pipe( + map((res) => ({ + id: category.entry.id, + nodeName: path ? `${path}/${category.entry.name}` : category.entry.name, + parentId: category.entry.parentId, + level: 0, + nodeType: TreeNodeType.RegularNode, + hasChildren: res.entry.hasChildren, + isLoading: false + })) + ); + }), + toArray(), + map((res) => ({ entries: res, pagination: pagingResult.list.pagination })) + ); + }) + ); } } diff --git a/lib/content-services/src/lib/common/events/file.event.ts b/lib/content-services/src/lib/common/events/file.event.ts index 2574524c69..5cf6ed85c4 100644 --- a/lib/content-services/src/lib/common/events/file.event.ts +++ b/lib/content-services/src/lib/common/events/file.event.ts @@ -18,35 +18,27 @@ import { FileModel, FileUploadStatus } from '../models/file.model'; export class FileUploadEvent { - constructor( public readonly file: FileModel, public readonly status: FileUploadStatus = FileUploadStatus.Pending, - public readonly error: any = null) { - } - + public readonly error: any = null + ) {} } export class FileUploadCompleteEvent extends FileUploadEvent { - constructor(file: FileModel, public totalComplete: number = 0, public data?: any, public totalAborted: number = 0) { super(file, FileUploadStatus.Complete); } - } export class FileUploadDeleteEvent extends FileUploadEvent { - constructor(file: FileModel, public totalComplete: number = 0) { super(file, FileUploadStatus.Deleted); } - } export class FileUploadErrorEvent extends FileUploadEvent { - constructor(file: FileModel, public error: any, public totalError: number = 0) { super(file, FileUploadStatus.Error); } - } diff --git a/lib/content-services/src/lib/common/models/file.model.spec.ts b/lib/content-services/src/lib/common/models/file.model.spec.ts index f2d7763834..c0f26eac07 100644 --- a/lib/content-services/src/lib/common/models/file.model.spec.ts +++ b/lib/content-services/src/lib/common/models/file.model.spec.ts @@ -18,9 +18,7 @@ import { FileModel } from './file.model'; describe('FileModel', () => { - describe('extension', () => { - it('should return the extension if file has it', () => { const file = new FileModel({ name: 'tyrion-lannister.doc' } as File); @@ -33,7 +31,7 @@ describe('FileModel', () => { expect(file.extension).toBe(''); }); - it('should return the empty string if file is starting with . and doesn\'t have extension', () => { + it("should return the empty string if file is starting with . and doesn't have extension", () => { const file = new FileModel({ name: '.white-walkers' } as File); expect(file.extension).toBe(''); diff --git a/lib/content-services/src/lib/common/services/content.service.ts b/lib/content-services/src/lib/common/services/content.service.ts index 6161b5ed50..dc1c2bfe1f 100644 --- a/lib/content-services/src/lib/common/services/content.service.ts +++ b/lib/content-services/src/lib/common/services/content.service.ts @@ -21,7 +21,7 @@ import { Subject } from 'rxjs'; import { AuthenticationService, ThumbnailService } from '@alfresco/adf-core'; import { PermissionsEnum } from '../models/permissions.enum'; import { AllowableOperationsEnum } from '../models/allowable-operations.enum'; -import { AlfrescoApiService } from '../../services/alfresco-api.service'; +import { AlfrescoApiService } from '../../services/alfresco-api.service'; export interface FolderCreatedEvent { name: string; diff --git a/lib/content-services/src/lib/common/services/favorites-api.service.ts b/lib/content-services/src/lib/common/services/favorites-api.service.ts index 4ee783a12c..63bf0b9977 100644 --- a/lib/content-services/src/lib/common/services/favorites-api.service.ts +++ b/lib/content-services/src/lib/common/services/favorites-api.service.ts @@ -26,7 +26,6 @@ import { catchError } from 'rxjs/operators'; providedIn: 'root' }) export class FavoritesApiService { - private _favoritesApi: FavoritesApi; get favoritesApi(): FavoritesApi { this._favoritesApi = this._favoritesApi ?? new FavoritesApi(this.apiService.getInstance()); @@ -42,16 +41,11 @@ export class FavoritesApiService { return { entry }; } - constructor( - private apiService: AlfrescoApiService, - private preferences: UserPreferencesService - ) { - } + constructor(private apiService: AlfrescoApiService, private preferences: UserPreferencesService) {} remapFavoritesData(data: FavoritePaging = {}): NodePaging { - const pagination = (data?.list?.pagination || {}); - const entries: any[] = this - .remapFavoriteEntries(data?.list?.entries || []); + const pagination = data?.list?.pagination || {}; + const entries: any[] = this.remapFavoriteEntries(data?.list?.entries || []); return { list: { entries, pagination } @@ -63,7 +57,7 @@ export class FavoritesApiService { .map(({ entry: { target } }: any) => ({ entry: target.file || target.folder })) - .filter(({ entry }) => (!!entry)) + .filter(({ entry }) => !!entry) .map(FavoritesApiService.remapEntry); } @@ -82,12 +76,8 @@ export class FavoritesApiService { include: ['properties', 'allowableOperations'] }; const queryOptions = Object.assign(defaultOptions, options); - const promise = this.favoritesApi - .listFavorites(personId, queryOptions) - .then(this.remapFavoritesData); + const promise = this.favoritesApi.listFavorites(personId, queryOptions).then(this.remapFavoritesData); - return from(promise).pipe( - catchError((err) => of(err)) - ); + return from(promise).pipe(catchError((err) => of(err))); } } diff --git a/lib/content-services/src/lib/content-metadata/components/content-metadata/content-metadata-header.component.ts b/lib/content-services/src/lib/content-metadata/components/content-metadata/content-metadata-header.component.ts index 6614e41083..c3af2f2085 100644 --- a/lib/content-services/src/lib/content-metadata/components/content-metadata/content-metadata-header.component.ts +++ b/lib/content-services/src/lib/content-metadata/components/content-metadata/content-metadata-header.component.ts @@ -48,7 +48,7 @@ import { TranslateModule } from '@ngx-translate/core'; {{ expanded ? 'expand_more' : 'chevron_right' }} - + ` }) diff --git a/lib/content-services/src/lib/content-metadata/services/config/aspect-oriented-config.service.spec.ts b/lib/content-services/src/lib/content-metadata/services/config/aspect-oriented-config.service.spec.ts index 29caf91810..59cec810f9 100644 --- a/lib/content-services/src/lib/content-metadata/services/config/aspect-oriented-config.service.spec.ts +++ b/lib/content-services/src/lib/content-metadata/services/config/aspect-oriented-config.service.spec.ts @@ -19,13 +19,11 @@ import { AspectOrientedConfigService } from './aspect-oriented-config.service'; import { AspectOrientedConfig, Property, OrganisedPropertyGroup, PropertyGroupContainer } from '../../interfaces/content-metadata.interfaces'; describe('AspectOrientedConfigService', () => { - let configService: AspectOrientedConfigService; const createConfigService = (configObj: AspectOrientedConfig) => new AspectOrientedConfigService(configObj); describe('reorganiseByConfig', () => { - interface TestCase { name: string; config: AspectOrientedConfig; @@ -51,54 +49,58 @@ describe('AspectOrientedConfigService', () => { { name: 'One property from One group', config: { - berseria: [ 'property1' ] - }, - expectations: [{ - title: 'Berseria', - properties: [ property1 ] - }] - }, - { - name: 'More properties from One group', - config: { - berseria: [ 'property1', 'property2' ] - }, - expectations: [{ - title: 'Berseria', - properties: [ property1, property2 ] - }] - }, - { - name: 'One-one properties from More group', - config: { - berseria: [ 'property1' ], - zestiria: [ 'property3' ] + berseria: ['property1'] }, expectations: [ { title: 'Berseria', - properties: [ property1 ] + properties: [property1] + } + ] + }, + { + name: 'More properties from One group', + config: { + berseria: ['property1', 'property2'] + }, + expectations: [ + { + title: 'Berseria', + properties: [property1, property2] + } + ] + }, + { + name: 'One-one properties from More group', + config: { + berseria: ['property1'], + zestiria: ['property3'] + }, + expectations: [ + { + title: 'Berseria', + properties: [property1] }, { title: 'Zestiria', - properties: [ property3 ] + properties: [property3] } ] }, { name: 'More properties from More groups', config: { - zestiria: [ 'property4', 'property3' ], - berseria: [ 'property2', 'property1' ] + zestiria: ['property4', 'property3'], + berseria: ['property2', 'property1'] }, expectations: [ { title: 'Zestiria', - properties: [ property4, property3 ] + properties: [property4, property3] }, { title: 'Berseria', - properties: [ property2, property1 ] + properties: [property2, property1] } ] }, @@ -106,16 +108,16 @@ describe('AspectOrientedConfigService', () => { name: 'Wildcard', config: { berseria: '*', - zestiria: [ 'property4' ] + zestiria: ['property4'] }, expectations: [ { title: 'Berseria', - properties: [ property1, property2 ] + properties: [property1, property2] }, { title: 'Zestiria', - properties: [ property4 ] + properties: [property4] } ] }, @@ -124,29 +126,29 @@ describe('AspectOrientedConfigService', () => { config: { berseria: '*', 'not-existing-group': '*', - zestiria: [ 'property4' ] + zestiria: ['property4'] }, expectations: [ { title: 'Berseria', - properties: [ property1, property2 ] + properties: [property1, property2] }, { title: 'Zestiria', - properties: [ property4 ] + properties: [property4] } ] }, { name: 'Not existing property', config: { - berseria: [ 'not-existing-property' ], - zestiria: [ 'property4' ] + berseria: ['not-existing-property'], + zestiria: ['property4'] }, expectations: [ { title: 'Zestiria', - properties: [ property4 ] + properties: [property4] } ] } @@ -160,7 +162,7 @@ describe('AspectOrientedConfigService', () => { expect(organisedPropertyGroups.length).toBe(testCase.expectations.length, 'Group count should match'); testCase.expectations.forEach((expectation, i) => { - expect(organisedPropertyGroups[i].title).toBe(expectation.title, 'Group\'s title should match' ); + expect(organisedPropertyGroups[i].title).toBe(expectation.title, "Group's title should match"); expect(organisedPropertyGroups[i].properties.length).toBe( expectation.properties.length, `Property count for '${organisedPropertyGroups[i].title}' group should match.` @@ -194,11 +196,11 @@ describe('AspectOrientedConfigService', () => { expectations: [ { title: 'Berseria', - properties: [ property1, property2 ] + properties: [property1, property2] }, { title: 'Zestiria', - properties: [ property3, property4 ] + properties: [property3, property4] } ] }; @@ -208,7 +210,7 @@ describe('AspectOrientedConfigService', () => { expect(organisedPropertyGroups.length).toBe(testCase.expectations.length, 'Group count should match'); testCase.expectations.forEach((expectation, i) => { - expect(organisedPropertyGroups[i].title).toBe(expectation.title, 'Group\'s title should match' ); + expect(organisedPropertyGroups[i].title).toBe(expectation.title, "Group's title should match"); expect(organisedPropertyGroups[i].properties.length).toBe( expectation.properties.length, `Property count for '${organisedPropertyGroups[i].title}' group should match.` @@ -231,11 +233,11 @@ describe('AspectOrientedConfigService', () => { expectations: [ { title: 'Berseria', - properties: [ property1, property2 ] + properties: [property1, property2] }, { title: 'Zestiria', - properties: [ property3, property4 ] + properties: [property3, property4] } ] }; diff --git a/lib/content-services/src/lib/content-metadata/services/config/aspect-oriented-config.service.ts b/lib/content-services/src/lib/content-metadata/services/config/aspect-oriented-config.service.ts index b08fa38f2d..1d2ee25876 100644 --- a/lib/content-services/src/lib/content-metadata/services/config/aspect-oriented-config.service.ts +++ b/lib/content-services/src/lib/content-metadata/services/config/aspect-oriented-config.service.ts @@ -19,8 +19,7 @@ import { ContentMetadataConfig, OrganisedPropertyGroup, PropertyGroupContainer, import { getGroup, getProperty } from './property-group-reader'; export class AspectOrientedConfigService implements ContentMetadataConfig { - - constructor(private config: any) { } + constructor(private config: any) {} public isGroupAllowed(groupName: string): boolean { if (this.isIncludeAllEnabled()) { @@ -43,24 +42,23 @@ export class AspectOrientedConfigService implements ContentMetadataConfig { } public appendAllPreset(propertyGroups: PropertyGroupContainer): OrganisedPropertyGroup[] { - const groups = Object.keys(propertyGroups) - .map((groupName) => { - const propertyGroup = propertyGroups[groupName]; - const properties = propertyGroup.properties; + const groups = Object.keys(propertyGroups).map((groupName) => { + const propertyGroup = propertyGroups[groupName]; + const properties = propertyGroup.properties; - if (this.isAspectReadOnly(groupName)) { - Object.keys(properties).map((propertyName) => this.setReadOnlyProperty(properties[propertyName])); - } + if (this.isAspectReadOnly(groupName)) { + Object.keys(properties).map((propertyName) => this.setReadOnlyProperty(properties[propertyName])); + } - return Object.assign({}, propertyGroup, { - properties: Object.keys(properties).map((propertyName) => { - if (this.isPropertyReadOnly(propertyName)) { - this.setReadOnlyProperty(properties[propertyName]); - } - return properties[propertyName]; - }) - }); + return Object.assign({}, propertyGroup, { + properties: Object.keys(properties).map((propertyName) => { + if (this.isPropertyReadOnly(propertyName)) { + this.setReadOnlyProperty(properties[propertyName]); + } + return properties[propertyName]; + }) }); + }); return groups; } @@ -87,7 +85,6 @@ export class AspectOrientedConfigService implements ContentMetadataConfig { } else { return readOnlyAspects === propertyGroupName; } - } public filterExcludedPreset(propertyGroups: OrganisedPropertyGroup[]): OrganisedPropertyGroup[] { diff --git a/lib/content-services/src/lib/content-metadata/services/config/content-metadata-config.factory.spec.ts b/lib/content-services/src/lib/content-metadata/services/config/content-metadata-config.factory.spec.ts index ac370cbe60..efcfe2ea65 100644 --- a/lib/content-services/src/lib/content-metadata/services/config/content-metadata-config.factory.spec.ts +++ b/lib/content-services/src/lib/content-metadata/services/config/content-metadata-config.factory.spec.ts @@ -25,19 +25,17 @@ import { ContentMetadataConfig } from '../../interfaces/content-metadata.interfa import { HttpClientModule } from '@angular/common/http'; describe('ContentMetadataConfigFactory', () => { - let factory: ContentMetadataConfigFactory; let appConfig: AppConfigService; let config: ContentMetadataConfig; beforeEach(() => { TestBed.configureTestingModule({ - imports: [ - HttpClientModule - ], + imports: [HttpClientModule], providers: [ { - provide: LogService, useValue: { + provide: LogService, + useValue: { error: () => {} } } @@ -48,7 +46,6 @@ describe('ContentMetadataConfigFactory', () => { }); describe('get', () => { - let logService: LogService; beforeEach(() => { @@ -57,7 +54,6 @@ describe('ContentMetadataConfigFactory', () => { }); describe('get', () => { - it('should get back to default preset if no preset is provided as parameter', () => { config = factory.get(); @@ -85,7 +81,6 @@ describe('ContentMetadataConfigFactory', () => { }); describe('set', () => { - const setConfig = (presetName: string, presetConfig: any) => { appConfig.config['content-metadata'] = { presets: { @@ -118,5 +113,5 @@ describe('ContentMetadataConfigFactory', () => { expect(config).toEqual(jasmine.any(LayoutOrientedConfigService)); }); }); - }); + }); }); diff --git a/lib/content-services/src/lib/content-metadata/services/config/indifferent-config.service.ts b/lib/content-services/src/lib/content-metadata/services/config/indifferent-config.service.ts index e7bdc62a5f..482f005cb9 100644 --- a/lib/content-services/src/lib/content-metadata/services/config/indifferent-config.service.ts +++ b/lib/content-services/src/lib/content-metadata/services/config/indifferent-config.service.ts @@ -15,26 +15,22 @@ * limitations under the License. */ -import { ContentMetadataConfig, OrganisedPropertyGroup, - PropertyGroupContainer -} from '../../interfaces/content-metadata.interfaces'; +import { ContentMetadataConfig, OrganisedPropertyGroup, PropertyGroupContainer } from '../../interfaces/content-metadata.interfaces'; export class IndifferentConfigService implements ContentMetadataConfig { - isGroupAllowed(): boolean { return true; } reorganiseByConfig(propertyGroups: PropertyGroupContainer): OrganisedPropertyGroup[] { - return Object.keys(propertyGroups) - .map((groupName) => { - const propertyGroup = propertyGroups[groupName]; - const properties = propertyGroup.properties; + return Object.keys(propertyGroups).map((groupName) => { + const propertyGroup = propertyGroups[groupName]; + const properties = propertyGroup.properties; - return Object.assign({}, propertyGroup, { - properties: Object.keys(properties).map((propertyName) => properties[propertyName]) - }); + return Object.assign({}, propertyGroup, { + properties: Object.keys(properties).map((propertyName) => properties[propertyName]) }); + }); } filterExcludedPreset(propertyGroups: OrganisedPropertyGroup[]): OrganisedPropertyGroup[] { @@ -42,7 +38,7 @@ export class IndifferentConfigService implements ContentMetadataConfig { } appendAllPreset(): OrganisedPropertyGroup[] { - return[]; + return []; } isIncludeAllEnabled(): boolean { diff --git a/lib/content-services/src/lib/content-metadata/services/config/layout-oriented-config.service.ts b/lib/content-services/src/lib/content-metadata/services/config/layout-oriented-config.service.ts index 65d4cf6d72..32e8f486ca 100644 --- a/lib/content-services/src/lib/content-metadata/services/config/layout-oriented-config.service.ts +++ b/lib/content-services/src/lib/content-metadata/services/config/layout-oriented-config.service.ts @@ -25,8 +25,7 @@ import { import { getProperty } from './property-group-reader'; export class LayoutOrientedConfigService implements ContentMetadataConfig { - - constructor(private config: any) { } + constructor(private config: any) {} public isGroupAllowed(groupName: string): boolean { if (this.isIncludeAllEnabled()) { @@ -41,9 +40,9 @@ export class LayoutOrientedConfigService implements ContentMetadataConfig { const organisedPropertyGroup = layoutBlocks.map((layoutBlock) => { const flattenedItems = this.flattenItems(layoutBlock.items); const properties = flattenedItems.reduce((props, explodedItem) => { - const isProperty = typeof explodedItem.property === 'object'; + const isProperty = typeof explodedItem.property === 'object'; const propertyName = isProperty ? explodedItem.property.name : explodedItem.property; - let property = getProperty(propertyGroups, explodedItem.groupName, propertyName) || []; + let property = getProperty(propertyGroups, explodedItem.groupName, propertyName) || []; if (isProperty) { property = this.setPropertyTitle(property, explodedItem.property); } @@ -61,15 +60,14 @@ export class LayoutOrientedConfigService implements ContentMetadataConfig { } public appendAllPreset(propertyGroups: PropertyGroupContainer): OrganisedPropertyGroup[] { - return Object.keys(propertyGroups) - .map((groupName) => { - const propertyGroup = propertyGroups[groupName]; - const properties = propertyGroup.properties; + return Object.keys(propertyGroups).map((groupName) => { + const propertyGroup = propertyGroups[groupName]; + const properties = propertyGroup.properties; - return Object.assign({}, propertyGroup, { - properties: Object.keys(properties).map((propertyName) => properties[propertyName]) - }); + return Object.assign({}, propertyGroup, { + properties: Object.keys(properties).map((propertyName) => properties[propertyName]) }); + }); } public filterExcludedPreset(propertyGroups: OrganisedPropertyGroup[]): OrganisedPropertyGroup[] { @@ -88,16 +86,14 @@ export class LayoutOrientedConfigService implements ContentMetadataConfig { } public isIncludeAllEnabled() { - const includeAllProperty = this.config - .map((config) => config.includeAll) - .find((includeAll) => includeAll !== undefined); + const includeAllProperty = this.config.map((config) => config.includeAll).find((includeAll) => includeAll !== undefined); return includeAllProperty !== undefined ? includeAllProperty : false; } private setEditableProperty(propertyGroup: Property | Property[], itemConfig): Property | Property[] { if (Array.isArray(propertyGroup)) { - propertyGroup.map((property) => property.editable = itemConfig.editable !== undefined ? itemConfig.editable : true); + propertyGroup.forEach((property) => (property.editable = itemConfig.editable !== undefined ? itemConfig.editable : true)); } else { propertyGroup.editable = itemConfig.editable !== undefined ? itemConfig.editable : true; } @@ -107,7 +103,7 @@ export class LayoutOrientedConfigService implements ContentMetadataConfig { private setPropertyTitle(item: Property | Property[], property: Property): Property | Property[] { if (!Array.isArray(item)) { - return { ...item, ...(item.name === property.name && !!property.title) && { title: property.title } }; + return { ...item, ...(item.name === property.name && !!property.title && { title: property.title }) }; } return item; } diff --git a/lib/content-services/src/lib/content-metadata/services/content-type-property.service.ts b/lib/content-services/src/lib/content-metadata/services/content-type-property.service.ts index 1bdfb004cc..f110f6cb4c 100644 --- a/lib/content-services/src/lib/content-metadata/services/content-type-property.service.ts +++ b/lib/content-services/src/lib/content-metadata/services/content-type-property.service.ts @@ -31,24 +31,24 @@ import { VersionCompatibilityService } from '../../version-compatibility/version providedIn: 'root' }) export class ContentTypePropertiesService { - - constructor(private contentTypeService: ContentTypeService, - private dialog: MatDialog, - private versionCompatibilityService: VersionCompatibilityService, - private propertyGroupTranslatorService: PropertyGroupTranslatorService) { - } + constructor( + private contentTypeService: ContentTypeService, + private dialog: MatDialog, + private versionCompatibilityService: VersionCompatibilityService, + private propertyGroupTranslatorService: PropertyGroupTranslatorService + ) {} getContentTypeCardItem(node: Node): Observable { if (this.versionCompatibilityService.isVersionSupported('7')) { - return this.contentTypeService.getContentTypeByPrefix(node.nodeType). - pipe( - map((contentType) => { - const contentTypesOptions$ = this.getContentTypesAsSelectOption(contentType); - const contentTypeCard = this.buildContentTypeSelectCardModel(contentType.entry.id, contentTypesOptions$); - const filteredProperties = this.getContentTypeSpecificProperties(contentType); - const propertiesCard = this.buildCardItemsFromPropertyList(filteredProperties, node.properties); - return [contentTypeCard, ...propertiesCard]; - })); + return this.contentTypeService.getContentTypeByPrefix(node.nodeType).pipe( + map((contentType) => { + const contentTypesOptions$ = this.getContentTypesAsSelectOption(contentType); + const contentTypeCard = this.buildContentTypeSelectCardModel(contentType.entry.id, contentTypesOptions$); + const filteredProperties = this.getContentTypeSpecificProperties(contentType); + const propertiesCard = this.buildCardItemsFromPropertyList(filteredProperties, node.properties); + return [contentTypeCard, ...propertiesCard]; + }) + ); } else { return of([this.buildContentTypeTextCardModel(node.nodeType)]); } @@ -80,7 +80,10 @@ export class ContentTypePropertiesService { return contentTypeCard; } - private buildContentTypeSelectCardModel(currentValue: string, options$: Observable[]>): CardViewSelectItemModel { + private buildContentTypeSelectCardModel( + currentValue: string, + options$: Observable[]> + ): CardViewSelectItemModel { const contentTypeCard = new CardViewSelectItemModel({ label: 'CORE.METADATA.BASIC.CONTENT_TYPE', value: currentValue, @@ -100,7 +103,8 @@ export class ContentTypePropertiesService { map(([contentTypesEntries, currentContentType]) => { const updatedTypes = this.appendCurrentType(currentContentType, contentTypesEntries); return updatedTypes.map((contentType) => ({ key: contentType.entry.id, label: contentType.entry.title ?? contentType.entry.id })); - })); + }) + ); } private appendCurrentType(currentType: TypeEntry, contentTypesEntries: TypeEntry[]): TypeEntry[] { diff --git a/lib/content-services/src/lib/content-metadata/services/property-descriptors.service.spec.ts b/lib/content-services/src/lib/content-metadata/services/property-descriptors.service.spec.ts index 05368543fe..cc3e30e252 100644 --- a/lib/content-services/src/lib/content-metadata/services/property-descriptors.service.spec.ts +++ b/lib/content-services/src/lib/content-metadata/services/property-descriptors.service.spec.ts @@ -36,14 +36,13 @@ describe('PropertyDescriptorLoaderService', () => { it('should load the groups passed by paramter', (done) => { spyOn(classesApi, 'getClass').and.returnValue(Promise.resolve({})); - service.load(['exif:exif', 'cm:content', 'custom:custom']) - .subscribe(() => { - expect(classesApi.getClass).toHaveBeenCalledTimes(3); - expect(classesApi.getClass).toHaveBeenCalledWith('exif_exif'); - expect(classesApi.getClass).toHaveBeenCalledWith('cm_content'); - expect(classesApi.getClass).toHaveBeenCalledWith('custom_custom'); - done(); - }); + service.load(['exif:exif', 'cm:content', 'custom:custom']).subscribe(() => { + expect(classesApi.getClass).toHaveBeenCalledTimes(3); + expect(classesApi.getClass).toHaveBeenCalledWith('exif_exif'); + expect(classesApi.getClass).toHaveBeenCalledWith('cm_content'); + expect(classesApi.getClass).toHaveBeenCalledWith('custom_custom'); + done(); + }); }); it('should merge the forked values', (done) => { diff --git a/lib/content-services/src/lib/content-metadata/services/property-descriptors.service.ts b/lib/content-services/src/lib/content-metadata/services/property-descriptors.service.ts index 467ac7b8a2..f8753c24da 100644 --- a/lib/content-services/src/lib/content-metadata/services/property-descriptors.service.ts +++ b/lib/content-services/src/lib/content-metadata/services/property-descriptors.service.ts @@ -26,29 +26,29 @@ import { ClassesApi } from '@alfresco/js-api'; providedIn: 'root' }) export class PropertyDescriptorsService { - private _classesApi: ClassesApi; get classesApi(): ClassesApi { this._classesApi = this._classesApi ?? new ClassesApi(this.alfrescoApiService.getInstance()); return this._classesApi; } - constructor(private alfrescoApiService: AlfrescoApiService) { - } + constructor(private alfrescoApiService: AlfrescoApiService) {} load(groupNames: string[]): Observable { const groupFetchStreams = groupNames .map((groupName) => groupName.replace(':', '_')) .map((groupName) => defer(() => this.classesApi.getClass(groupName))); - return forkJoin(groupFetchStreams).pipe( - map(this.convertToObject) - ); + return forkJoin(groupFetchStreams).pipe(map(this.convertToObject)); } private convertToObject(propertyGroupsArray: PropertyGroup[]): PropertyGroupContainer { - return propertyGroupsArray.reduce((propertyGroups, propertyGroup) => Object.assign({}, propertyGroups, { - [propertyGroup.name]: propertyGroup - }), {}); + return propertyGroupsArray.reduce( + (propertyGroups, propertyGroup) => + Object.assign({}, propertyGroups, { + [propertyGroup.name]: propertyGroup + }), + {} + ); } } diff --git a/lib/content-services/src/lib/content-node-share/services/shared-links-api.service.ts b/lib/content-services/src/lib/content-node-share/services/shared-links-api.service.ts index 103bfb89c1..538fa517ab 100644 --- a/lib/content-services/src/lib/content-node-share/services/shared-links-api.service.ts +++ b/lib/content-services/src/lib/content-node-share/services/shared-links-api.service.ts @@ -26,7 +26,6 @@ import { AlfrescoApiService } from '../../services/alfresco-api.service'; providedIn: 'root' }) export class SharedLinksApiService { - error = new Subject<{ statusCode: number; message: string }>(); private _sharedLinksApi: SharedlinksApi; @@ -35,9 +34,7 @@ export class SharedLinksApiService { return this._sharedLinksApi; } - constructor(private apiService: AlfrescoApiService, - private preferences: UserPreferencesService) { - } + constructor(private apiService: AlfrescoApiService, private preferences: UserPreferencesService) {} /** * Gets shared links available to the current user. @@ -54,9 +51,7 @@ export class SharedLinksApiService { const queryOptions = Object.assign({}, defaultOptions, options); const promise = this.sharedLinksApi.listSharedLinks(queryOptions); - return from(promise).pipe( - catchError((err) => of(err)) - ); + return from(promise).pipe(catchError((err) => of(err))); } /** @@ -68,11 +63,9 @@ export class SharedLinksApiService { * @returns The shared link just created */ createSharedLinks(nodeId: string, sharedLinkWithExpirySettings?: SharedLinkBodyCreate, options: any = {}): Observable { - const promise = this.sharedLinksApi.createSharedLink(sharedLinkWithExpirySettings? sharedLinkWithExpirySettings : { nodeId }, options); + const promise = this.sharedLinksApi.createSharedLink(sharedLinkWithExpirySettings ? sharedLinkWithExpirySettings : { nodeId }, options); - return from(promise).pipe( - catchError((err) => of(err)) - ); + return from(promise).pipe(catchError((err) => of(err))); } /** @@ -84,8 +77,6 @@ export class SharedLinksApiService { deleteSharedLink(sharedId: string): Observable { const promise = this.sharedLinksApi.deleteSharedLink(sharedId); - return from(promise).pipe( - catchError((err: Error) => of(err)) - ); + return from(promise).pipe(catchError((err: Error) => of(err))); } } diff --git a/lib/content-services/src/lib/content-type/content-type.service.ts b/lib/content-services/src/lib/content-type/content-type.service.ts index 5ace0ef309..bced8a9998 100644 --- a/lib/content-services/src/lib/content-type/content-type.service.ts +++ b/lib/content-services/src/lib/content-type/content-type.service.ts @@ -25,15 +25,13 @@ import { map } from 'rxjs/operators'; providedIn: 'root' }) export class ContentTypeService { - private _typesApi: TypesApi; get typesApi(): TypesApi { this._typesApi = this._typesApi ?? new TypesApi(this.alfrescoApiService.getInstance()); return this._typesApi; } - constructor(private alfrescoApiService: AlfrescoApiService) { - } + constructor(private alfrescoApiService: AlfrescoApiService) {} getContentTypeByPrefix(prefixedType: string): Observable { return from(this.typesApi.getType(prefixedType)); @@ -45,8 +43,6 @@ export class ContentTypeService { where, include: ['properties'] }; - return from(this.typesApi.listTypes(opts)).pipe( - map((result: TypePaging) => result.list.entries) - ); + return from(this.typesApi.listTypes(opts)).pipe(map((result: TypePaging) => result.list.entries)); } } diff --git a/lib/content-services/src/lib/dialogs/download-zip/services/download-zip.service.ts b/lib/content-services/src/lib/dialogs/download-zip/services/download-zip.service.ts index f17a360fb9..deceec79dc 100755 --- a/lib/content-services/src/lib/dialogs/download-zip/services/download-zip.service.ts +++ b/lib/content-services/src/lib/dialogs/download-zip/services/download-zip.service.ts @@ -24,15 +24,13 @@ import { AlfrescoApiService } from '../../../services/alfresco-api.service'; providedIn: 'root' }) export class DownloadZipService { - private _downloadsApi: DownloadsApi; get downloadsApi(): DownloadsApi { this._downloadsApi = this._downloadsApi ?? new DownloadsApi(this.apiService.getInstance()); return this._downloadsApi; } - constructor(private apiService: AlfrescoApiService) { - } + constructor(private apiService: AlfrescoApiService) {} /** * Creates a new download. diff --git a/lib/content-services/src/lib/dialogs/folder/folder.dialog.scss b/lib/content-services/src/lib/dialogs/folder/folder.dialog.scss index ad7072455c..f8442b37b7 100644 --- a/lib/content-services/src/lib/dialogs/folder/folder.dialog.scss +++ b/lib/content-services/src/lib/dialogs/folder/folder.dialog.scss @@ -11,7 +11,7 @@ #{$mat-form-field-hide-placeholder} { #{$mat-floating-label} { - padding-top: 11px; + padding-top: 20px; } } diff --git a/lib/content-services/src/lib/dialogs/library/library.dialog.scss b/lib/content-services/src/lib/dialogs/library/library.dialog.scss index 2eee891efe..882d827bbf 100644 --- a/lib/content-services/src/lib/dialogs/library/library.dialog.scss +++ b/lib/content-services/src/lib/dialogs/library/library.dialog.scss @@ -34,7 +34,7 @@ &#{$mat-form-field-hide-placeholder} { #{$mat-floating-label} { - padding-top: 11px; + padding-top: 20px; } } diff --git a/lib/content-services/src/lib/document-list/components/document-list.component.html b/lib/content-services/src/lib/document-list/components/document-list.component.html index f7f46b3f69..e63bdae3cf 100644 --- a/lib/content-services/src/lib/document-list/components/document-list.component.html +++ b/lib/content-services/src/lib/document-list/components/document-list.component.html @@ -48,7 +48,7 @@ - + @@ -58,7 +58,7 @@ error

{{ 'ADF-DOCUMENT-LIST.NO_PERMISSION' | translate }}

- + @@ -72,7 +72,7 @@ [color]="'primary'" [mode]="'indeterminate'" /> - + diff --git a/lib/content-services/src/lib/document-list/components/document-list.component.ts b/lib/content-services/src/lib/document-list/components/document-list.component.ts index f663eb52ca..2cfdba7c7a 100644 --- a/lib/content-services/src/lib/document-list/components/document-list.component.ts +++ b/lib/content-services/src/lib/document-list/components/document-list.component.ts @@ -735,7 +735,7 @@ export class DocumentListComponent extends DataTableSchema implements OnInit, On } private isLinkFolder(node: Node) { - return node.nodeType === 'app:folderlink' && node.properties && node.properties['cm:destination']; + return node.nodeType === 'app:folderlink' && node.properties?.['cm:destination']; } private updateCustomSourceData(nodeId: string): void { diff --git a/lib/content-services/src/lib/document-list/data/share-datatable-adapter.ts b/lib/content-services/src/lib/document-list/data/share-datatable-adapter.ts index 031b718f2b..5549849488 100644 --- a/lib/content-services/src/lib/document-list/data/share-datatable-adapter.ts +++ b/lib/content-services/src/lib/document-list/data/share-datatable-adapter.ts @@ -15,13 +15,7 @@ * limitations under the License. */ -import { - DataColumn, - DataRow, - DataSorting, - DataTableAdapter, - ThumbnailService -} from '@alfresco/adf-core'; +import { DataColumn, DataRow, DataSorting, DataTableAdapter, ThumbnailService } from '@alfresco/adf-core'; import { NodePaging, NodeEntry } from '@alfresco/js-api'; import { PermissionStyleModel } from './../models/permissions-style.model'; import { ShareDataRow } from './share-data-row.model'; @@ -57,12 +51,14 @@ export class ShareDataTableAdapter implements DataTableAdapter { return this._sortingMode; } - constructor(private thumbnailService: ThumbnailService, - private contentService: ContentService, - schema: DataColumn[] = [], - sorting?: DataSorting, - sortingMode: string = 'client', - allowDropFiles: boolean = false) { + constructor( + private thumbnailService: ThumbnailService, + private contentService: ContentService, + schema: DataColumn[] = [], + sorting?: DataSorting, + sortingMode: string = 'client', + allowDropFiles: boolean = false + ) { this.rows = []; this.columns = schema || []; this.sorting = sorting; @@ -106,7 +102,6 @@ export class ShareDataTableAdapter implements DataTableAdapter { } if (col.key === '$thumbnail') { - if (this.imageResolver) { const resolved = this.imageResolver(row, col); if (resolved) { @@ -137,7 +132,6 @@ export class ShareDataTableAdapter implements DataTableAdapter { } if (col.type === 'image') { - if (this.imageResolver) { const resolved = this.imageResolver(row, col); if (resolved) { @@ -149,7 +143,6 @@ export class ShareDataTableAdapter implements DataTableAdapter { return dataRow.cacheValue(col.key, value); } - /** * Gets a thumbnail URL for the given document node. * @@ -217,14 +210,12 @@ export class ShareDataTableAdapter implements DataTableAdapter { isSmartFolder(node: any) { const nodeAspects = this.getNodeAspectNames(node); - return nodeAspects.indexOf('smf:customConfigSmartFolder') > -1 || - (nodeAspects.indexOf('smf:systemConfigSmartFolder') > -1); + return nodeAspects.indexOf('smf:customConfigSmartFolder') > -1 || nodeAspects.indexOf('smf:systemConfigSmartFolder') > -1; } isRuleFolder(node: any) { const nodeAspects = this.getNodeAspectNames(node); - return nodeAspects.indexOf('rule:rules') > -1 || - (nodeAspects.indexOf('rule:rules') > -1); + return nodeAspects.indexOf('rule:rules') > -1; } isALinkFolder(node: any) { @@ -233,7 +224,7 @@ export class ShareDataTableAdapter implements DataTableAdapter { } private getNodeAspectNames(node: any): any[] { - return node.entry?.aspectNames ? node.entry.aspectNames : (node.aspectNames ? node.aspectNames : []); + return node.entry?.aspectNames ? node.entry.aspectNames : node.aspectNames ? node.aspectNames : []; } private sortRows(rows: DataRow[], sorting: DataSorting) { @@ -244,7 +235,6 @@ export class ShareDataTableAdapter implements DataTableAdapter { const options: Intl.CollatorOptions = {}; if (sorting?.key && rows?.length) { - if (sorting.key.includes('sizeInBytes') || sorting.key === 'name') { options.numeric = true; } @@ -256,21 +246,19 @@ export class ShareDataTableAdapter implements DataTableAdapter { let left = a.getValue(sorting.key); if (left) { - left = (left instanceof Date) ? left.valueOf().toString() : left.toString(); + left = left instanceof Date ? left.valueOf().toString() : left.toString(); } else { left = ''; } let right = b.getValue(sorting.key); if (right) { - right = (right instanceof Date) ? right.valueOf().toString() : right.toString(); + right = right instanceof Date ? right.valueOf().toString() : right.toString(); } else { right = ''; } - return sorting.direction === 'asc' - ? left.localeCompare(right, undefined, options) - : right.localeCompare(left, undefined, options); + return sorting.direction === 'asc' ? left.localeCompare(right, undefined, options) : right.localeCompare(left, undefined, options); }); } } @@ -283,7 +271,9 @@ export class ShareDataTableAdapter implements DataTableAdapter { if (nodePaging?.list) { const nodeEntries: NodeEntry[] = nodePaging.list.entries; if (nodeEntries?.length) { - shareDataRows = nodeEntries.map((item) => new ShareDataRow(item, this.contentService, this.permissionsStyle, this.thumbnailService, this.allowDropFiles)); + shareDataRows = nodeEntries.map( + (item) => new ShareDataRow(item, this.contentService, this.permissionsStyle, this.thumbnailService, this.allowDropFiles) + ); if (this.filter) { shareDataRows = shareDataRows.filter(this.filter); @@ -326,6 +316,6 @@ export class ShareDataTableAdapter implements DataTableAdapter { } getRowByNodeId(nodeId: string): DataRow { - return this.rows.find((row: DataRow) => row.node.entry.id === nodeId); + return this.rows.find((row: DataRow) => row.node.entry.id === nodeId); } } diff --git a/lib/content-services/src/lib/document-list/models/content-action.model.ts b/lib/content-services/src/lib/document-list/models/content-action.model.ts index ee9e817d04..55206aac09 100644 --- a/lib/content-services/src/lib/document-list/models/content-action.model.ts +++ b/lib/content-services/src/lib/document-list/models/content-action.model.ts @@ -59,14 +59,14 @@ export enum ContentActionTarget { export type ContentActionHandler = (obj: any, target?: any, permission?: string) => any; export class DocumentActionModel extends ContentActionModel { - constructor(json?: any) { + constructor(json?: any) { super(json); this.target = 'document'; } } -export class FolderActionModel extends ContentActionModel { - constructor(json?: any) { +export class FolderActionModel extends ContentActionModel { + constructor(json?: any) { super(json); this.target = 'folder'; } diff --git a/lib/content-services/src/lib/document-list/services/folder-actions.service.ts b/lib/content-services/src/lib/document-list/services/folder-actions.service.ts index fa11ed0b3e..a59fc56a5e 100644 --- a/lib/content-services/src/lib/document-list/services/folder-actions.service.ts +++ b/lib/content-services/src/lib/document-list/services/folder-actions.service.ts @@ -29,17 +29,18 @@ import { NodeActionsService } from './node-actions.service'; providedIn: 'root' }) export class FolderActionsService { - permissionEvent = new Subject(); error = new Subject(); success = new Subject(); private handlers: { [id: string]: ContentActionHandler } = {}; - constructor(private nodeActionsService: NodeActionsService, - private documentListService: DocumentListService, - private contentService: ContentService, - private translation: TranslationService) { + constructor( + private nodeActionsService: NodeActionsService, + private documentListService: DocumentListService, + private contentService: ContentService, + private translation: TranslationService + ) { this.setupActionHandlers(); } @@ -107,36 +108,36 @@ export class FolderActionsService { } private prepareHandlers(actionObservable: Observable, target?: any): void { - actionObservable.subscribe( - (fileOperationMessage) => { - if (target && typeof target.reload === 'function') { - target.reload(); - } - this.success.next(fileOperationMessage); - }, - this.error.next.bind(this.error) - ); + actionObservable.subscribe((fileOperationMessage) => { + if (target && typeof target.reload === 'function') { + target.reload(); + } + this.success.next(fileOperationMessage); + }, this.error.next.bind(this.error)); } private deleteNode(node: NodeEntry, target?: any, permission?: string): Observable { if (this.canExecuteAction(node)) { if (this.contentService.hasAllowableOperations(node.entry, permission)) { const handlerObservable = this.documentListService.deleteNode(node.entry.id); - handlerObservable.subscribe(() => { - if (target && typeof target.reload === 'function') { - target.reload(); - } + handlerObservable.subscribe( + () => { + if (target && typeof target.reload === 'function') { + target.reload(); + } - const message = this.translation.instant('CORE.DELETE_NODE.SINGULAR', { name: node.entry.name }); - this.success.next(message); - }, () => { - const message = this.translation.instant('CORE.DELETE_NODE.ERROR_SINGULAR', { name: node.entry.name }); - this.error.next(message); - }); + const message = this.translation.instant('CORE.DELETE_NODE.SINGULAR', { name: node.entry.name }); + this.success.next(message); + }, + () => { + const message = this.translation.instant('CORE.DELETE_NODE.ERROR_SINGULAR', { name: node.entry.name }); + this.error.next(message); + } + ); return handlerObservable; } else { - this.permissionEvent.next(new PermissionModel({type: 'folder', action: 'delete', permission})); + this.permissionEvent.next(new PermissionModel({ type: 'folder', action: 'delete', permission })); return throwError(new Error('No permission to delete')); } } diff --git a/lib/content-services/src/lib/document-list/services/lock.service.ts b/lib/content-services/src/lib/document-list/services/lock.service.ts index a25d565606..6653c6e3bc 100644 --- a/lib/content-services/src/lib/document-list/services/lock.service.ts +++ b/lib/content-services/src/lib/document-list/services/lock.service.ts @@ -24,9 +24,7 @@ import { isAfter } from 'date-fns'; providedIn: 'root' }) export class LockService { - - constructor(private authService: AuthenticationService) { - } + constructor(private authService: AuthenticationService) {} isLocked(node: Node): boolean { let isLocked = false; diff --git a/lib/content-services/src/lib/group/services/group.service.ts b/lib/content-services/src/lib/group/services/group.service.ts index c8839c3d16..c439c27a33 100644 --- a/lib/content-services/src/lib/group/services/group.service.ts +++ b/lib/content-services/src/lib/group/services/group.service.ts @@ -25,27 +25,27 @@ import { map } from 'rxjs/operators'; providedIn: 'root' }) export class GroupService { - private _groupsApi: GroupsApi; get groupsApi(): GroupsApi { this._groupsApi = this._groupsApi ?? new GroupsApi(this.alfrescoApiService.getInstance()); return this._groupsApi; } - constructor( - private alfrescoApiService: AlfrescoApiService - ) { - } + constructor(private alfrescoApiService: AlfrescoApiService) {} async listAllGroupMembershipsForPerson(personId: string, opts?: any, accumulator = []): Promise { const groupsPaginated = await this.groupsApi.listGroupMembershipsForPerson(personId, opts); accumulator = [...accumulator, ...groupsPaginated.list.entries]; if (groupsPaginated.list.pagination.hasMoreItems) { const skip = groupsPaginated.list.pagination.skipCount + groupsPaginated.list.pagination.count; - return this.listAllGroupMembershipsForPerson(personId, { - maxItems: opts.maxItems, - skipCount: skip - }, accumulator); + return this.listAllGroupMembershipsForPerson( + personId, + { + maxItems: opts.maxItems, + skipCount: skip + }, + accumulator + ); } else { return accumulator; } @@ -59,10 +59,12 @@ export class GroupService { * @returns Observable group for specified id. */ getGroup(id: string, opts?: ContentIncludeQuery): Observable { - return from(this.groupsApi.getGroup(id, opts)).pipe(map((group) => { - group.entry.description ||= ''; - return group; - })); + return from(this.groupsApi.getGroup(id, opts)).pipe( + map((group) => { + group.entry.description ||= ''; + return group; + }) + ); } /** @@ -73,12 +75,20 @@ export class GroupService { * @returns Observable updated group. */ updateGroup(group: Group, opts?: ContentIncludeQuery): Observable { - return from(this.groupsApi.updateGroup(group.id, { - displayName: group.displayName, - description: group.description - }, opts)).pipe(map((updatedGroup) => { - updatedGroup.entry.description ||= ''; - return updatedGroup; - })); + return from( + this.groupsApi.updateGroup( + group.id, + { + displayName: group.displayName, + description: group.description + }, + opts + ) + ).pipe( + map((updatedGroup) => { + updatedGroup.entry.description ||= ''; + return updatedGroup; + }) + ); } } diff --git a/lib/content-services/src/lib/mock/add-permission.component.mock.ts b/lib/content-services/src/lib/mock/add-permission.component.mock.ts index f2bacca26e..cfc45409f2 100644 --- a/lib/content-services/src/lib/mock/add-permission.component.mock.ts +++ b/lib/content-services/src/lib/mock/add-permission.component.mock.ts @@ -17,128 +17,126 @@ /* spellchecker: disable */ -export const fakeAuthorityResults: any[] = [{ - entry: { - aspectNames: [ - 'cm:personDisabled', - 'cm:ownable', - 'cm:preferences' - ], - isFolder: false, - search: { - score: 4.014668 - }, - isFile: false, - name: 'dc103838-645f-43c1-8a2a-bc187e13c343', - location: 'nodes', - id: 'dc103838-645f-43c1-8a2a-bc187e13c343', - nodeType: 'cm:person', - properties: { - 'cm:location': 'Tilbury, UK', - 'cm:persondescription': { - contentUrl: 'store://2018/4/18/9/30/514bb261-bc61-4502-ad2f-dfafec9ae4eb.bin', - mimetype: 'application/octet-stream', - size: 55, - encoding: 'UTF-8', - locale: 'en_US', - id: 148, - infoUrl: 'contentUrl=store://2018/4/18/9/30/514bb261-bc61-4502-ad2f-dfafec9ae4eb.bin|mimetype=application/octet-stream|size=55|encoding=UTF-8|locale=en_US_' +export const fakeAuthorityResults: any[] = [ + { + entry: { + aspectNames: ['cm:personDisabled', 'cm:ownable', 'cm:preferences'], + isFolder: false, + search: { + score: 4.014668 }, - 'cm:owner': { - id: 'abeecher', - displayName: 'Alice Beecher' + isFile: false, + name: 'dc103838-645f-43c1-8a2a-bc187e13c343', + location: 'nodes', + id: 'dc103838-645f-43c1-8a2a-bc187e13c343', + nodeType: 'cm:person', + properties: { + 'cm:location': 'Tilbury, UK', + 'cm:persondescription': { + contentUrl: 'store://2018/4/18/9/30/514bb261-bc61-4502-ad2f-dfafec9ae4eb.bin', + mimetype: 'application/octet-stream', + size: 55, + encoding: 'UTF-8', + locale: 'en_US', + id: 148, + infoUrl: + 'contentUrl=store://2018/4/18/9/30/514bb261-bc61-4502-ad2f-dfafec9ae4eb.bin|mimetype=application/octet-stream|size=55|encoding=UTF-8|locale=en_US_' + }, + 'cm:owner': { + id: 'abeecher', + displayName: 'Alice Beecher' + }, + 'cm:companyaddress2': 'Tilbury', + 'cm:userStatus': 'Helping to design the look and feel of the new web site', + 'cm:companyaddress1': '200 Butterwick Street', + 'cm:telephone': '0112211001100', + 'cm:preferenceValues': { + contentUrl: 'store://2018/4/18/9/30/afc39bc9-6bac-4f24-8730-9d9f617a322e.bin', + mimetype: 'text/plain', + size: 709, + encoding: 'UTF-8', + locale: 'en_US', + id: 147, + infoUrl: + 'contentUrl=store://2018/4/18/9/30/afc39bc9-6bac-4f24-8730-9d9f617a322e.bin|mimetype=text/plain|size=709|encoding=UTF-8|locale=en_US_' + }, + 'cm:userName': 'abeecher', + 'cm:companyaddress3': 'UK', + 'cm:userStatusTime': '2011-02-15T20:20:13.432+0000', + 'cm:email': 'abeecher@example.com', + 'cm:skype': 'abeecher', + 'cm:jobtitle': 'Graphic Designer', + 'cm:homeFolderProvider': 'userHomesHomeFolderProvider', + 'cm:homeFolder': '242533d8-68e6-4811-bc3d-61ec63c614aa', + 'cm:lastName': 'Beecher', + 'cm:sizeCurrent': 8382006, + 'cm:sizeQuota': -1, + 'cm:firstName': 'Alice', + 'cm:emailFeedId': 440, + 'cm:authorizationStatus': 'NEVER_AUTHORIZED', + 'cm:mobile': '0112211001100', + 'cm:organization': 'Moresby, Garland and Wedge', + 'cm:companypostcode': 'ALF1 SAM1' }, - 'cm:companyaddress2': 'Tilbury', - 'cm:userStatus': 'Helping to design the look and feel of the new web site', - 'cm:companyaddress1': '200 Butterwick Street', - 'cm:telephone': '0112211001100', - 'cm:preferenceValues': { - contentUrl: 'store://2018/4/18/9/30/afc39bc9-6bac-4f24-8730-9d9f617a322e.bin', - mimetype: 'text/plain', - size: 709, - encoding: 'UTF-8', - locale: 'en_US', - id: 147, - infoUrl: 'contentUrl=store://2018/4/18/9/30/afc39bc9-6bac-4f24-8730-9d9f617a322e.bin|mimetype=text/plain|size=709|encoding=UTF-8|locale=en_US_' + parentId: '063f5d48-a0b3-4cbf-826c-88a4fbfa3336' + } + }, + { + entry: { + aspectNames: ['cm:ownable', 'cm:preferences'], + isFolder: false, + search: { + score: 4.014668 }, - 'cm:userName': 'abeecher', - 'cm:companyaddress3': 'UK', - 'cm:userStatusTime': '2011-02-15T20:20:13.432+0000', - 'cm:email': 'abeecher@example.com', - 'cm:skype': 'abeecher', - 'cm:jobtitle': 'Graphic Designer', - 'cm:homeFolderProvider': 'userHomesHomeFolderProvider', - 'cm:homeFolder': '242533d8-68e6-4811-bc3d-61ec63c614aa', - 'cm:lastName': 'Beecher', - 'cm:sizeCurrent': 8382006, - 'cm:sizeQuota': -1, - 'cm:firstName': 'Alice', - 'cm:emailFeedId': 440, - 'cm:authorizationStatus': 'NEVER_AUTHORIZED', - 'cm:mobile': '0112211001100', - 'cm:organization': 'Moresby, Garland and Wedge', - 'cm:companypostcode': 'ALF1 SAM1' - }, - parentId: '063f5d48-a0b3-4cbf-826c-88a4fbfa3336' + isFile: false, + name: 'e320c16b-a763-4a4e-9f22-286ff5d8dca2', + location: 'nodes', + id: 'e320c16b-a763-4a4e-9f22-286ff5d8dca2', + nodeType: 'cm:person', + properties: { + 'cm:homeFolderProvider': 'bootstrapHomeFolderProvider', + 'cm:preferenceValues': { + contentUrl: 'store://2018/4/23/14/42/92bb4aa9-db27-41a4-9804-ddab3cc83d3e.bin', + mimetype: 'text/plain', + size: 102, + encoding: 'UTF-8', + locale: 'en', + id: 313, + infoUrl: + 'contentUrl=store://2018/4/23/14/42/92bb4aa9-db27-41a4-9804-ddab3cc83d3e.bin|mimetype=text/plain|size=102|encoding=UTF-8|locale=en_' + }, + 'cm:authorizationStatus': 'AUTHORIZED', + 'cm:homeFolder': 'a20cd541-4ada-4525-9807-9fa0a047d9f4', + 'cm:userName': 'admin', + 'cm:sizeCurrent': 0, + 'cm:email': 'admin@alfresco.com', + 'cm:firstName': 'Administrator', + 'cm:owner': { + id: 'admin', + displayName: 'Administrator' + } + }, + parentId: '063f5d48-a0b3-4cbf-826c-88a4fbfa3336' + } + }, + { + entry: { + isFolder: false, + search: { + score: 0.3541112 + }, + isFile: false, + name: 'GROUP_ALFRESCO_ADMINISTRATORS', + location: 'nodes', + id: 'GROUP_ALFRESCO_ADMINISTRATORS', + nodeType: 'cm:authorityContainer', + properties: { + 'cm:authorityName': 'GROUP_ALFRESCO_ADMINISTRATORS' + }, + parentId: '030d833e-da8e-4f5c-8ef9-d809638bd04b' + } } -}, -{ - entry: { - aspectNames: [ - 'cm:ownable', - 'cm:preferences' - ], - isFolder: false, - search: { - score: 4.014668 - }, - isFile: false, - name: 'e320c16b-a763-4a4e-9f22-286ff5d8dca2', - location: 'nodes', - id: 'e320c16b-a763-4a4e-9f22-286ff5d8dca2', - nodeType: 'cm:person', - properties: { - 'cm:homeFolderProvider': 'bootstrapHomeFolderProvider', - 'cm:preferenceValues': { - contentUrl: 'store://2018/4/23/14/42/92bb4aa9-db27-41a4-9804-ddab3cc83d3e.bin', - mimetype: 'text/plain', - size: 102, - encoding: 'UTF-8', - locale: 'en', - id: 313, - infoUrl: 'contentUrl=store://2018/4/23/14/42/92bb4aa9-db27-41a4-9804-ddab3cc83d3e.bin|mimetype=text/plain|size=102|encoding=UTF-8|locale=en_' - }, - 'cm:authorizationStatus': 'AUTHORIZED', - 'cm:homeFolder': 'a20cd541-4ada-4525-9807-9fa0a047d9f4', - 'cm:userName': 'admin', - 'cm:sizeCurrent': 0, - 'cm:email': 'admin@alfresco.com', - 'cm:firstName': 'Administrator', - 'cm:owner': { - id: 'admin', - displayName: 'Administrator' - } - }, - parentId: '063f5d48-a0b3-4cbf-826c-88a4fbfa3336' - } -}, -{ - entry: { - isFolder: false, - search: { - score: 0.3541112 - }, - isFile: false, - name: 'GROUP_ALFRESCO_ADMINISTRATORS', - location: 'nodes', - id: 'GROUP_ALFRESCO_ADMINISTRATORS', - nodeType: 'cm:authorityContainer', - properties: { - 'cm:authorityName': 'GROUP_ALFRESCO_ADMINISTRATORS' - }, - parentId: '030d833e-da8e-4f5c-8ef9-d809638bd04b' - } -}]; +]; export const fakeAuthorityListResult: any = { list: { @@ -168,64 +166,67 @@ export const fakeNameListResult: any = { lastTxId: 5496 } }, - entries: [{ - entry: { - aspectNames: ['cm:ownable'], - isFolder: false, - search: { - score: 1.0 - }, - isFile: false, - name: '730cd9b0-5617-4865-aee8-90de1d596997', - location: 'nodes', - id: '730cd9b0-5617-4865-aee8-90de1d596997', - nodeType: 'cm:person', - properties: { - 'cm:homeFolderProvider': 'userHomesHomeFolderProvider', - 'cm:authorizationStatus': 'NEVER_AUTHORIZED', - 'cm:homeFolder': '277f505d-6526-45b1-a7b3-c9bdd66f17f6', - 'cm:userName': 'test1', - 'cm:lastName': 'lastName1', - 'cm:sizeCurrent': 0, - 'cm:email': 'test1@gmail.com', - 'cm:sizeQuota': 1073741824, - 'cm:firstName': 'firstName', - 'cm:owner': { - id: 'test1', - displayName: 'firstName lastName1' - } - }, - parentId: '3e9ce910-a4a0-4531-8f80-7734bece6342' + entries: [ + { + entry: { + aspectNames: ['cm:ownable'], + isFolder: false, + search: { + score: 1.0 + }, + isFile: false, + name: '730cd9b0-5617-4865-aee8-90de1d596997', + location: 'nodes', + id: '730cd9b0-5617-4865-aee8-90de1d596997', + nodeType: 'cm:person', + properties: { + 'cm:homeFolderProvider': 'userHomesHomeFolderProvider', + 'cm:authorizationStatus': 'NEVER_AUTHORIZED', + 'cm:homeFolder': '277f505d-6526-45b1-a7b3-c9bdd66f17f6', + 'cm:userName': 'test1', + 'cm:lastName': 'lastName1', + 'cm:sizeCurrent': 0, + 'cm:email': 'test1@gmail.com', + 'cm:sizeQuota': 1073741824, + 'cm:firstName': 'firstName', + 'cm:owner': { + id: 'test1', + displayName: 'firstName lastName1' + } + }, + parentId: '3e9ce910-a4a0-4531-8f80-7734bece6342' + } + }, + { + entry: { + aspectNames: ['cm:ownable'], + isFolder: false, + search: { + score: 1.0 + }, + isFile: false, + name: '3d1e9e57-505f-431e-bb2b-38ad8d5d2d15', + location: 'nodes', + id: '3d1e9e57-505f-431e-bb2b-38ad8d5d2d15', + nodeType: 'cm:person', + properties: { + 'cm:homeFolderProvider': 'userHomesHomeFolderProvider', + 'cm:authorizationStatus': 'NEVER_AUTHORIZED', + 'cm:homeFolder': '81a07ff0-82fb-4bbb-b869-d5fd92e71e17', + 'cm:userName': 'test11', + 'cm:lastName': 'lastName2', + 'cm:sizeCurrent': 0, + 'cm:email': 'test2@gmail.com', + 'cm:sizeQuota': -1, + 'cm:firstName': 'firstName', + 'cm:owner': { + id: 'test11', + displayName: 'firstName lastName2' + } + }, + parentId: '3e9ce910-a4a0-4531-8f80-7734bece6342' + } } - }, { - entry: { - aspectNames: ['cm:ownable'], - isFolder: false, - search: { - score: 1.0 - }, - isFile: false, - name: '3d1e9e57-505f-431e-bb2b-38ad8d5d2d15', - location: 'nodes', - id: '3d1e9e57-505f-431e-bb2b-38ad8d5d2d15', - nodeType: 'cm:person', - properties: { - 'cm:homeFolderProvider': 'userHomesHomeFolderProvider', - 'cm:authorizationStatus': 'NEVER_AUTHORIZED', - 'cm:homeFolder': '81a07ff0-82fb-4bbb-b869-d5fd92e71e17', - 'cm:userName': 'test11', - 'cm:lastName': 'lastName2', - 'cm:sizeCurrent': 0, - 'cm:email': 'test2@gmail.com', - 'cm:sizeQuota': -1, - 'cm:firstName': 'firstName', - 'cm:owner': { - id: 'test11', - displayName: 'firstName lastName2' - } - }, - parentId: '3e9ce910-a4a0-4531-8f80-7734bece6342' - } - }] + ] } }; diff --git a/lib/content-services/src/lib/mock/alfresco-api.service.mock.ts b/lib/content-services/src/lib/mock/alfresco-api.service.mock.ts index 729c5d1ec9..95f2bbc885 100644 --- a/lib/content-services/src/lib/mock/alfresco-api.service.mock.ts +++ b/lib/content-services/src/lib/mock/alfresco-api.service.mock.ts @@ -21,9 +21,7 @@ import { AppConfigService, StorageService } from '@alfresco/adf-core'; @Injectable() export class AlfrescoApiServiceMock extends AlfrescoApiService { - - constructor(protected appConfig: AppConfigService, - protected storageService: StorageService) { + constructor(protected appConfig: AppConfigService, protected storageService: StorageService) { super(appConfig, storageService); if (!this.alfrescoApi) { this.initAlfrescoApi(); diff --git a/lib/content-services/src/lib/mock/date-range-search-filter.mock.ts b/lib/content-services/src/lib/mock/date-range-search-filter.mock.ts index a6d088cc81..2ef5bba107 100644 --- a/lib/content-services/src/lib/mock/date-range-search-filter.mock.ts +++ b/lib/content-services/src/lib/mock/date-range-search-filter.mock.ts @@ -18,7 +18,7 @@ import { SearchCategory } from '../search/models/search-category.interface'; export const mockSearchFilterWithoutDisplayedLabelsByField: SearchCategory = { - id : 'test', + id: 'test', name: 'test', expanded: false, enabled: true, @@ -33,7 +33,7 @@ export const mockSearchFilterWithoutDisplayedLabelsByField: SearchCategory = { }; export const mockSearchFilterWithWrongDisplayedLabelsByField: SearchCategory = { - id : 'test', + id: 'test', name: 'test', expanded: false, enabled: true, @@ -51,7 +51,7 @@ export const mockSearchFilterWithWrongDisplayedLabelsByField: SearchCategory = { }; export const mockSearchFilterWithDisplayedLabelsByField: SearchCategory = { - id : 'test', + id: 'test', name: 'test', expanded: false, enabled: true, diff --git a/lib/content-services/src/lib/mock/document-list.component.mock.ts b/lib/content-services/src/lib/mock/document-list.component.mock.ts index 09bdf85e95..940ba75728 100644 --- a/lib/content-services/src/lib/mock/document-list.component.mock.ts +++ b/lib/content-services/src/lib/mock/document-list.component.mock.ts @@ -27,10 +27,13 @@ export const fakeNodeWithCreatePermission = new Node({ path: { name: '/Company Home/User Homes', isComplete: true, - elements: [{ - id: '94acfc73-7014-4475-9bd9-93a2162f0f8c', - name: 'Company Home' - }, { id: '55052317-7e59-4058-8e07-769f41e615e1', name: 'User Homes' }] + elements: [ + { + id: '94acfc73-7014-4475-9bd9-93a2162f0f8c', + name: 'Company Home' + }, + { id: '55052317-7e59-4058-8e07-769f41e615e1', name: 'User Homes' } + ] }, isFolder: true, modifiedByUser: { id: 'Test', displayName: 'Test' }, @@ -51,10 +54,13 @@ export const fakeNodeWithNoPermission = new Node({ path: { name: '/Company Home/User Homes', isComplete: true, - elements: [{ - id: '94acfc73-7014-4475-9bd9-93a2162f0f8c', - name: 'Company Home' - }, { id: '55052317-7e59-4058-8e07-769f41e615e1', name: 'User Homes' }] + elements: [ + { + id: '94acfc73-7014-4475-9bd9-93a2162f0f8c', + name: 'Company Home' + }, + { id: '55052317-7e59-4058-8e07-769f41e615e1', name: 'User Homes' } + ] }, isFolder: true, modifiedByUser: { id: 'Test', displayName: 'Test' }, @@ -72,36 +78,41 @@ export const fakeNodeAnswerWithEntries = { skipCount: 10, maxItems: 10 }, - entries: [{ - entry: { - isFile: true, - createdByUser: { id: 'admin', displayName: 'Administrator' }, - modifiedAt: '2017-05-24T15:08:55.640Z', - nodeType: 'cm:content', - content: { - mimeType: 'application/rtf', - mimeTypeName: 'Rich Text Format', - sizeInBytes: 14530, - encoding: 'UTF-8' - }, - parentId: 'd124de26-6ba0-4f40-8d98-4907da2d337a', - createdAt: '2017-05-24T15:08:55.640Z', - path: { - name: '/Company Home/Guest Home', - isComplete: true, - elements: [{ - id: '94acfc73-7014-4475-9bd9-93a2162f0f8c', - name: 'Company Home' - }, { id: 'd124de26-6ba0-4f40-8d98-4907da2d337a', name: 'Guest Home' }] - }, - isFolder: false, - modifiedByUser: { id: 'admin', displayName: 'Administrator' }, - name: 'b_txt_file.rtf', - id: '67b80f77-dbca-4f58-be6c-71b9dd61ea53', - properties: { 'cm:versionLabel': '1.0', 'cm:versionType': 'MAJOR' }, - allowableOperations: ['delete', 'update'] + entries: [ + { + entry: { + isFile: true, + createdByUser: { id: 'admin', displayName: 'Administrator' }, + modifiedAt: '2017-05-24T15:08:55.640Z', + nodeType: 'cm:content', + content: { + mimeType: 'application/rtf', + mimeTypeName: 'Rich Text Format', + sizeInBytes: 14530, + encoding: 'UTF-8' + }, + parentId: 'd124de26-6ba0-4f40-8d98-4907da2d337a', + createdAt: '2017-05-24T15:08:55.640Z', + path: { + name: '/Company Home/Guest Home', + isComplete: true, + elements: [ + { + id: '94acfc73-7014-4475-9bd9-93a2162f0f8c', + name: 'Company Home' + }, + { id: 'd124de26-6ba0-4f40-8d98-4907da2d337a', name: 'Guest Home' } + ] + }, + isFolder: false, + modifiedByUser: { id: 'admin', displayName: 'Administrator' }, + name: 'b_txt_file.rtf', + id: '67b80f77-dbca-4f58-be6c-71b9dd61ea53', + properties: { 'cm:versionLabel': '1.0', 'cm:versionType': 'MAJOR' }, + allowableOperations: ['delete', 'update'] + } } - }] + ] } }; @@ -127,34 +138,38 @@ export const fakeGetSitesAnswer = { skipCount: 0, maxItems: 20 }, - entries: [{ - entry: { - role: 'SiteManager', - visibility: 'PRIVATE', - guid: 'ac65fdbe-0c79-4f67-bd6a-b89a2768561b', - id: 'admin-site', - preset: 'site-dashboard', - title: 'Admin Site' + entries: [ + { + entry: { + role: 'SiteManager', + visibility: 'PRIVATE', + guid: 'ac65fdbe-0c79-4f67-bd6a-b89a2768561b', + id: 'admin-site', + preset: 'site-dashboard', + title: 'Admin Site' + } + }, + { + entry: { + role: 'SiteManager', + visibility: 'PUBLIC', + guid: 'b4cff62a-664d-4d45-9302-98723eac1319', + description: 'This is a Sample Alfresco Team site.', + id: 'swsdp', + preset: 'site-dashboard', + title: 'Sample: Web Site Design Project' + } + }, + { + entry: { + visibility: 'PUBLIC', + guid: 'af36cf8f-d43c-4a4b-84e6-d1b03e3a2ce5', + id: 'test-site', + preset: 'site-dashboard', + title: 'Test Site' + } } - }, { - entry: { - role: 'SiteManager', - visibility: 'PUBLIC', - guid: 'b4cff62a-664d-4d45-9302-98723eac1319', - description: 'This is a Sample Alfresco Team site.', - id: 'swsdp', - preset: 'site-dashboard', - title: 'Sample: Web Site Design Project' - } - }, { - entry: { - visibility: 'PUBLIC', - guid: 'af36cf8f-d43c-4a4b-84e6-d1b03e3a2ce5', - id: 'test-site', - preset: 'site-dashboard', - title: 'Test Site' - } - }] + ] } }; @@ -167,30 +182,39 @@ export const fakeGetSiteMembership = { skipCount: 0, maxItems: 20 }, - entries: [{ - entry: { - site: { + entries: [ + { + entry: { + site: { + role: 'SiteManager', + visibility: 'PRIVATE', + guid: 'ac65fdbe-0c79-4f67-bd6a-b89a2768561b', + id: 'admin-site', + preset: 'site-dashboard', + title: 'Admin Site' + }, role: 'SiteManager', - visibility: 'PRIVATE', guid: 'ac65fdbe-0c79-4f67-bd6a-b89a2768561b', - id: 'admin-site', - preset: 'site-dashboard', - title: 'Admin Site' - }, role: 'SiteManager', guid: 'ac65fdbe-0c79-4f67-bd6a-b89a2768561b', id: 'admin-site' - } - }, { - entry: { - site: { + id: 'admin-site' + } + }, + { + entry: { + site: { + role: 'SiteManager', + visibility: 'PUBLIC', + guid: 'b4cff62a-664d-4d45-9302-98723eac1319', + description: 'This is a Sample Alfresco Team site.', + id: 'swsdp', + preset: 'site-dashboard', + title: 'Sample: Web Site Design Project' + }, role: 'SiteManager', - visibility: 'PUBLIC', guid: 'b4cff62a-664d-4d45-9302-98723eac1319', - description: 'This is a Sample Alfresco Team site.', - id: 'swsdp', - preset: 'site-dashboard', - title: 'Sample: Web Site Design Project' - }, role: 'SiteManager', guid: 'b4cff62a-664d-4d45-9302-98723eac1319', id: 'swsdp' + id: 'swsdp' + } } - }] + ] } }; @@ -202,17 +226,24 @@ export const fakeNodePaging: NodePaging = { totalItems: 5, skipCount: 0, maxItems: 100 - }, entries: [{ - entry: fakeNodeWithNoPermission - }, { - entry: fakeNodeWithNoPermission - }, { - entry: fakeNodeWithNoPermission - }, { - entry: fakeNodeWithNoPermission - }, { - entry: fakeNodeWithNoPermission - }] + }, + entries: [ + { + entry: fakeNodeWithNoPermission + }, + { + entry: fakeNodeWithNoPermission + }, + { + entry: fakeNodeWithNoPermission + }, + { + entry: fakeNodeWithNoPermission + }, + { + entry: fakeNodeWithNoPermission + } + ] } }; @@ -232,10 +263,13 @@ export const mockNode1 = new Node({ path: { name: '/Company Home/Guest Home', isComplete: true, - elements: [{ - id: '94acfc73-7014-4475-9bd9-93a2162f0f8c', - name: 'Company Home' - }, { id: 'd124de26-6ba0-4f40-8d98-4907da2d337a', name: 'Guest Home' }] + elements: [ + { + id: '94acfc73-7014-4475-9bd9-93a2162f0f8c', + name: 'Company Home' + }, + { id: 'd124de26-6ba0-4f40-8d98-4907da2d337a', name: 'Guest Home' } + ] }, isFolder: false, modifiedByUser: { id: 'admin', displayName: 'Administrator' }, @@ -261,10 +295,13 @@ export const mockNode2 = new Node({ path: { name: '/Company Home/Guest Home', isComplete: true, - elements: [{ - id: '94acfc73-7014-4475-9bd9-93a2162f0f8c', - name: 'Company Home' - }, { id: 'd124de26-6ba0-4f40-8d98-4907da2d337a', name: 'Guest Home' }] + elements: [ + { + id: '94acfc73-7014-4475-9bd9-93a2162f0f8c', + name: 'Company Home' + }, + { id: 'd124de26-6ba0-4f40-8d98-4907da2d337a', name: 'Guest Home' } + ] }, isFolder: false, modifiedByUser: { id: 'admin', displayName: 'Administrator' }, @@ -290,10 +327,13 @@ export const mockNode3 = new Node({ path: { name: '/Company Home/Guest Home', isComplete: true, - elements: [{ - id: '94acfc73-7014-4475-9bd9-93a2162f0f8c', - name: 'Company Home' - }, { id: 'd124de26-6ba0-4f40-8d98-4907da2d337a', name: 'Guest Home' }] + elements: [ + { + id: '94acfc73-7014-4475-9bd9-93a2162f0f8c', + name: 'Company Home' + }, + { id: 'd124de26-6ba0-4f40-8d98-4907da2d337a', name: 'Guest Home' } + ] }, isFolder: false, modifiedByUser: { id: 'admin', displayName: 'Administrator' }, @@ -320,12 +360,17 @@ export const mockNodePagingWithPreselectedNodes: NodePaging = { totalItems: 5, skipCount: 0, maxItems: 100 - }, entries: [{ - entry: mockNode1 - }, { - entry: mockNode2 - }, { - entry: mockNode3 - }] + }, + entries: [ + { + entry: mockNode1 + }, + { + entry: mockNode2 + }, + { + entry: mockNode3 + } + ] } }; diff --git a/lib/content-services/src/lib/mock/inherited-permission.component.mock.ts b/lib/content-services/src/lib/mock/inherited-permission.component.mock.ts index 65f5c3469c..e060598386 100644 --- a/lib/content-services/src/lib/mock/inherited-permission.component.mock.ts +++ b/lib/content-services/src/lib/mock/inherited-permission.component.mock.ts @@ -24,15 +24,12 @@ import { Component } from '@angular/core'; NODE UPDATED ` }) - export class SimpleInheritedPermissionTestComponent { - message: string = ''; nodeId: string = 'fake-node-id'; updatedNode: boolean = false; - constructor() { - } + constructor() {} onUpdate(node: any) { this.updatedNode = node.permissions?.isInheritanceEnabled ?? false; diff --git a/lib/content-services/src/lib/mock/new-version-uploader.service.mock.ts b/lib/content-services/src/lib/mock/new-version-uploader.service.mock.ts index d69967372a..59d9124dd1 100644 --- a/lib/content-services/src/lib/mock/new-version-uploader.service.mock.ts +++ b/lib/content-services/src/lib/mock/new-version-uploader.service.mock.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -export const mockNode: any = ({ +export const mockNode: any = { isFile: true, createdByUser: { id: 'admin', displayName: 'Administrator' }, modifiedAt: '2017-05-24T15:08:55.640Z', @@ -31,10 +31,13 @@ export const mockNode: any = ({ path: { name: '/Company Home/Guest Home', isComplete: true, - elements: [{ - id: '94acfc73-7014-4475-9bd9-93a2162f0f8c', - name: 'Company Home' - }, { id: 'd124de26-6ba0-4f40-8d98-4907da2d337a', name: 'Guest Home' }] + elements: [ + { + id: '94acfc73-7014-4475-9bd9-93a2162f0f8c', + name: 'Company Home' + }, + { id: 'd124de26-6ba0-4f40-8d98-4907da2d337a', name: 'Guest Home' } + ] }, isFolder: false, modifiedByUser: { id: 'admin', displayName: 'Administrator' }, @@ -42,7 +45,7 @@ export const mockNode: any = ({ id: '70e1cc6a-6918-468a-b84a-1048093b06fd', properties: { 'cm:versionLabel': '1.0', 'cm:versionType': 'MAJOR' }, allowableOperations: ['delete', 'update'] -}); +}; export const mockFile = new File(['fakefake'], 'file-fake.png', { type: 'image/png' }); @@ -59,21 +62,13 @@ export const mockNewVersionUploaderData: any = { modifiedAt: '2022-05-24T10:19:43.544Z', nodeType: 'cm:content', content: { - mimeType: - 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', mimeTypeName: 'Microsoft Word 2007', sizeInBytes: 11887, encoding: 'UTF-8' }, parentId: '422538ca-ea4b-4086-83f9-b36e4521ec7f', - aspectNames: [ - 'rn:renditioned', - 'cm:versionable', - 'cm:titled', - 'cm:auditable', - 'cm:author', - 'cm:thumbnailModification' - ], + aspectNames: ['rn:renditioned', 'cm:versionable', 'cm:titled', 'cm:auditable', 'cm:author', 'cm:thumbnailModification'], createdAt: '2022-05-24T07:26:44.429Z', isFolder: false, modifiedByUser: { @@ -101,21 +96,13 @@ export const mockNewVersionUploaderData: any = { modifiedAt: '2022-05-24T07:26:45.337Z', nodeType: 'cm:content', content: { - mimeType: - 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', mimeTypeName: 'Microsoft Word 2007', sizeInBytes: 11949, encoding: 'UTF-8' }, parentId: '422538ca-ea4b-4086-83f9-b36e4521ec7f', - aspectNames: [ - 'rn:renditioned', - 'cm:versionable', - 'cm:titled', - 'cm:auditable', - 'cm:author', - 'cm:thumbnailModification' - ], + aspectNames: ['rn:renditioned', 'cm:versionable', 'cm:titled', 'cm:auditable', 'cm:author', 'cm:thumbnailModification'], createdAt: '2022-05-24T07:26:44.429Z', path: { name: '/Company Home/User Homes/hruser', @@ -155,13 +142,7 @@ export const mockNewVersionUploaderData: any = { accessStatus: 'ALLOWED' } ], - settable: [ - 'Contributor', - 'Collaborator', - 'Coordinator', - 'Editor', - 'Consumer' - ], + settable: ['Contributor', 'Collaborator', 'Coordinator', 'Editor', 'Consumer'], isInheritanceEnabled: true }, modifiedByUser: { diff --git a/lib/content-services/src/lib/mock/search-filter-mock.ts b/lib/content-services/src/lib/mock/search-filter-mock.ts index 3f0b9ec238..c5b7b31655 100644 --- a/lib/content-services/src/lib/mock/search-filter-mock.ts +++ b/lib/content-services/src/lib/mock/search-filter-mock.ts @@ -100,16 +100,11 @@ export const simpleCategories: SearchCategory[] = [ } } } - ]; export const searchFilter = { - 'app:fields': [ - 'cm:name' - ], - include: [ - 'allowableOperations' - ], + 'app:fields': ['cm:name'], + include: ['allowableOperations'], sorting: { options: [ { @@ -412,8 +407,10 @@ export const mockSearchResult = { label: 'SEARCH.FACET_QUERIES.MIMETYPE', filterQuery: 'content.mimetype:text/html', metrics: [{ type: 'count', value: { count: 13 } }] - }] - }, { + } + ] + }, + { type: 'query', label: 'Size facet queries', buckets: [ @@ -421,60 +418,75 @@ export const mockSearchResult = { label: 'my1', filterQuery: 'content.size:[111111 TO MAX]', metrics: [{ type: 'count', value: { count: 806 } }] - }, { + }, + { label: 'my3', filterQuery: 'content.size:[333333 TO MAX]', metrics: [{ type: 'count', value: { count: 669 } }] - }, { + }, + { label: 'my2', filterQuery: 'content.size:[222222 TO MAX]', metrics: [{ type: 'count', value: { count: 691 } }] - }, { + }, + { label: 'my5', filterQuery: 'content.size:[5555 TO MAX]', metrics: [{ type: 'count', value: { count: 1866 } }] - }, { + }, + { label: 'my4', filterQuery: 'content.size:[444444 TO MAX]', metrics: [{ type: 'count', value: { count: 665 } }] - }, { + }, + { label: 'my7', filterQuery: 'content.size:[777777 TO MAX]', metrics: [{ type: 'count', value: { count: 641 } }] - }, { + }, + { label: 'SEARCH.FACET_QUERIES.SMALL', filterQuery: 'content.size:[10240 TO 102400]', metrics: [{ type: 'count', value: { count: 526 } }] - }, { + }, + { label: 'my6', filterQuery: 'content.size:[666666 TO MAX]', metrics: [{ type: 'count', value: { count: 652 } }] - }, { + }, + { label: 'SEARCH.FACET_QUERIES.XTRALARGE', filterQuery: 'content.size:[16777216 TO 134217728]', metrics: [{ type: 'count', value: { count: 617 } }] - }, { + }, + { label: 'my8', filterQuery: 'content.size:[888888 TO MAX]', metrics: [{ type: 'count', value: { count: 641 } }] - }, { + }, + { label: 'SEARCH.FACET_QUERIES.XXTRALARGE', filterQuery: 'content.size:[134217728 TO MAX]', metrics: [{ type: 'count', value: { count: 0 } }] - }, { + }, + { label: 'SEARCH.FACET_QUERIES.MEDIUM', filterQuery: 'content.size:[102400 TO 1048576]', metrics: [{ type: 'count', value: { count: 630 } }] - }, { + }, + { label: 'SEARCH.FACET_QUERIES.LARGE', filterQuery: 'content.size:[1048576 TO 16777216]', metrics: [{ type: 'count', value: { count: 23 } }] - }, { + }, + { label: 'Extra Small', filterQuery: 'content.size:[0 TO 10240]', metrics: [{ type: 'count', value: { count: 10239 } }] - }] - }, { + } + ] + }, + { type: 'query', label: 'SEARCH.FACET_QUERIES.MY_FACET_QUERIES', buckets: [ @@ -482,37 +494,45 @@ export const mockSearchResult = { label: 'SEARCH.FACET_QUERIES.CREATED_THIS_YEAR', filterQuery: 'created:2019', metrics: [{ type: 'count', value: { count: 0 } }] - }] + } + ] }, { type: 'field', label: 'SEARCH.FACET_FIELDS.SIZE', buckets: [] - }, { + }, + { type: 'field', label: 'SEARCH.FACET_FIELDS.CREATED', buckets: [] - }, { + }, + { type: 'field', label: 'SEARCH.FACET_FIELDS.TYPE', buckets: [] - }, { + }, + { type: 'field', label: 'SEARCH.FACET_FIELDS.MODIFIER', buckets: [] - }, { + }, + { type: 'field', label: 'SEARCH.FACET_FIELDS.CREATOR', buckets: [] - }, { + }, + { type: 'interval', label: 'TheModified', buckets: [] - }, { + }, + { type: 'interval', label: 'The Created', buckets: [] - }] + } + ] } } }; @@ -609,29 +629,23 @@ export const sizeOptions = [ } ]; -export const filteredResult = [ - 'my1 (806)', - 'my2 (691)', - 'my3 (669)', - 'my4 (665)', - 'my5 (1866)' -]; +export const filteredResult = ['my1 (806)', 'my2 (691)', 'my3 (669)', 'my4 (665)', 'my5 (1866)']; export const mockContentSizeResponseBucket = { - label: '5875', - filterQuery: 'content.size:5875', - metrics: [ - { - type: 'count', - value: { - count: 364 - } + label: '5875', + filterQuery: 'content.size:5875', + metrics: [ + { + type: 'count', + value: { + count: 364 } - ] - }; + } + ] +}; export const getMockSearchResultWithResponseBucket = () => { - const cloneResult = JSON.parse(JSON.stringify( mockSearchResult)); + const cloneResult = JSON.parse(JSON.stringify(mockSearchResult)); cloneResult.list.context.facets[3].buckets.push(mockContentSizeResponseBucket); return cloneResult; }; diff --git a/lib/content-services/src/lib/new-version-uploader/new-version-uploader.dialog.scss b/lib/content-services/src/lib/new-version-uploader/new-version-uploader.dialog.scss index 3f16b27835..f3a9d9faf8 100644 --- a/lib/content-services/src/lib/new-version-uploader/new-version-uploader.dialog.scss +++ b/lib/content-services/src/lib/new-version-uploader/new-version-uploader.dialog.scss @@ -1,4 +1,6 @@ .adf-new-version-uploader-dialog { + display: block; + &-list { height: 400px; } @@ -33,6 +35,7 @@ display: flex; justify-content: flex-end; color: var(--adf-theme-foreground-text-color-054); + -webkit-font-smoothing: antialiased; button { text-transform: uppercase; diff --git a/lib/content-services/src/lib/new-version-uploader/new-version-uploader.dialog.ts b/lib/content-services/src/lib/new-version-uploader/new-version-uploader.dialog.ts index a01ae57c64..c41650600c 100644 --- a/lib/content-services/src/lib/new-version-uploader/new-version-uploader.dialog.ts +++ b/lib/content-services/src/lib/new-version-uploader/new-version-uploader.dialog.ts @@ -40,7 +40,10 @@ import { VersionListComponent } from '../version-manager/version-list.component' ], templateUrl: './new-version-uploader.dialog.html', styleUrls: ['./new-version-uploader.dialog.scss'], - encapsulation: ViewEncapsulation.None + encapsulation: ViewEncapsulation.None, + host: { + class: 'adf-new-version-uploader-dialog' + } }) export class NewVersionUploaderDialogComponent implements OnInit { /** diff --git a/lib/content-services/src/lib/node-comments/mocks/node-comments.mock.ts b/lib/content-services/src/lib/node-comments/mocks/node-comments.mock.ts index 3d00e49a9b..cf757c893b 100644 --- a/lib/content-services/src/lib/node-comments/mocks/node-comments.mock.ts +++ b/lib/content-services/src/lib/node-comments/mocks/node-comments.mock.ts @@ -46,31 +46,33 @@ export const fakeContentComments = { skipCount: 0, maxItems: 100 }, - entries: [{ - entry: { - createdAt: '2018-03-27T10:55:45.725+0000', - createdBy: fakeUser1, - edited: false, - modifiedAt: '2018-03-27T10:55:45.725+0000', - canEdit: true, - modifiedBy: fakeUser1, - canDelete: true, - id: '35a0cea7-b6d0-4abc-9030-f4e461dd1ac7', - content: 'fake-message-1' + entries: [ + { + entry: { + createdAt: '2018-03-27T10:55:45.725+0000', + createdBy: fakeUser1, + edited: false, + modifiedAt: '2018-03-27T10:55:45.725+0000', + canEdit: true, + modifiedBy: fakeUser1, + canDelete: true, + id: '35a0cea7-b6d0-4abc-9030-f4e461dd1ac7', + content: 'fake-message-1' + } + }, + { + entry: { + createdAt: '2018-03-27T10:55:45.725+0000', + createdBy: fakeUser2, + edited: false, + modifiedAt: '2018-03-27T10:55:45.725+0000', + canEdit: true, + modifiedBy: fakeUser2, + canDelete: true, + id: '35a0cea7-b6d0-4abc-9030-f4e461dd1ac7', + content: 'fake-message-2' + } } - }, { - entry: { - createdAt: '2018-03-27T10:55:45.725+0000', - createdBy: fakeUser2, - edited: false, - modifiedAt: '2018-03-27T10:55:45.725+0000', - canEdit: true, - modifiedBy: fakeUser2, - canDelete: true, - id: '35a0cea7-b6d0-4abc-9030-f4e461dd1ac7', - content: 'fake-message-2' - } - } ] } }; @@ -146,62 +148,62 @@ export const getDateXMinutesAgo = (minutes: number) => new Date(new Date().getTi export const commentsNodeData: CommentModel[] = [ new CommentModel({ - id: 1, - message: `I've done this component, is it cool?`, - created: getDateXMinutesAgo(30), - createdBy: new User(johnDoe), - isSelected: false + id: 1, + message: `I've done this component, is it cool?`, + created: getDateXMinutesAgo(30), + createdBy: new User(johnDoe), + isSelected: false }), new CommentModel({ - id: 2, - message: 'Yeah', - created: getDateXMinutesAgo(15), - createdBy: new User(janeEod), - isSelected: false + id: 2, + message: 'Yeah', + created: getDateXMinutesAgo(15), + createdBy: new User(janeEod), + isSelected: false }), new CommentModel({ - id: 3, - message: '+1', - created: getDateXMinutesAgo(12), - createdBy: new User(robertSmith), - isSelected: false + id: 3, + message: '+1', + created: getDateXMinutesAgo(12), + createdBy: new User(robertSmith), + isSelected: false }), new CommentModel({ - id: 4, - message: 'ty', - created: new Date(), - createdBy: new User(johnDoe), - isSelected: false + id: 4, + message: 'ty', + created: new Date(), + createdBy: new User(johnDoe), + isSelected: false }) ]; export const commentsTaskData: CommentModel[] = [ new CommentModel({ - id: 1, - message: `I've done this task, what's next?`, - created: getDateXMinutesAgo(30), - createdBy: new User(johnDoe), - isSelected: false + id: 1, + message: `I've done this task, what's next?`, + created: getDateXMinutesAgo(30), + createdBy: new User(johnDoe), + isSelected: false }), new CommentModel({ - id: 2, - message: `I've assigned you another one 🤠`, - created: getDateXMinutesAgo(15), - createdBy: new User(janeEod), - isSelected: false + id: 2, + message: `I've assigned you another one 🤠`, + created: getDateXMinutesAgo(15), + createdBy: new User(janeEod), + isSelected: false }), new CommentModel({ - id: 3, - message: '+1', - created: getDateXMinutesAgo(12), - createdBy: new User(robertSmith), - isSelected: false + id: 3, + message: '+1', + created: getDateXMinutesAgo(12), + createdBy: new User(robertSmith), + isSelected: false }), new CommentModel({ - id: 4, - message: 'Cheers', - created: new Date(), - createdBy: new User(johnDoe), - isSelected: false + id: 4, + message: 'Cheers', + created: new Date(), + createdBy: new User(johnDoe), + isSelected: false }) ]; diff --git a/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.component.scss b/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.component.scss index 4d04bf4a6c..3323168598 100644 --- a/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.component.scss +++ b/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.component.scss @@ -63,6 +63,10 @@ margin-left: 12px; margin-right: 24px; } + + .adf-toolbar--spacer { + flex: 1 1 auto; + } } &-permission-role-column-header { diff --git a/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.service.ts b/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.service.ts index b8f5b3b12f..1d042770af 100644 --- a/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.service.ts +++ b/lib/content-services/src/lib/permission-manager/components/permission-list/permission-list.service.ts @@ -33,7 +33,7 @@ import { AllowableOperationsEnum } from '../../../common/models/allowable-operat const SITE_MANAGER_ROLE = 'SiteManager'; @Injectable({ - providedIn: 'root' + providedIn: 'root' }) export class PermissionListService { updated = new EventEmitter(); @@ -43,7 +43,7 @@ export class PermissionListService { error$: Subject = new Subject(); nodeWithRoles$: Subject<{ node: Node; roles: RoleModel[] }> = new Subject(); data$: Observable = this.nodeWithRoles$.pipe( - map(({ node, roles}) => { + map(({ node, roles }) => { const nodeLocalPermissions = this.nodePermissionService.getLocalPermissions(node); const localPermissions = this.updateReadOnlyPermission(node, nodeLocalPermissions); return { @@ -68,7 +68,8 @@ export class PermissionListService { fetchPermission(nodeId: string) { this.loading$.next(true); - this.nodePermissionService.getNodeWithRoles(nodeId) + this.nodePermissionService + .getNodeWithRoles(nodeId) .pipe(finalize(() => this.loading$.next(false))) .subscribe( ({ node, roles }) => { @@ -91,26 +92,24 @@ export class PermissionListService { const authorityId = this.getManagerAuthority(this.node); if (authorityId) { - const permissions = [ - ...(this.node.permissions.locallySet || []), - { authorityId, name: SITE_MANAGER_ROLE, accessStatus: 'ALLOWED' } - ]; + const permissions = [...(this.node.permissions.locallySet || []), { authorityId, name: SITE_MANAGER_ROLE, accessStatus: 'ALLOWED' }]; updateLocalPermission$ = this.nodePermissionService.updatePermissions(this.node, permissions); } - updateLocalPermission$.pipe(switchMap(() => this.nodeService.updateNode(this.node.id, nodeBody, {include: ['permissions']}))) - .subscribe( - (nodeUpdated: Node) => { - const message = nodeUpdated.permissions.isInheritanceEnabled ? 'PERMISSION_MANAGER.MESSAGE.INHERIT-ENABLE-SUCCESS' : 'PERMISSION_MANAGER.MESSAGE.INHERIT-DISABLE-SUCCESS'; - this.notificationService.showInfo(message); - nodeUpdated.permissions.inherited = nodeUpdated.permissions?.inherited ?? []; - this.reloadNode(nodeUpdated); - }, - () => { - change.source.checked = this.node.permissions.isInheritanceEnabled; - this.notificationService.showWarning('PERMISSION_MANAGER.MESSAGE.TOGGLE-PERMISSION-FAILED'); - } - ); + updateLocalPermission$.pipe(switchMap(() => this.nodeService.updateNode(this.node.id, nodeBody, { include: ['permissions'] }))).subscribe( + (nodeUpdated: Node) => { + const message = nodeUpdated.permissions.isInheritanceEnabled + ? 'PERMISSION_MANAGER.MESSAGE.INHERIT-ENABLE-SUCCESS' + : 'PERMISSION_MANAGER.MESSAGE.INHERIT-DISABLE-SUCCESS'; + this.notificationService.showInfo(message); + nodeUpdated.permissions.inherited = nodeUpdated.permissions?.inherited ?? []; + this.reloadNode(nodeUpdated); + }, + () => { + change.source.checked = this.node.permissions.isInheritanceEnabled; + this.notificationService.showWarning('PERMISSION_MANAGER.MESSAGE.TOGGLE-PERMISSION-FAILED'); + } + ); } else { change.source.checked = this.node.permissions.isInheritanceEnabled; this.notificationService.showError('PERMISSION_MANAGER.ERROR.NOT-ALLOWED'); @@ -121,9 +120,9 @@ export class PermissionListService { this.nodePermissionDialogService .openAddPermissionDialog(this.node, this.roles, 'PERMISSION_MANAGER.ADD-PERMISSION.TITLE') .pipe( - switchMap(selection => { + switchMap((selection) => { const total = selection.length; - const group = selection.filter(({authorityId}) => this.isGroup(authorityId)).length; + const group = selection.filter(({ authorityId }) => this.isGroup(authorityId)).length; return forkJoin({ user: of(total - group), group: of(group), @@ -131,86 +130,86 @@ export class PermissionListService { }); }) ) - .subscribe(({ user, group, node}) => { - this.notificationService.showInfo( 'PERMISSION_MANAGER.MESSAGE.PERMISSION-ADD-SUCCESS', null, { user, group }); + .subscribe( + ({ user, group, node }) => { + this.notificationService.showInfo('PERMISSION_MANAGER.MESSAGE.PERMISSION-ADD-SUCCESS', null, { user, group }); this.reloadNode(node); }, () => { - this.notificationService.showError( 'PERMISSION_MANAGER.MESSAGE.PERMISSION-ADD-FAIL'); + this.notificationService.showError('PERMISSION_MANAGER.MESSAGE.PERMISSION-ADD-FAIL'); this.reloadNode(); } ); } deletePermissions(permissions: PermissionElement[]) { - this.nodePermissionService.removePermissions(this.node, permissions) - .subscribe((node) => { - const total = permissions.length; - const group = permissions.filter(({authorityId}) => this.isGroup(authorityId)).length; - this.notificationService.showInfo('PERMISSION_MANAGER.MESSAGE.PERMISSION-BULK-DELETE-SUCCESS', null, {user: total - group, group}); - this.reloadNode(node); - }, - () => { - this.notificationService.showError('PERMISSION_MANAGER.MESSAGE.PERMISSION-DELETE-FAIL'); - this.reloadNode(); - } - ); + this.nodePermissionService.removePermissions(this.node, permissions).subscribe( + (node) => { + const total = permissions.length; + const group = permissions.filter(({ authorityId }) => this.isGroup(authorityId)).length; + this.notificationService.showInfo('PERMISSION_MANAGER.MESSAGE.PERMISSION-BULK-DELETE-SUCCESS', null, { user: total - group, group }); + this.reloadNode(node); + }, + () => { + this.notificationService.showError('PERMISSION_MANAGER.MESSAGE.PERMISSION-DELETE-FAIL'); + this.reloadNode(); + } + ); } updateRole(role: string, permission: PermissionDisplayModel) { const updatedPermissionRole = this.buildUpdatedPermission(role, permission); - this.nodePermissionService.updatePermissionRole(this.node, updatedPermissionRole) - .subscribe((node) => { + this.nodePermissionService.updatePermissionRole(this.node, updatedPermissionRole).subscribe( + (node) => { this.notificationService.showInfo('PERMISSION_MANAGER.MESSAGE.PERMISSION-UPDATE-SUCCESS'); this.reloadNode(node); this.updated.emit(permission); - }, - () => { - this.notificationService.showError('PERMISSION_MANAGER.MESSAGE.PERMISSION-UPDATE-FAIL'); - this.reloadNode(); - this.errored.emit(permission); - } - ); + }, + () => { + this.notificationService.showError('PERMISSION_MANAGER.MESSAGE.PERMISSION-UPDATE-FAIL'); + this.reloadNode(); + this.errored.emit(permission); + } + ); } bulkRoleUpdate(role: string) { const permissions = [...this.node.permissions.locallySet].map((permission) => this.buildUpdatedPermission(role, permission)); - this.nodePermissionService.updatePermissions(this.node, permissions) - .subscribe((node) => { - const total = permissions.length; - const group = permissions.filter(({authorityId}) => this.isGroup(authorityId)).length; - this.notificationService.showInfo('PERMISSION_MANAGER.MESSAGE.PERMISSION-BULK-UPDATE-SUCCESS', null, {user: total - group, group}); - this.reloadNode(node); - }, - () => { - this.notificationService.showError('PERMISSION_MANAGER.MESSAGE.PERMISSION-UPDATE-FAIL'); - this.reloadNode(); - } - ); + this.nodePermissionService.updatePermissions(this.node, permissions).subscribe( + (node) => { + const total = permissions.length; + const group = permissions.filter(({ authorityId }) => this.isGroup(authorityId)).length; + this.notificationService.showInfo('PERMISSION_MANAGER.MESSAGE.PERMISSION-BULK-UPDATE-SUCCESS', null, { user: total - group, group }); + this.reloadNode(node); + }, + () => { + this.notificationService.showError('PERMISSION_MANAGER.MESSAGE.PERMISSION-UPDATE-FAIL'); + this.reloadNode(); + } + ); } deletePermission(permission: PermissionDisplayModel) { - const cloneNode = { ...this.node, permissions: { ...this.node.permissions, locallySet: [ ...this.node.permissions.locallySet ] } }; - this.nodePermissionService - .removePermission(cloneNode, permission) - .subscribe((node) => { - this.notificationService.showInfo('PERMISSION_MANAGER.MESSAGE.PERMISSION-DELETE-SUCCESS'); - if (!node.permissions.locallySet) { - node.permissions.locallySet = []; - } - this.reloadNode(node); - }, - () => { - this.notificationService.showError('PERMISSION_MANAGER.MESSAGE.PERMISSION-DELETE-FAIL'); - this.reloadNode(); + const cloneNode = { ...this.node, permissions: { ...this.node.permissions, locallySet: [...this.node.permissions.locallySet] } }; + this.nodePermissionService.removePermission(cloneNode, permission).subscribe( + (node) => { + this.notificationService.showInfo('PERMISSION_MANAGER.MESSAGE.PERMISSION-DELETE-SUCCESS'); + if (!node.permissions.locallySet) { + node.permissions.locallySet = []; } - ); + this.reloadNode(node); + }, + () => { + this.notificationService.showError('PERMISSION_MANAGER.MESSAGE.PERMISSION-DELETE-FAIL'); + this.reloadNode(); + } + ); } private buildUpdatedPermission(role: string, permission: PermissionElement): PermissionElement { return { accessStatus: permission.accessStatus, - name: this.canUpdateThePermission(this.node, permission) ? role : permission.name, + name: this.canUpdateThePermission(this.node, permission) ? role : permission.name, authorityId: permission.authorityId }; } @@ -228,7 +227,9 @@ export class PermissionListService { let authorityId: string; if (sitePath) { authorityId = `GROUP_site_${sitePath.name}_${SITE_MANAGER_ROLE}`; - hasLocalManagerPermission = !!node.permissions.locallySet?.find((permission) => permission.authorityId === authorityId && permission.name === SITE_MANAGER_ROLE); + hasLocalManagerPermission = !!node.permissions.locallySet?.find( + (permission) => permission.authorityId === authorityId && permission.name === SITE_MANAGER_ROLE + ); } if (!hasLocalManagerPermission && authorityId) { @@ -249,8 +250,8 @@ export class PermissionListService { canUpdateThePermission(node: Node, permission: PermissionElement): boolean { const sitePath = node.path.elements.find((path) => path.nodeType === 'st:site'); if (!node.permissions.isInheritanceEnabled && sitePath) { - const authorityId = `GROUP_site_${sitePath.name}_${SITE_MANAGER_ROLE}`; - return !(permission.authorityId === authorityId && permission.name === SITE_MANAGER_ROLE); + const authorityId = `GROUP_site_${sitePath.name}_${SITE_MANAGER_ROLE}`; + return !(permission.authorityId === authorityId && permission.name === SITE_MANAGER_ROLE); } return true; } diff --git a/lib/content-services/src/lib/permission-manager/services/node-permission-dialog.service.ts b/lib/content-services/src/lib/permission-manager/services/node-permission-dialog.service.ts index 11f6a2c160..4651d21e16 100644 --- a/lib/content-services/src/lib/permission-manager/services/node-permission-dialog.service.ts +++ b/lib/content-services/src/lib/permission-manager/services/node-permission-dialog.service.ts @@ -31,11 +31,7 @@ import { AllowableOperationsEnum } from '../../common/models/allowable-operation providedIn: 'root' }) export class NodePermissionDialogService { - - constructor(private dialog: MatDialog, - private nodePermissionService: NodePermissionService, - private contentService: ContentService) { - } + constructor(private dialog: MatDialog, private nodePermissionService: NodePermissionService, private contentService: ContentService) {} /** * Opens a dialog to add permissions to a node. @@ -88,12 +84,14 @@ export class NodePermissionDialogService { * @returns Node with updated permissions */ updateNodePermissionByDialog(nodeId?: string, title?: string): Observable { - return this.nodePermissionService.getNodeWithRoles(nodeId) + return this.nodePermissionService + .getNodeWithRoles(nodeId) .pipe( - switchMap(({node, roles}) => this.openAddPermissionDialog(node, roles, title) - .pipe( + switchMap(({ node, roles }) => + this.openAddPermissionDialog(node, roles, title).pipe( switchMap((selection) => this.nodePermissionService.updateNodePermissions(nodeId, selection)) - )) + ) + ) ); } } diff --git a/lib/content-services/src/lib/pipes/node-name-tooltip.pipe.spec.ts b/lib/content-services/src/lib/pipes/node-name-tooltip.pipe.spec.ts index d12749fc73..95b3dd34a3 100644 --- a/lib/content-services/src/lib/pipes/node-name-tooltip.pipe.spec.ts +++ b/lib/content-services/src/lib/pipes/node-name-tooltip.pipe.spec.ts @@ -19,7 +19,6 @@ import { NodeEntry } from '@alfresco/js-api'; import { NodeNameTooltipPipe } from './node-name-tooltip.pipe'; describe('NodeNameTooltipPipe', () => { - const nodeName = 'node-name'; const nodeTitle = 'node-title'; const nodeDescription = 'node-description'; diff --git a/lib/content-services/src/lib/search-ai/services/search-ai.service.ts b/lib/content-services/src/lib/search-ai/services/search-ai.service.ts index 3950685680..316b674ec2 100644 --- a/lib/content-services/src/lib/search-ai/services/search-ai.service.ts +++ b/lib/content-services/src/lib/search-ai/services/search-ai.service.ts @@ -39,10 +39,7 @@ export class SearchAiService { toggleSearchAiInput$ = this.toggleSearchAiInput.asObservable(); - constructor( - private apiService: AlfrescoApiService, - private translateService: TranslateService - ) {} + constructor(private apiService: AlfrescoApiService, private translateService: TranslateService) {} /** * Update the state of the search AI input. diff --git a/lib/content-services/src/lib/search/components/empty-search-result.component.html b/lib/content-services/src/lib/search/components/empty-search-result.component.html index 18b0bb114f..40de9570cb 100644 --- a/lib/content-services/src/lib/search/components/empty-search-result.component.html +++ b/lib/content-services/src/lib/search/components/empty-search-result.component.html @@ -1,3 +1,3 @@
- +
diff --git a/lib/content-services/src/lib/search/components/search-control.component.html b/lib/content-services/src/lib/search/components/search-control.component.html index b3f3317beb..a3dbe33f86 100644 --- a/lib/content-services/src/lib/search/components/search-control.component.html +++ b/lib/content-services/src/lib/search/components/search-control.component.html @@ -50,8 +50,7 @@ *ngIf="data?.list?.entries.length === 0"> - + *ngIf="isNoSearchTemplatePresent() else defaultNoResult" />

{{ 'SEARCH.RESULTS.NONE' | translate:{searchTerm: searchTerm} }}

diff --git a/lib/content-services/src/lib/search/components/search-filter-chips/search-filter-chips.component.html b/lib/content-services/src/lib/search/components/search-filter-chips/search-filter-chips.component.html index bebab3d7f9..92b56a8fa1 100644 --- a/lib/content-services/src/lib/search/components/search-filter-chips/search-filter-chips.component.html +++ b/lib/content-services/src/lib/search/components/search-filter-chips/search-filter-chips.component.html @@ -15,5 +15,5 @@ - + diff --git a/lib/content-services/src/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.html b/lib/content-services/src/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.html index 46d3686954..c44c824abd 100644 --- a/lib/content-services/src/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.html +++ b/lib/content-services/src/lib/search/components/search-filter-chips/search-filter-menu-card/search-filter-menu-card.component.html @@ -1,6 +1,6 @@
- +
diff --git a/lib/content-services/src/lib/search/components/search-text/search-text.component.ts b/lib/content-services/src/lib/search/components/search-text/search-text.component.ts index c76af802df..72633b41bc 100644 --- a/lib/content-services/src/lib/search/components/search-text/search-text.component.ts +++ b/lib/content-services/src/lib/search/components/search-text/search-text.component.ts @@ -55,7 +55,7 @@ export class SearchTextComponent implements SearchWidget, OnInit { private readonly destroyRef = inject(DestroyRef); ngOnInit() { - if (this.context && this.settings && this.settings.pattern) { + if (this.context && this.settings?.pattern) { const pattern = new RegExp(this.settings.pattern, 'g'); const match = pattern.exec(this.context.queryFragments[this.id] || ''); if (this.settings.allowUpdateOnChange !== undefined && this.settings.allowUpdateOnChange !== null) { diff --git a/lib/content-services/src/lib/search/components/search.component.html b/lib/content-services/src/lib/search/components/search.component.html index d6e64b04ce..13dc78e023 100644 --- a/lib/content-services/src/lib/search/components/search.component.html +++ b/lib/content-services/src/lib/search/components/search.component.html @@ -2,6 +2,5 @@ [ngClass]="_classList" #panel> - + [ngTemplateOutletContext]="{ $implicit: results }" />
diff --git a/lib/content-services/src/lib/search/forms/search-term-validator.ts b/lib/content-services/src/lib/search/forms/search-term-validator.ts index ee0a95c5c0..3f36775e17 100644 --- a/lib/content-services/src/lib/search/forms/search-term-validator.ts +++ b/lib/content-services/src/lib/search/forms/search-term-validator.ts @@ -18,11 +18,12 @@ import { UntypedFormControl } from '@angular/forms'; export class SearchTermValidator { - static minAlphanumericChars(minChars: number) { - return (control: UntypedFormControl) => ('' + control.value).replace(/[^0-9a-zA-Z]+/g, '').length >= minChars ? null : { - hasMinAlphanumericChars: false - }; + return (control: UntypedFormControl) => + ('' + control.value).replace(/[^0-9a-zA-Z]+/g, '').length >= minChars + ? null + : { + hasMinAlphanumericChars: false + }; } - } diff --git a/lib/content-services/src/lib/search/models/search-filter-list.model.spec.ts b/lib/content-services/src/lib/search/models/search-filter-list.model.spec.ts index 7cd1c25ce7..106fe1c06a 100644 --- a/lib/content-services/src/lib/search/models/search-filter-list.model.spec.ts +++ b/lib/content-services/src/lib/search/models/search-filter-list.model.spec.ts @@ -26,14 +26,13 @@ export class Payload { } describe('SearchFilterList', () => { - - const generateItems = (count: number): Payload[] => Array(count).fill(null).map((_, id) => new Payload(id)); + const generateItems = (count: number): Payload[] => + Array(count) + .fill(null) + .map((_, id) => new Payload(id)); it('should init with external items', () => { - const items = [ - new Payload(1), - new Payload(2) - ]; + const items = [new Payload(1), new Payload(2)]; const list = new SearchFilterList(items); expect(list.length).toBe(2); diff --git a/lib/content-services/src/lib/search/models/search-filter-list.model.ts b/lib/content-services/src/lib/search/models/search-filter-list.model.ts index 78e7096b6f..0fc25c0c19 100644 --- a/lib/content-services/src/lib/search/models/search-filter-list.model.ts +++ b/lib/content-services/src/lib/search/models/search-filter-list.model.ts @@ -18,7 +18,6 @@ const DEFAULT_PAGE_SIZE = 5; export class SearchFilterList implements Iterable { - private filteredItems: T[] = []; private _filterText: string = ''; @@ -41,7 +40,7 @@ export class SearchFilterList implements Iterable { return this._filter; } - set filter(value: (item: T) => boolean ) { + set filter(value: (item: T) => boolean) { this._filter = value; this.applyFilter(); } diff --git a/lib/content-services/src/lib/search/services/search-filter.service.ts b/lib/content-services/src/lib/search/services/search-filter.service.ts index 49e94e518c..fff251d886 100644 --- a/lib/content-services/src/lib/search/services/search-filter.service.ts +++ b/lib/content-services/src/lib/search/services/search-filter.service.ts @@ -31,7 +31,6 @@ import { SearchDateRangeTabbedComponent } from '../components/search-date-range- providedIn: 'root' }) export class SearchFilterService { - /** * Contains string-to-type mappings for registered widgets. */ @@ -47,5 +46,4 @@ export class SearchFilterService { 'autocomplete-chips': SearchFilterAutocompleteChipsComponent, 'date-range': SearchDateRangeTabbedComponent }; - } diff --git a/lib/content-services/src/lib/search/services/search-header-query-builder.service.spec.ts b/lib/content-services/src/lib/search/services/search-header-query-builder.service.spec.ts index 7f6efdec9b..7af5968c1c 100644 --- a/lib/content-services/src/lib/search/services/search-header-query-builder.service.spec.ts +++ b/lib/content-services/src/lib/search/services/search-header-query-builder.service.spec.ts @@ -35,101 +35,111 @@ describe('SearchHeaderQueryBuilderService', () => { return config; }; - const createQueryBuilder = (searchSettings): SearchHeaderQueryBuilderService => { - let builder: SearchHeaderQueryBuilderService; - TestBed.runInInjectionContext(() => { - const alfrescoApiService = TestBed.inject(AlfrescoApiService); - builder = new SearchHeaderQueryBuilderService(buildConfig(searchSettings), alfrescoApiService, null); - }); - return builder; - }; - it('should load the configuration from app config', () => { - const config: SearchConfiguration = { - categories: [{ id: 'cat1', enabled: true } as any, { id: 'cat2', enabled: true } as any], - filterQueries: [{ query: 'query1' }, { query: 'query2' }] - }; + TestBed.runInInjectionContext(() => { + const config: SearchConfiguration = { + categories: [{ id: 'cat1', enabled: true } as any, { id: 'cat2', enabled: true } as any], + filterQueries: [{ query: 'query1' }, { query: 'query2' }] + }; - const builder = createQueryBuilder(config); + const alfrescoApiService = TestBed.inject(AlfrescoApiService); + const builder = new SearchHeaderQueryBuilderService(buildConfig(config), alfrescoApiService, null); - builder.categories = []; - builder.filterQueries = []; + builder.categories = []; + builder.filterQueries = []; - expect(builder.categories.length).toBe(0); - expect(builder.filterQueries.length).toBe(0); + expect(builder.categories.length).toBe(0); + expect(builder.filterQueries.length).toBe(0); - builder.resetToDefaults(); + builder.resetToDefaults(); - expect(builder.categories.length).toBe(2); - expect(builder.filterQueries.length).toBe(2); + expect(builder.categories.length).toBe(2); + expect(builder.filterQueries.length).toBe(2); + }); }); it('should return the category assigned to a column key', () => { - const config: SearchConfiguration = { - categories: [ - { id: 'cat1', columnKey: 'fake-key-1', enabled: true } as any, - { id: 'cat2', columnKey: 'fake-key-2', enabled: true } as any - ], - filterQueries: [{ query: 'query1' }, { query: 'query2' }] - }; + TestBed.runInInjectionContext(() => { + const config: SearchConfiguration = { + categories: [ + { id: 'cat1', columnKey: 'fake-key-1', enabled: true } as any, + { id: 'cat2', columnKey: 'fake-key-2', enabled: true } as any + ], + filterQueries: [{ query: 'query1' }, { query: 'query2' }] + }; - const service = createQueryBuilder(config); + const alfrescoApiService = TestBed.inject(AlfrescoApiService); + const service = new SearchHeaderQueryBuilderService(buildConfig(config), alfrescoApiService, null); - const category = service.getCategoryForColumn('fake-key-1'); - expect(category).not.toBeNull(); - expect(category).not.toBeUndefined(); - expect(category.columnKey).toBe('fake-key-1'); + const category = service.getCategoryForColumn('fake-key-1'); + expect(category).not.toBeNull(); + expect(category).not.toBeUndefined(); + expect(category.columnKey).toBe('fake-key-1'); + }); }); it('should have empty user query by default', () => { - const builder = createQueryBuilder({}); - expect(builder.userQuery).toBe(''); + TestBed.runInInjectionContext(() => { + const alfrescoApiService = TestBed.inject(AlfrescoApiService); + const builder = new SearchHeaderQueryBuilderService(buildConfig({}), alfrescoApiService, null); + expect(builder.userQuery).toBe(''); + }); }); it('should add the extra filter for the parent node', () => { - const config: SearchConfiguration = { - categories: [{ id: 'cat1', enabled: true } as any, { id: 'cat2', enabled: true } as any], - filterQueries: [{ query: 'query1' }, { query: 'query2' }] - }; + TestBed.runInInjectionContext(() => { + const config: SearchConfiguration = { + categories: [{ id: 'cat1', enabled: true } as any, { id: 'cat2', enabled: true } as any], + filterQueries: [{ query: 'query1' }, { query: 'query2' }] + }; - const expectedResult = [{ query: 'PARENT:"workspace://SpacesStore/fake-node-id"' }]; + const expectedResult = [{ query: 'PARENT:"workspace://SpacesStore/fake-node-id"' }]; - const searchHeaderService = createQueryBuilder(config); + const alfrescoApiService = TestBed.inject(AlfrescoApiService); + const searchHeaderService = new SearchHeaderQueryBuilderService(buildConfig(config), alfrescoApiService, null); - searchHeaderService.setCurrentRootFolderId('fake-node-id'); + searchHeaderService.setCurrentRootFolderId('fake-node-id'); - expect(searchHeaderService.filterQueries).toEqual(expectedResult, 'Filters are not as expected'); + expect(searchHeaderService.filterQueries).toEqual(expectedResult, 'Filters are not as expected'); + }); }); it('should not add again the parent filter if that node is already added', () => { - const expectedResult = [{ query: 'PARENT:"workspace://SpacesStore/fake-node-id"' }]; + TestBed.runInInjectionContext(() => { + const expectedResult = [{ query: 'PARENT:"workspace://SpacesStore/fake-node-id"' }]; - const config: SearchConfiguration = { - categories: [{ id: 'cat1', enabled: true } as any, { id: 'cat2', enabled: true } as any], - filterQueries: expectedResult - }; + const config: SearchConfiguration = { + categories: [{ id: 'cat1', enabled: true } as any, { id: 'cat2', enabled: true } as any], + filterQueries: expectedResult + }; - const searchHeaderService = createQueryBuilder(config); - searchHeaderService.setCurrentRootFolderId('fake-node-id'); + const alfrescoApiService = TestBed.inject(AlfrescoApiService); + const searchHeaderService = new SearchHeaderQueryBuilderService(buildConfig(config), alfrescoApiService, null); - expect(searchHeaderService.filterQueries).toEqual(expectedResult, 'Filters are not as expected'); + searchHeaderService.setCurrentRootFolderId('fake-node-id'); + + expect(searchHeaderService.filterQueries).toEqual(expectedResult, 'Filters are not as expected'); + }); }); it('should not add duplicate column names in activeFilters', () => { - const activeFilter = 'FakeColumn'; + TestBed.runInInjectionContext(() => { + const activeFilter = 'FakeColumn'; - const config: SearchConfiguration = { - categories: [{ id: 'cat1', enabled: true } as any], - filterQueries: [{ query: 'PARENT:"workspace://SpacesStore/fake-node-id' }] - }; + const config: SearchConfiguration = { + categories: [{ id: 'cat1', enabled: true } as any], + filterQueries: [{ query: 'PARENT:"workspace://SpacesStore/fake-node-id' }] + }; - const searchHeaderService = createQueryBuilder(config); + const alfrescoApiService = TestBed.inject(AlfrescoApiService); + const searchHeaderService = new SearchHeaderQueryBuilderService(buildConfig(config), alfrescoApiService, null); - expect(searchHeaderService.activeFilters.length).toBe(0); + expect(searchHeaderService.activeFilters.length).toBe(0); - searchHeaderService.setActiveFilter(activeFilter, 'fake-value'); - searchHeaderService.setActiveFilter(activeFilter, 'fake-value'); + searchHeaderService.setActiveFilter(activeFilter, 'fake-value'); + searchHeaderService.setActiveFilter(activeFilter, 'fake-value'); - expect(searchHeaderService.activeFilters.length).toBe(1); + expect(searchHeaderService.activeFilters.length).toBe(1); + }); }); }); diff --git a/lib/content-services/src/lib/tree-view/models/tree-view.model.ts b/lib/content-services/src/lib/tree-view/models/tree-view.model.ts index 001932ba4a..881b19bb73 100644 --- a/lib/content-services/src/lib/tree-view/models/tree-view.model.ts +++ b/lib/content-services/src/lib/tree-view/models/tree-view.model.ts @@ -18,7 +18,6 @@ import { NodeEntry } from '@alfresco/js-api'; export class TreeBaseNode { - name: string; nodeId: string; level: number; @@ -31,6 +30,5 @@ export class TreeBaseNode { this.level = level ? level : 0; this.expandable = expandable ? expandable : true; this.node = nodeEntry ? new NodeEntry(nodeEntry) : undefined; - } } diff --git a/lib/content-services/src/lib/tree/components/tree.component.html b/lib/content-services/src/lib/tree/components/tree.component.html index 80914b510b..bb38c407a7 100644 --- a/lib/content-services/src/lib/tree/components/tree.component.html +++ b/lib/content-services/src/lib/tree/components/tree.component.html @@ -99,8 +99,7 @@ - + [ngTemplateOutletContext]="{ node: node }" /> @@ -109,8 +108,7 @@ - - + diff --git a/lib/content-services/src/lib/tree/mock/tree-service.service.mock.ts b/lib/content-services/src/lib/tree/mock/tree-service.service.mock.ts index 3da4f8fb67..0bf7d653e6 100644 --- a/lib/content-services/src/lib/tree/mock/tree-service.service.mock.ts +++ b/lib/content-services/src/lib/tree/mock/tree-service.service.mock.ts @@ -23,10 +23,10 @@ import { TreeService } from '../services/tree.service'; import { treeNodesMockExpanded } from './tree-node.mock'; @Injectable({ providedIn: 'root' }) -export class TreeServiceMock extends TreeService { +export class TreeServiceMock extends TreeService { public getSubNodes(parentNodeId: string, skipCount?: number, maxItems?: number): Observable> { if (parentNodeId) { - return of({pagination: {skipCount, maxItems}, entries: Array.from(treeNodesMockExpanded)}); + return of({ pagination: { skipCount, maxItems }, entries: Array.from(treeNodesMockExpanded) }); } return of(); } diff --git a/lib/content-services/src/lib/upload/components/base-upload/upload-base.ts b/lib/content-services/src/lib/upload/components/base-upload/upload-base.ts index a893d6a677..4d9ffb881f 100644 --- a/lib/content-services/src/lib/upload/components/base-upload/upload-base.ts +++ b/lib/content-services/src/lib/upload/components/base-upload/upload-base.ts @@ -27,7 +27,7 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; // eslint-disable-next-line @angular-eslint/directive-class-suffix export abstract class UploadBase implements OnInit { protected uploadService = inject(UploadService); - protected translationService = inject(TranslationService); + protected translationService: TranslationService = inject(TranslationService); protected ngZone = inject(NgZone); /** @@ -98,31 +98,26 @@ export abstract class UploadBase implements OnInit { * @param files files to upload */ uploadFiles(files: File[]): void { - const filteredFiles: FileModel[] = files - .map((file: File) => this.createFileModel(file, this.rootFolderId, ((file as any).webkitRelativePath || '').replace(/\/[^/]*$/, ''))); + const filteredFiles: FileModel[] = files.map((file: File) => + this.createFileModel(file, this.rootFolderId, ((file).webkitRelativePath || '').replace(/\/[^/]*$/, '')) + ); this.uploadQueue(filteredFiles); } uploadFilesInfo(files: FileInfo[]): void { - const filteredFiles: FileModel[] = files - .map((fileInfo: FileInfo) => this.createFileModel(fileInfo.file, this.rootFolderId, fileInfo.relativeFolder)); + const filteredFiles: FileModel[] = files.map((fileInfo: FileInfo) => + this.createFileModel(fileInfo.file, this.rootFolderId, fileInfo.relativeFolder) + ); this.uploadQueue(filteredFiles); } private uploadQueue(files: FileModel[]) { - const filteredFiles = files - .filter(this.isFileAcceptable.bind(this)) - .filter(this.isFileSizeAcceptable.bind(this)); + const filteredFiles = files.filter(this.isFileAcceptable.bind(this)).filter(this.isFileSizeAcceptable.bind(this)); this.ngZone.run(() => { - const event = new UploadFilesEvent( - [...filteredFiles], - this.uploadService, - this.success, - this.error - ); + const event = new UploadFilesEvent([...filteredFiles], this.uploadService, this.success, this.error); this.beginUpload.emit(event); if (!event.defaultPrevented) { @@ -145,9 +140,7 @@ export abstract class UploadBase implements OnInit { return true; } - const allowedExtensions = this.acceptedFilesType - .split(',') - .map((ext) => ext.trim().replace(/^\./, '')); + const allowedExtensions = this.acceptedFilesType.split(',').map((ext) => ext.trim().replace(/^\./, '')); return allowedExtensions.indexOf(file.extension) !== -1; } @@ -162,14 +155,18 @@ export abstract class UploadBase implements OnInit { * @returns file model */ protected createFileModel(file: File, parentId: string, path: string, id?: string): FileModel { - return new FileModel(file, { - comment: this.comment, - majorVersion: this.majorVersion, - newVersion: this.versioning, - parentId, - path, - nodeType: this.nodeType - }, id); + return new FileModel( + file, + { + comment: this.comment, + majorVersion: this.majorVersion, + newVersion: this.versioning, + parentId, + path, + nodeType: this.nodeType + }, + id + ); } protected isFileSizeAllowed(file: FileModel) { @@ -201,15 +198,11 @@ export abstract class UploadBase implements OnInit { if (!this.isFileSizeAllowed(file)) { acceptableSize = false; - const message = this.translationService.instant( - 'FILE_UPLOAD.MESSAGES.EXCEED_MAX_FILE_SIZE', - { fileName: file.name } - ); + const message = this.translationService.instant('FILE_UPLOAD.MESSAGES.EXCEED_MAX_FILE_SIZE', { fileName: file.name }); this.error.emit(message); } return acceptableSize; } - } diff --git a/lib/content-services/src/lib/upload/components/file-uploading-list.component.html b/lib/content-services/src/lib/upload/components/file-uploading-list.component.html index 91a4d358d8..0b0e0f821e 100644 --- a/lib/content-services/src/lib/upload/components/file-uploading-list.component.html +++ b/lib/content-services/src/lib/upload/components/file-uploading-list.component.html @@ -2,6 +2,5 @@ - + [ngForTemplate]="template" /> diff --git a/lib/content-services/src/lib/upload/components/upload-drag-area.component.html b/lib/content-services/src/lib/upload/components/upload-drag-area.component.html index f3381efed4..aeec28ce4d 100644 --- a/lib/content-services/src/lib/upload/components/upload-drag-area.component.html +++ b/lib/content-services/src/lib/upload/components/upload-drag-area.component.html @@ -3,5 +3,5 @@ (folderEntityDropped)="onFolderEntityDropped($event)" (upload-files)="onUploadFiles($any($event))" dropzone="" webkitdropzone="*" #droparea> - + diff --git a/lib/content-services/src/lib/version-compatibility/version-compatibility.service.ts b/lib/content-services/src/lib/version-compatibility/version-compatibility.service.ts index 6fbb692946..e98f5dca84 100644 --- a/lib/content-services/src/lib/version-compatibility/version-compatibility.service.ts +++ b/lib/content-services/src/lib/version-compatibility/version-compatibility.service.ts @@ -31,7 +31,7 @@ export class VersionCompatibilityService { constructor(private discoveryApiService: DiscoveryApiService) { this.discoveryApiService.ecmProductInfo$ - .pipe(filter(acsInfo => !!acsInfo)) + .pipe(filter((acsInfo) => !!acsInfo)) .subscribe((acsInfo: RepositoryInfo) => this.initializeAcsVersion(acsInfo.version)); } @@ -53,12 +53,13 @@ export class VersionCompatibilityService { if (currentVersion) { if (+currentVersion.major > +parsedRequiredVersion.major) { versionSupported = true; - } else if (currentVersion.major === parsedRequiredVersion.major && - +currentVersion.minor > +parsedRequiredVersion.minor) { + } else if (currentVersion.major === parsedRequiredVersion.major && +currentVersion.minor > +parsedRequiredVersion.minor) { versionSupported = true; - } else if (currentVersion.major === parsedRequiredVersion.major && + } else if ( + currentVersion.major === parsedRequiredVersion.major && currentVersion.minor === parsedRequiredVersion.minor && - +currentVersion.patch >= +parsedRequiredVersion.patch) { + +currentVersion.patch >= +parsedRequiredVersion.patch + ) { versionSupported = true; } } diff --git a/lib/content-services/src/lib/viewer/components/alfresco-viewer.component.html b/lib/content-services/src/lib/viewer/components/alfresco-viewer.component.html index aa55fa8125..fdd24d6f0a 100644 --- a/lib/content-services/src/lib/viewer/components/alfresco-viewer.component.html +++ b/lib/content-services/src/lib/viewer/components/alfresco-viewer.component.html @@ -34,23 +34,23 @@ (submitFile)="onSubmitFile($event)"> - + - + - + - + - + diff --git a/lib/content-services/src/lib/viewer/components/alfresco-viewer.component.spec.ts b/lib/content-services/src/lib/viewer/components/alfresco-viewer.component.spec.ts index 0e353f4981..50d8c673bc 100644 --- a/lib/content-services/src/lib/viewer/components/alfresco-viewer.component.spec.ts +++ b/lib/content-services/src/lib/viewer/components/alfresco-viewer.component.spec.ts @@ -69,6 +69,7 @@ class ViewerWithCustomToolbarComponent {} selector: 'adf-viewer-container-toolbar-actions', standalone: true, imports: [MatIconModule, MatButtonModule, ViewerToolbarActionsComponent, AlfrescoViewerComponent], + // eslint-disable-next-line @alfresco/eslint-angular/no-angular-material-selectors template: `
- +
- +
diff --git a/lib/core/src/lib/layout/components/sidebar-action/sidebar-action-menu.component.spec.ts b/lib/core/src/lib/layout/components/sidebar-action/sidebar-action-menu.component.spec.ts index cba8267866..ec1912326a 100644 --- a/lib/core/src/lib/layout/components/sidebar-action/sidebar-action-menu.component.spec.ts +++ b/lib/core/src/lib/layout/components/sidebar-action/sidebar-action-menu.component.spec.ts @@ -55,6 +55,7 @@ describe('SidebarActionMenuComponent', () => { @Component({ standalone: true, imports: [CommonModule, SidebarActionMenuComponent, MatIconModule, MatMenuModule], + // eslint-disable-next-line @alfresco/eslint-angular/no-angular-material-selectors template: ` arrow_drop_down diff --git a/lib/core/src/lib/layout/components/sidenav-layout/sidenav-layout.component.html b/lib/core/src/lib/layout/components/sidenav-layout/sidenav-layout.component.html index dc49a22ca2..eb6e4aa8fb 100644 --- a/lib/core/src/lib/layout/components/sidenav-layout/sidenav-layout.component.html +++ b/lib/core/src/lib/layout/components/sidenav-layout/sidenav-layout.component.html @@ -26,5 +26,5 @@ - + diff --git a/lib/core/src/lib/login/components/login-dialog-panel/login-dialog-panel.component.html b/lib/core/src/lib/login/components/login-dialog-panel/login-dialog-panel.component.html index d8a2b9249d..48eaa2dc44 100644 --- a/lib/core/src/lib/login/components/login-dialog-panel/login-dialog-panel.component.html +++ b/lib/core/src/lib/login/components/login-dialog-panel/login-dialog-panel.component.html @@ -6,10 +6,10 @@ [backgroundImageUrl]="''" (success)="onLoginSuccess($event)"> - + - + diff --git a/lib/core/src/lib/login/components/login-dialog-panel/login-dialog-panel.component.ts b/lib/core/src/lib/login/components/login-dialog-panel/login-dialog-panel.component.ts index ed515f5726..87095659d3 100644 --- a/lib/core/src/lib/login/components/login-dialog-panel/login-dialog-panel.component.ts +++ b/lib/core/src/lib/login/components/login-dialog-panel/login-dialog-panel.component.ts @@ -26,11 +26,7 @@ import { LoginComponent } from '../login/login.component'; standalone: true, templateUrl: './login-dialog-panel.component.html', styleUrls: ['./login-dialog-panel.component.scss'], - imports: [ - LoginComponent, - LoginHeaderDirective, - LoginFooterDirective - ], + imports: [LoginComponent, LoginHeaderDirective, LoginFooterDirective], encapsulation: ViewEncapsulation.None }) export class LoginDialogPanelComponent { diff --git a/lib/core/src/lib/login/components/login-dialog/login-dialog.component.stories.ts b/lib/core/src/lib/login/components/login-dialog/login-dialog.component.stories.ts index c9b14da13b..8940a5fc04 100644 --- a/lib/core/src/lib/login/components/login-dialog/login-dialog.component.stories.ts +++ b/lib/core/src/lib/login/components/login-dialog/login-dialog.component.stories.ts @@ -32,10 +32,7 @@ export default { imports: [LoginDialogComponent, RouterTestingModule] }), applicationConfig({ - providers: [ - { provide: AuthenticationService, useClass: AuthenticationMock }, - importProvidersFrom(CoreStoryModule) - ] + providers: [{ provide: AuthenticationService, useClass: AuthenticationMock }, importProvidersFrom(CoreStoryModule)] }) ], parameters: { diff --git a/lib/core/src/lib/login/components/login-dialog/login-dialog.component.ts b/lib/core/src/lib/login/components/login-dialog/login-dialog.component.ts index 23986c4ab7..b3e87d090d 100644 --- a/lib/core/src/lib/login/components/login-dialog/login-dialog.component.ts +++ b/lib/core/src/lib/login/components/login-dialog/login-dialog.component.ts @@ -27,16 +27,10 @@ import { LoginDialogComponentData } from './login-dialog-component-data.interfac standalone: true, templateUrl: './login-dialog.component.html', styleUrls: ['./login-dialog.component.scss'], - imports: [ - MatDialogModule, - LoginDialogPanelComponent, - TranslateModule, - MatButtonModule - ], + imports: [MatDialogModule, LoginDialogPanelComponent, TranslateModule, MatButtonModule], encapsulation: ViewEncapsulation.None }) export class LoginDialogComponent { - @ViewChild('adfLoginPanel', { static: true }) loginPanel: LoginDialogPanelComponent; diff --git a/lib/core/src/lib/login/components/login-dialog/login-dialog.stories.component.ts b/lib/core/src/lib/login/components/login-dialog/login-dialog.stories.component.ts index 49cb6becf6..4f89d02f0b 100644 --- a/lib/core/src/lib/login/components/login-dialog/login-dialog.stories.component.ts +++ b/lib/core/src/lib/login/components/login-dialog/login-dialog.stories.component.ts @@ -25,21 +25,18 @@ import { LoginDialogComponentData } from './login-dialog-component-data.interfac @Component({ selector: 'adf-login-dialog-storybook', standalone: true, - imports: [ - MatButtonModule - ], + imports: [MatButtonModule], template: ` ` }) export class LoginDialogStorybookComponent { - @Output() executeSubmit = new EventEmitter(); @Output() error = new EventEmitter(); @Output() closed = new EventEmitter(); - constructor(private dialog: MatDialog) { } + constructor(private dialog: MatDialog) {} openLoginDialog() { const data: LoginDialogComponentData = { @@ -48,14 +45,11 @@ export class LoginDialogStorybookComponent { logged: new Subject() }; - this.dialog.open( - LoginDialogComponent, - { - data, - panelClass: 'adf-login-dialog', - width: '630px' - } - ); + this.dialog.open(LoginDialogComponent, { + data, + panelClass: 'adf-login-dialog', + width: '630px' + }); data.logged.subscribe( () => { diff --git a/lib/core/src/lib/login/components/login.component.html b/lib/core/src/lib/login/components/login.component.html index 702bf49019..98c3475c2e 100644 --- a/lib/core/src/lib/login/components/login.component.html +++ b/lib/core/src/lib/login/components/login.component.html @@ -16,8 +16,7 @@ *ngIf="headerTemplate" ngFor [ngForOf]="[data]" - [ngForTemplate]="headerTemplate"> - + [ngForTemplate]="headerTemplate" /> - +
{ - let pipe: FileSizePipe; beforeEach(() => { @@ -74,14 +73,14 @@ describe('FileSizePipe', () => { it('should convert value with custom precision', () => { const tests = [ - { size: 10, precision: 2, expectancy: '10 Bytes'}, - { size: 1023, precision: 1, expectancy: '1023 Bytes'}, - { size: 1025, precision: 2, expectancy: '1 KB'}, - { size: 1499, precision: 0, expectancy: '1.46 KB'}, - { size: 1999, precision: 0, expectancy: '1.95 KB'}, - { size: 2000, precision: 2, expectancy: '1.95 KB'}, - { size: 5000000, precision: 4, expectancy: '4.7684 MB'}, - { size: 12345678901234, precision: 3, expectancy: '11.228 TB'} + { size: 10, precision: 2, expectancy: '10 Bytes' }, + { size: 1023, precision: 1, expectancy: '1023 Bytes' }, + { size: 1025, precision: 2, expectancy: '1 KB' }, + { size: 1499, precision: 0, expectancy: '1.46 KB' }, + { size: 1999, precision: 0, expectancy: '1.95 KB' }, + { size: 2000, precision: 2, expectancy: '1.95 KB' }, + { size: 5000000, precision: 4, expectancy: '4.7684 MB' }, + { size: 12345678901234, precision: 3, expectancy: '11.228 TB' } ]; tests.forEach(({ size, precision, expectancy }) => { diff --git a/lib/core/src/lib/pipes/user-initial.pipe.spec.ts b/lib/core/src/lib/pipes/user-initial.pipe.spec.ts index f09e5d78de..5c21ac2e8f 100644 --- a/lib/core/src/lib/pipes/user-initial.pipe.spec.ts +++ b/lib/core/src/lib/pipes/user-initial.pipe.spec.ts @@ -20,7 +20,6 @@ import { User } from '../models/general-user.model'; import { InitialUsernamePipe } from './user-initial.pipe'; class FakeSanitizer extends DomSanitizer { - constructor() { super(); } @@ -51,7 +50,6 @@ class FakeSanitizer extends DomSanitizer { } describe('UserInitialPipe', () => { - let pipe: InitialUsernamePipe; let fakeUser: User; diff --git a/lib/core/src/lib/pipes/user-like.interface.ts b/lib/core/src/lib/pipes/user-like.interface.ts index 0f77b0bc61..823e4b5c25 100644 --- a/lib/core/src/lib/pipes/user-like.interface.ts +++ b/lib/core/src/lib/pipes/user-like.interface.ts @@ -20,4 +20,4 @@ export interface UserLike { firstName?: string; lastName?: string; email?: string; -}; +} diff --git a/lib/core/src/lib/search-text/animations.ts b/lib/core/src/lib/search-text/animations.ts index 57869836ee..ecb166d19a 100644 --- a/lib/core/src/lib/search-text/animations.ts +++ b/lib/core/src/lib/search-text/animations.ts @@ -18,16 +18,24 @@ import { trigger, transition, animate, style, state, AnimationTriggerMetadata } from '@angular/animations'; export const searchAnimation: AnimationTriggerMetadata = trigger('transitionMessages', [ - state('active', style({ - 'margin-left': '{{ margin-left }}px', - 'margin-right': '{{ margin-right }}px', - transform: '{{ transform }}' - }), { params: { 'margin-left': 0, 'margin-right': 0, transform: 'translateX(0%)' } }), - state('inactive', style({ - 'margin-left': '{{ margin-left }}px', - 'margin-right': '{{ margin-right }}px', - transform: '{{ transform }}' - }), { params: { 'margin-left': 0, 'margin-right': 0, transform: 'translateX(0%)' } }), + state( + 'active', + style({ + 'margin-left': '{{ margin-left }}px', + 'margin-right': '{{ margin-right }}px', + transform: '{{ transform }}' + }), + { params: { 'margin-left': 0, 'margin-right': 0, transform: 'translateX(0%)' } } + ), + state( + 'inactive', + style({ + 'margin-left': '{{ margin-left }}px', + 'margin-right': '{{ margin-right }}px', + transform: '{{ transform }}' + }), + { params: { 'margin-left': 0, 'margin-right': 0, transform: 'translateX(0%)' } } + ), state('no-animation', style({ transform: 'translateX(0%)', width: '100%' })), transition('active <=> inactive', animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)')) ]); diff --git a/lib/core/src/lib/snackbar-content/snackbar-content.component.ts b/lib/core/src/lib/snackbar-content/snackbar-content.component.ts index 736b27c70b..d9b71f7078 100644 --- a/lib/core/src/lib/snackbar-content/snackbar-content.component.ts +++ b/lib/core/src/lib/snackbar-content/snackbar-content.component.ts @@ -28,12 +28,9 @@ import { SnackBarData } from './snack-bar-data'; } }) export class SnackbarContentComponent { - constructor( - public snackBarRef: MatSnackBarRef, - @Inject(MAT_SNACK_BAR_DATA) public data: SnackBarData - ) { + constructor(public snackBarRef: MatSnackBarRef, @Inject(MAT_SNACK_BAR_DATA) public data: SnackBarData) { if (!data) { - this.data = {message: ''}; + this.data = { message: '' }; } } diff --git a/lib/core/src/lib/snackbar-content/snackbar-content.module.ts b/lib/core/src/lib/snackbar-content/snackbar-content.module.ts index 1583765905..5aaeaf6c11 100644 --- a/lib/core/src/lib/snackbar-content/snackbar-content.module.ts +++ b/lib/core/src/lib/snackbar-content/snackbar-content.module.ts @@ -24,18 +24,8 @@ import { MatButtonModule } from '@angular/material/button'; import { TranslateModule } from '@ngx-translate/core'; @NgModule({ - imports: [ - CommonModule, - MatIconModule, - MatSnackBarModule, - MatButtonModule, - TranslateModule - ], - declarations: [ - SnackbarContentComponent - ], - exports: [ - SnackbarContentComponent - ] + imports: [CommonModule, MatIconModule, MatSnackBarModule, MatButtonModule, TranslateModule], + declarations: [SnackbarContentComponent], + exports: [SnackbarContentComponent] }) export class SnackbarContentModule {} diff --git a/lib/core/src/lib/sorting-picker/sorting-picker.component.spec.ts b/lib/core/src/lib/sorting-picker/sorting-picker.component.spec.ts index f58370c5b2..075255f138 100644 --- a/lib/core/src/lib/sorting-picker/sorting-picker.component.spec.ts +++ b/lib/core/src/lib/sorting-picker/sorting-picker.component.spec.ts @@ -18,7 +18,6 @@ import { SortingPickerComponent } from './sorting-picker.component'; describe('SortingPickerComponent', () => { - let component: SortingPickerComponent; beforeEach(() => { @@ -28,7 +27,7 @@ describe('SortingPickerComponent', () => { it('should raise changed event on changing value', (done) => { component.selected = 'key1'; - component.valueChange.subscribe((key: string) => { + component.valueChange.subscribe((key: string) => { expect(key).toBe('key2'); done(); }); @@ -38,7 +37,7 @@ describe('SortingPickerComponent', () => { it('should raise changed event on changing direction', (done) => { component.ascending = false; - component.sortingChange.subscribe((ascending: boolean) => { + component.sortingChange.subscribe((ascending: boolean) => { expect(ascending).toBeTruthy(); done(); }); diff --git a/lib/core/src/lib/styles/_mat-selectors.scss b/lib/core/src/lib/styles/_mat-selectors.scss index e88401e7ec..2fe5c4cc06 100644 --- a/lib/core/src/lib/styles/_mat-selectors.scss +++ b/lib/core/src/lib/styles/_mat-selectors.scss @@ -120,6 +120,8 @@ $mat-notched-outline-leading: '.mdc-notched-outline__leading'; $mat-notched-outline-trailing: '.mdc-notched-outline__trailing'; $mat-notched-outline-notch: '.mdc-notched-outline__notch'; $mat-evolution-chip-set: '.mdc-evolution-chip-set'; +$mat-mdc-button: '.mdc-button'; +$mat-outlined-button: '.mat-mdc-outlined-button'; $mat-button-base: '.mat-mdc-button-base'; $mat-button-touch-target: '.mat-mdc-button-touch-target'; $mat-evolution-chip-text-label: '.mdc-evolution-chip__text-label'; diff --git a/lib/core/src/lib/styles/material.theme.scss b/lib/core/src/lib/styles/material.theme.scss index 538257621c..afa0e7e028 100644 --- a/lib/core/src/lib/styles/material.theme.scss +++ b/lib/core/src/lib/styles/material.theme.scss @@ -82,4 +82,8 @@ } } } + + #{$mat-button-base} { + -webkit-font-smoothing: antialiased; + } } diff --git a/lib/core/src/lib/templates/empty-content/empty-content.component.html b/lib/core/src/lib/templates/empty-content/empty-content.component.html index e5d215c3ae..1367002475 100644 --- a/lib/core/src/lib/templates/empty-content/empty-content.component.html +++ b/lib/core/src/lib/templates/empty-content/empty-content.component.html @@ -2,5 +2,5 @@
{{ title | translate }}
{{ subtitle | translate }}
- + diff --git a/lib/core/src/lib/templates/error-content/error-content.component.html b/lib/core/src/lib/templates/error-content/error-content.component.html index c17980c6c2..6e53b64dd4 100644 --- a/lib/core/src/lib/templates/error-content/error-content.component.html +++ b/lib/core/src/lib/templates/error-content/error-content.component.html @@ -10,6 +10,6 @@

{{ 'ERROR_CONTENT.' + errorCodeTranslated + '.DESCRIPTION' | translate }}

- + diff --git a/lib/core/src/lib/testing/noop-auth.module.ts b/lib/core/src/lib/testing/noop-auth.module.ts index c9ff13dd4a..b8b915cf06 100644 --- a/lib/core/src/lib/testing/noop-auth.module.ts +++ b/lib/core/src/lib/testing/noop-auth.module.ts @@ -16,7 +16,8 @@ */ import { APP_INITIALIZER, Injectable, NgModule } from '@angular/core'; -import { AuthModule, JWT_STORAGE_SERVICE, RedirectAuthService } from '../auth'; +import { AuthModule, JWT_STORAGE_SERVICE } from '../auth/oidc/auth.module'; +import { RedirectAuthService } from '../auth/oidc/redirect-auth.service'; import { HttpClientTestingModule } from '@angular/common/http/testing'; import { RouterTestingModule } from '@angular/router/testing'; import { AppConfigService, StoragePrefixFactory } from '../app-config'; diff --git a/lib/core/src/lib/toolbar/toolbar-title.component.ts b/lib/core/src/lib/toolbar/toolbar-title.component.ts index 28b607d913..0e15bb28b7 100644 --- a/lib/core/src/lib/toolbar/toolbar-title.component.ts +++ b/lib/core/src/lib/toolbar/toolbar-title.component.ts @@ -20,7 +20,7 @@ import { Component } from '@angular/core'; @Component({ selector: 'adf-toolbar-title', standalone: true, - template: '', + template: '', host: { class: 'adf-toolbar-title' } }) export class ToolbarTitleComponent {} diff --git a/lib/core/src/lib/toolbar/toolbar.component.html b/lib/core/src/lib/toolbar/toolbar.component.html index 481ff66028..16e73dcc23 100644 --- a/lib/core/src/lib/toolbar/toolbar.component.html +++ b/lib/core/src/lib/toolbar/toolbar.component.html @@ -1,5 +1,5 @@ {{ title | translate }} - - + + diff --git a/lib/core/src/lib/translation/translation.service.spec.ts b/lib/core/src/lib/translation/translation.service.spec.ts index 49d43d1584..149decef69 100644 --- a/lib/core/src/lib/translation/translation.service.spec.ts +++ b/lib/core/src/lib/translation/translation.service.spec.ts @@ -67,7 +67,7 @@ describe('TranslationService', () => { jasmine.Ajax.requests.mostRecent().respondWith({ status: 200, contentType: 'application/json', - responseText: JSON.stringify({TEST: 'This is a test', TEST2: 'This is another test'}) + responseText: JSON.stringify({ TEST: 'This is a test', TEST2: 'This is another test' }) }); }); @@ -79,7 +79,7 @@ describe('TranslationService', () => { jasmine.Ajax.requests.mostRecent().respondWith({ status: 200, contentType: 'application/json', - responseText: JSON.stringify({TEST: 'This is a test', TEST2: 'This is another test'}) + responseText: JSON.stringify({ TEST: 'This is a test', TEST2: 'This is another test' }) }); }); diff --git a/lib/core/src/lib/translation/translation.service.ts b/lib/core/src/lib/translation/translation.service.ts index 7b928de84f..4713f3be4a 100644 --- a/lib/core/src/lib/translation/translation.service.ts +++ b/lib/core/src/lib/translation/translation.service.ts @@ -54,9 +54,11 @@ export class TranslationService { userLang: string; customLoader: TranslateLoaderService; - constructor(public translate: TranslateService, - userPreferencesService: UserPreferencesService, - @Optional() @Inject(TRANSLATION_PROVIDER) providers: TranslationProvider[]) { + constructor( + public translate: TranslateService, + userPreferencesService: UserPreferencesService, + @Optional() @Inject(TRANSLATION_PROVIDER) providers: TranslationProvider[] + ) { this.customLoader = this.translate.currentLoader as TranslateLoaderService; this.defaultLang = 'en'; diff --git a/lib/core/src/lib/viewer/components/viewer-more-actions.component.ts b/lib/core/src/lib/viewer/components/viewer-more-actions.component.ts index 5291b9c204..fdbe48648b 100644 --- a/lib/core/src/lib/viewer/components/viewer-more-actions.component.ts +++ b/lib/core/src/lib/viewer/components/viewer-more-actions.component.ts @@ -23,6 +23,6 @@ import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'adf-viewer-more-actions' }, - template: `` + template: `` }) export class ViewerMoreActionsComponent {} diff --git a/lib/core/src/lib/viewer/components/viewer-open-with.component.ts b/lib/core/src/lib/viewer/components/viewer-open-with.component.ts index dc7e207b96..cd0de28204 100644 --- a/lib/core/src/lib/viewer/components/viewer-open-with.component.ts +++ b/lib/core/src/lib/viewer/components/viewer-open-with.component.ts @@ -23,6 +23,6 @@ import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'adf-viewer-open-with' }, - template: `` + template: `` }) export class ViewerOpenWithComponent {} diff --git a/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.html b/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.html index a7aa8dec4f..c255968a8f 100644 --- a/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.html +++ b/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.html @@ -79,8 +79,7 @@ - + [ngTemplateOutletContext]="{ urlFile: urlFile, extension: extension }" /> @@ -92,5 +91,5 @@ - + diff --git a/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.ts b/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.ts index b67e7ed6e5..c7439cdd55 100644 --- a/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.ts +++ b/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.ts @@ -17,17 +17,7 @@ import { AppExtensionService, ExtensionsModule, ViewerExtensionRef } from '@alfresco/adf-extensions'; import { NgForOf, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from '@angular/common'; -import { - Component, - EventEmitter, - Injector, - Input, - OnChanges, - OnInit, - Output, - TemplateRef, - ViewEncapsulation -} from '@angular/core'; +import { Component, EventEmitter, Injector, Input, OnChanges, OnInit, Output, TemplateRef, ViewEncapsulation } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { TranslateModule } from '@ngx-translate/core'; diff --git a/lib/core/src/lib/viewer/components/viewer-sidebar.component.ts b/lib/core/src/lib/viewer/components/viewer-sidebar.component.ts index bc179264fb..632255c348 100644 --- a/lib/core/src/lib/viewer/components/viewer-sidebar.component.ts +++ b/lib/core/src/lib/viewer/components/viewer-sidebar.component.ts @@ -23,7 +23,7 @@ import { ChangeDetectionStrategy, Component, HostListener, ViewEncapsulation } f encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'adf-viewer-sidebar' }, - template: `` + template: `` }) export class ViewerSidebarComponent { @HostListener('keydown', ['$event']) diff --git a/lib/core/src/lib/viewer/components/viewer-toolbar-actions.component.ts b/lib/core/src/lib/viewer/components/viewer-toolbar-actions.component.ts index 09dd19297b..c2d29a81d2 100644 --- a/lib/core/src/lib/viewer/components/viewer-toolbar-actions.component.ts +++ b/lib/core/src/lib/viewer/components/viewer-toolbar-actions.component.ts @@ -23,6 +23,6 @@ import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'adf-viewer-toolbar-actions' }, - template: `` + template: `` }) export class ViewerToolbarActionsComponent {} diff --git a/lib/core/src/lib/viewer/components/viewer-toolbar-custom-actions.component.ts b/lib/core/src/lib/viewer/components/viewer-toolbar-custom-actions.component.ts index caca5571f9..b7310e253c 100644 --- a/lib/core/src/lib/viewer/components/viewer-toolbar-custom-actions.component.ts +++ b/lib/core/src/lib/viewer/components/viewer-toolbar-custom-actions.component.ts @@ -23,6 +23,6 @@ import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'adf-viewer-toolbar-custom-actions' }, - template: `` + template: `` }) export class ViewerToolbarCustomActionsComponent {} diff --git a/lib/core/src/lib/viewer/components/viewer-toolbar.component.ts b/lib/core/src/lib/viewer/components/viewer-toolbar.component.ts index 438a4ef057..2ae2d97df8 100644 --- a/lib/core/src/lib/viewer/components/viewer-toolbar.component.ts +++ b/lib/core/src/lib/viewer/components/viewer-toolbar.component.ts @@ -23,6 +23,6 @@ import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/ encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'adf-viewer-toolbar' }, - template: `` + template: `` }) export class ViewerToolbarComponent {} diff --git a/lib/core/src/lib/viewer/components/viewer.component.html b/lib/core/src/lib/viewer/components/viewer.component.html index 3d89884529..bc5b8ffebc 100644 --- a/lib/core/src/lib/viewer/components/viewer.component.html +++ b/lib/core/src/lib/viewer/components/viewer.component.html @@ -6,7 +6,7 @@
- + @@ -58,7 +58,7 @@
- + @@ -71,13 +71,13 @@ - + - + - - +
- - +
- + diff --git a/lib/insights/tsconfig.lib.json b/lib/insights/tsconfig.lib.json index a26e6a261c..56f880a88a 100644 --- a/lib/insights/tsconfig.lib.json +++ b/lib/insights/tsconfig.lib.json @@ -15,5 +15,6 @@ }, "target": "ES2022", "useDefineForClassFields": false - } + }, + "include": ["src/**/*.ts", "index.ts"] } diff --git a/lib/insights/tsconfig.spec.json b/lib/insights/tsconfig.spec.json index 7d643cc4b8..a4222287d3 100644 --- a/lib/insights/tsconfig.spec.json +++ b/lib/insights/tsconfig.spec.json @@ -6,5 +6,5 @@ "useDefineForClassFields": false }, "files": ["src/test.ts"], - "include": ["**/*.spec.ts", "**/*.test.ts", "**/*.d.ts"] + "include": ["**/*.spec.ts", "**/*.test.ts", "**/*.d.ts", "index.ts"] } diff --git a/lib/js-api/.mocharc.json b/lib/js-api/.mocharc.json deleted file mode 100644 index 785599ddb9..0000000000 --- a/lib/js-api/.mocharc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extensions": ["ts"], - "spec": ["dist/tmp/libs/js-api/test/**/*.spec.js"] -} diff --git a/lib/js-api/jest.config.ts b/lib/js-api/jest.config.ts new file mode 100644 index 0000000000..58774bee2b --- /dev/null +++ b/lib/js-api/jest.config.ts @@ -0,0 +1,23 @@ +/* eslint-disable */ +export default { + displayName: 'js-api', + preset: '../../jest.preset.js', + testEnvironment: 'jsdom', + setupFilesAfterEnv: ['/src/test-setup.ts'], + coverageDirectory: '../../../coverage/libs/js-api', + transform: { + '^.+\\.(ts|mjs|js|html)$': [ + 'jest-preset-angular', + { + tsconfig: '/tsconfig.spec.json', + stringifyContentPathRegex: '\\.(html|svg)$' + } + ] + }, + transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'], + snapshotSerializers: [ + 'jest-preset-angular/build/serializers/no-ng-attributes', + 'jest-preset-angular/build/serializers/ng-snapshot', + 'jest-preset-angular/build/serializers/html-comment' + ] +}; diff --git a/lib/js-api/project.json b/lib/js-api/project.json index 252afe68c0..8996ed8432 100644 --- a/lib/js-api/project.json +++ b/lib/js-api/project.json @@ -6,7 +6,7 @@ "prefix": "adf", "targets": { "build": { - "executor": "@nrwl/js:tsc", + "executor": "@nx/js:tsc", "outputs": ["{options.outputPath}"], "dependsOn": ["build-esm5"], "options": { @@ -24,7 +24,7 @@ } }, "build-esm5": { - "executor": "@nrwl/js:tsc", + "executor": "@nx/js:tsc", "outputs": ["{options.outputPath}"], "dependsOn": ["build-esm2015"], "options": { @@ -34,7 +34,7 @@ } }, "build-esm2015": { - "executor": "@nrwl/js:tsc", + "executor": "@nx/js:tsc", "outputs": ["{options.outputPath}"], "dependsOn": ["build-cjs"], "options": { @@ -44,7 +44,7 @@ } }, "build-cjs": { - "executor": "@nrwl/js:tsc", + "executor": "@nx/js:tsc", "outputs": ["{options.outputPath}"], "options": { "outputPath": "dist/libs/js-api", @@ -54,7 +54,7 @@ } }, "build-types": { - "executor": "@nrwl/js:tsc", + "executor": "@nx/js:tsc", "outputs": ["{options.outputPath}"], "options": { "outputPath": "dist/libs/js-api/typings", @@ -76,7 +76,7 @@ } }, "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "outputs": ["{options.outputFile}"], "options": { "lintFilePatterns": ["lib/js-api/**/*.ts"] @@ -105,19 +105,12 @@ "dependsOn": ["build"] }, "test": { - "executor": "nx:run-commands", + "executor": "@nx/jest:jest", "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "options": { - "commands": ["nx run js-api:build:test", "mocha --full-trace --config lib/js-api/.mocharc.json", "rm -fr dist/tmp/libs/js-api"], - "parallel": false - }, - "configurations": { - "ci": { - "ci": true, - "codeCoverage": true - } - } - } + "jestConfig": "lib/js-api/jest.config.ts", + "passWithNoTests": true + }} }, "tags": [] } diff --git a/lib/js-api/src/test-setup.ts b/lib/js-api/src/test-setup.ts new file mode 100644 index 0000000000..32927d2cc4 --- /dev/null +++ b/lib/js-api/src/test-setup.ts @@ -0,0 +1,18 @@ +/*! + * @license + * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import 'jest-preset-angular/setup-jest'; diff --git a/lib/js-api/src/utils/is-browser.ts b/lib/js-api/src/utils/is-browser.ts index ef42a935dc..938c33e782 100644 --- a/lib/js-api/src/utils/is-browser.ts +++ b/lib/js-api/src/utils/is-browser.ts @@ -15,4 +15,5 @@ * limitations under the License. */ +// eslint-disable-next-line @typescript-eslint/prefer-optional-chain export const isBrowser = (): boolean => typeof window !== 'undefined' && typeof window.document !== 'undefined'; diff --git a/lib/js-api/test/auth.spec.ts b/lib/js-api/test/auth.spec.ts index 49634a4c63..52c575756c 100644 --- a/lib/js-api/test/auth.spec.ts +++ b/lib/js-api/test/auth.spec.ts @@ -40,6 +40,11 @@ describe('Auth', () => { nodeMock = new NodeMock(ECM_HOST); }); + afterEach(() => { + authResponseEcmMock.cleanAll(); + nodeMock.cleanAll(); + }); + describe('With Authentication', () => { let alfrescoJsApi: AlfrescoApi; @@ -52,13 +57,11 @@ describe('Auth', () => { }); describe('login', () => { - it('should return the Ticket if all is ok', (done) => { + it('should return the Ticket if all is ok', async () => { authResponseEcmMock.get201Response(); - alfrescoJsApi.login('admin', 'admin').then((data: string) => { - assert.equal(data, 'TICKET_4479f4d3bb155195879bfbb8d5206f433488a1b1'); - done(); - }); + const data = await alfrescoJsApi.login('admin', 'admin'); + assert.equal(data, 'TICKET_4479f4d3bb155195879bfbb8d5206f433488a1b1'); }); it('should return an error if wrong credential are used 403 the login fails', (done) => { @@ -72,26 +75,22 @@ describe('Auth', () => { }); describe('isLoggedIn', () => { - it('should return true if the api is logged in', (done) => { + it('should return true if the api is logged in', async () => { authResponseEcmMock.get201Response(); - alfrescoJsApi.login('admin', 'admin').then(() => { - assert.equal(alfrescoJsApi.isLoggedIn(), true); - done(); - }); + await alfrescoJsApi.login('admin', 'admin'); + assert.equal(alfrescoJsApi.isLoggedIn(), true); }); - it('should return false if the api is logged out', (done) => { + it('should return false if the api is logged out', async () => { authResponseEcmMock.get201Response(); alfrescoJsApi.login('admin', 'admin').catch(NOOP); authResponseEcmMock.get204ResponseLogout(); - alfrescoJsApi.logout().then(() => { - assert.equal(alfrescoJsApi.isLoggedIn(), false); - done(); - }); + await alfrescoJsApi.logout(); + assert.equal(alfrescoJsApi.isLoggedIn(), false); }); }); diff --git a/lib/js-api/test/bpmAuth.spec.ts b/lib/js-api/test/bpmAuth.spec.ts index 786eede247..14e03903f4 100644 --- a/lib/js-api/test/bpmAuth.spec.ts +++ b/lib/js-api/test/bpmAuth.spec.ts @@ -55,7 +55,7 @@ describe('Bpm Auth test', () => { }); describe('With Authentication', () => { - it('login should return the Ticket if all is ok', (done) => { + it('login should return the Ticket if all is ok', async () => { authBpmMock.get200Response(); const processAuth = new ProcessAuth({ @@ -63,10 +63,8 @@ describe('Bpm Auth test', () => { contextRootBpm: 'activiti-app' }); - processAuth.login('admin', 'admin').then((data) => { - assert.equal(data, 'Basic YWRtaW46YWRtaW4='); - done(); - }); + const data = await processAuth.login('admin', 'admin'); + assert.equal(data, 'Basic YWRtaW46YWRtaW4='); }); it('login password should be removed after login', (done) => { diff --git a/lib/js-api/test/content-services/tagApi.spec.ts b/lib/js-api/test/content-services/tagApi.spec.ts index 110b16f1cd..6cf98ce6e3 100644 --- a/lib/js-api/test/content-services/tagApi.spec.ts +++ b/lib/js-api/test/content-services/tagApi.spec.ts @@ -103,7 +103,7 @@ describe('Tags', () => { }); describe('createTags', () => { - it('should return created tags', (done: Mocha.Done) => { + it('should return created tags', (done) => { tagMock.createTags201Response(); tagsApi.createTags([new TagBody(), new TagBody()]).then((tags) => { assert.equal(tags.length, 2); diff --git a/lib/js-api/test/oauth2Auth.spec.ts b/lib/js-api/test/oauth2Auth.spec.ts index 0e8e62e503..316bc73337 100644 --- a/lib/js-api/test/oauth2Auth.spec.ts +++ b/lib/js-api/test/oauth2Auth.spec.ts @@ -18,10 +18,7 @@ import assert from 'assert'; import { AlfrescoApi, ContentApi, Oauth2Auth } from '../src'; import { EcmAuthMock, OAuthMock } from './mockObjects'; -import jsdom from 'jsdom'; - -const { JSDOM } = jsdom; -const globalAny: any = global; +import { jest } from '@jest/globals'; describe('Oauth2 test', () => { let alfrescoJsApi: AlfrescoApi; @@ -32,7 +29,8 @@ describe('Oauth2 test', () => { const hostOauth2 = 'https://myOauthUrl:30081'; const mockStorage = { getItem: () => {}, - setItem: () => {} + setItem: () => {}, + removeItem: () => {} }; oauth2Mock = new OAuthMock(hostOauth2); @@ -43,6 +41,31 @@ describe('Oauth2 test', () => { }); alfrescoJsApi.storage.setStorage(mockStorage); + Object.defineProperty(window, 'location', { + writable: true, + value: { + ancestorOrigins: null, + hash: null, + host: 'dummy.com', + port: '80', + protocol: 'http:', + hostname: 'dummy.com', + href: 'http://localhost/', + origin: 'dummy.com', + pathname: null, + search: null, + assign: (url: string) => { + window.location.href = url; + }, + reload: null, + replace: null + } + }); + }); + + afterEach(() => { + authResponseMock.cleanAll(); + jest.clearAllMocks(); }); describe('Discovery urls', () => { @@ -168,8 +191,8 @@ describe('Oauth2 test', () => { }); }); - it('should refresh token when the login not use the implicitFlow ', function (done) { - this.timeout(3000); + it('should refresh token when the login not use the implicitFlow ', (done) => { + jest.spyOn(window, 'document', 'get').mockReturnValueOnce(undefined); oauth2Mock.get200Response(); const oauth2Auth = new Oauth2Auth( @@ -204,8 +227,8 @@ describe('Oauth2 test', () => { oauth2Auth.login('admin', 'admin'); }); - it('should not hang the app also if teh logout is missing', function (done) { - this.timeout(3000); + it('should not hang the app also if the logout is missing', (done) => { + jest.spyOn(window, 'document', 'get').mockReturnValueOnce(undefined); oauth2Mock.get200Response(); const oauth2Auth = new Oauth2Auth( @@ -426,7 +449,7 @@ describe('Oauth2 test', () => { // TODO: very flaky test, fails on different machines if running slow, might relate to `this.timeout` // eslint-disable-next-line ban/ban xit('should extend content session after oauth token refresh', function (done) { - this.timeout(3000); + jest.setTimeout(3000); oauth2Mock.get200Response(); authResponseMock.get200ValidTicket(); @@ -464,7 +487,7 @@ describe('Oauth2 test', () => { }); alfrescoApi.login('admin', 'admin'); - this.timeout(3000); + jest.setTimeout(3000); alfrescoApi.refreshToken(); }); @@ -519,13 +542,7 @@ describe('Oauth2 test', () => { }); describe('With mocked DOM', () => { - beforeEach(() => { - const dom = new JSDOM('', { url: 'https://localhost' }); - globalAny.window = dom.window; - globalAny.document = dom.window.document; - }); - - it('a failed hash check calls the logout', () => { + it('a failed hash check calls the logout', (done) => { const oauth2Auth = new Oauth2Auth( { oauth2: { @@ -554,13 +571,8 @@ describe('Oauth2 test', () => { // invalid hash location leads to a reject which leads to a logout oauth2Auth.iFrameHashListener(); - setTimeout(() => { - assert.equal(logoutCalled, true); - }, 500); - }); - - afterEach(() => { - globalAny.window = undefined; + assert.equal(logoutCalled, true); + done(); }); }); @@ -582,10 +594,10 @@ describe('Oauth2 test', () => { }, alfrescoJsApi ); + window.location.assign('public-url'); }); it('should return true if PathMatcher.match returns true for matching url', () => { - globalAny.window = { location: { href: 'public-url' } }; oauth2Auth.config.oauth2.publicUrls = ['public-url']; oauth2Auth.pathMatcher = { match: () => true @@ -595,7 +607,6 @@ describe('Oauth2 test', () => { }); it('should return false if PathMatcher.match returns false for matching url', () => { - globalAny.window = { location: { href: 'some-public-url' } }; oauth2Auth.config.oauth2.publicUrls = ['public-url']; oauth2Auth.pathMatcher = { match: () => false @@ -609,13 +620,11 @@ describe('Oauth2 test', () => { }); it('should return false if public urls is not set as an array list', () => { - globalAny.window = { location: { href: 'public-url-string' } }; oauth2Auth.config.oauth2.publicUrls = null; assert.equal(oauth2Auth.isPublicUrl(), false); }); it('should not call `implicitLogin`', async () => { - globalAny.window = { location: { href: 'public-url' } }; oauth2Auth.config.oauth2.silentLogin = true; oauth2Auth.config.oauth2.publicUrls = ['public-url']; diff --git a/lib/js-api/test/oauth2AuthImplicitFlow.spec.ts b/lib/js-api/test/oauth2AuthImplicitFlow.spec.ts index 556be44309..76537f053e 100644 --- a/lib/js-api/test/oauth2AuthImplicitFlow.spec.ts +++ b/lib/js-api/test/oauth2AuthImplicitFlow.spec.ts @@ -18,9 +18,6 @@ import assert from 'assert'; import { AlfrescoApi, Oauth2Auth } from '../src'; -declare let window: any; -const globalAny: any = global; - describe('Oauth2 Implicit flow test', () => { let oauth2Auth: Oauth2Auth; let alfrescoJsApi: AlfrescoApi; @@ -29,6 +26,26 @@ describe('Oauth2 Implicit flow test', () => { alfrescoJsApi = new AlfrescoApi({ hostEcm: '' }); + Object.defineProperty(window, 'location', { + writable: true, + value: { + ancestorOrigins: null, + hash: '', + host: 'dummy.com', + port: '80', + protocol: 'http:', + hostname: 'dummy.com', + href: 'http://localhost/', + origin: 'dummy.com', + pathname: null, + search: null, + assign: (url: string) => { + window.location.href = url; + }, + reload: null, + replace: null + } + }); }); it('should throw an error if redirectUri is not present', (done) => { @@ -53,16 +70,7 @@ describe('Oauth2 Implicit flow test', () => { }); it('should redirect to login if access token is not valid', (done) => { - window = globalAny.window = { - location: { - assign: (v: any) => { - window.location.href = v; - } - } - }; - globalAny.document = { - getElementById: () => '' - }; + document.getElementById = () => null; oauth2Auth = new Oauth2Auth( { @@ -87,16 +95,7 @@ describe('Oauth2 Implicit flow test', () => { }); it('should not loop over redirection when redirectUri contains hash and token is not valid ', (done) => { - window = globalAny.window = { - location: { - assign: (v: any) => { - window.location.href = v; - } - } - }; - globalAny.document = { - getElementById: () => '' - }; + document.getElementById = () => null; oauth2Auth = new Oauth2Auth( { oauth2: { @@ -124,16 +123,7 @@ describe('Oauth2 Implicit flow test', () => { }); it('should not redirect to login if access token is valid', (done) => { - window = globalAny.window = { - location: { - assign: (v: any) => { - window.location.href = v; - } - } - }; - globalAny.document = { - getElementById: () => '' - }; + document.getElementById = () => null; oauth2Auth = new Oauth2Auth( { oauth2: { @@ -152,7 +142,7 @@ describe('Oauth2 Implicit flow test', () => { oauth2Auth.isValidToken = () => true; oauth2Auth.on('token_issued', () => { - assert.equal(window.location.url, undefined); + assert.equal(window.location.href, 'http://localhost/'); done(); }); @@ -162,27 +152,9 @@ describe('Oauth2 Implicit flow test', () => { }); it('should set the loginFragment to redirect after the login if it is present', (done) => { - window = globalAny.window = { - location: { - assign: (v: any) => { - window.location.href = v; - } - } - }; - globalAny.document = { - getElementById: () => '' - }; - window.location.hash = 'asfasfasfa'; - - Object.defineProperty(window.location, 'hash', { - writable: true, - value: '#/redirect-path&session_state=eqfqwfqwf' - }); - - Object.defineProperty(window.location, 'href', { - writable: true, - value: 'https://stoca/#/redirect-path&session_state=eqfqwfqwf' - }); + document.getElementById = () => null; + window.location.hash = '#/redirect-path&session_state=eqfqwfqwf'; + window.location.href = 'https://stoca/#/redirect-path&session_state=eqfqwfqwf'; oauth2Auth = new Oauth2Auth( { diff --git a/lib/js-api/test/upload.spec.ts b/lib/js-api/test/upload.spec.ts index efd06c52c8..36d8c3e649 100644 --- a/lib/js-api/test/upload.spec.ts +++ b/lib/js-api/test/upload.spec.ts @@ -61,12 +61,10 @@ describe('Upload', () => { const file = createTestFileStream('testFile.txt'); - uploadApi.uploadFile(file).catch( - (error: any) => { - assert.equal(error.status, 409); - done(); - } - ); + uploadApi.uploadFile(file).catch((error: any) => { + assert.equal(error.status, 409); + done(); + }); }); it('upload file should get 200 and rename if the new name clashes with an existing file in the current parent folder and autorename is true', async () => { diff --git a/lib/js-api/tsconfig.spec.json b/lib/js-api/tsconfig.spec.json index 1bd94344e0..81c8fb16bd 100644 --- a/lib/js-api/tsconfig.spec.json +++ b/lib/js-api/tsconfig.spec.json @@ -8,7 +8,7 @@ "isolatedModules": true, "allowSyntheticDefaultImports": true, "lib": ["ESNext", "dom"], - "types": ["mocha"] + "types": ["jest", "node"] }, "exclude": [], "include": ["**/*"] diff --git a/lib/process-services-cloud/.storybook/tsconfig.json b/lib/process-services-cloud/.storybook/tsconfig.json index 30f9f5e443..8dd3f7d003 100644 --- a/lib/process-services-cloud/.storybook/tsconfig.json +++ b/lib/process-services-cloud/.storybook/tsconfig.json @@ -2,9 +2,7 @@ "extends": "../../../tsconfig.json", "compilerOptions": { "emitDecoratorMetadata": true - }, - - "exclude": ["../**/*.spec.ts" ], - "include": ["../src/**/*", "*.js", "../../core/feature-flags"] + "exclude": ["../**/*.spec.ts", "../**/*.mock.ts", "../**/test.ts", "../**/*.module.ts" ], + "include": ["../src/**/*", "*.js"] } diff --git a/lib/process-services-cloud/package-lock.json b/lib/process-services-cloud/package-lock.json deleted file mode 100644 index 0f8db237ec..0000000000 --- a/lib/process-services-cloud/package-lock.json +++ /dev/null @@ -1,2143 +0,0 @@ -{ - "name": "@alfresco/adf-process-services-cloud", - "version": "7.0.0-alpha.8", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "@alfresco/adf-process-services-cloud", - "version": "7.0.0-alpha.8", - "license": "Apache-2.0", - "dependencies": { - "@editorjs/code": "2.9.0", - "@editorjs/editorjs": "^2.28.2", - "@editorjs/header": "2.8.1", - "@editorjs/inline-code": "1.5.0", - "@editorjs/list": "1.9.0", - "@editorjs/marker": "1.4.0", - "@editorjs/paragraph": "^2.11.6", - "@editorjs/underline": "1.1.0", - "@valano/change-font-size": "1.0.0", - "editorjs-html": "3.4.3", - "editorjs-paragraph-with-alignment": "3.0.0", - "editorjs-text-alignment-blocktune": "^1.0.3", - "editorjs-text-color-plugin": "1.13.1" - }, - "peerDependencies": { - "@alfresco/adf-content-services": ">=7.0.0-alpha.8-0", - "@alfresco/adf-core": ">=7.0.0-alpha.8-0", - "@alfresco/js-api": ">=8.0.0-alpha.8-0", - "@angular/animations": ">=14.1.3", - "@angular/cdk": ">=14.1.2", - "@angular/common": ">=14.1.3", - "@angular/compiler": ">=14.1.3", - "@angular/core": ">=14.1.3", - "@angular/forms": ">=14.1.3", - "@angular/material": ">=14.1.2", - "@angular/platform-browser": ">=14.1.3", - "@angular/platform-browser-dynamic": ">=14.1.3", - "@angular/router": ">=14.1.3", - "@apollo/client": ">=3.7.2", - "@ngx-translate/core": ">=14.0.0", - "apollo-angular": ">=4.0.1", - "subscriptions-transport-ws": "^0.11.0" - } - }, - "node_modules/@alfresco/adf-content-services": { - "version": "7.0.0-alpha.8-13139533867", - "resolved": "https://registry.npmjs.org/@alfresco/adf-content-services/-/adf-content-services-7.0.0-alpha.8-13139533867.tgz", - "integrity": "sha512-KH6+hYRjjaCOGnK07UM6tHeV0vQWgtLTxiK3pp3k9PJjRdKCUm3QYTqNUlzXu4PBNg6tu6X4YJuXs9KN3rYhug==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@alfresco/adf-core": ">=7.0.0-alpha.8-13139533867", - "@alfresco/js-api": ">=8.0.0-alpha.8-13139533867", - "@angular/animations": ">=14.1.3", - "@angular/cdk": ">=14.1.2", - "@angular/common": ">=14.1.3", - "@angular/compiler": ">=14.1.3", - "@angular/core": ">=14.1.3", - "@angular/forms": ">=14.1.3", - "@angular/material": ">=14.1.2", - "@angular/platform-browser": ">=14.1.3", - "@angular/platform-browser-dynamic": ">=14.1.3", - "@angular/router": ">=14.1.3", - "@ngx-translate/core": ">=14.0.0" - } - }, - "node_modules/@alfresco/adf-core": { - "version": "7.0.0-alpha.8-13139533867", - "resolved": "https://registry.npmjs.org/@alfresco/adf-core/-/adf-core-7.0.0-alpha.8-13139533867.tgz", - "integrity": "sha512-FTl6xphYAdFa99OvxJUaNK1hWyCbd9fzFx+F6Obq8KHT73rl8PALI8gzWiIdlYGPFkcL+DBZ87L4sPYR7Ubv4w==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "angular-oauth2-oidc": "17.0.2", - "angular-oauth2-oidc-jwks": "17.0.2", - "cropperjs": "^1.6.2", - "date-fns": "^2.30.0", - "rxjs": "7.8.1", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@alfresco/adf-extensions": ">=7.0.0-alpha.8-13139533867", - "@alfresco/js-api": ">=8.0.0-alpha.8-13139533867", - "@angular/animations": ">=16.0.0", - "@angular/cdk": ">=16.0.0", - "@angular/common": ">=16.0.0", - "@angular/core": ">=16.0.0", - "@angular/forms": ">=16.0.0", - "@angular/material": ">=16.0.0", - "@angular/material-date-fns-adapter": ">=16.0.0", - "@angular/platform-browser": ">=16.0.0", - "@angular/router": ">=16.0.0", - "@mat-datetimepicker/core": ">=12.0.1", - "@ngx-translate/core": ">=14.0.0", - "minimatch-browser": ">=1.0.0", - "pdfjs-dist": ">=3.3.122", - "ts-morph": ">=20.0.0" - } - }, - "node_modules/@alfresco/adf-core/node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.21.0" - }, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/@alfresco/adf-extensions": { - "version": "7.0.0-alpha.8-13139533867", - "resolved": "https://registry.npmjs.org/@alfresco/adf-extensions/-/adf-extensions-7.0.0-alpha.8-13139533867.tgz", - "integrity": "sha512-HPFWP5dn9ov+CYi/VUco4j/t7bQEvBOxrQx3s4PgEUq3vmUIWgsjelMUnfpCOgLngwRDtn0s68wmK1uoDERt7Q==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@alfresco/js-api": ">=8.0.0-alpha.8-13139533867", - "@angular/common": ">=14.1.3", - "@angular/core": ">=14.1.3" - } - }, - "node_modules/@alfresco/js-api": { - "version": "8.0.0-alpha.8-13139533867", - "resolved": "https://registry.npmjs.org/@alfresco/js-api/-/js-api-8.0.0-alpha.8-13139533867.tgz", - "integrity": "sha512-T4vSUAlGBqf+hxIb1ffgeEoumPMCcJqpVvE8/p0nO/By1KED+jaSPsbpzfg0HRWfQYymCkfR7jgotFm6qvNSSw==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "event-emitter": "^0.3.5", - "superagent": "^9.0.1", - "tslib": "^2.6.1" - } - }, - "node_modules/@angular/animations": { - "version": "19.1.4", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-19.1.4.tgz", - "integrity": "sha512-QGswsf/X+k7TijIgBzL6V8+KcArFAgebY6zM0L/Len8v5PNzPzdjJH99+P++5AOLiJctYKfISUwnlMbDb50NrA==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/core": "19.1.4" - } - }, - "node_modules/@angular/cdk": { - "version": "19.1.2", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-19.1.2.tgz", - "integrity": "sha512-rzrZ4BkGNIZWSdw0OsuSB/H9UB5ppPvmBq+uRHdYmZoYjo5wu1pmePxAIZDIBR8xdaNy9rZ4ecS6IebDkgYPrg==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "optionalDependencies": { - "parse5": "^7.1.2" - }, - "peerDependencies": { - "@angular/common": "^19.0.0 || ^20.0.0", - "@angular/core": "^19.0.0 || ^20.0.0", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/common": { - "version": "19.1.4", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-19.1.4.tgz", - "integrity": "sha512-E4MCl13VIotOxmzKQ/UGciPeaRXQgH7ymesEjYVGcT8jmC+qz5dEcoN7L5Jvq9aUsmLBt9MFp/B5QqKCIXMqYA==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/core": "19.1.4", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/compiler": { - "version": "19.1.4", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-19.1.4.tgz", - "integrity": "sha512-9vGUZ+QhGWvf5dfeILybrh5rvZQtNqS8WumMeX2/vCb0JTA0N4DsL1Sy47HuWcgKBxbmHVUdF5/iufcFaqk2FA==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/core": "19.1.4" - }, - "peerDependenciesMeta": { - "@angular/core": { - "optional": true - } - } - }, - "node_modules/@angular/core": { - "version": "19.1.4", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-19.1.4.tgz", - "integrity": "sha512-r3T81lM9evmuW36HA3VAxIJ61M8kirGR8yHoln9fXSnYG8UeJ7JlWEbVRHmVHKOB48VK0bS/VxqN+w9TOq3bZg==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.15.0" - } - }, - "node_modules/@angular/forms": { - "version": "19.1.4", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-19.1.4.tgz", - "integrity": "sha512-dcf4G+vXrfvy5NAP+C4A2rBeaZuwKs/TeWjZDpkRUPQMwTvDJcSNH+pqOeVsYUGNY2BkY1uPjzmgZh4F5NMQ9A==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/common": "19.1.4", - "@angular/core": "19.1.4", - "@angular/platform-browser": "19.1.4", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/material": { - "version": "19.1.2", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-19.1.2.tgz", - "integrity": "sha512-MdczdTmvsXLtEFV9nTgFs9mPM1FSAz4L1kByJCdIgHtOu62e9t2XcSUqOPJTlDrA5wWafZvPWh2woJfJr4iwjw==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/animations": "^19.0.0 || ^20.0.0", - "@angular/cdk": "19.1.2", - "@angular/common": "^19.0.0 || ^20.0.0", - "@angular/core": "^19.0.0 || ^20.0.0", - "@angular/forms": "^19.0.0 || ^20.0.0", - "@angular/platform-browser": "^19.0.0 || ^20.0.0", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/material-date-fns-adapter": { - "version": "19.1.2", - "resolved": "https://registry.npmjs.org/@angular/material-date-fns-adapter/-/material-date-fns-adapter-19.1.2.tgz", - "integrity": "sha512-f9f8MWljCv36dPNpIzWtzlPvWdukVvd1lg57QDu2DVaPF3AQra0pgriw0i/7z5TZS1Ds2rAjyX/uyxN0PcsRFw==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/core": "^19.0.0 || ^20.0.0", - "@angular/material": "19.1.2", - "date-fns": ">2.20.0 <5.0" - } - }, - "node_modules/@angular/platform-browser": { - "version": "19.1.4", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-19.1.4.tgz", - "integrity": "sha512-IoVIvemj7ni6GLDCvwtZhTgMQjPyG+xPW7rASN2RVl9T3uS1fJUpXrh5JzBcCikIj20O2KV9mqt7p4iIXy9jbQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/animations": "19.1.4", - "@angular/common": "19.1.4", - "@angular/core": "19.1.4" - }, - "peerDependenciesMeta": { - "@angular/animations": { - "optional": true - } - } - }, - "node_modules/@angular/platform-browser-dynamic": { - "version": "19.1.4", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-19.1.4.tgz", - "integrity": "sha512-r1AM8qkjl63cg46tgOHsVV4URHDctcVpt98DU/d/yN8JAugrx6GA1qOM/HMDspMjEIU4aYcSkUUY6h6uIkYmOQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/common": "19.1.4", - "@angular/compiler": "19.1.4", - "@angular/core": "19.1.4", - "@angular/platform-browser": "19.1.4" - } - }, - "node_modules/@angular/router": { - "version": "19.1.4", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-19.1.4.tgz", - "integrity": "sha512-0gEhGGqcCS7adKuv/XeQjRbhEqRXPhIH4ygjwfonV+uvmK+C1sf+bnAt4o01hxwf12w4FcnNPkgBKt+rJJ+LpA==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/common": "19.1.4", - "@angular/core": "19.1.4", - "@angular/platform-browser": "19.1.4", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@apollo/client": { - "version": "3.12.9", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.12.9.tgz", - "integrity": "sha512-rH2Vzfbp+IR0l/xAjUIbDH4/sqBzPATMbzXv/L36E33yhp40yM5LFJnC6cc4YDPUH2gom7Dk4BrYZVLbFpYTsA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@wry/caches": "^1.0.0", - "@wry/equality": "^0.5.6", - "@wry/trie": "^0.5.0", - "graphql-tag": "^2.12.6", - "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.18.0", - "prop-types": "^15.7.2", - "rehackt": "^0.1.0", - "symbol-observable": "^4.0.0", - "ts-invariant": "^0.10.3", - "tslib": "^2.3.0", - "zen-observable-ts": "^1.2.5" - }, - "peerDependencies": { - "graphql": "^15.0.0 || ^16.0.0", - "graphql-ws": "^5.5.5", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc", - "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" - }, - "peerDependenciesMeta": { - "graphql-ws": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "subscriptions-transport-ws": { - "optional": true - } - } - }, - "node_modules/@babel/runtime": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz", - "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@codexteam/icons": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@codexteam/icons/-/icons-0.0.5.tgz", - "integrity": "sha512-s6H2KXhLz2rgbMZSkRm8dsMJvyUNZsEjxobBEg9ztdrb1B2H3pEzY6iTwI4XUPJWJ3c3qRKwV4TrO3J5jUdoQA==", - "license": "MIT" - }, - "node_modules/@editorjs/code": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@editorjs/code/-/code-2.9.0.tgz", - "integrity": "sha512-QNOWxF29j6mYl/gM5HJzeGOt3s4laoZCUbuRqj6RkIvLBWMU+ASwjckEiouA61hcYUOMfpw4vQjzhsfC7xm/vA==", - "license": "MIT", - "dependencies": { - "@codexteam/icons": "^0.0.5" - } - }, - "node_modules/@editorjs/editorjs": { - "version": "2.30.8", - "resolved": "https://registry.npmjs.org/@editorjs/editorjs/-/editorjs-2.30.8.tgz", - "integrity": "sha512-ClFuxI1qZTfXPJTacQfsJtOUP6bKoIe6BQNdAvGsDTDVwMnZEzoaSOwvUpdZEE56xppVfQueNK/1MElV9SJKHg==", - "license": "Apache-2.0" - }, - "node_modules/@editorjs/header": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/@editorjs/header/-/header-2.8.1.tgz", - "integrity": "sha512-y0HVXRP7m2W617CWo3fsb5HhXmSLaRpb9GzFx0Vkp/HEm9Dz5YO1s8tC7R8JD3MskwoYh7V0hRFQt39io/r6hA==", - "license": "MIT", - "dependencies": { - "@codexteam/icons": "^0.0.5" - } - }, - "node_modules/@editorjs/inline-code": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@editorjs/inline-code/-/inline-code-1.5.0.tgz", - "integrity": "sha512-5i6BCOG8eOg4/6qGoLJuL6XSZZg834zIByDW8K80doM1L7ss/VqtLY0nrB2Q5bfs1KA0tOlVHOfjE4JD4438FQ==", - "license": "MIT", - "dependencies": { - "@codexteam/icons": "^0.0.5" - } - }, - "node_modules/@editorjs/list": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@editorjs/list/-/list-1.9.0.tgz", - "integrity": "sha512-BQEvZW4vi0O0dBvGNljiKxiE89vMSHoM2Tu2OzKUndoj7pY9AxqpgCh1qvwIVsJAlG4Lbt/vBFQilnoStMmI6A==", - "license": "MIT", - "dependencies": { - "@codexteam/icons": "^0.0.4" - } - }, - "node_modules/@editorjs/list/node_modules/@codexteam/icons": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@codexteam/icons/-/icons-0.0.4.tgz", - "integrity": "sha512-V8N/TY2TGyas4wLrPIFq7bcow68b3gu8DfDt1+rrHPtXxcexadKauRJL6eQgfG7Z0LCrN4boLRawR4S9gjIh/Q==", - "license": "MIT" - }, - "node_modules/@editorjs/marker": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@editorjs/marker/-/marker-1.4.0.tgz", - "integrity": "sha512-5ipEXfL44jTTRzgNp/p/YjMO7jT08S5z4V8qA3FFJTfdhKgQyM3mvP1zpdYKw47ZZpVWMCncvk5Nto3BxihEtg==", - "license": "MIT", - "dependencies": { - "@codexteam/icons": "^0.0.5" - } - }, - "node_modules/@editorjs/paragraph": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@editorjs/paragraph/-/paragraph-2.11.7.tgz", - "integrity": "sha512-qD6bbWvRc4VvP0mXDOm+hOhzzhUYR9ZjcAvgCuKWcCbUMpCvhVF1s8NX40zdjekPi6JEnuHTamCncTrSzVsVhw==", - "license": "MIT", - "dependencies": { - "@codexteam/icons": "^0.0.4" - } - }, - "node_modules/@editorjs/paragraph/node_modules/@codexteam/icons": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@codexteam/icons/-/icons-0.0.4.tgz", - "integrity": "sha512-V8N/TY2TGyas4wLrPIFq7bcow68b3gu8DfDt1+rrHPtXxcexadKauRJL6eQgfG7Z0LCrN4boLRawR4S9gjIh/Q==", - "license": "MIT" - }, - "node_modules/@editorjs/underline": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@editorjs/underline/-/underline-1.1.0.tgz", - "integrity": "sha512-vQj2ROW1KreD31QHlhaPikmDJGWYzRBusN4Zyfwl9nIIQCByt4S8fZQpsrRvH4sct5mkirsHllNT00rJlqHK7Q==", - "license": "MIT", - "dependencies": { - "@codexteam/icons": "^0.0.6" - } - }, - "node_modules/@editorjs/underline/node_modules/@codexteam/icons": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@codexteam/icons/-/icons-0.0.6.tgz", - "integrity": "sha512-L7Q5PET8PjKcBT5wp7VR+FCjwCi5PUp7rd/XjsgQ0CI5FJz0DphyHGRILMuDUdCW2MQT9NHbVr4QP31vwAkS/A==", - "license": "MIT" - }, - "node_modules/@graphql-typed-document-node/core": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", - "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, - "node_modules/@mat-datetimepicker/core": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@mat-datetimepicker/core/-/core-15.0.0.tgz", - "integrity": "sha512-qngeP+URutxlNdms2jtv3ABlp8f3AZzd/LRXf77MSTJQf4EDKNfzIjocTojGa4w3awDn8Y7dep53V16c5MPfoA==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "~2.8.1" - }, - "peerDependencies": { - "@angular/cdk": "^19.0.0", - "@angular/common": "^19.0.0", - "@angular/core": "^19.0.0", - "@angular/material": "^19.0.0" - } - }, - "node_modules/@napi-rs/canvas": { - "version": "0.1.66", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.66.tgz", - "integrity": "sha512-NE/eQKLbUS+LCbMHRa5HnR7cc1Q4ibg/qfLUN4Ukl3CC0lq6LfHE0YbvFm/l4i5RyyS+aUjL+8IuZDD9EH3amg==", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@napi-rs/canvas-android-arm64": "0.1.66", - "@napi-rs/canvas-darwin-arm64": "0.1.66", - "@napi-rs/canvas-darwin-x64": "0.1.66", - "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.66", - "@napi-rs/canvas-linux-arm64-gnu": "0.1.66", - "@napi-rs/canvas-linux-arm64-musl": "0.1.66", - "@napi-rs/canvas-linux-riscv64-gnu": "0.1.66", - "@napi-rs/canvas-linux-x64-gnu": "0.1.66", - "@napi-rs/canvas-linux-x64-musl": "0.1.66", - "@napi-rs/canvas-win32-x64-msvc": "0.1.66" - } - }, - "node_modules/@napi-rs/canvas-android-arm64": { - "version": "0.1.66", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.66.tgz", - "integrity": "sha512-77Yq9yaUYN90zCovYOpw7LhidJiswU9wLIWWBGF6iiEJyQdt6tkiXpGRZpOMJVO70afkcdc4T7532cxMIBhk0Q==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-darwin-arm64": { - "version": "0.1.66", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.66.tgz", - "integrity": "sha512-cz3aJ06b8BZGtwRxKTiE0OVUlB17MH8j+BnE4A5+wD9aD1guCCqECsz+k7tpXdAdTAYKRIz2pq6ZuiJ76NyUbQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-darwin-x64": { - "version": "0.1.66", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.66.tgz", - "integrity": "sha512-szIWqJgFm2OTyGzM+hSiJOaOtjI73VYRC2KN30zZTt7i1+0sgpm5exK5ltDBPOmCdnLt7SbUfpInLj8VvxYlKA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { - "version": "0.1.66", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.66.tgz", - "integrity": "sha512-h/TZJFc6JLvp8FwbA5mu+yXiblN0iKqshU7xzd6L+ks5uNYgjS7XWLkNiyPQkMaXQgVczOJfZy7r4NSPK3V8Hg==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-linux-arm64-gnu": { - "version": "0.1.66", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.66.tgz", - "integrity": "sha512-RGFUdBdi0Xmf+TfwZcB89Ap6hDYh4nzyJhXhNJIgve6ELrIPFhf7sDHvUHxjgW0YzczGoo+ophyCm03cJggu+w==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-linux-arm64-musl": { - "version": "0.1.66", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.66.tgz", - "integrity": "sha512-2cFViDIZ0xQlAHyJmyym+rj3p04V16vgAiz64sCAfwOOiW6e19agv1HQWHUsro3G2lF3PaHGAnp0WRPXGqLOfg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-linux-riscv64-gnu": { - "version": "0.1.66", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.66.tgz", - "integrity": "sha512-Vm5ZWS2RDPeBpnfx83eJpZfJT07xl0jqp8d83PklKqiDNa3BmDZZ/uuI40/ICgejGLymXXYo5N21b7oAxhRTSA==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-linux-x64-gnu": { - "version": "0.1.66", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.66.tgz", - "integrity": "sha512-/ptGBhErNBCgWff3khtuEjhiiYWf70oWvBPRj8y5EMB0nLYpve7RxxFnavVvxN49kJ0MQHRIwgfyd47RSOOKPw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-linux-x64-musl": { - "version": "0.1.66", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.66.tgz", - "integrity": "sha512-XunvXisTkIG+bpq6BcXmsUstoLX3RLS6N9Uz9Pg9RpWIMeM6ObR5shr3NgpGRJq93769I1hS4mJW0DX2Au3WBw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-win32-x64-msvc": { - "version": "0.1.66", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.66.tgz", - "integrity": "sha512-3n34watNFqpwACDA+pt4jfQD6zR8PzfK86FBajdsgDVVZhSp6ohgbbJv+eUrXM08VUtjxTq7+U4sWspTu9+4Ug==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@ngx-translate/core": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-16.0.4.tgz", - "integrity": "sha512-s8llTL2SJvROhqttxvEs7Cg+6qSf4kvZPFYO+cTOY1d8DWTjlutRkWAleZcPPoeX927Dm7ALfL07G7oYDJ7z6w==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/common": ">=16", - "@angular/core": ">=16" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "license": "MIT", - "peer": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@ts-morph/common": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.26.0.tgz", - "integrity": "sha512-/RmKAtctStXqM5nECMQ46duT74Hoig/DBzhWXGHcodlDNrgRbsbwwHqSKFNbca6z9Xt/CUWMeXOsC9QEN1+rqw==", - "license": "MIT", - "peer": true, - "dependencies": { - "fast-glob": "^3.3.2", - "minimatch": "^9.0.4", - "path-browserify": "^1.0.1" - } - }, - "node_modules/@valano/change-font-size": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@valano/change-font-size/-/change-font-size-1.0.0.tgz", - "integrity": "sha512-SokCKqI1kCzHUIXeELpykO1PiY5SM8DBbUOAPHamwgpxFwDrGfnNlD0TbrShUDZGhNxCViCaOlvd0Rk/A2v0vQ==", - "license": "MIT" - }, - "node_modules/@wry/caches": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@wry/caches/-/caches-1.0.1.tgz", - "integrity": "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/context": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.4.tgz", - "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/equality": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.7.tgz", - "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/trie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.5.0.tgz", - "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/angular-oauth2-oidc": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/angular-oauth2-oidc/-/angular-oauth2-oidc-17.0.2.tgz", - "integrity": "sha512-zYgeLmAnu1g8XAYZK+csAsCQBDhgp9ffBv/eArEnujGxNPTeK00bREHWObtehflpQdSn+k9rY2D15ChCSydyVw==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.5.2" - }, - "peerDependencies": { - "@angular/common": ">=14.0.0", - "@angular/core": ">=14.0.0" - } - }, - "node_modules/angular-oauth2-oidc-jwks": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/angular-oauth2-oidc-jwks/-/angular-oauth2-oidc-jwks-17.0.2.tgz", - "integrity": "sha512-zG0udq9VihQdCKfGjhUfrIg35TbxU34tGfOG/pddxKwJkodMAFI34cNoZoVyZ53hPgeZSDPra2rYyixkH7bkKw==", - "license": "MIT", - "peer": true, - "dependencies": { - "jsrsasign": "^11.0.0", - "tslib": "^2.5.2" - } - }, - "node_modules/apollo-angular": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/apollo-angular/-/apollo-angular-8.0.2.tgz", - "integrity": "sha512-UbfK4aTttN0u6IFfL0IHObG57Ih28CKLx32nufMdaapFpThnHFCpJ6nDLL3Eq+zN+qOiF9mBBhfs0EOAMwKBvg==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "@angular/core": "^17.0.0 || ^18.0.0 || ^19.0.0", - "@apollo/client": "^3.10.0", - "graphql": "^15.0.0 || ^16.0.0", - "rxjs": "^6.0.0 || ^7.0.0" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "license": "MIT", - "peer": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT", - "peer": true - }, - "node_modules/backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==", - "license": "MIT", - "peer": true - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT", - "peer": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "peer": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", - "license": "MIT", - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/code-block-writer": { - "version": "13.0.3", - "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", - "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", - "license": "MIT", - "peer": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "peer": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "license": "MIT", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT", - "peer": true - }, - "node_modules/cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "license": "MIT", - "peer": true - }, - "node_modules/cropperjs": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.6.2.tgz", - "integrity": "sha512-nhymn9GdnV3CqiEHJVai54TULFAE3VshJTXSqSJKa8yXAKyBKDWdhHarnlIPrshJ0WMFTGuFvG02YjLXfPiuOA==", - "license": "MIT", - "peer": true - }, - "node_modules/d": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", - "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", - "license": "ISC", - "peer": true, - "dependencies": { - "es5-ext": "^0.10.64", - "type": "^2.7.2" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/date-fns": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", - "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/kossnocorp" - } - }, - "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", - "peer": true, - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "license": "ISC", - "peer": true, - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/editorjs-html": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/editorjs-html/-/editorjs-html-3.4.3.tgz", - "integrity": "sha512-HMqQ3BCE98uhSpJsbfH0c3CoMctUMCHlap2Eq/7/VjaHas+g3IJqyf+ERtMByoQCzvcW22ISYaZEeE7rGkd8Xg==", - "license": "MIT" - }, - "node_modules/editorjs-paragraph-with-alignment": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/editorjs-paragraph-with-alignment/-/editorjs-paragraph-with-alignment-3.0.0.tgz", - "integrity": "sha512-vSjjB/KUECEBxYqbj9yn1L799L14n0uoKrvk5qfaAokIHB8mYg5hZ8mOTtoS2cJu+xE3QZ/jmHY/Fh0EJeM8ZQ==", - "license": "MIT" - }, - "node_modules/editorjs-text-alignment-blocktune": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/editorjs-text-alignment-blocktune/-/editorjs-text-alignment-blocktune-1.0.3.tgz", - "integrity": "sha512-DAJ2LJP+WjETvU4lVOJCqZ1kZkKHp0GkujkqZgza9DRv7bO46m1M/s2d5Ba5hPFdmqk1vA/ci++MQXgWD7mWYw==", - "license": "MIT" - }, - "node_modules/editorjs-text-color-plugin": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/editorjs-text-color-plugin/-/editorjs-text-color-plugin-1.13.1.tgz", - "integrity": "sha512-iCK274omDhoU7/zIFwV1fP5ydgfObYXSGV+q2zlFq3D4JDnvtn0KP+6NPM1A4dDlxTczpywPByRKIwmf7z4CIg==", - "license": "MIT" - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "peer": true, - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es5-ext": { - "version": "0.10.64", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", - "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", - "hasInstallScript": true, - "license": "ISC", - "peer": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "esniff": "^2.0.1", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "license": "MIT", - "peer": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", - "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", - "license": "ISC", - "peer": true, - "dependencies": { - "d": "^1.0.2", - "ext": "^1.7.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/esniff": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", - "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", - "license": "ISC", - "peer": true, - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "event-emitter": "^0.3.5", - "type": "^2.7.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "license": "MIT", - "peer": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", - "license": "MIT", - "peer": true - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "license": "ISC", - "peer": true, - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "license": "MIT", - "peer": true - }, - "node_modules/fastq": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz", - "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", - "license": "ISC", - "peer": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "peer": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", - "license": "MIT", - "peer": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/formidable": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.2.tgz", - "integrity": "sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg==", - "license": "MIT", - "peer": true, - "dependencies": { - "dezalgo": "^1.0.4", - "hexoid": "^2.0.0", - "once": "^1.4.0" - }, - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "function-bind": "^1.1.2", - "get-proto": "^1.0.0", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "peer": true, - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "peer": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graphql": { - "version": "16.10.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.10.0.tgz", - "integrity": "sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" - } - }, - "node_modules/graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hexoid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-2.0.0.tgz", - "integrity": "sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/iterall": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", - "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==", - "license": "MIT", - "peer": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "license": "MIT", - "peer": true - }, - "node_modules/jsrsasign": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-11.1.0.tgz", - "integrity": "sha512-Ov74K9GihaK9/9WncTe1mPmvrO7Py665TUfUKvraXBpu+xcTWitrtuOwcjf4KMU9maPaYn0OuaWy0HOzy/GBXg==", - "license": "MIT", - "peer": true, - "funding": { - "url": "https://github.com/kjur/jsrsasign#donations" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "license": "MIT", - "peer": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "license": "MIT", - "peer": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "peer": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimatch-browser": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimatch-browser/-/minimatch-browser-1.0.0.tgz", - "integrity": "sha512-xET0irkHzT47f9h16H6ZVZw9lFZ33pK5DD5Pt0Gt/PcXAlevXjCz8zzM859gIWEDcD2yjKa31dGfwlKgk/12NQ==", - "license": "ISC", - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimatch/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT", - "peer": true - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "license": "ISC", - "peer": true - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "peer": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optimism": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.18.1.tgz", - "integrity": "sha512-mLXNwWPa9dgFyDqkNi54sjDyNJ9/fTI6WGBLgnXku1vdKY/jovHfZT5r+aiVeFFLOz+foPNOm5YJ4mqgld2GBQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "@wry/caches": "^1.0.0", - "@wry/context": "^0.7.0", - "@wry/trie": "^0.5.0", - "tslib": "^2.3.0" - } - }, - "node_modules/parse5": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", - "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "entities": "^4.5.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "license": "MIT", - "peer": true - }, - "node_modules/pdfjs-dist": { - "version": "4.10.38", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-4.10.38.tgz", - "integrity": "sha512-/Y3fcFrXEAsMjJXeL9J8+ZG9U01LbuWaYypvDW2ycW1jL269L3js3DVBjDJ0Up9Np1uqDXsDrRihHANhZOlwdQ==", - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=20" - }, - "optionalDependencies": { - "@napi-rs/canvas": "^0.1.65" - } - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "license": "MIT", - "peer": true, - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT", - "peer": true - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "license": "MIT", - "peer": true - }, - "node_modules/rehackt": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/rehackt/-/rehackt-0.1.0.tgz", - "integrity": "sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==", - "license": "MIT", - "peer": true, - "peerDependencies": { - "@types/react": "*", - "react": "*" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react": { - "optional": true - } - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "license": "MIT", - "peer": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/subscriptions-transport-ws": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz", - "integrity": "sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ==", - "deprecated": "The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md", - "license": "MIT", - "peer": true, - "dependencies": { - "backo2": "^1.0.2", - "eventemitter3": "^3.1.0", - "iterall": "^1.2.1", - "symbol-observable": "^1.0.4", - "ws": "^5.2.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependencies": { - "graphql": "^15.7.2 || ^16.0.0" - } - }, - "node_modules/subscriptions-transport-ws/node_modules/symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/superagent": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-9.0.2.tgz", - "integrity": "sha512-xuW7dzkUpcJq7QnhOsnNUgtYp3xRwpt2F7abdRYIpCsAt0hhUqia0EdxyXZQQpNmGtsCzYHryaKSV3q3GJnq7w==", - "license": "MIT", - "peer": true, - "dependencies": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.4", - "debug": "^4.3.4", - "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.0", - "formidable": "^3.5.1", - "methods": "^1.1.2", - "mime": "2.6.0", - "qs": "^6.11.0" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-invariant": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.10.3.tgz", - "integrity": "sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-morph": { - "version": "25.0.0", - "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-25.0.0.tgz", - "integrity": "sha512-ERPTUVO5qF8cEGJgAejGOsCVlbk8d0SDyiJsucKQT5XgqoZslv0Qml+gnui6Yy6o+uQqw5SestyW2HvlVtT/Sg==", - "license": "MIT", - "peer": true, - "dependencies": { - "@ts-morph/common": "~0.26.0", - "code-block-writer": "^13.0.3" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "peer": true - }, - "node_modules/type": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", - "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", - "license": "ISC", - "peer": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC", - "peer": true - }, - "node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/zen-observable": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==", - "license": "MIT", - "peer": true - }, - "node_modules/zen-observable-ts": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz", - "integrity": "sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==", - "license": "MIT", - "peer": true, - "dependencies": { - "zen-observable": "0.8.15" - } - }, - "node_modules/zone.js": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.0.tgz", - "integrity": "sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==", - "license": "MIT", - "peer": true - } - } -} diff --git a/lib/process-services-cloud/package.json b/lib/process-services-cloud/package.json index f43af1389a..51e8270e3e 100644 --- a/lib/process-services-cloud/package.json +++ b/lib/process-services-cloud/package.json @@ -42,7 +42,7 @@ "@apollo/client": ">=3.7.2", "@ngx-translate/core": ">=14.0.0", "apollo-angular": ">=4.0.1", - "subscriptions-transport-ws": "^0.11.0" + "subscriptions-transport-ws": ">=0.11.0" }, "keywords": [ "process-services-cloud", diff --git a/lib/process-services-cloud/project.json b/lib/process-services-cloud/project.json index e3b97ae361..9ee3b35038 100644 --- a/lib/process-services-cloud/project.json +++ b/lib/process-services-cloud/project.json @@ -33,7 +33,7 @@ } }, "lint": { - "executor": "@nrwl/linter:eslint", + "executor": "@nx/eslint:lint", "options": { "lintFilePatterns": ["lib/process-services-cloud/**/*.ts", "lib/process-services-cloud/**/*.html"] } @@ -45,10 +45,7 @@ "browserTarget": "process-services-cloud:storybook", "configDir": "lib/process-services-cloud/.storybook", "compodoc": false, - "styles": [ - "node_modules/cropperjs/dist/cropper.min.css", - "node_modules/pdfjs-dist/web/pdf_viewer.css" - ], + "styles": ["node_modules/cropperjs/dist/cropper.min.css", "node_modules/pdfjs-dist/web/pdf_viewer.css"], "stylePreprocessorOptions": { "includePaths": ["lib", "lib/core/src/lib"] } @@ -66,10 +63,7 @@ "configDir": "lib/process-services-cloud/.storybook", "outputDir": "dist/storybook/process-services-cloud", "compodoc": false, - "styles": [ - "node_modules/cropperjs/dist/cropper.min.css", - "node_modules/pdfjs-dist/web/pdf_viewer.css" - ], + "styles": ["node_modules/cropperjs/dist/cropper.min.css", "node_modules/pdfjs-dist/web/pdf_viewer.css"], "stylePreprocessorOptions": { "includePaths": ["lib", "lib/core/src/lib"] } diff --git a/lib/process-services-cloud/src/lib/app/components/app-list-cloud/app-list-cloud.component.html b/lib/process-services-cloud/src/lib/app/components/app-list-cloud/app-list-cloud.component.html index 7c08f82b4d..ded3c2eefc 100644 --- a/lib/process-services-cloud/src/lib/app/components/app-list-cloud/app-list-cloud.component.html +++ b/lib/process-services-cloud/src/lib/app/components/app-list-cloud/app-list-cloud.component.html @@ -23,8 +23,7 @@
- + class="adf-custom-empty-template" /> ' + template: '' }) export class FormCustomOutcomesComponent {} diff --git a/lib/process-services-cloud/src/lib/form/components/form-cloud.component.html b/lib/process-services-cloud/src/lib/form/components/form-cloud.component.html index 8b3a76d0e4..9dc7ed70a1 100644 --- a/lib/process-services-cloud/src/lib/form/components/form-cloud.component.html +++ b/lib/process-services-cloud/src/lib/form/components/form-cloud.component.html @@ -1,6 +1,5 @@
- - +
- +