From a4f60ebd3873690a30043608f3a612c2287e642d Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Fri, 24 Jul 2026 11:14:34 +0900 Subject: [PATCH 1/2] Apollo Client v4 #11733 Going forward the main differences in usage are: ```diff apollo .query({query: myQuery}) .pipe( + ignoreErrors(), map(result => result.data.myQuery), ); ``` ```diff apollo .watchQuery({ query: myQuery, + notifyOnNetworkStatusChange: false, }) .valueChanges .pipe( + onlyCompleteData(), map(result => result.data.myQuery), ); ``` Alos, Natural has a new `createErrorLink()`, with related tests moved from Epicerio. To make it reasonnable a feature-complete `ErrorService` now also lives in Natural, instead of in each projects with very minor differences. --- .../comments/services/comment.queries.ts | 2 +- .../comments/services/comment.resolver.ts | 2 +- .../admin/events/services/event.queries.ts | 2 +- .../admin/events/services/event.resolver.ts | 2 +- .../services/facilitator-document.resolver.ts | 2 +- .../services/facilitator-documents.queries.ts | 2 +- .../app/admin/files/services/files.queries.ts | 2 +- .../app/admin/newses/services/news.queries.ts | 2 +- .../admin/newses/services/news.resolver.ts | 2 +- .../order/services/order-line.resolver.ts | 2 +- .../order/services/order-lines.queries.ts | 2 +- .../app/admin/order/services/order.queries.ts | 2 +- .../admin/order/services/order.resolver.ts | 2 +- .../app/admin/order/services/order.service.ts | 2 +- .../services/product-tag-by-name.resolver.ts | 2 +- .../services/product-tag.queries.ts | 2 +- .../products/services/product.queries.ts | 2 +- .../products/services/product.resolver.ts | 2 +- .../sessions/services/session.queries.ts | 2 +- .../sessions/services/session.resolver.ts | 2 +- .../app/admin/users/services/user.queries.ts | 2 +- .../app/admin/users/services/user.resolver.ts | 2 +- .../app/admin/users/services/user.service.ts | 14 +- .../users/services/userByToken.resolver.ts | 2 +- .../admin/users/services/viewer.resolver.ts | 2 +- .../app/admin/users/users/users.component.ts | 2 + .../services/configuration.queries.ts | 2 +- .../services/configuration.service.ts | 8 +- .../subscriptions/subscription.queries.ts | 2 +- .../components/purchases/purchase.queries.ts | 2 +- .../components/address/country.queries.ts | 2 +- .../components/error/error.component.ts | 5 +- .../shared/components/error/error.service.ts | 42 ------ .../shared/config/apollo-options.provider.ts | 82 +++------- client/app/shared/config/apollo.d.ts | 26 ++++ client/app/shared/queries/fragments.ts | 2 +- .../shared/services/permissions.queries.ts | 2 +- .../shared/services/permissions.service.ts | 8 +- .../app/shared/testing/MockApolloProvider.ts | 4 +- e2e/utils.ts | 4 +- package.json | 8 +- pnpm-lock.yaml | 142 +++++------------- 42 files changed, 145 insertions(+), 260 deletions(-) delete mode 100644 client/app/shared/components/error/error.service.ts create mode 100644 client/app/shared/config/apollo.d.ts diff --git a/client/app/admin/comments/services/comment.queries.ts b/client/app/admin/comments/services/comment.queries.ts index 44d641a0..739b3fdd 100644 --- a/client/app/admin/comments/services/comment.queries.ts +++ b/client/app/admin/comments/services/comment.queries.ts @@ -1,4 +1,4 @@ -import {gql} from '@apollo/client/core'; +import {gql} from '@apollo/client'; import {permissionsFragment, userMetaFragment} from '../../../shared/queries/fragments'; const commentMetaFragment = gql` diff --git a/client/app/admin/comments/services/comment.resolver.ts b/client/app/admin/comments/services/comment.resolver.ts index 1091260e..94b60097 100644 --- a/client/app/admin/comments/services/comment.resolver.ts +++ b/client/app/admin/comments/services/comment.resolver.ts @@ -1,7 +1,7 @@ import {inject} from '@angular/core'; import {ActivatedRouteSnapshot} from '@angular/router'; import {last} from 'rxjs'; -import {ErrorService} from '../../../shared/components/error/error.service'; +import {ErrorService} from '@ecodev/natural'; import {CommentService} from './comment.service'; /** diff --git a/client/app/admin/events/services/event.queries.ts b/client/app/admin/events/services/event.queries.ts index 4bb8c2dc..4af39ac6 100644 --- a/client/app/admin/events/services/event.queries.ts +++ b/client/app/admin/events/services/event.queries.ts @@ -1,4 +1,4 @@ -import {gql} from '@apollo/client/core'; +import {gql} from '@apollo/client'; import {userMetaFragment} from '../../../shared/queries/fragments'; export const eventsQuery = gql` diff --git a/client/app/admin/events/services/event.resolver.ts b/client/app/admin/events/services/event.resolver.ts index 63a342a9..eea85837 100644 --- a/client/app/admin/events/services/event.resolver.ts +++ b/client/app/admin/events/services/event.resolver.ts @@ -1,7 +1,7 @@ import {inject} from '@angular/core'; import {ActivatedRouteSnapshot} from '@angular/router'; import {last} from 'rxjs'; -import {ErrorService} from '../../../shared/components/error/error.service'; +import {ErrorService} from '@ecodev/natural'; import {EventService} from './event.service'; /** diff --git a/client/app/admin/facilitator-documents/services/facilitator-document.resolver.ts b/client/app/admin/facilitator-documents/services/facilitator-document.resolver.ts index 08b5c8c9..26313348 100644 --- a/client/app/admin/facilitator-documents/services/facilitator-document.resolver.ts +++ b/client/app/admin/facilitator-documents/services/facilitator-document.resolver.ts @@ -1,6 +1,6 @@ import {inject} from '@angular/core'; import {ActivatedRouteSnapshot} from '@angular/router'; -import {ErrorService} from '../../../shared/components/error/error.service'; +import {ErrorService} from '@ecodev/natural'; import {FacilitatorDocumentsService} from './facilitator-documents.service'; /** diff --git a/client/app/admin/facilitator-documents/services/facilitator-documents.queries.ts b/client/app/admin/facilitator-documents/services/facilitator-documents.queries.ts index 0a11bd55..339dc2ef 100644 --- a/client/app/admin/facilitator-documents/services/facilitator-documents.queries.ts +++ b/client/app/admin/facilitator-documents/services/facilitator-documents.queries.ts @@ -1,4 +1,4 @@ -import {gql} from '@apollo/client/core'; +import {gql} from '@apollo/client'; import {permissionsFragment, userMetaFragment} from '../../../shared/queries/fragments'; export const facilitatorDocumentMetaFragment = gql` diff --git a/client/app/admin/files/services/files.queries.ts b/client/app/admin/files/services/files.queries.ts index 816267cc..a19db1aa 100644 --- a/client/app/admin/files/services/files.queries.ts +++ b/client/app/admin/files/services/files.queries.ts @@ -1,4 +1,4 @@ -import {gql} from '@apollo/client/core'; +import {gql} from '@apollo/client'; import {userMetaFragment} from '../../../shared/queries/fragments'; export const createFileMutation = gql` diff --git a/client/app/admin/newses/services/news.queries.ts b/client/app/admin/newses/services/news.queries.ts index ad079a35..a5ffbbac 100644 --- a/client/app/admin/newses/services/news.queries.ts +++ b/client/app/admin/newses/services/news.queries.ts @@ -1,4 +1,4 @@ -import {gql} from '@apollo/client/core'; +import {gql} from '@apollo/client'; import {userMetaFragment} from '../../../shared/queries/fragments'; export const newsesQuery = gql` diff --git a/client/app/admin/newses/services/news.resolver.ts b/client/app/admin/newses/services/news.resolver.ts index a2404992..7f982d39 100644 --- a/client/app/admin/newses/services/news.resolver.ts +++ b/client/app/admin/newses/services/news.resolver.ts @@ -1,7 +1,7 @@ import {inject} from '@angular/core'; import {ActivatedRouteSnapshot} from '@angular/router'; import {last} from 'rxjs'; -import {ErrorService} from '../../../shared/components/error/error.service'; +import {ErrorService} from '@ecodev/natural'; import {NewsService} from './news.service'; /** diff --git a/client/app/admin/order/services/order-line.resolver.ts b/client/app/admin/order/services/order-line.resolver.ts index a71460f4..97d4e6e9 100644 --- a/client/app/admin/order/services/order-line.resolver.ts +++ b/client/app/admin/order/services/order-line.resolver.ts @@ -1,7 +1,7 @@ import {inject} from '@angular/core'; import {ActivatedRouteSnapshot} from '@angular/router'; import {last} from 'rxjs'; -import {ErrorService} from '../../../shared/components/error/error.service'; +import {ErrorService} from '@ecodev/natural'; import {OrderLineService} from './order-lines.service'; /** diff --git a/client/app/admin/order/services/order-lines.queries.ts b/client/app/admin/order/services/order-lines.queries.ts index 7668f7c1..d294f390 100644 --- a/client/app/admin/order/services/order-lines.queries.ts +++ b/client/app/admin/order/services/order-lines.queries.ts @@ -1,4 +1,4 @@ -import {gql} from '@apollo/client/core'; +import {gql} from '@apollo/client'; import {permissionsFragment, userMetaFragment} from '../../../shared/queries/fragments'; export const orderLineMetaFragment = gql` diff --git a/client/app/admin/order/services/order.queries.ts b/client/app/admin/order/services/order.queries.ts index b05e88fc..733277f2 100644 --- a/client/app/admin/order/services/order.queries.ts +++ b/client/app/admin/order/services/order.queries.ts @@ -1,4 +1,4 @@ -import {gql} from '@apollo/client/core'; +import {gql} from '@apollo/client'; import {permissionsFragment, userMetaFragment} from '../../../shared/queries/fragments'; export const orderMetaFragment = gql` diff --git a/client/app/admin/order/services/order.resolver.ts b/client/app/admin/order/services/order.resolver.ts index e17497aa..cab44f4f 100644 --- a/client/app/admin/order/services/order.resolver.ts +++ b/client/app/admin/order/services/order.resolver.ts @@ -1,7 +1,7 @@ import {inject} from '@angular/core'; import {ActivatedRouteSnapshot} from '@angular/router'; import {last} from 'rxjs'; -import {ErrorService} from '../../../shared/components/error/error.service'; +import {ErrorService} from '@ecodev/natural'; import {OrderService} from './order.service'; /** diff --git a/client/app/admin/order/services/order.service.ts b/client/app/admin/order/services/order.service.ts index e37554f7..85b4b774 100644 --- a/client/app/admin/order/services/order.service.ts +++ b/client/app/admin/order/services/order.service.ts @@ -55,7 +55,7 @@ export class OrderService extends NaturalAbstractModelService< }) .pipe( map(() => { - this.apollo.client.reFetchObservableQueries(); + this.apollo.client.refetchObservableQueries(); return; }), diff --git a/client/app/admin/product-tags/services/product-tag-by-name.resolver.ts b/client/app/admin/product-tags/services/product-tag-by-name.resolver.ts index 0c9f9571..09a391d8 100644 --- a/client/app/admin/product-tags/services/product-tag-by-name.resolver.ts +++ b/client/app/admin/product-tags/services/product-tag-by-name.resolver.ts @@ -1,7 +1,7 @@ import {inject} from '@angular/core'; import {ActivatedRouteSnapshot} from '@angular/router'; import {last, Observable} from 'rxjs'; -import {ErrorService} from '../../../shared/components/error/error.service'; +import {ErrorService} from '@ecodev/natural'; import {ProductTagsQuery} from '../../../shared/generated-types'; import {ProductTagService} from './product-tag.service'; diff --git a/client/app/admin/product-tags/services/product-tag.queries.ts b/client/app/admin/product-tags/services/product-tag.queries.ts index aa42881a..d57aa3ba 100644 --- a/client/app/admin/product-tags/services/product-tag.queries.ts +++ b/client/app/admin/product-tags/services/product-tag.queries.ts @@ -1,4 +1,4 @@ -import {gql} from '@apollo/client/core'; +import {gql} from '@apollo/client'; import {permissionsFragment, userMetaFragment} from '../../../shared/queries/fragments'; export const productTagsQuery = gql` diff --git a/client/app/admin/products/services/product.queries.ts b/client/app/admin/products/services/product.queries.ts index 71e46336..9abb20a9 100644 --- a/client/app/admin/products/services/product.queries.ts +++ b/client/app/admin/products/services/product.queries.ts @@ -1,4 +1,4 @@ -import {gql} from '@apollo/client/core'; +import {gql} from '@apollo/client'; import {permissionsFragment, userMetaFragment} from '../../../shared/queries/fragments'; export const productMetaFragment = gql` diff --git a/client/app/admin/products/services/product.resolver.ts b/client/app/admin/products/services/product.resolver.ts index dfc3fac4..d54ce0fb 100644 --- a/client/app/admin/products/services/product.resolver.ts +++ b/client/app/admin/products/services/product.resolver.ts @@ -1,7 +1,7 @@ import {inject} from '@angular/core'; import {ActivatedRouteSnapshot} from '@angular/router'; import {last} from 'rxjs'; -import {ErrorService} from '../../../shared/components/error/error.service'; +import {ErrorService} from '@ecodev/natural'; import {ProductService} from './product.service'; /** diff --git a/client/app/admin/sessions/services/session.queries.ts b/client/app/admin/sessions/services/session.queries.ts index f88b5747..5852c0d4 100644 --- a/client/app/admin/sessions/services/session.queries.ts +++ b/client/app/admin/sessions/services/session.queries.ts @@ -1,4 +1,4 @@ -import {gql} from '@apollo/client/core'; +import {gql} from '@apollo/client'; import {permissionsFragment, userMetaFragment} from '../../../shared/queries/fragments'; export const sessionMetaFragment = gql` diff --git a/client/app/admin/sessions/services/session.resolver.ts b/client/app/admin/sessions/services/session.resolver.ts index ee9b6c45..e4567f6a 100644 --- a/client/app/admin/sessions/services/session.resolver.ts +++ b/client/app/admin/sessions/services/session.resolver.ts @@ -1,7 +1,7 @@ import {inject} from '@angular/core'; import {ActivatedRouteSnapshot} from '@angular/router'; import {last} from 'rxjs'; -import {ErrorService} from '../../../shared/components/error/error.service'; +import {ErrorService} from '@ecodev/natural'; import {SessionService} from './session.service'; /** diff --git a/client/app/admin/users/services/user.queries.ts b/client/app/admin/users/services/user.queries.ts index e82326a8..1624d0cc 100644 --- a/client/app/admin/users/services/user.queries.ts +++ b/client/app/admin/users/services/user.queries.ts @@ -1,4 +1,4 @@ -import {gql} from '@apollo/client/core'; +import {gql} from '@apollo/client'; import {permissionsFragment, userMetaFragment} from '../../../shared/queries/fragments'; // Fragment for single display usage. Too much data for listings, and unused fields for mutations. diff --git a/client/app/admin/users/services/user.resolver.ts b/client/app/admin/users/services/user.resolver.ts index 933e1c5f..f6149c6b 100644 --- a/client/app/admin/users/services/user.resolver.ts +++ b/client/app/admin/users/services/user.resolver.ts @@ -1,7 +1,7 @@ import {inject} from '@angular/core'; import {ActivatedRouteSnapshot} from '@angular/router'; import {last} from 'rxjs'; -import {ErrorService} from '../../../shared/components/error/error.service'; +import {ErrorService} from '@ecodev/natural'; import {UserService} from './user.service'; export function resolveUser(route: ActivatedRouteSnapshot): ReturnType { diff --git a/client/app/admin/users/services/user.service.ts b/client/app/admin/users/services/user.service.ts index a93711dd..a9738e1f 100644 --- a/client/app/admin/users/services/user.service.ts +++ b/client/app/admin/users/services/user.service.ts @@ -6,6 +6,7 @@ import { deliverableEmail, FormAsyncValidators, FormValidators, + ignoreErrors, LOCAL_STORAGE, NaturalAbstractModelService, unique, @@ -19,12 +20,14 @@ import { CreateUser, CreateUserVariables, CurrentUserForProfileQuery, + CurrentUserForProfileQueryVariables, DeleteUsers, DeleteUsersVariables, Login, LoginVariables, Logout, RequestMembershipEnd, + RequestMembershipEndVariables, RequestPasswordReset, RequestPasswordResetVariables, SubscribeNewsletter, @@ -223,7 +226,7 @@ export class UserService // Inject the freshly logged in user as the current user into Apollo data store const data = {viewer: viewer}; - this.apollo.client.writeQuery({ + this.apollo.client.writeQuery({ query: currentUserForProfileQuery, data, }); @@ -286,6 +289,7 @@ export class UserService query: currentUserForProfileQuery, }) .pipe( + ignoreErrors(), map(result => { this.viewer.next(result.data.viewer); return result.data.viewer; @@ -302,6 +306,7 @@ export class UserService }, }) .pipe( + ignoreErrors(), map(result => { return result.data.userRolesAvailable; }), @@ -346,7 +351,10 @@ export class UserService token: token, }, }) - .pipe(map(result => result.data.userByToken)); + .pipe( + ignoreErrors(), + map(result => result.data.userByToken), + ); } public requestPasswordReset(email: string): Observable { @@ -374,7 +382,7 @@ export class UserService `; return this.apollo - .mutate({ + .mutate({ mutation: mutation, }) .pipe(map(result => result.data!.requestMembershipEnd)); diff --git a/client/app/admin/users/services/userByToken.resolver.ts b/client/app/admin/users/services/userByToken.resolver.ts index ded6b70d..95051a28 100644 --- a/client/app/admin/users/services/userByToken.resolver.ts +++ b/client/app/admin/users/services/userByToken.resolver.ts @@ -1,7 +1,7 @@ import {inject} from '@angular/core'; import {ActivatedRouteSnapshot} from '@angular/router'; import {last, Observable} from 'rxjs'; -import {ErrorService} from '../../../shared/components/error/error.service'; +import {ErrorService} from '@ecodev/natural'; import {UserByTokenResolve} from '../user'; import {UserService} from './user.service'; diff --git a/client/app/admin/users/services/viewer.resolver.ts b/client/app/admin/users/services/viewer.resolver.ts index 5946fc48..80d96470 100644 --- a/client/app/admin/users/services/viewer.resolver.ts +++ b/client/app/admin/users/services/viewer.resolver.ts @@ -1,6 +1,6 @@ import {inject} from '@angular/core'; import {last, Observable, switchMap} from 'rxjs'; -import {ErrorService} from '../../../shared/components/error/error.service'; +import {ErrorService} from '@ecodev/natural'; import {CurrentUserForProfileQuery} from '../../../shared/generated-types'; import {UserService} from './user.service'; diff --git a/client/app/admin/users/users/users.component.ts b/client/app/admin/users/users/users.component.ts index 4e902370..0115711a 100644 --- a/client/app/admin/users/users/users.component.ts +++ b/client/app/admin/users/users/users.component.ts @@ -5,6 +5,7 @@ import { AvailableColumn, Button, copyToClipboard, + ignoreErrors, NaturalAbstractList, NaturalAvatarComponent, NaturalColumnsPickerComponent, @@ -134,6 +135,7 @@ export class UsersComponent extends NaturalAbstractList implements query: emailUsersQuery, variables: qvm.variables.value, }) + .pipe(ignoreErrors()) .subscribe(result => { this.usersEmail = result.data.users.items.map(u => u.email).join(' ;,'); // all separators for different mailboxes this.usersEmailAndName = result.data.users.items diff --git a/client/app/configuration/services/configuration.queries.ts b/client/app/configuration/services/configuration.queries.ts index 670a8f73..93d22de5 100644 --- a/client/app/configuration/services/configuration.queries.ts +++ b/client/app/configuration/services/configuration.queries.ts @@ -1,4 +1,4 @@ -import {gql} from '@apollo/client/core'; +import {gql} from '@apollo/client'; export const configurationQuery = gql` query ConfigurationQuery($key: String!) { diff --git a/client/app/configuration/services/configuration.service.ts b/client/app/configuration/services/configuration.service.ts index 228cd5be..17b9be8b 100644 --- a/client/app/configuration/services/configuration.service.ts +++ b/client/app/configuration/services/configuration.service.ts @@ -1,8 +1,7 @@ -import {Apollo} from 'apollo-angular'; -import {NetworkStatus} from '@apollo/client/core'; +import {Apollo, onlyCompleteData} from 'apollo-angular'; +import {NetworkStatus} from '@apollo/client'; import {inject, Injectable} from '@angular/core'; import {Observable, Subject} from 'rxjs'; -import {filter} from 'rxjs/operators'; import { ConfigurationQuery, ConfigurationQueryVariables, @@ -24,9 +23,10 @@ export class ConfigurationService { query: configurationQuery, variables: {key}, fetchPolicy: 'cache-and-network', + notifyOnNetworkStatusChange: false, }); - const subscription = queryRef.valueChanges.pipe(filter(r => !!r.data)).subscribe(result => { + const subscription = queryRef.valueChanges.pipe(onlyCompleteData()).subscribe(result => { const data = result.data.configuration; resultObservable.next(data); if (result.networkStatus === NetworkStatus.ready) { diff --git a/client/app/front-office/modules/shop/components/subscriptions/subscription.queries.ts b/client/app/front-office/modules/shop/components/subscriptions/subscription.queries.ts index 94ef3c8b..8217511a 100644 --- a/client/app/front-office/modules/shop/components/subscriptions/subscription.queries.ts +++ b/client/app/front-office/modules/shop/components/subscriptions/subscription.queries.ts @@ -1,4 +1,4 @@ -import {gql} from '@apollo/client/core'; +import {gql} from '@apollo/client'; import {permissionsFragment, userMetaFragment} from '../../../../../shared/queries/fragments'; export const subscriptionMetaFragment = gql` diff --git a/client/app/profile/components/purchases/purchase.queries.ts b/client/app/profile/components/purchases/purchase.queries.ts index 33bcc4be..72cd911f 100644 --- a/client/app/profile/components/purchases/purchase.queries.ts +++ b/client/app/profile/components/purchases/purchase.queries.ts @@ -1,4 +1,4 @@ -import {gql} from '@apollo/client/core'; +import {gql} from '@apollo/client'; export const purchasesQuery = gql` query PurchasesQuery($filter: ProductFilter, $sorting: [ProductSorting!], $pagination: PaginationInput) { diff --git a/client/app/shared/components/address/country.queries.ts b/client/app/shared/components/address/country.queries.ts index ad7848f1..a305f705 100644 --- a/client/app/shared/components/address/country.queries.ts +++ b/client/app/shared/components/address/country.queries.ts @@ -1,4 +1,4 @@ -import {gql} from '@apollo/client/core'; +import {gql} from '@apollo/client'; export const countriesQuery = gql` query CountriesQuery($filter: CountryFilter, $pagination: PaginationInput) { diff --git a/client/app/shared/components/error/error.component.ts b/client/app/shared/components/error/error.component.ts index 107fed05..521a4315 100644 --- a/client/app/shared/components/error/error.component.ts +++ b/client/app/shared/components/error/error.component.ts @@ -1,9 +1,10 @@ import {Component, inject} from '@angular/core'; -import {ErrorService} from './error.service'; +import {ErrorService} from '@ecodev/natural'; import {ActivatedRoute, RouterLink} from '@angular/router'; import {MatButton} from '@angular/material/button'; import {NaturalIconDirective} from '@ecodev/natural'; import {MatIcon} from '@angular/material/icon'; +import {GraphQLFormattedError} from 'graphql'; @Component({ selector: 'app-error', @@ -12,7 +13,7 @@ import {MatIcon} from '@angular/material/icon'; styleUrl: './error.component.scss', }) export class ErrorComponent { - protected readonly error: Error | null; + protected readonly error: Error | GraphQLFormattedError | null; public constructor() { const errorService = inject(ErrorService); diff --git a/client/app/shared/components/error/error.service.ts b/client/app/shared/components/error/error.service.ts deleted file mode 100644 index 40694b7a..00000000 --- a/client/app/shared/components/error/error.service.ts +++ /dev/null @@ -1,42 +0,0 @@ -import {inject, Injectable} from '@angular/core'; -import {Router} from '@angular/router'; -import {Observable, throwError} from 'rxjs'; -import {catchError} from 'rxjs/operators'; - -/** - * This service for storing the last error and redirect to error page conveniently - */ -@Injectable({ - providedIn: 'root', -}) -export class ErrorService { - private readonly router = inject(Router); - - private lastError: Error | null = null; - - /** - * Redirect to error page and display given error - */ - public redirectError(error: Error): void { - this.lastError = error; - - this.router.navigateByUrl('/error', {skipLocationChange: true}); - } - - public getLastError(): Error | null { - return this.lastError; - } - - /** - * Redirect to error page if the observable fails - */ - public redirectIfError(observable: Observable): Observable { - return observable.pipe( - catchError(error => { - this.redirectError(error); - - return throwError(() => error); - }), - ); - } -} diff --git a/client/app/shared/config/apollo-options.provider.ts b/client/app/shared/config/apollo-options.provider.ts index 1ced5b57..ad0532c4 100644 --- a/client/app/shared/config/apollo-options.provider.ts +++ b/client/app/shared/config/apollo-options.provider.ts @@ -1,83 +1,40 @@ import {HttpBatchLink, HttpLink} from 'apollo-angular/http'; +import {ApolloClient, ApolloLink, InMemoryCache} from '@apollo/client'; import { - ApolloClientOptions, - ApolloLink, - DefaultOptions, - InMemoryCache, - NormalizedCacheObject, -} from '@apollo/client/core'; -import {onError} from '@apollo/client/link/error'; -import {createHttpLink, NaturalAlertService, NetworkActivityService} from '@ecodev/natural'; + createErrorLink, + createHttpLink, + ErrorService, + NaturalAlertService, + NetworkActivityService, +} from '@ecodev/natural'; import {APOLLO_OPTIONS} from 'apollo-angular'; import {inject, PLATFORM_ID, Provider} from '@angular/core'; import {localConfig} from '../generated-config'; -import {HttpErrorResponse} from '@angular/common/http'; -export const apolloDefaultOptions: DefaultOptions = { +export const apolloDefaultOptions: ApolloClient.Options['defaultOptions'] = { query: { fetchPolicy: 'network-only', + errorPolicy: 'none', }, watchQuery: { fetchPolicy: 'cache-and-network', + errorPolicy: 'none', + returnPartialData: false, + notifyOnNetworkStatusChange: false, + }, + mutate: { + errorPolicy: 'none', }, }; -/** - * Create an Apollo link to show alert in case of error, and message if network is down - */ -function createErrorLink( - networkActivityService: NetworkActivityService, - alertService: NaturalAlertService, -): ApolloLink { - return onError(errorResponse => { - // Network errors are not caught by uploadInterceptor, so we need to decrease pending queries - // eslint-disable-next-line @typescript-eslint/no-deprecated - const networkError = errorResponse.networkError; - if (networkError) { - networkActivityService.decrease(); - - // Show the error message if is: - // - an 413 error from `graphql-upload` about `post_max_size` - // - a 500 error about max_execution_time - if ( - networkError instanceof HttpErrorResponse && - [413, 500].includes(networkError.status) && - typeof networkError.error?.message === 'string' - ) { - alertService.error(networkError.error.message, 5000); - networkActivityService.addErrors([networkError.error]); - } else { - alertService.error(`Une erreur est survenue sur le réseau`); - } - } - - // Show Graphql responses with errors to end-users (but do not decrease pending queries because it is done by uploadInterceptor) - // eslint-disable-next-line @typescript-eslint/no-deprecated - if (errorResponse.graphQLErrors) { - // eslint-disable-next-line @typescript-eslint/no-deprecated - errorResponse.graphQLErrors.forEach(error => { - if ('extensions' in error && error.extensions?.showSnack) { - // Show whatever server prepared for end-user, with a bit more time to read - alertService.error(error.message, 5000); - } else { - // Use a generic message for internal error not to frighten end-user too much - alertService.error('Une erreur est survenue du côté du serveur'); - } - }); - - // eslint-disable-next-line @typescript-eslint/no-deprecated - networkActivityService.addErrors(errorResponse.graphQLErrors); - } - }); -} - function createApolloLink( networkActivityService: NetworkActivityService, + errorService: ErrorService, alertService: NaturalAlertService, httpLink: HttpLink, httpBatchLink: HttpBatchLink, ): ApolloLink { - const errorLink = createErrorLink(networkActivityService, alertService); + const errorLink = createErrorLink(networkActivityService, errorService, alertService); return errorLink.concat( createHttpLink(httpLink, httpBatchLink, { @@ -86,13 +43,14 @@ function createApolloLink( ); } -function apolloOptionsFactory(): ApolloClientOptions { +function apolloOptionsFactory(): ApolloClient.Options { const networkActivityService = inject(NetworkActivityService); + const errorService = inject(ErrorService); const alertService = inject(NaturalAlertService); const httpLink = inject(HttpLink); const httpBatchLink = inject(HttpBatchLink); - const link = createApolloLink(networkActivityService, alertService, httpLink, httpBatchLink); + const link = createApolloLink(networkActivityService, errorService, alertService, httpLink, httpBatchLink); return { link: link, cache: new InMemoryCache(), diff --git a/client/app/shared/config/apollo.d.ts b/client/app/shared/config/apollo.d.ts new file mode 100644 index 00000000..ca4df275 --- /dev/null +++ b/client/app/shared/config/apollo.d.ts @@ -0,0 +1,26 @@ +/* eslint-disable @typescript-eslint/consistent-type-definitions */ +import '@apollo/client'; + +declare module '@apollo/client' { + namespace ApolloClient { + namespace DeclareDefaultOptions { + // Affects client.query() + interface Query { + fetchPolicy: 'network-only'; + errorPolicy: 'none'; + } + + // Affects client.watchQuery() + interface WatchQuery { + fetchPolicy: 'cache-and-network'; + errorPolicy: 'none'; + returnPartialData: false; + } + + // Affects client.mutate() + interface Mutate { + errorPolicy: 'none'; + } + } + } +} diff --git a/client/app/shared/queries/fragments.ts b/client/app/shared/queries/fragments.ts index 26c02cbd..7b0ed94c 100644 --- a/client/app/shared/queries/fragments.ts +++ b/client/app/shared/queries/fragments.ts @@ -1,4 +1,4 @@ -import {gql} from '@apollo/client/core'; +import {gql} from '@apollo/client'; export const userMetaFragment = gql` fragment UserMeta on User { diff --git a/client/app/shared/services/permissions.queries.ts b/client/app/shared/services/permissions.queries.ts index 77702055..2800252f 100644 --- a/client/app/shared/services/permissions.queries.ts +++ b/client/app/shared/services/permissions.queries.ts @@ -1,4 +1,4 @@ -import {gql} from '@apollo/client/core'; +import {gql} from '@apollo/client'; export const permissionsQuery = gql` query PermissionsQuery { diff --git a/client/app/shared/services/permissions.service.ts b/client/app/shared/services/permissions.service.ts index 2651ea55..9f30eb7b 100644 --- a/client/app/shared/services/permissions.service.ts +++ b/client/app/shared/services/permissions.service.ts @@ -1,8 +1,8 @@ import {Apollo} from 'apollo-angular'; import {inject, Injectable} from '@angular/core'; -import {Literal} from '@ecodev/natural'; +import {ignoreErrors, Literal} from '@ecodev/natural'; import {BehaviorSubject, Observable} from 'rxjs'; -import {concatMap, debounceTime, distinctUntilChanged, filter, map, shareReplay} from 'rxjs/operators'; +import {concatMap, debounceTime, distinctUntilChanged, map, shareReplay} from 'rxjs/operators'; import {PermissionsQuery} from '../generated-types'; import {isEqual} from 'es-toolkit'; import {permissionsQuery} from './permissions.queries'; @@ -39,9 +39,7 @@ export class PermissionsService { const fetch = this.currentContexts.pipe( distinctUntilChanged(isEqual), debounceTime(5), - concatMap(() => - apollo.query({query: permissionsQuery}).pipe(filter(result => !result.loading)), - ), + concatMap(() => apollo.query({query: permissionsQuery}).pipe(ignoreErrors())), shareReplay(), // new subscriber will get the most recent available permissions ); diff --git a/client/app/shared/testing/MockApolloProvider.ts b/client/app/shared/testing/MockApolloProvider.ts index 1e5839cd..9a99f9c6 100644 --- a/client/app/shared/testing/MockApolloProvider.ts +++ b/client/app/shared/testing/MockApolloProvider.ts @@ -1,5 +1,5 @@ import {Apollo} from 'apollo-angular'; -import {ApolloClient, InMemoryCache} from '@apollo/client/core'; +import {ApolloClient, InMemoryCache} from '@apollo/client'; import {SchemaLink} from '@apollo/client/link/schema'; import {inject, Injectable, NgZone} from '@angular/core'; import {buildClientSchema} from 'graphql'; @@ -23,7 +23,7 @@ class MockApollo extends Apollo { * This will create a fake ApolloClient who can responds to queries * against our real schema with random values */ - private createMockClient(): ApolloClient { + private createMockClient(): ApolloClient { const schema = buildClientSchema(introspectionResult.data as any); // Configure hardcoded mocked values on a type basis. diff --git a/e2e/utils.ts b/e2e/utils.ts index 3653cd1e..a5a666a8 100644 --- a/e2e/utils.ts +++ b/e2e/utils.ts @@ -1,7 +1,7 @@ import {execFileSync, execSync} from 'node:child_process'; import {DocumentNode} from '@apollo/client/core'; import {Page, Response} from '@playwright/test'; -import {getOperationName} from '@apollo/client/utilities'; +import {DocumentNode, getOperationAST} from 'graphql'; export function formControlName(name: string): string { return `input[formcontrolname="${name}"],mat-checkbox[formcontrolname="${name}"] input,natural-select[formcontrolname="${name}"]`; @@ -36,7 +36,7 @@ export function runSql(sql: string): void { * Wait for a network response to a request that contains at least the given GraphQL query */ export function graphqlRequest(document: DocumentNode): (response: Response) => boolean { - const operationName = getOperationName(document); + const operationName = getOperationAST(document)?.name?.value ?? ''; return response => { if (response.url().match(/\/graphql($|\?)/)) { diff --git a/package.json b/package.json index 5d153745..5735d713 100644 --- a/package.json +++ b/package.json @@ -25,15 +25,15 @@ "@angular/material": "^21.2.14", "@angular/platform-browser": "^21.2.17", "@angular/router": "^21.2.17", - "@apollo/client": "^3.13.7", + "@apollo/client": "^4.2.7", "@ecodev/fab-speed-dial": "^21.0.2", - "@ecodev/natural": "^70.5.2", - "@ecodev/natural-editor": "^70.5.2", + "@ecodev/natural": "^71.0.0", + "@ecodev/natural-editor": "^71.0.0", "@ecodev/natural-layout": "^2.0.2", "@graphql-codegen/cli": "^6.0.0", "@graphql-codegen/typescript-operations": "^5.0.0", "@graphql-tools/mock": "^9.0.25", - "apollo-angular": "^11.0.0", + "apollo-angular": "^14.1.0", "big.js": "^7.0.1", "es-toolkit": "^1.39.10", "graphql": "^16.11.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 763d1ff4..a3a62141 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,17 +36,17 @@ importers: specifier: ^21.2.17 version: 21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@apollo/client': - specifier: ^3.13.7 - version: 3.14.0(graphql-ws@6.0.7(graphql@16.12.0)(ws@8.19.0))(graphql@16.12.0) + specifier: ^4.2.7 + version: 4.2.7(graphql-ws@6.0.7(graphql@16.12.0)(ws@8.19.0))(graphql@16.12.0)(rxjs@7.8.2) '@ecodev/fab-speed-dial': specifier: ^21.0.2 version: 21.0.2(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/material@21.2.14(5d3abea766a539fd0b311e1932b77b1d))(rxjs@7.8.2) '@ecodev/natural': - specifier: ^70.5.2 - version: 70.5.2(6348135fe661781e0624914df261bc59) + specifier: ^71.0.0 + version: 71.0.0(d8fa97316196c06b59471547a9a6ef26) '@ecodev/natural-editor': - specifier: ^70.5.2 - version: 70.5.2(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/material@21.2.14(5d3abea766a539fd0b311e1932b77b1d))(@ecodev/natural@70.5.2(6348135fe661781e0624914df261bc59)) + specifier: ^71.0.0 + version: 71.0.0(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/material@21.2.14(5d3abea766a539fd0b311e1932b77b1d))(@ecodev/natural@71.0.0(d8fa97316196c06b59471547a9a6ef26)) '@ecodev/natural-layout': specifier: ^2.0.2 version: 2.0.5 @@ -60,8 +60,8 @@ importers: specifier: ^9.0.25 version: 9.1.5(graphql@16.12.0) apollo-angular: - specifier: ^11.0.0 - version: 11.0.0(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@apollo/client@3.14.0(graphql-ws@6.0.7(graphql@16.12.0)(ws@8.19.0))(graphql@16.12.0))(graphql@16.12.0)(rxjs@7.8.2) + specifier: ^14.1.0 + version: 14.1.0(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@apollo/client@4.2.7(graphql-ws@6.0.7(graphql@16.12.0)(ws@8.19.0))(graphql@16.12.0)(rxjs@7.8.2))(graphql@16.12.0)(rxjs@7.8.2) big.js: specifier: ^7.0.1 version: 7.0.1 @@ -426,13 +426,14 @@ packages: '@angular/platform-browser': 21.2.17 rxjs: ^6.5.3 || ^7.4.0 - '@apollo/client@3.14.0': - resolution: {integrity: sha512-0YQKKRIxiMlIou+SekQqdCo0ZTHxOcES+K8vKB53cIDpwABNR0P0yRzPgsbgcj3zRJniD93S/ontsnZsCLZrxQ==} + '@apollo/client@4.2.7': + resolution: {integrity: sha512-Z129zR77VP0oWWIXPpHgwbtwhCVBzkw/FhiiymbqwlUniKb5z2KBeuQkpNIz3QfuO7ezHiaxsJ0PPjYBJTSHtg==} peerDependencies: - graphql: ^15.0.0 || ^16.0.0 + graphql: ^16.0.0 || ^17.0.0 graphql-ws: ^5.5.5 || ^6.0.3 - 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 + react: ^17.0.0 || ^18.0.0 || >=19.0.0-rc + react-dom: ^17.0.0 || ^18.0.0 || >=19.0.0-rc + rxjs: ^7.3.0 subscriptions-transport-ws: ^0.9.0 || ^0.11.0 peerDependenciesMeta: graphql-ws: @@ -551,8 +552,8 @@ packages: '@angular/material': ^21.1 rxjs: ^7.8.2 - '@ecodev/natural-editor@70.5.2': - resolution: {integrity: sha512-75AXfOluQAs3CaRRyEbEKWtm5Yboo42SHjrW9KZAga7KQos+OmOeFNTtmQf7HnVB5q7RBgkjY28zlJg10mSObw==} + '@ecodev/natural-editor@71.0.0': + resolution: {integrity: sha512-lvdEWp3SbOYgdyhJjBgTcZlsQo2QksF6Q9QmIW1l77qdHpQgtKrZNbltWuWZHVGCJiZ/RHbpHBAMoCZcxjeUnQ==} peerDependencies: '@angular/common': ^21.1.0 '@angular/core': ^21.1.0 @@ -563,8 +564,8 @@ packages: '@ecodev/natural-layout@2.0.5': resolution: {integrity: sha512-PcMT248B/XVOTdYUcpPhCdL2BbxwoxZghATnPSew4TMVMlLgk65bfMi2uY05Ywb+hPdbjwIJWZ7zepFlr/vDKw==} - '@ecodev/natural@70.5.2': - resolution: {integrity: sha512-Q61zhnzGz9/aK0bCt/qrknE61W1EPhiNNltPbYYIlGaec3n5rDg9MubjC65STWePNC44F2c+paMVZCI798M07g==} + '@ecodev/natural@71.0.0': + resolution: {integrity: sha512-QW0u442b6KpV5YHOaprjdv4+JWB2oEROqphI1ewdNYYVe3gaw7jhflqhRvOofQTlWhDzuC+N+TCKJiatcDhm8w==} hasBin: true peerDependencies: '@angular/cdk': ^21.1.0 @@ -575,7 +576,7 @@ packages: '@angular/material': ^21.1.0 '@angular/platform-browser': ^21.1.0 '@angular/router': ^21.1.0 - apollo-angular: ^11.0.0 + apollo-angular: ^14.1.0 es-toolkit: ^1.39.7 rxjs: ^7.8.2 @@ -2121,14 +2122,14 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - apollo-angular@11.0.0: - resolution: {integrity: sha512-8esMQ7Y/avjodz5G0vMlPy58KHrMetzx/I6Xp1Zn1AnYhBbbv7cEc25fZrdMWKwi0c061Fux3HWfu8iCk1OpDg==} + apollo-angular@14.1.0: + resolution: {integrity: sha512-rE6gcY9pSsI6FuG0tNhoVGxVJ82qN6vQAtG0t2yfujWTJRW1YD6aZe85D5LyyADM1oXGYySuYQcTtWBqAAQ6XQ==} engines: {node: '>=16'} peerDependencies: - '@angular/core': ^18.0.0 || ^19.0.0 || ^20.0.0 - '@apollo/client': ^3.13.1 + '@angular/core': ^20.0.0 || ^21.0.0 || ^22.0.0 + '@apollo/client': ^4.0.1 graphql: ^16.0.0 - rxjs: ^6.0.0 || ^7.0.0 + rxjs: ^7.8.0 argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -2839,11 +2840,11 @@ packages: cosmiconfig-toml-loader: optional: true - graphql-tag@2.12.6: - resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} + graphql-tag@2.12.7: + resolution: {integrity: sha512-xnE/NFzy+0eIesvAsREJZ284zTl/wYuBAvpsFSDhRGRdRHdnE90M21Q3xAWyYInb0J756c6x0pIQ62+vtvOs1Q==} 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 + 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 || ^17.0.0 graphql-ws@6.0.7: resolution: {integrity: sha512-yoLRW+KRlDmnnROdAu7sX77VNLC0bsFoZyGQJLy1cF+X/SkLg/fWkRGrEEYQK8o2cafJ2wmEaMqMEZB3U3DYDg==} @@ -2884,9 +2885,6 @@ packages: header-case@2.0.4: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} - hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - hono@4.12.3: resolution: {integrity: sha512-SFsVSjp8sj5UumXOOFlkZOG6XS9SJDKw0TbwFeV+AJ8xlST8kxK5Z/5EYa111UY8732lK2S/xB653ceuaoGwpg==} engines: {node: '>=16.9.0'} @@ -3697,9 +3695,6 @@ packages: promise@7.3.1: resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - prosemirror-commands@1.7.1: resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==} @@ -3776,9 +3771,6 @@ packages: resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} engines: {node: '>= 0.10'} - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -3794,17 +3786,6 @@ packages: reflect-metadata@0.2.2: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} - rehackt@0.1.0: - resolution: {integrity: sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==} - peerDependencies: - '@types/react': '*' - react: '*' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true - relay-runtime@12.0.0: resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} @@ -4090,10 +4071,6 @@ packages: swap-case@2.0.2: resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==} - symbol-observable@4.0.0: - resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} - engines: {node: '>=0.10'} - sync-fetch@0.6.0: resolution: {integrity: sha512-IELLEvzHuCfc1uTsshPK58ViSdNqXxlml1U+fmwJIKLYKOr/rAtBrorE2RYm5IHaMpDNlmC0fr1LAvdXvyheEQ==} engines: {node: '>=18'} @@ -4147,10 +4124,6 @@ packages: peerDependencies: typescript: '>=4.8.4' - ts-invariant@0.10.3: - resolution: {integrity: sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==} - engines: {node: '>=8'} - ts-log@2.2.7: resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} @@ -4447,12 +4420,6 @@ packages: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} - zen-observable-ts@1.2.5: - resolution: {integrity: sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==} - - zen-observable@0.8.15: - resolution: {integrity: sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==} - zod-to-json-schema@3.25.1: resolution: {integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==} peerDependencies: @@ -4835,26 +4802,19 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@apollo/client@3.14.0(graphql-ws@6.0.7(graphql@16.12.0)(ws@8.19.0))(graphql@16.12.0)': + '@apollo/client@4.2.7(graphql-ws@6.0.7(graphql@16.12.0)(ws@8.19.0))(graphql@16.12.0)(rxjs@7.8.2)': dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.12.0) '@wry/caches': 1.0.1 '@wry/equality': 0.5.7 '@wry/trie': 0.5.0 graphql: 16.12.0 - graphql-tag: 2.12.6(graphql@16.12.0) - hoist-non-react-statics: 3.3.2 + graphql-tag: 2.12.7(graphql@16.12.0) optimism: 0.18.1 - prop-types: 15.8.1 - rehackt: 0.1.0 - symbol-observable: 4.0.0 - ts-invariant: 0.10.3 + rxjs: 7.8.2 tslib: 2.8.1 - zen-observable-ts: 1.2.5 optionalDependencies: graphql-ws: 6.0.7(graphql@16.12.0)(ws@8.19.0) - transitivePeerDependencies: - - '@types/react' '@ardatan/relay-compiler@12.0.3(encoding@0.1.13)(graphql@16.12.0)': dependencies: @@ -4999,13 +4959,13 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@ecodev/natural-editor@70.5.2(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/material@21.2.14(5d3abea766a539fd0b311e1932b77b1d))(@ecodev/natural@70.5.2(6348135fe661781e0624914df261bc59))': + '@ecodev/natural-editor@71.0.0(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/material@21.2.14(5d3abea766a539fd0b311e1932b77b1d))(@ecodev/natural@71.0.0(d8fa97316196c06b59471547a9a6ef26))': dependencies: '@angular/common': 21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/core': 21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/forms': 21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/material': 21.2.14(5d3abea766a539fd0b311e1932b77b1d) - '@ecodev/natural': 70.5.2(6348135fe661781e0624914df261bc59) + '@ecodev/natural': 71.0.0(d8fa97316196c06b59471547a9a6ef26) prosemirror-commands: 1.7.1 prosemirror-dropcursor: 1.8.3 prosemirror-gapcursor: 1.4.1 @@ -5023,7 +4983,7 @@ snapshots: '@ecodev/natural-layout@2.0.5': {} - '@ecodev/natural@70.5.2(6348135fe661781e0624914df261bc59)': + '@ecodev/natural@71.0.0(d8fa97316196c06b59471547a9a6ef26)': dependencies: '@angular/cdk': 21.2.14(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/common': 21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) @@ -5033,7 +4993,7 @@ snapshots: '@angular/material': 21.2.14(5d3abea766a539fd0b311e1932b77b1d) '@angular/platform-browser': 21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/router': 21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) - apollo-angular: 11.0.0(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@apollo/client@3.14.0(graphql-ws@6.0.7(graphql@16.12.0)(ws@8.19.0))(graphql@16.12.0))(graphql@16.12.0)(rxjs@7.8.2) + apollo-angular: 14.1.0(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@apollo/client@4.2.7(graphql-ws@6.0.7(graphql@16.12.0)(ws@8.19.0))(graphql@16.12.0)(rxjs@7.8.2))(graphql@16.12.0)(rxjs@7.8.2) es-toolkit: 1.44.0 extract-files: 13.0.0 rxjs: 7.8.2 @@ -5353,7 +5313,7 @@ snapshots: change-case-all: 1.0.15 dependency-graph: 1.0.0 graphql: 16.12.0 - graphql-tag: 2.12.6(graphql@16.12.0) + graphql-tag: 2.12.7(graphql@16.12.0) parse-filepath: 1.0.2 tslib: 2.6.3 transitivePeerDependencies: @@ -6646,10 +6606,10 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.2 - apollo-angular@11.0.0(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@apollo/client@3.14.0(graphql-ws@6.0.7(graphql@16.12.0)(ws@8.19.0))(graphql@16.12.0))(graphql@16.12.0)(rxjs@7.8.2): + apollo-angular@14.1.0(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@apollo/client@4.2.7(graphql-ws@6.0.7(graphql@16.12.0)(ws@8.19.0))(graphql@16.12.0)(rxjs@7.8.2))(graphql@16.12.0)(rxjs@7.8.2): dependencies: '@angular/core': 21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1) - '@apollo/client': 3.14.0(graphql-ws@6.0.7(graphql@16.12.0)(ws@8.19.0))(graphql@16.12.0) + '@apollo/client': 4.2.7(graphql-ws@6.0.7(graphql@16.12.0)(ws@8.19.0))(graphql@16.12.0)(rxjs@7.8.2) graphql: 16.12.0 rxjs: 7.8.2 tslib: 2.8.1 @@ -7493,7 +7453,7 @@ snapshots: - typescript - utf-8-validate - graphql-tag@2.12.6(graphql@16.12.0): + graphql-tag@2.12.7(graphql@16.12.0): dependencies: graphql: 16.12.0 tslib: 2.8.1 @@ -7523,10 +7483,6 @@ snapshots: capital-case: 1.0.4 tslib: 2.8.1 - hoist-non-react-statics@3.3.2: - dependencies: - react-is: 16.13.1 - hono@4.12.3: {} hosted-git-info@9.0.2: @@ -8373,12 +8329,6 @@ snapshots: dependencies: asap: 2.0.6 - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - prosemirror-commands@1.7.1: dependencies: prosemirror-model: 1.25.11 @@ -8493,8 +8443,6 @@ snapshots: iconv-lite: 0.7.2 unpipe: 1.0.0 - react-is@16.13.1: {} - readdirp@3.6.0: dependencies: picomatch: 2.3.2 @@ -8505,8 +8453,6 @@ snapshots: reflect-metadata@0.2.2: {} - rehackt@0.1.0: {} - relay-runtime@12.0.0(encoding@0.1.13): dependencies: '@babel/runtime': 7.28.6 @@ -8876,8 +8822,6 @@ snapshots: dependencies: tslib: 2.8.1 - symbol-observable@4.0.0: {} - sync-fetch@0.6.0: dependencies: node-fetch: 3.3.2 @@ -8930,10 +8874,6 @@ snapshots: dependencies: typescript: 5.9.3 - ts-invariant@0.10.3: - dependencies: - tslib: 2.8.1 - ts-log@2.2.7: {} tslib@2.6.3: {} @@ -9166,12 +9106,6 @@ snapshots: yoctocolors@2.1.2: {} - zen-observable-ts@1.2.5: - dependencies: - zen-observable: 0.8.15 - - zen-observable@0.8.15: {} - zod-to-json-schema@3.25.1(zod@4.3.6): dependencies: zod: 4.3.6 From dc83d6a5ed9d5560d19280d3e72df10a8818aec3 Mon Sep 17 00:00:00 2001 From: Adrien Crivelli Date: Fri, 24 Jul 2026 12:03:04 +0900 Subject: [PATCH 2/2] Enable consistent type imports/exports #11733 In hope to speed up transpilation and have better tree shaking and/or chunking --- client/app/admin/admin.routes.ts | 4 +- client/app/admin/admin/admin.component.ts | 4 +- .../comments/comment/comment.component.ts | 4 +- .../comments/comments/comments.component.ts | 4 +- .../comments/services/comment.resolver.ts | 2 +- .../comments/services/comment.service.ts | 22 +++---- .../app/admin/events/event/event.component.ts | 4 +- .../admin/events/events/events.component.ts | 4 +- .../admin/events/services/event.resolver.ts | 2 +- .../admin/events/services/event.service.ts | 24 +++---- .../facilitator-document.component.ts | 6 +- .../facilitator-documents.component.ts | 2 +- .../services/facilitator-document.resolver.ts | 2 +- .../services/facilitator-documents.service.ts | 22 +++---- .../app/admin/files/services/files.service.ts | 10 +-- .../app/admin/newses/news/news.component.ts | 4 +- .../admin/newses/newses/newses.component.ts | 4 +- .../admin/newses/services/news.resolver.ts | 2 +- .../app/admin/newses/services/news.service.ts | 26 ++++---- .../order/order-line/order-line.component.ts | 4 +- .../order-lines/order-lines.component.ts | 4 +- .../app/admin/order/order/order.component.ts | 12 ++-- .../admin/order/orders/orders.component.ts | 4 +- .../order/services/order-line.resolver.ts | 2 +- .../order/services/order-lines.service.ts | 18 +++--- .../admin/order/services/order.resolver.ts | 2 +- .../app/admin/order/services/order.service.ts | 24 +++---- .../services/product-tag-by-name.resolver.ts | 6 +- .../services/product-tag.service.ts | 10 +-- .../products/product/product.component.ts | 8 +-- .../products/products/products.component.ts | 4 +- .../admin/products/services/image.service.ts | 2 +- .../products/services/product.resolver.ts | 2 +- .../products/services/product.service.ts | 36 +++++------ .../sessions/services/session.resolver.ts | 2 +- .../sessions/services/session.service.ts | 28 ++++---- .../sessions/session/session.component.ts | 4 +- .../sessions/sessions/sessions.component.ts | 4 +- .../admin/users/import/import.component.ts | 14 ++-- .../app/admin/users/services/user.resolver.ts | 2 +- .../admin/users/services/user.service.spec.ts | 4 +- .../app/admin/users/services/user.service.ts | 64 +++++++++---------- .../users/services/userByToken.resolver.ts | 6 +- .../admin/users/services/viewer.resolver.ts | 4 +- client/app/admin/users/user.ts | 2 +- client/app/admin/users/user/user.component.ts | 8 +-- .../app/admin/users/users/users.component.ts | 14 ++-- client/app/app.config.ts | 14 ++-- client/app/app.routes.ts | 2 +- .../services/configuration.service.ts | 10 +-- .../agir-avec-nous/bns/bns.component.spec.ts | 2 +- ...t-epiceries-alternatives.component.spec.ts | 2 +- .../circuits-courts.component.spec.ts | 2 +- .../comment-list/comment-list.component.ts | 10 ++- .../event-page/event-page.component.ts | 2 +- .../events-page/events-page.component.ts | 4 +- .../home-block/home-block.component.ts | 2 +- .../components/homepage/homepage.component.ts | 16 ++--- .../components/login/login.component.ts | 2 +- .../components/menu/menu.component.ts | 2 +- .../news-page/news-page.component.ts | 2 +- .../newses-page/newses-page.component.ts | 2 +- .../session-facilitator-private.component.ts | 8 +-- .../session-facilitator.component.ts | 9 ++- .../session-side-column.component.ts | 4 +- .../sessions-incoming.component.ts | 6 +- .../rejoindre-association.component.ts | 4 +- .../front-office/front-office.component.ts | 8 +-- .../app/front-office/front-office.routes.ts | 8 +-- .../front-office/modules/cart/cart.routes.ts | 4 +- .../modules/cart/classes/cart.spec.ts | 4 +- .../front-office/modules/cart/classes/cart.ts | 14 ++-- .../cart/components/cart/cart.component.ts | 6 +- .../create-order/create-order.component.ts | 8 +-- .../modules/cart/services/cart.service.ts | 16 +++-- .../cart/services/global-cart.service.ts | 4 +- .../add-to-cart/add-to-cart.component.ts | 4 +- .../product-page/product-page.component.ts | 10 +-- .../products-page/products-page.component.ts | 4 +- .../subscriptions/subscription.service.ts | 24 +++---- .../subscriptions/subscriptions.component.ts | 6 +- .../front-office/modules/shop/shop.routes.ts | 6 +- .../services/navigation.service.ts | 8 +-- .../components/account/account.component.ts | 2 +- .../components/history/history.component.ts | 2 +- .../components/profile/profile.component.ts | 9 ++- .../components/purchases/purchase.service.ts | 2 +- .../purchases/purchases.component.ts | 4 +- client/app/profile/profile.routes.ts | 4 +- .../classes/AbstractInfiniteLoadList.ts | 18 +++--- .../components/address/address.component.ts | 2 +- .../components/address/country.service.ts | 7 +- .../boot-loader/boot-loader.component.spec.ts | 2 +- .../breadcrumbs/breadcrumbs.component.ts | 4 +- .../components/error/error.component.ts | 2 +- .../components/price/price.component.ts | 6 +- .../tags-navigation.component.ts | 2 +- .../shared/config/apollo-options.provider.ts | 4 +- .../app/shared/guards/administration.guard.ts | 4 +- client/app/shared/guards/auth.guard.ts | 4 +- client/app/shared/guards/facilitator.guard.ts | 4 +- .../natural-search/natural-search-facets.ts | 22 +++---- client/app/shared/pipes/strip-tags.pipe.ts | 2 +- client/app/shared/pipes/truncate.pipe.ts | 2 +- .../app/shared/services/currency.service.ts | 2 +- .../shared/services/logger-extra.service.ts | 4 +- .../shared/services/permissions.service.ts | 6 +- client/app/shared/utils.ts | 2 +- client/app/shared/validators.ts | 11 +++- .../change-password.component.ts | 2 +- .../components/password/password.component.ts | 8 +-- .../register/register-confirm.component.ts | 6 +- .../components/register/register.component.ts | 6 +- client/app/user/user.routes.ts | 4 +- eslint.config.cjs | 7 ++ package.json | 4 +- pnpm-lock.yaml | 22 +++---- 117 files changed, 463 insertions(+), 414 deletions(-) diff --git a/client/app/admin/admin.routes.ts b/client/app/admin/admin.routes.ts index de44d020..1d5f0da8 100644 --- a/client/app/admin/admin.routes.ts +++ b/client/app/admin/admin.routes.ts @@ -1,5 +1,5 @@ -import {Routes} from '@angular/router'; -import {NaturalDialogTriggerComponent, NaturalDialogTriggerRoutingData, NaturalSeo} from '@ecodev/natural'; +import {type Routes} from '@angular/router'; +import {NaturalDialogTriggerComponent, type NaturalDialogTriggerRoutingData, type NaturalSeo} from '@ecodev/natural'; import {canActivateAdministration} from '../shared/guards/administration.guard'; import {AdminComponent} from './admin/admin.component'; import {CommentComponent} from './comments/comment/comment.component'; diff --git a/client/app/admin/admin/admin.component.ts b/client/app/admin/admin/admin.component.ts index c44c2438..ff3cb975 100644 --- a/client/app/admin/admin/admin.component.ts +++ b/client/app/admin/admin/admin.component.ts @@ -1,4 +1,4 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {ActivatedRoute, RouterLink, RouterLinkActive, RouterOutlet} from '@angular/router'; import { NaturalIconDirective, @@ -6,7 +6,7 @@ import { NaturalSidenavContainerComponent, NaturalSidenavContentComponent, } from '@ecodev/natural'; -import {CurrentUserForProfileQuery} from '../../shared/generated-types'; +import {type CurrentUserForProfileQuery} from '../../shared/generated-types'; import {MatListItem, MatNavList} from '@angular/material/list'; import { MatAccordion, diff --git a/client/app/admin/comments/comment/comment.component.ts b/client/app/admin/comments/comment/comment.component.ts index 183af9cd..ae7539a9 100644 --- a/client/app/admin/comments/comment/comment.component.ts +++ b/client/app/admin/comments/comment/comment.component.ts @@ -5,10 +5,10 @@ import { NaturalFixedButtonDetailComponent, NaturalLinkableTabDirective, NaturalSelectComponent, - NaturalSeoResolveData, + type NaturalSeoResolveData, NaturalStampComponent, } from '@ecodev/natural'; -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {PermissionsService} from '../../../shared/services/permissions.service'; import {EventService} from '../../events/services/event.service'; import {NewsService} from '../../newses/services/news.service'; diff --git a/client/app/admin/comments/comments/comments.component.ts b/client/app/admin/comments/comments/comments.component.ts index 7e8f0879..7b3773e0 100644 --- a/client/app/admin/comments/comments/comments.component.ts +++ b/client/app/admin/comments/comments/comments.component.ts @@ -1,6 +1,6 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import { - AvailableColumn, + type AvailableColumn, NaturalAbstractList, NaturalColumnsPickerComponent, NaturalSearchComponent, diff --git a/client/app/admin/comments/services/comment.resolver.ts b/client/app/admin/comments/services/comment.resolver.ts index 94b60097..34561f6d 100644 --- a/client/app/admin/comments/services/comment.resolver.ts +++ b/client/app/admin/comments/services/comment.resolver.ts @@ -1,5 +1,5 @@ import {inject} from '@angular/core'; -import {ActivatedRouteSnapshot} from '@angular/router'; +import {type ActivatedRouteSnapshot} from '@angular/router'; import {last} from 'rxjs'; import {ErrorService} from '@ecodev/natural'; import {CommentService} from './comment.service'; diff --git a/client/app/admin/comments/services/comment.service.ts b/client/app/admin/comments/services/comment.service.ts index 66a6b3ae..dee84624 100644 --- a/client/app/admin/comments/services/comment.service.ts +++ b/client/app/admin/comments/services/comment.service.ts @@ -1,17 +1,17 @@ import {Injectable} from '@angular/core'; import {NaturalAbstractModelService} from '@ecodev/natural'; import { - CommentInput, - CommentQuery, - CommentQueryVariables, - CommentsQuery, - CommentsQueryVariables, - CreateComment, - CreateCommentVariables, - DeleteComments, - DeleteCommentsVariables, - UpdateComment, - UpdateCommentVariables, + type CommentInput, + type CommentQuery, + type CommentQueryVariables, + type CommentsQuery, + type CommentsQueryVariables, + type CreateComment, + type CreateCommentVariables, + type DeleteComments, + type DeleteCommentsVariables, + type UpdateComment, + type UpdateCommentVariables, } from '../../../shared/generated-types'; import {commentQuery, commentsQuery, createComment, deleteComments, updateComment} from './comment.queries'; diff --git a/client/app/admin/events/event/event.component.ts b/client/app/admin/events/event/event.component.ts index d0fbe0f4..9d2e7bdb 100644 --- a/client/app/admin/events/event/event.component.ts +++ b/client/app/admin/events/event/event.component.ts @@ -5,10 +5,10 @@ import { NaturalFixedButtonDetailComponent, NaturalIconDirective, NaturalLinkableTabDirective, - NaturalSeoResolveData, + type NaturalSeoResolveData, NaturalStampComponent, } from '@ecodev/natural'; -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {RouterLink} from '@angular/router'; import {PermissionsService} from '../../../shared/services/permissions.service'; import {EventService} from '../services/event.service'; diff --git a/client/app/admin/events/events/events.component.ts b/client/app/admin/events/events/events.component.ts index 2402cf20..a7175465 100644 --- a/client/app/admin/events/events/events.component.ts +++ b/client/app/admin/events/events/events.component.ts @@ -1,6 +1,6 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import { - AvailableColumn, + type AvailableColumn, NaturalAbstractList, NaturalColumnsPickerComponent, NaturalFixedButtonComponent, diff --git a/client/app/admin/events/services/event.resolver.ts b/client/app/admin/events/services/event.resolver.ts index eea85837..e3dd51bc 100644 --- a/client/app/admin/events/services/event.resolver.ts +++ b/client/app/admin/events/services/event.resolver.ts @@ -1,5 +1,5 @@ import {inject} from '@angular/core'; -import {ActivatedRouteSnapshot} from '@angular/router'; +import {type ActivatedRouteSnapshot} from '@angular/router'; import {last} from 'rxjs'; import {ErrorService} from '@ecodev/natural'; import {EventService} from './event.service'; diff --git a/client/app/admin/events/services/event.service.ts b/client/app/admin/events/services/event.service.ts index 916dd7cd..66cdfb0e 100644 --- a/client/app/admin/events/services/event.service.ts +++ b/client/app/admin/events/services/event.service.ts @@ -1,17 +1,17 @@ import {Injectable} from '@angular/core'; -import {formatIsoDateTime, FormValidators, NaturalAbstractModelService} from '@ecodev/natural'; +import {formatIsoDateTime, type FormValidators, NaturalAbstractModelService} from '@ecodev/natural'; import { - CreateEvent, - CreateEventVariables, - DeleteEvents, - DeleteEventsVariables, - EventInput, - EventQuery, - EventQueryVariables, - EventsQuery, - EventsQueryVariables, - UpdateEvent, - UpdateEventVariables, + type CreateEvent, + type CreateEventVariables, + type DeleteEvents, + type DeleteEventsVariables, + type EventInput, + type EventQuery, + type EventQueryVariables, + type EventsQuery, + type EventsQueryVariables, + type UpdateEvent, + type UpdateEventVariables, } from '../../../shared/generated-types'; import {createEvent, deleteEvents, eventQuery, eventsQuery, updateEvent} from './event.queries'; import {Validators} from '@angular/forms'; diff --git a/client/app/admin/facilitator-documents/facilitator-document/facilitator-document.component.ts b/client/app/admin/facilitator-documents/facilitator-document/facilitator-document.component.ts index b4f21386..1188c41f 100644 --- a/client/app/admin/facilitator-documents/facilitator-document/facilitator-document.component.ts +++ b/client/app/admin/facilitator-documents/facilitator-document/facilitator-document.component.ts @@ -6,14 +6,14 @@ import { NaturalFixedButtonDetailComponent, NaturalIconDirective, NaturalLinkableTabDirective, - NaturalSeoResolveData, + type NaturalSeoResolveData, NaturalStampComponent, } from '@ecodev/natural'; import {Component, inject} from '@angular/core'; import {FilesService} from '../../files/services/files.service'; import {FacilitatorDocumentsService} from '../services/facilitator-documents.service'; -import {CreateFile} from '../../../shared/generated-types'; -import {map, Observable, of, switchMap} from 'rxjs'; +import {type CreateFile} from '../../../shared/generated-types'; +import {map, type Observable, of, switchMap} from 'rxjs'; import {MatDivider} from '@angular/material/divider'; import {MatInput} from '@angular/material/input'; import {MatError, MatFormField, MatLabel} from '@angular/material/form-field'; diff --git a/client/app/admin/facilitator-documents/facilitator-documents/facilitator-documents.component.ts b/client/app/admin/facilitator-documents/facilitator-documents/facilitator-documents.component.ts index 570a7014..e4087c09 100644 --- a/client/app/admin/facilitator-documents/facilitator-documents/facilitator-documents.component.ts +++ b/client/app/admin/facilitator-documents/facilitator-documents/facilitator-documents.component.ts @@ -1,4 +1,4 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {RouterLink} from '@angular/router'; import { NaturalAbstractList, diff --git a/client/app/admin/facilitator-documents/services/facilitator-document.resolver.ts b/client/app/admin/facilitator-documents/services/facilitator-document.resolver.ts index 26313348..b3fbdcef 100644 --- a/client/app/admin/facilitator-documents/services/facilitator-document.resolver.ts +++ b/client/app/admin/facilitator-documents/services/facilitator-document.resolver.ts @@ -1,5 +1,5 @@ import {inject} from '@angular/core'; -import {ActivatedRouteSnapshot} from '@angular/router'; +import {type ActivatedRouteSnapshot} from '@angular/router'; import {ErrorService} from '@ecodev/natural'; import {FacilitatorDocumentsService} from './facilitator-documents.service'; diff --git a/client/app/admin/facilitator-documents/services/facilitator-documents.service.ts b/client/app/admin/facilitator-documents/services/facilitator-documents.service.ts index 81c16b0b..7fd61f8a 100644 --- a/client/app/admin/facilitator-documents/services/facilitator-documents.service.ts +++ b/client/app/admin/facilitator-documents/services/facilitator-documents.service.ts @@ -1,17 +1,17 @@ import {Injectable} from '@angular/core'; import {NaturalAbstractModelService} from '@ecodev/natural'; import { - CreateFacilitatorDocument, - CreateFacilitatorDocumentVariables, - DeleteFacilitatorDocuments, - DeleteFacilitatorDocumentsVariables, - FacilitatorDocumentInput, - FacilitatorDocumentQuery, - FacilitatorDocumentQueryVariables, - FacilitatorDocumentsQuery, - FacilitatorDocumentsQueryVariables, - UpdateFacilitatorDocument, - UpdateFacilitatorDocumentVariables, + type CreateFacilitatorDocument, + type CreateFacilitatorDocumentVariables, + type DeleteFacilitatorDocuments, + type DeleteFacilitatorDocumentsVariables, + type FacilitatorDocumentInput, + type FacilitatorDocumentQuery, + type FacilitatorDocumentQueryVariables, + type FacilitatorDocumentsQuery, + type FacilitatorDocumentsQueryVariables, + type UpdateFacilitatorDocument, + type UpdateFacilitatorDocumentVariables, } from '../../../shared/generated-types'; import { createFacilitatorDocument, diff --git a/client/app/admin/files/services/files.service.ts b/client/app/admin/files/services/files.service.ts index 07a253ab..0091c275 100644 --- a/client/app/admin/files/services/files.service.ts +++ b/client/app/admin/files/services/files.service.ts @@ -1,11 +1,11 @@ import {Injectable} from '@angular/core'; import {NaturalAbstractModelService} from '@ecodev/natural'; import { - CreateFile, - CreateFileVariables, - DeleteFile, - DeleteFileVariables, - FileInput, + type CreateFile, + type CreateFileVariables, + type DeleteFile, + type DeleteFileVariables, + type FileInput, } from '../../../shared/generated-types'; import {createFileMutation, deleteFileMutation} from './files.queries'; diff --git a/client/app/admin/newses/news/news.component.ts b/client/app/admin/newses/news/news.component.ts index e66b54f0..5b600758 100644 --- a/client/app/admin/newses/news/news.component.ts +++ b/client/app/admin/newses/news/news.component.ts @@ -5,10 +5,10 @@ import { NaturalFixedButtonDetailComponent, NaturalIconDirective, NaturalLinkableTabDirective, - NaturalSeoResolveData, + type NaturalSeoResolveData, NaturalStampComponent, } from '@ecodev/natural'; -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {RouterLink} from '@angular/router'; import {PermissionsService} from '../../../shared/services/permissions.service'; import {NewsService} from '../services/news.service'; diff --git a/client/app/admin/newses/newses/newses.component.ts b/client/app/admin/newses/newses/newses.component.ts index ff2413df..76cd5697 100644 --- a/client/app/admin/newses/newses/newses.component.ts +++ b/client/app/admin/newses/newses/newses.component.ts @@ -1,6 +1,6 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import { - AvailableColumn, + type AvailableColumn, NaturalAbstractList, NaturalColumnsPickerComponent, NaturalFixedButtonComponent, diff --git a/client/app/admin/newses/services/news.resolver.ts b/client/app/admin/newses/services/news.resolver.ts index 7f982d39..1a92f9ee 100644 --- a/client/app/admin/newses/services/news.resolver.ts +++ b/client/app/admin/newses/services/news.resolver.ts @@ -1,5 +1,5 @@ import {inject} from '@angular/core'; -import {ActivatedRouteSnapshot} from '@angular/router'; +import {type ActivatedRouteSnapshot} from '@angular/router'; import {last} from 'rxjs'; import {ErrorService} from '@ecodev/natural'; import {NewsService} from './news.service'; diff --git a/client/app/admin/newses/services/news.service.ts b/client/app/admin/newses/services/news.service.ts index b2f14b21..9e575c2a 100644 --- a/client/app/admin/newses/services/news.service.ts +++ b/client/app/admin/newses/services/news.service.ts @@ -1,18 +1,18 @@ import {Injectable} from '@angular/core'; -import {formatIsoDateTime, FormValidators, Literal, NaturalAbstractModelService} from '@ecodev/natural'; +import {formatIsoDateTime, type FormValidators, type Literal, NaturalAbstractModelService} from '@ecodev/natural'; import { - CreateNews, - CreateNewsVariables, - DeleteNewses, - DeleteNewsesVariables, - NewsesQuery, - NewsesQueryVariables, - NewsInput, - NewsPartialInput, - NewsQuery, - NewsQueryVariables, - UpdateNews, - UpdateNewsVariables, + type CreateNews, + type CreateNewsVariables, + type DeleteNewses, + type DeleteNewsesVariables, + type NewsesQuery, + type NewsesQueryVariables, + type NewsInput, + type NewsPartialInput, + type NewsQuery, + type NewsQueryVariables, + type UpdateNews, + type UpdateNewsVariables, } from '../../../shared/generated-types'; import {createNews, deleteNewses, newsesQuery, newsQuery, updateNews} from './news.queries'; import {Validators} from '@angular/forms'; diff --git a/client/app/admin/order/order-line/order-line.component.ts b/client/app/admin/order/order-line/order-line.component.ts index 46206f67..564b903b 100644 --- a/client/app/admin/order/order-line/order-line.component.ts +++ b/client/app/admin/order/order-line/order-line.component.ts @@ -3,9 +3,9 @@ import { NaturalErrorMessagePipe, NaturalSelectComponent, NaturalSelectEnumComponent, - NaturalSeoResolveData, + type NaturalSeoResolveData, } from '@ecodev/natural'; -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {MatDialogModule} from '@angular/material/dialog'; import {ProductService} from '../../products/services/product.service'; import {OrderLineService} from '../services/order-lines.service'; diff --git a/client/app/admin/order/order-lines/order-lines.component.ts b/client/app/admin/order/order-lines/order-lines.component.ts index 008b2e58..67a52770 100644 --- a/client/app/admin/order/order-lines/order-lines.component.ts +++ b/client/app/admin/order/order-lines/order-lines.component.ts @@ -1,6 +1,6 @@ -import {Component, inject, Input, input, OnInit} from '@angular/core'; +import {Component, inject, Input, input, type OnInit} from '@angular/core'; import { - AvailableColumn, + type AvailableColumn, NaturalAbstractList, NaturalColumnsPickerComponent, NaturalEnumPipe, diff --git a/client/app/admin/order/order/order.component.ts b/client/app/admin/order/order/order.component.ts index 7c89ae09..e70689ad 100644 --- a/client/app/admin/order/order/order.component.ts +++ b/client/app/admin/order/order/order.component.ts @@ -1,19 +1,19 @@ import {Component, inject} from '@angular/core'; import {MAT_DIALOG_DATA, MatDialogModule} from '@angular/material/dialog'; -import {NaturalAlertService, NaturalDialogTriggerProvidedData, NaturalSelectEnumComponent} from '@ecodev/natural'; +import {NaturalAlertService, type NaturalDialogTriggerProvidedData, NaturalSelectEnumComponent} from '@ecodev/natural'; import {CurrencyPipe, DatePipe} from '@angular/common'; import { - CurrentUserForProfileQuery, - OrderLinesQueryVariables, - OrderQuery, - OrderStatus, + type CurrentUserForProfileQuery, + type OrderLinesQueryVariables, + type OrderQuery, + type OrderStatus, UserRole, } from '../../../shared/generated-types'; import {OrderService} from '../services/order.service'; import {MatButton} from '@angular/material/button'; import {OrderLinesComponent} from '../order-lines/order-lines.component'; import {FormsModule} from '@angular/forms'; -import {Observable} from 'rxjs'; +import {type Observable} from 'rxjs'; import {takeUntilDestroyed} from '@angular/core/rxjs-interop'; @Component({ diff --git a/client/app/admin/order/orders/orders.component.ts b/client/app/admin/order/orders/orders.component.ts index 988e2399..f30d1234 100644 --- a/client/app/admin/order/orders/orders.component.ts +++ b/client/app/admin/order/orders/orders.component.ts @@ -1,6 +1,6 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import { - AvailableColumn, + type AvailableColumn, NaturalAbstractList, NaturalAvatarComponent, NaturalColumnsPickerComponent, diff --git a/client/app/admin/order/services/order-line.resolver.ts b/client/app/admin/order/services/order-line.resolver.ts index 97d4e6e9..33c2128d 100644 --- a/client/app/admin/order/services/order-line.resolver.ts +++ b/client/app/admin/order/services/order-line.resolver.ts @@ -1,5 +1,5 @@ import {inject} from '@angular/core'; -import {ActivatedRouteSnapshot} from '@angular/router'; +import {type ActivatedRouteSnapshot} from '@angular/router'; import {last} from 'rxjs'; import {ErrorService} from '@ecodev/natural'; import {OrderLineService} from './order-lines.service'; diff --git a/client/app/admin/order/services/order-lines.service.ts b/client/app/admin/order/services/order-lines.service.ts index c532ee26..3cab285e 100644 --- a/client/app/admin/order/services/order-lines.service.ts +++ b/client/app/admin/order/services/order-lines.service.ts @@ -1,15 +1,15 @@ import {Injectable} from '@angular/core'; -import {ValidatorFn, Validators} from '@angular/forms'; -import {FormValidators, integer, NaturalAbstractModelService} from '@ecodev/natural'; +import {type ValidatorFn, Validators} from '@angular/forms'; +import {type FormValidators, integer, NaturalAbstractModelService} from '@ecodev/natural'; import { - OrderLineInput, - OrderLineQuery, - OrderLineQueryVariables, - OrderLinesQuery, - OrderLinesQueryVariables, + type OrderLineInput, + type OrderLineQuery, + type OrderLineQueryVariables, + type OrderLinesQuery, + type OrderLinesQueryVariables, ProductType, - UpdateOrderLine, - UpdateOrderLineVariables, + type UpdateOrderLine, + type UpdateOrderLineVariables, } from '../../../shared/generated-types'; import {orderLineQuery, orderLinesQuery, updateOrderLine} from './order-lines.queries'; import {xorValidator} from '../../../shared/validators'; diff --git a/client/app/admin/order/services/order.resolver.ts b/client/app/admin/order/services/order.resolver.ts index cab44f4f..5b6a69f5 100644 --- a/client/app/admin/order/services/order.resolver.ts +++ b/client/app/admin/order/services/order.resolver.ts @@ -1,5 +1,5 @@ import {inject} from '@angular/core'; -import {ActivatedRouteSnapshot} from '@angular/router'; +import {type ActivatedRouteSnapshot} from '@angular/router'; import {last} from 'rxjs'; import {ErrorService} from '@ecodev/natural'; import {OrderService} from './order.service'; diff --git a/client/app/admin/order/services/order.service.ts b/client/app/admin/order/services/order.service.ts index 85b4b774..26f6edba 100644 --- a/client/app/admin/order/services/order.service.ts +++ b/client/app/admin/order/services/order.service.ts @@ -1,18 +1,18 @@ import {inject, Injectable} from '@angular/core'; -import {Literal, NaturalAbstractModelService} from '@ecodev/natural'; -import {Observable} from 'rxjs'; +import {type Literal, NaturalAbstractModelService} from '@ecodev/natural'; +import {type Observable} from 'rxjs'; import {map} from 'rxjs/operators'; import { - CreateOrder, - CreateOrderVariables, - OrderInput, - OrderQuery, - OrderQueryVariables, - OrdersQuery, - OrdersQueryVariables, - OrderStatus, - UpdateOrderStatus, - UpdateOrderStatusVariables, + type CreateOrder, + type CreateOrderVariables, + type OrderInput, + type OrderQuery, + type OrderQueryVariables, + type OrdersQuery, + type OrdersQueryVariables, + type OrderStatus, + type UpdateOrderStatus, + type UpdateOrderStatusVariables, } from '../../../shared/generated-types'; import {OrderLineService} from './order-lines.service'; import {createOrder, orderQuery, ordersQuery, updateOrderStatus} from './order.queries'; diff --git a/client/app/admin/product-tags/services/product-tag-by-name.resolver.ts b/client/app/admin/product-tags/services/product-tag-by-name.resolver.ts index 09a391d8..208cbcf2 100644 --- a/client/app/admin/product-tags/services/product-tag-by-name.resolver.ts +++ b/client/app/admin/product-tags/services/product-tag-by-name.resolver.ts @@ -1,8 +1,8 @@ import {inject} from '@angular/core'; -import {ActivatedRouteSnapshot} from '@angular/router'; -import {last, Observable} from 'rxjs'; +import {type ActivatedRouteSnapshot} from '@angular/router'; +import {last, type Observable} from 'rxjs'; import {ErrorService} from '@ecodev/natural'; -import {ProductTagsQuery} from '../../../shared/generated-types'; +import {type ProductTagsQuery} from '../../../shared/generated-types'; import {ProductTagService} from './product-tag.service'; /** diff --git a/client/app/admin/product-tags/services/product-tag.service.ts b/client/app/admin/product-tags/services/product-tag.service.ts index 9417b269..df2d5247 100644 --- a/client/app/admin/product-tags/services/product-tag.service.ts +++ b/client/app/admin/product-tags/services/product-tag.service.ts @@ -1,12 +1,12 @@ import {Injectable} from '@angular/core'; import {NaturalAbstractModelService, NaturalQueryVariablesManager} from '@ecodev/natural'; -import {Observable} from 'rxjs'; +import {type Observable} from 'rxjs'; import {map} from 'rxjs/operators'; import { - ProductTagQuery, - ProductTagQueryVariables, - ProductTagsQuery, - ProductTagsQueryVariables, + type ProductTagQuery, + type ProductTagQueryVariables, + type ProductTagsQuery, + type ProductTagsQueryVariables, } from '../../../shared/generated-types'; import {productTagQuery, productTagsQuery} from './product-tag.queries'; diff --git a/client/app/admin/products/product/product.component.ts b/client/app/admin/products/product/product.component.ts index e23d4786..52eb4e52 100644 --- a/client/app/admin/products/product/product.component.ts +++ b/client/app/admin/products/product/product.component.ts @@ -10,10 +10,10 @@ import { NaturalRelationsComponent, NaturalSelectComponent, NaturalSelectEnumComponent, - NaturalSeoResolveData, + type NaturalSeoResolveData, NaturalStampComponent, NaturalTableButtonComponent, - WithId, + type WithId, } from '@ecodev/natural'; import {Component, inject} from '@angular/core'; import {XorErrorStateMatcher} from '../../../shared/validators'; @@ -21,8 +21,8 @@ import {FilesService} from '../../files/services/files.service'; import {ProductTagService} from '../../product-tags/services/product-tag.service'; import {ImageService} from '../services/image.service'; import {ProductService} from '../services/product.service'; -import {map, Observable, of, switchMap} from 'rxjs'; -import {CreateFile, CreateImage, ProductPartialInput} from '../../../shared/generated-types'; +import {map, type Observable, of, switchMap} from 'rxjs'; +import {type CreateFile, type CreateImage, type ProductPartialInput} from '../../../shared/generated-types'; import {OrderLinesComponent} from '../../order/order-lines/order-lines.component'; import {MatDivider} from '@angular/material/divider'; import {MatDatepicker, MatDatepickerInput, MatDatepickerToggle} from '@angular/material/datepicker'; diff --git a/client/app/admin/products/products/products.component.ts b/client/app/admin/products/products/products.component.ts index 8bd7b9a6..bb378244 100644 --- a/client/app/admin/products/products/products.component.ts +++ b/client/app/admin/products/products/products.component.ts @@ -1,7 +1,7 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {RouterLink} from '@angular/router'; import { - AvailableColumn, + type AvailableColumn, NaturalAbstractList, NaturalColumnsPickerComponent, NaturalEnumPipe, diff --git a/client/app/admin/products/services/image.service.ts b/client/app/admin/products/services/image.service.ts index f29fb46d..4e30a38b 100644 --- a/client/app/admin/products/services/image.service.ts +++ b/client/app/admin/products/services/image.service.ts @@ -1,7 +1,7 @@ import {gql} from 'apollo-angular'; import {Injectable} from '@angular/core'; import {NaturalAbstractModelService} from '@ecodev/natural'; -import {CreateImage, CreateImageVariables, ImageInput} from '../../../shared/generated-types'; +import {type CreateImage, type CreateImageVariables, type ImageInput} from '../../../shared/generated-types'; import {userMetaFragment} from '../../../shared/queries/fragments'; export const createImageMutation = gql` diff --git a/client/app/admin/products/services/product.resolver.ts b/client/app/admin/products/services/product.resolver.ts index d54ce0fb..99f94b8d 100644 --- a/client/app/admin/products/services/product.resolver.ts +++ b/client/app/admin/products/services/product.resolver.ts @@ -1,5 +1,5 @@ import {inject} from '@angular/core'; -import {ActivatedRouteSnapshot} from '@angular/router'; +import {type ActivatedRouteSnapshot} from '@angular/router'; import {last} from 'rxjs'; import {ErrorService} from '@ecodev/natural'; import {ProductService} from './product.service'; diff --git a/client/app/admin/products/services/product.service.ts b/client/app/admin/products/services/product.service.ts index 3c7aade2..55fa8342 100644 --- a/client/app/admin/products/services/product.service.ts +++ b/client/app/admin/products/services/product.service.ts @@ -1,34 +1,34 @@ import {Injectable} from '@angular/core'; -import {ValidatorFn, Validators} from '@angular/forms'; +import {type ValidatorFn, Validators} from '@angular/forms'; import { - FormAsyncValidators, - FormValidators, - Literal, + type FormAsyncValidators, + type FormValidators, + type Literal, NaturalAbstractModelService, signedMoney, unique, } from '@ecodev/natural'; import { - CreateProduct, - CreateProductVariables, - DeleteProducts, - DeleteProductsVariables, - ProductInput, - ProductPartialInput, - ProductQuery, - ProductQueryVariables, - ProductSorting, + type CreateProduct, + type CreateProductVariables, + type DeleteProducts, + type DeleteProductsVariables, + type ProductInput, + type ProductPartialInput, + type ProductQuery, + type ProductQueryVariables, + type ProductSorting, ProductSortingField, - ProductsQuery, - ProductsQueryVariables, + type ProductsQuery, + type ProductsQueryVariables, ProductType, SortingOrder, - UpdateProduct, - UpdateProductVariables, + type UpdateProduct, + type UpdateProductVariables, } from '../../../shared/generated-types'; import {xorValidator} from '../../../shared/validators'; import {createProduct, deleteProducts, productQuery, productsQuery, updateProduct} from './product.queries'; -import {Observable} from 'rxjs'; +import {type Observable} from 'rxjs'; @Injectable({ providedIn: 'root', diff --git a/client/app/admin/sessions/services/session.resolver.ts b/client/app/admin/sessions/services/session.resolver.ts index e4567f6a..e33acd31 100644 --- a/client/app/admin/sessions/services/session.resolver.ts +++ b/client/app/admin/sessions/services/session.resolver.ts @@ -1,5 +1,5 @@ import {inject} from '@angular/core'; -import {ActivatedRouteSnapshot} from '@angular/router'; +import {type ActivatedRouteSnapshot} from '@angular/router'; import {last} from 'rxjs'; import {ErrorService} from '@ecodev/natural'; import {SessionService} from './session.service'; diff --git a/client/app/admin/sessions/services/session.service.ts b/client/app/admin/sessions/services/session.service.ts index 50263169..51589a59 100644 --- a/client/app/admin/sessions/services/session.service.ts +++ b/client/app/admin/sessions/services/session.service.ts @@ -1,23 +1,23 @@ import {Injectable} from '@angular/core'; import {Validators} from '@angular/forms'; -import {FormValidators, Literal, NaturalAbstractModelService} from '@ecodev/natural'; +import {type FormValidators, type Literal, NaturalAbstractModelService} from '@ecodev/natural'; import { - CreateSession, - CreateSessionVariables, - DeleteSessions, - DeleteSessionsVariables, + type CreateSession, + type CreateSessionVariables, + type DeleteSessions, + type DeleteSessionsVariables, JoinType, - SessionInput, - SessionPartialInput, - SessionQuery, - SessionQueryVariables, - SessionsQuery, - SessionsQueryVariables, - UpdateSession, - UpdateSessionVariables, + type SessionInput, + type SessionPartialInput, + type SessionQuery, + type SessionQueryVariables, + type SessionsQuery, + type SessionsQueryVariables, + type UpdateSession, + type UpdateSessionVariables, } from '../../../shared/generated-types'; import {createSession, deleteSessions, sessionQuery, sessionsQuery, updateSession} from './session.queries'; -import {Observable, of} from 'rxjs'; +import {type Observable, of} from 'rxjs'; @Injectable({ providedIn: 'root', diff --git a/client/app/admin/sessions/session/session.component.ts b/client/app/admin/sessions/session/session.component.ts index 5d202526..46cf4538 100644 --- a/client/app/admin/sessions/session/session.component.ts +++ b/client/app/admin/sessions/session/session.component.ts @@ -7,11 +7,11 @@ import { NaturalIconDirective, NaturalLinkableTabDirective, NaturalRelationsComponent, - NaturalSeoResolveData, + type NaturalSeoResolveData, NaturalStampComponent, NaturalTableButtonComponent, } from '@ecodev/natural'; -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {FormArray, FormControl, FormsModule, ReactiveFormsModule} from '@angular/forms'; import {UserService} from '../../users/services/user.service'; import {SessionService} from '../services/session.service'; diff --git a/client/app/admin/sessions/sessions/sessions.component.ts b/client/app/admin/sessions/sessions/sessions.component.ts index 8de0db9c..3cfc6fa5 100644 --- a/client/app/admin/sessions/sessions/sessions.component.ts +++ b/client/app/admin/sessions/sessions/sessions.component.ts @@ -1,7 +1,7 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {RouterLink} from '@angular/router'; import { - AvailableColumn, + type AvailableColumn, NaturalAbstractList, NaturalAvatarComponent, NaturalColumnsPickerComponent, diff --git a/client/app/admin/users/import/import.component.ts b/client/app/admin/users/import/import.component.ts index 957a3d8a..b29af08c 100644 --- a/client/app/admin/users/import/import.component.ts +++ b/client/app/admin/users/import/import.component.ts @@ -1,22 +1,22 @@ import {Apollo, gql} from 'apollo-angular'; -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {ActivatedRoute, RouterLink} from '@angular/router'; import { - FileSelection, + type FileSelection, NaturalAlertService, NaturalFileDropDirective, NaturalIconDirective, NaturalQueryVariablesManager, - NaturalSeoResolveData, + type NaturalSeoResolveData, toNavigationParameters, } from '@ecodev/natural'; import {PermissionsService} from '../../../shared/services/permissions.service'; import { - Import, - ImportVariables, + type Import, + type ImportVariables, UserSortingField, - UsersQuery, - UsersQueryVariables, + type UsersQuery, + type UsersQueryVariables, } from '../../../shared/generated-types'; import {UserService} from '../services/user.service'; import {MatProgressSpinner} from '@angular/material/progress-spinner'; diff --git a/client/app/admin/users/services/user.resolver.ts b/client/app/admin/users/services/user.resolver.ts index f6149c6b..0599c610 100644 --- a/client/app/admin/users/services/user.resolver.ts +++ b/client/app/admin/users/services/user.resolver.ts @@ -1,5 +1,5 @@ import {inject} from '@angular/core'; -import {ActivatedRouteSnapshot} from '@angular/router'; +import {type ActivatedRouteSnapshot} from '@angular/router'; import {last} from 'rxjs'; import {ErrorService} from '@ecodev/natural'; import {UserService} from './user.service'; diff --git a/client/app/admin/users/services/user.service.spec.ts b/client/app/admin/users/services/user.service.spec.ts index 029277c7..f11ef693 100644 --- a/client/app/admin/users/services/user.service.spec.ts +++ b/client/app/admin/users/services/user.service.spec.ts @@ -6,8 +6,8 @@ import {mockApolloProvider} from '../../../shared/testing/MockApolloProvider'; import {UserService} from './user.service'; import {memoryLocalStorageProvider, memorySessionStorageProvider} from '@ecodev/natural'; import {CartCollectionService} from '../../../front-office/modules/cart/services/cart-collection.service'; -import {Observable} from 'rxjs'; -import {PermissionsQuery} from 'client/app/shared/generated-types'; +import {type Observable} from 'rxjs'; +import {type PermissionsQuery} from 'client/app/shared/generated-types'; class MockCartCollectionService { private clear(): void { diff --git a/client/app/admin/users/services/user.service.ts b/client/app/admin/users/services/user.service.ts index a9738e1f..90a6812e 100644 --- a/client/app/admin/users/services/user.service.ts +++ b/client/app/admin/users/services/user.service.ts @@ -1,49 +1,49 @@ import {gql} from 'apollo-angular'; -import {DOCUMENT, inject, Injectable, OnDestroy} from '@angular/core'; +import {DOCUMENT, inject, Injectable, type OnDestroy} from '@angular/core'; import {Validators} from '@angular/forms'; import {Router} from '@angular/router'; import { deliverableEmail, - FormAsyncValidators, - FormValidators, + type FormAsyncValidators, + type FormValidators, ignoreErrors, LOCAL_STORAGE, NaturalAbstractModelService, unique, } from '@ecodev/natural'; -import {fromEvent, Observable, of, Subject, switchMap, tap} from 'rxjs'; +import {fromEvent, type Observable, of, Subject, switchMap, tap} from 'rxjs'; import {map, takeUntil} from 'rxjs/operators'; import {UpToDateSubject} from '../../../shared/classes/up-to-date-subject'; import { - ConfirmRegistration, - ConfirmRegistrationVariables, - CreateUser, - CreateUserVariables, - CurrentUserForProfileQuery, - CurrentUserForProfileQueryVariables, - DeleteUsers, - DeleteUsersVariables, - Login, - LoginVariables, - Logout, - RequestMembershipEnd, - RequestMembershipEndVariables, - RequestPasswordReset, - RequestPasswordResetVariables, - SubscribeNewsletter, - SubscribeNewsletterVariables, - UpdateUser, - UpdateUserVariables, - UserByTokenQuery, - UserByTokenQueryVariables, - UserInput, - UserQuery, - UserQueryVariables, + type ConfirmRegistration, + type ConfirmRegistrationVariables, + type CreateUser, + type CreateUserVariables, + type CurrentUserForProfileQuery, + type CurrentUserForProfileQueryVariables, + type DeleteUsers, + type DeleteUsersVariables, + type Login, + type LoginVariables, + type Logout, + type RequestMembershipEnd, + type RequestMembershipEndVariables, + type RequestPasswordReset, + type RequestPasswordResetVariables, + type SubscribeNewsletter, + type SubscribeNewsletterVariables, + type UpdateUser, + type UpdateUserVariables, + type UserByTokenQuery, + type UserByTokenQueryVariables, + type UserInput, + type UserQuery, + type UserQueryVariables, UserRole, - UserRolesAvailablesQuery, - UserRolesAvailablesQueryVariables, - UsersQuery, - UsersQueryVariables, + type UserRolesAvailablesQuery, + type UserRolesAvailablesQueryVariables, + type UsersQuery, + type UsersQueryVariables, } from '../../../shared/generated-types'; import {CurrencyService} from '../../../shared/services/currency.service'; import {PermissionsService} from '../../../shared/services/permissions.service'; diff --git a/client/app/admin/users/services/userByToken.resolver.ts b/client/app/admin/users/services/userByToken.resolver.ts index 95051a28..8af37733 100644 --- a/client/app/admin/users/services/userByToken.resolver.ts +++ b/client/app/admin/users/services/userByToken.resolver.ts @@ -1,8 +1,8 @@ import {inject} from '@angular/core'; -import {ActivatedRouteSnapshot} from '@angular/router'; -import {last, Observable} from 'rxjs'; +import {type ActivatedRouteSnapshot} from '@angular/router'; +import {last, type Observable} from 'rxjs'; import {ErrorService} from '@ecodev/natural'; -import {UserByTokenResolve} from '../user'; +import {type UserByTokenResolve} from '../user'; import {UserService} from './user.service'; export function resolveUserByToken(route: ActivatedRouteSnapshot): Observable { diff --git a/client/app/admin/users/services/viewer.resolver.ts b/client/app/admin/users/services/viewer.resolver.ts index 80d96470..b960a2ac 100644 --- a/client/app/admin/users/services/viewer.resolver.ts +++ b/client/app/admin/users/services/viewer.resolver.ts @@ -1,7 +1,7 @@ import {inject} from '@angular/core'; -import {last, Observable, switchMap} from 'rxjs'; +import {last, type Observable, switchMap} from 'rxjs'; import {ErrorService} from '@ecodev/natural'; -import {CurrentUserForProfileQuery} from '../../../shared/generated-types'; +import {type CurrentUserForProfileQuery} from '../../../shared/generated-types'; import {UserService} from './user.service'; export function resolveViewer(): Observable { diff --git a/client/app/admin/users/user.ts b/client/app/admin/users/user.ts index 7f3a0774..b0754eb1 100644 --- a/client/app/admin/users/user.ts +++ b/client/app/admin/users/user.ts @@ -1,3 +1,3 @@ -import {UserByTokenQuery} from '../../shared/generated-types'; +import {type UserByTokenQuery} from '../../shared/generated-types'; export type UserByTokenResolve = UserByTokenQuery['userByToken']; diff --git a/client/app/admin/users/user/user.component.ts b/client/app/admin/users/user/user.component.ts index 2102c641..a89f4326 100644 --- a/client/app/admin/users/user/user.component.ts +++ b/client/app/admin/users/user/user.component.ts @@ -1,5 +1,5 @@ import { - IEnum, + type IEnum, NaturalAbstractDetail, NaturalDetailHeaderComponent, NaturalEnumPipe, @@ -7,14 +7,14 @@ import { NaturalFixedButtonDetailComponent, NaturalRelationsComponent, NaturalSelectEnumComponent, - NaturalSeoResolveData, + type NaturalSeoResolveData, NaturalStampComponent, NaturalTableButtonComponent, NaturalTimeAgoPipe, } from '@ecodev/natural'; -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {AsyncPipe, DatePipe} from '@angular/common'; -import {UserRole} from '../../../shared/generated-types'; +import {type UserRole} from '../../../shared/generated-types'; import {SessionService} from '../../sessions/services/session.service'; import {UserService} from '../services/user.service'; import {RouterOutlet} from '@angular/router'; diff --git a/client/app/admin/users/users/users.component.ts b/client/app/admin/users/users/users.component.ts index 0115711a..d2821875 100644 --- a/client/app/admin/users/users/users.component.ts +++ b/client/app/admin/users/users/users.component.ts @@ -1,9 +1,9 @@ import {Apollo} from 'apollo-angular'; -import {Component, DOCUMENT, inject, OnInit} from '@angular/core'; +import {Component, DOCUMENT, inject, type OnInit} from '@angular/core'; import {RouterLink} from '@angular/router'; import { - AvailableColumn, - Button, + type AvailableColumn, + type Button, copyToClipboard, ignoreErrors, NaturalAbstractList, @@ -13,12 +13,16 @@ import { NaturalFixedButtonComponent, NaturalQueryVariablesManager, NaturalSearchComponent, - NaturalSearchSelections, + type NaturalSearchSelections, NaturalTableButtonComponent, TypedMatCellDef, } from '@ecodev/natural'; import {AsyncPipe, DatePipe} from '@angular/common'; -import {EmailUsersQuery, EmailUsersQueryVariables, UsersQueryVariables} from '../../../shared/generated-types'; +import { + type EmailUsersQuery, + type EmailUsersQueryVariables, + type UsersQueryVariables, +} from '../../../shared/generated-types'; import {users} from '../../../shared/natural-search/natural-search-facets'; import {PermissionsService} from '../../../shared/services/permissions.service'; import {emailUsersQuery} from '../services/user.queries'; diff --git a/client/app/app.config.ts b/client/app/app.config.ts index 78c54139..b04eb8ce 100644 --- a/client/app/app.config.ts +++ b/client/app/app.config.ts @@ -1,6 +1,6 @@ import { APP_ID, - ApplicationConfig, + type ApplicationConfig, inject, LOCALE_ID, provideAppInitializer, @@ -8,10 +8,10 @@ import { } from '@angular/core'; import {routes} from './app.routes'; import {Apollo} from 'apollo-angular'; -import {MAT_TOOLTIP_DEFAULT_OPTIONS, MatTooltipDefaultOptions} from '@angular/material/tooltip'; +import {MAT_TOOLTIP_DEFAULT_OPTIONS, type MatTooltipDefaultOptions} from '@angular/material/tooltip'; import {apolloOptionsProvider} from './shared/config/apollo-options.provider'; import {LocalizedPaginatorIntlService} from './shared/services/localized-paginator-intl.service'; -import {DATE_PIPE_DEFAULT_OPTIONS, DatePipeConfig, registerLocaleData} from '@angular/common'; +import {DATE_PIPE_DEFAULT_OPTIONS, type DatePipeConfig, registerLocaleData} from '@angular/common'; import { activityInterceptor, graphqlQuerySigner, @@ -22,7 +22,11 @@ import { provideSeo, } from '@ecodev/natural'; import {provideHttpClient, withInterceptors} from '@angular/common/http'; -import {MAT_PAGINATOR_DEFAULT_OPTIONS, MatPaginatorDefaultOptions, MatPaginatorIntl} from '@angular/material/paginator'; +import { + MAT_PAGINATOR_DEFAULT_OPTIONS, + type MatPaginatorDefaultOptions, + MatPaginatorIntl, +} from '@angular/material/paginator'; import { DateAdapter, ErrorStateMatcher, @@ -33,7 +37,7 @@ import {LoggerExtraService} from './shared/services/logger-extra.service'; import {localConfig, signedQueriesKey} from './shared/generated-config'; import localeFRCH from '@angular/common/locales/fr-CH'; import {provideRouter, withInMemoryScrolling, withRouterConfig} from '@angular/router'; -import {MAT_TABS_CONFIG, MatTabsConfig} from '@angular/material/tabs'; +import {MAT_TABS_CONFIG, type MatTabsConfig} from '@angular/material/tabs'; registerLocaleData(localeFRCH); diff --git a/client/app/app.routes.ts b/client/app/app.routes.ts index 2ffc2a66..b0dcde71 100644 --- a/client/app/app.routes.ts +++ b/client/app/app.routes.ts @@ -1,4 +1,4 @@ -import {Routes} from '@angular/router'; +import {type Routes} from '@angular/router'; import {resolveViewer} from './admin/users/services/viewer.resolver'; import {FrontOfficeComponent} from './front-office/front-office.component'; import {ErrorComponent} from './shared/components/error/error.component'; diff --git a/client/app/configuration/services/configuration.service.ts b/client/app/configuration/services/configuration.service.ts index 17b9be8b..2541c974 100644 --- a/client/app/configuration/services/configuration.service.ts +++ b/client/app/configuration/services/configuration.service.ts @@ -1,12 +1,12 @@ import {Apollo, onlyCompleteData} from 'apollo-angular'; import {NetworkStatus} from '@apollo/client'; import {inject, Injectable} from '@angular/core'; -import {Observable, Subject} from 'rxjs'; +import {type Observable, Subject} from 'rxjs'; import { - ConfigurationQuery, - ConfigurationQueryVariables, - UpdateConfiguration, - UpdateConfigurationVariables, + type ConfigurationQuery, + type ConfigurationQueryVariables, + type UpdateConfiguration, + type UpdateConfigurationVariables, } from '../../shared/generated-types'; import {configurationQuery, updateConfiguration} from './configuration.queries'; diff --git a/client/app/front-office/components/agir-avec-nous/bns/bns.component.spec.ts b/client/app/front-office/components/agir-avec-nous/bns/bns.component.spec.ts index cdc7fef6..eb330412 100644 --- a/client/app/front-office/components/agir-avec-nous/bns/bns.component.spec.ts +++ b/client/app/front-office/components/agir-avec-nous/bns/bns.component.spec.ts @@ -1,4 +1,4 @@ -import {ComponentFixture, TestBed} from '@angular/core/testing'; +import {type ComponentFixture, TestBed} from '@angular/core/testing'; import {BnsComponent} from './bns.component'; import {provideRouter} from '@angular/router'; diff --git a/client/app/front-office/components/agir-avec-nous/rapport-epiceries-alternatives/rapport-epiceries-alternatives.component.spec.ts b/client/app/front-office/components/agir-avec-nous/rapport-epiceries-alternatives/rapport-epiceries-alternatives.component.spec.ts index 5f831191..ae510353 100644 --- a/client/app/front-office/components/agir-avec-nous/rapport-epiceries-alternatives/rapport-epiceries-alternatives.component.spec.ts +++ b/client/app/front-office/components/agir-avec-nous/rapport-epiceries-alternatives/rapport-epiceries-alternatives.component.spec.ts @@ -1,4 +1,4 @@ -import {ComponentFixture, TestBed} from '@angular/core/testing'; +import {type ComponentFixture, TestBed} from '@angular/core/testing'; import {RapportEpiceriesAlternativesComponent} from './rapport-epiceries-alternatives.component'; describe('RapportEpiceriesAlternativesComponent', () => { diff --git a/client/app/front-office/components/circuits-courts/circuits-courts.component.spec.ts b/client/app/front-office/components/circuits-courts/circuits-courts.component.spec.ts index 80c724b5..6e870252 100644 --- a/client/app/front-office/components/circuits-courts/circuits-courts.component.spec.ts +++ b/client/app/front-office/components/circuits-courts/circuits-courts.component.spec.ts @@ -1,4 +1,4 @@ -import {ComponentFixture, TestBed} from '@angular/core/testing'; +import {type ComponentFixture, TestBed} from '@angular/core/testing'; import {CircuitsCourtsComponent} from './circuits-courts.component'; import {provideRouter} from '@angular/router'; diff --git a/client/app/front-office/components/comment-list/comment-list.component.ts b/client/app/front-office/components/comment-list/comment-list.component.ts index 2a1798d2..ba88a04c 100644 --- a/client/app/front-office/components/comment-list/comment-list.component.ts +++ b/client/app/front-office/components/comment-list/comment-list.component.ts @@ -1,7 +1,13 @@ -import {Component, inject, input, OnChanges, OnInit} from '@angular/core'; +import {Component, inject, input, type OnChanges, type OnInit} from '@angular/core'; import {NaturalAbstractList, NaturalIconDirective, SortingOrder} from '@ecodev/natural'; import {CommentService} from '../../../admin/comments/services/comment.service'; -import {CommentSortingField, EventQuery, EventsQuery, NewsesQuery, NewsQuery} from '../../../shared/generated-types'; +import { + CommentSortingField, + type EventQuery, + type EventsQuery, + type NewsesQuery, + type NewsQuery, +} from '../../../shared/generated-types'; import {PermissionsService} from '../../../shared/services/permissions.service'; import {MatIcon} from '@angular/material/icon'; import {RouterLink} from '@angular/router'; diff --git a/client/app/front-office/components/event-page/event-page.component.ts b/client/app/front-office/components/event-page/event-page.component.ts index aca501f2..55d17698 100644 --- a/client/app/front-office/components/event-page/event-page.component.ts +++ b/client/app/front-office/components/event-page/event-page.component.ts @@ -1,4 +1,4 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {RouterLink} from '@angular/router'; import {NaturalAbstractDetail, NaturalCapitalizePipe, NaturalIconDirective} from '@ecodev/natural'; import {EventService} from '../../../admin/events/services/event.service'; diff --git a/client/app/front-office/components/events-page/events-page.component.ts b/client/app/front-office/components/events-page/events-page.component.ts index c645f565..655b5846 100644 --- a/client/app/front-office/components/events-page/events-page.component.ts +++ b/client/app/front-office/components/events-page/events-page.component.ts @@ -1,5 +1,5 @@ -import {Component, inject, OnInit} from '@angular/core'; -import {NaturalCapitalizePipe, PaginationInput} from '@ecodev/natural'; +import {Component, inject, type OnInit} from '@angular/core'; +import {NaturalCapitalizePipe, type PaginationInput} from '@ecodev/natural'; import {EventService} from '../../../admin/events/services/event.service'; import {AbstractInfiniteLoadList} from '../../../shared/classes/AbstractInfiniteLoadList'; import {PermissionsService} from '../../../shared/services/permissions.service'; diff --git a/client/app/front-office/components/home-block/home-block.component.ts b/client/app/front-office/components/home-block/home-block.component.ts index aff5a4e7..f43bd137 100644 --- a/client/app/front-office/components/home-block/home-block.component.ts +++ b/client/app/front-office/components/home-block/home-block.component.ts @@ -1,4 +1,4 @@ -import {Component, inject, input, OnInit} from '@angular/core'; +import {Component, inject, input, type OnInit} from '@angular/core'; import {FormControl, FormGroup, FormsModule, ReactiveFormsModule} from '@angular/forms'; import {forkJoin} from 'rxjs'; import {ConfigurationService} from '../../../configuration/services/configuration.service'; diff --git a/client/app/front-office/components/homepage/homepage.component.ts b/client/app/front-office/components/homepage/homepage.component.ts index df9cf1eb..84a0eed8 100644 --- a/client/app/front-office/components/homepage/homepage.component.ts +++ b/client/app/front-office/components/homepage/homepage.component.ts @@ -1,4 +1,4 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {ActivatedRoute, RouterLink} from '@angular/router'; import { formatIsoDate, @@ -13,16 +13,16 @@ import {NewsService} from '../../../admin/newses/services/news.service'; import {ProductService} from '../../../admin/products/services/product.service'; import {UserService} from '../../../admin/users/services/user.service'; import { - CurrentUserForProfileQuery, + type CurrentUserForProfileQuery, EventSortingField, - EventsQuery, - EventsQueryVariables, - NewsesQuery, - NewsesQueryVariables, + type EventsQuery, + type EventsQueryVariables, + type NewsesQuery, + type NewsesQueryVariables, NewsSortingField, ProductSortingField, - ProductsQuery, - ProductsQueryVariables, + type ProductsQuery, + type ProductsQueryVariables, SortingOrder, } from '../../../shared/generated-types'; import {PermissionsService} from '../../../shared/services/permissions.service'; diff --git a/client/app/front-office/components/login/login.component.ts b/client/app/front-office/components/login/login.component.ts index 4efb721b..9b9dcddb 100644 --- a/client/app/front-office/components/login/login.component.ts +++ b/client/app/front-office/components/login/login.component.ts @@ -1,5 +1,5 @@ import {deliverableEmail, ifValid, NaturalErrorMessagePipe} from '@ecodev/natural'; -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {MatSnackBar} from '@angular/material/snack-bar'; import {ActivatedRoute, Router, RouterLink} from '@angular/router'; import {UserService} from '../../../admin/users/services/user.service'; diff --git a/client/app/front-office/components/menu/menu.component.ts b/client/app/front-office/components/menu/menu.component.ts index c6dec945..580263b1 100644 --- a/client/app/front-office/components/menu/menu.component.ts +++ b/client/app/front-office/components/menu/menu.component.ts @@ -1,5 +1,5 @@ import {ChangeDetectionStrategy, Component, inject, InjectionToken} from '@angular/core'; -import {MenuItem} from '../../services/navigation.service'; +import {type MenuItem} from '../../services/navigation.service'; import {RouterLink, RouterLinkActive} from '@angular/router'; import {NgTemplateOutlet} from '@angular/common'; diff --git a/client/app/front-office/components/news-page/news-page.component.ts b/client/app/front-office/components/news-page/news-page.component.ts index 5dae3b14..9450acf1 100644 --- a/client/app/front-office/components/news-page/news-page.component.ts +++ b/client/app/front-office/components/news-page/news-page.component.ts @@ -1,4 +1,4 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {RouterLink} from '@angular/router'; import {NaturalAbstractDetail, NaturalCapitalizePipe, NaturalIconDirective} from '@ecodev/natural'; import {NewsService} from '../../../admin/newses/services/news.service'; diff --git a/client/app/front-office/components/newses-page/newses-page.component.ts b/client/app/front-office/components/newses-page/newses-page.component.ts index 212fe7fb..4a9608c8 100644 --- a/client/app/front-office/components/newses-page/newses-page.component.ts +++ b/client/app/front-office/components/newses-page/newses-page.component.ts @@ -1,5 +1,5 @@ import {Component, inject} from '@angular/core'; -import {NaturalCapitalizePipe, PaginationInput} from '@ecodev/natural'; +import {NaturalCapitalizePipe, type PaginationInput} from '@ecodev/natural'; import {NewsService} from '../../../admin/newses/services/news.service'; import {AbstractInfiniteLoadList} from '../../../shared/classes/AbstractInfiniteLoadList'; import {RouterLink} from '@angular/router'; diff --git a/client/app/front-office/components/session-facilitator-private/session-facilitator-private.component.ts b/client/app/front-office/components/session-facilitator-private/session-facilitator-private.component.ts index 6625e966..ae6f3e8e 100644 --- a/client/app/front-office/components/session-facilitator-private/session-facilitator-private.component.ts +++ b/client/app/front-office/components/session-facilitator-private/session-facilitator-private.component.ts @@ -1,5 +1,5 @@ -import {Component, inject, OnInit} from '@angular/core'; -import {Literal, NaturalIconDirective, NaturalQueryVariablesManager} from '@ecodev/natural'; +import {Component, inject, type OnInit} from '@angular/core'; +import {type Literal, NaturalIconDirective, NaturalQueryVariablesManager} from '@ecodev/natural'; import {groupBy, sortBy} from 'es-toolkit'; import {FacilitatorDocumentsService} from '../../../admin/facilitator-documents/services/facilitator-documents.service'; import {UserService} from '../../../admin/users/services/user.service'; @@ -7,8 +7,8 @@ import { SortingOrder, UserRole, UserSortingField, - UsersQuery, - UsersQueryVariables, + type UsersQuery, + type UsersQueryVariables, } from '../../../shared/generated-types'; import {SessionSideColumnComponent} from '../session-side-column/session-side-column.component'; import {MatIcon} from '@angular/material/icon'; diff --git a/client/app/front-office/components/session-facilitator/session-facilitator.component.ts b/client/app/front-office/components/session-facilitator/session-facilitator.component.ts index 8ba85224..eb709ab9 100644 --- a/client/app/front-office/components/session-facilitator/session-facilitator.component.ts +++ b/client/app/front-office/components/session-facilitator/session-facilitator.component.ts @@ -1,7 +1,12 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {NaturalQueryVariablesManager} from '@ecodev/natural'; import {UserService} from '../../../admin/users/services/user.service'; -import {SortingOrder, UserSortingField, UsersQuery, UsersQueryVariables} from '../../../shared/generated-types'; +import { + SortingOrder, + UserSortingField, + type UsersQuery, + type UsersQueryVariables, +} from '../../../shared/generated-types'; import {SessionSideColumnComponent} from '../session-side-column/session-side-column.component'; @Component({ diff --git a/client/app/front-office/components/session-side-column/session-side-column.component.ts b/client/app/front-office/components/session-side-column/session-side-column.component.ts index 93d76e2c..95cc586e 100644 --- a/client/app/front-office/components/session-side-column/session-side-column.component.ts +++ b/client/app/front-office/components/session-side-column/session-side-column.component.ts @@ -1,9 +1,9 @@ -import {Component, inject, input, OnInit} from '@angular/core'; +import {Component, inject, input, type OnInit} from '@angular/core'; import {ActivatedRoute, RouterLink} from '@angular/router'; import {formatIsoDateTime, NaturalQueryVariablesManager} from '@ecodev/natural'; import {SessionService} from '../../../admin/sessions/services/session.service'; import {UserService} from '../../../admin/users/services/user.service'; -import {SessionsQueryVariables} from '../../../shared/generated-types'; +import {type SessionsQueryVariables} from '../../../shared/generated-types'; import {MatButton} from '@angular/material/button'; @Component({ diff --git a/client/app/front-office/components/sessions-incoming/sessions-incoming.component.ts b/client/app/front-office/components/sessions-incoming/sessions-incoming.component.ts index 8274ce1d..1cf3aae1 100644 --- a/client/app/front-office/components/sessions-incoming/sessions-incoming.component.ts +++ b/client/app/front-office/components/sessions-incoming/sessions-incoming.component.ts @@ -1,10 +1,10 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {formatIsoDateTime, NaturalQueryVariablesManager} from '@ecodev/natural'; import {SessionService} from '../../../admin/sessions/services/session.service'; import { SessionSortingField, - SessionsQuery, - SessionsQueryVariables, + type SessionsQuery, + type SessionsQueryVariables, SortingOrder, } from '../../../shared/generated-types'; import {SessionSideColumnComponent} from '../session-side-column/session-side-column.component'; diff --git a/client/app/front-office/components/soutenir/rejoindre-association/rejoindre-association.component.ts b/client/app/front-office/components/soutenir/rejoindre-association/rejoindre-association.component.ts index accac74d..8ed55864 100644 --- a/client/app/front-office/components/soutenir/rejoindre-association/rejoindre-association.component.ts +++ b/client/app/front-office/components/soutenir/rejoindre-association/rejoindre-association.component.ts @@ -1,6 +1,6 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {ProductService} from '../../../../admin/products/services/product.service'; -import {ProductQuery, ProductType} from '../../../../shared/generated-types'; +import {type ProductQuery, ProductType} from '../../../../shared/generated-types'; import {AddToCartComponent} from '../../../modules/shop/components/add-to-cart/add-to-cart.component'; @Component({ diff --git a/client/app/front-office/front-office.component.ts b/client/app/front-office/front-office.component.ts index 99598a34..8a2c4ce5 100644 --- a/client/app/front-office/front-office.component.ts +++ b/client/app/front-office/front-office.component.ts @@ -4,19 +4,19 @@ import { NaturalAlertService, NaturalErrorMessagePipe, NaturalIconDirective, - NaturalSearchSelections, + type NaturalSearchSelections, toNavigationParameters, } from '@ecodev/natural'; import {NgTemplateOutlet} from '@angular/common'; -import {AfterViewInit, Component, DestroyRef, ElementRef, inject, OnInit} from '@angular/core'; +import {type AfterViewInit, Component, DestroyRef, ElementRef, inject, type OnInit} from '@angular/core'; import {FormsModule, NonNullableFormBuilder, ReactiveFormsModule, Validators} from '@angular/forms'; import {ActivatedRoute, NavigationEnd, Router, RouterLink, RouterLinkActive, RouterOutlet} from '@angular/router'; import {differenceBy} from 'es-toolkit'; import {filter, finalize} from 'rxjs/operators'; import {UserService} from '../admin/users/services/user.service'; -import {CurrentUserForProfileQuery, UserRole} from '../shared/generated-types'; +import {type CurrentUserForProfileQuery, UserRole} from '../shared/generated-types'; import {Currency, CurrencyService} from '../shared/services/currency.service'; -import {MenuItem, NavigationService} from './services/navigation.service'; +import {type MenuItem, NavigationService} from './services/navigation.service'; import {MatListItem, MatNavList} from '@angular/material/list'; import {BreadcrumbsComponent} from '../shared/components/breadcrumbs/breadcrumbs.component'; import {MatInput} from '@angular/material/input'; diff --git a/client/app/front-office/front-office.routes.ts b/client/app/front-office/front-office.routes.ts index 68b5cc28..d323d12c 100644 --- a/client/app/front-office/front-office.routes.ts +++ b/client/app/front-office/front-office.routes.ts @@ -1,13 +1,13 @@ -import {Routes} from '@angular/router'; -import {formatIsoDate, formatIsoDateTime, NaturalSeo} from '@ecodev/natural'; +import {type Routes} from '@angular/router'; +import {formatIsoDate, formatIsoDateTime, type NaturalSeo} from '@ecodev/natural'; import {resolveEvent} from '../admin/events/services/event.resolver'; import {resolveNews} from '../admin/newses/services/news.resolver'; import {resolveViewer} from '../admin/users/services/viewer.resolver'; import {ErrorComponent} from '../shared/components/error/error.component'; import { EventSortingField, - EventsQueryVariables, - NewsesQueryVariables, + type EventsQueryVariables, + type NewsesQueryVariables, NewsSortingField, SortingOrder, } from '../shared/generated-types'; diff --git a/client/app/front-office/modules/cart/cart.routes.ts b/client/app/front-office/modules/cart/cart.routes.ts index 85b97d68..0643c254 100644 --- a/client/app/front-office/modules/cart/cart.routes.ts +++ b/client/app/front-office/modules/cart/cart.routes.ts @@ -1,9 +1,9 @@ -import {Routes} from '@angular/router'; +import {type Routes} from '@angular/router'; import {resolveViewer} from '../../../admin/users/services/viewer.resolver'; import {canActivateAuth} from '../../../shared/guards/auth.guard'; import {CartComponent} from './components/cart/cart.component'; import {CreateOrderComponent} from './components/create-order/create-order.component'; -import {NaturalSeo} from '@ecodev/natural'; +import {type NaturalSeo} from '@ecodev/natural'; export const routes: Routes = [ { diff --git a/client/app/front-office/modules/cart/classes/cart.spec.ts b/client/app/front-office/modules/cart/classes/cart.spec.ts index 7e956785..eacefab7 100644 --- a/client/app/front-office/modules/cart/classes/cart.spec.ts +++ b/client/app/front-office/modules/cart/classes/cart.spec.ts @@ -1,5 +1,5 @@ -import {ProductQuery, ProductType} from '../../../../shared/generated-types'; -import {Cart, CartLine} from './cart'; +import {type ProductQuery, ProductType} from '../../../../shared/generated-types'; +import {Cart, type CartLine} from './cart'; import {CartCollectionService} from '../services/cart-collection.service'; import {memorySessionStorageProvider} from '@ecodev/natural'; import {TestBed} from '@angular/core/testing'; diff --git a/client/app/front-office/modules/cart/classes/cart.ts b/client/app/front-office/modules/cart/classes/cart.ts index 6d373d57..44d35e87 100644 --- a/client/app/front-office/modules/cart/classes/cart.ts +++ b/client/app/front-office/modules/cart/classes/cart.ts @@ -1,14 +1,14 @@ -import Big, {BigSource} from 'big.js'; +import Big, {type BigSource} from 'big.js'; import { - ProductQuery, - ProductsQuery, - ProductType, - SubscriptionQuery, - SubscriptionsQuery, + type ProductQuery, + type ProductsQuery, + type ProductType, + type SubscriptionQuery, + type SubscriptionsQuery, } from '../../../../shared/generated-types'; import {Currency} from '../../../../shared/services/currency.service'; import {moneyRoundUp} from '../../../../shared/utils'; -import {CartCollectionService} from '../services/cart-collection.service'; +import {type CartCollectionService} from '../services/cart-collection.service'; export type CartLineProduct = ProductsQuery['products']['items'][0] | ProductQuery['product']; diff --git a/client/app/front-office/modules/cart/components/cart/cart.component.ts b/client/app/front-office/modules/cart/components/cart/cart.component.ts index f175bb2c..32cdc6f0 100644 --- a/client/app/front-office/modules/cart/components/cart/cart.component.ts +++ b/client/app/front-office/modules/cart/components/cart/cart.component.ts @@ -1,4 +1,4 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {ActivatedRoute, Router, RouterLink, RouterOutlet} from '@angular/router'; import { NaturalAlertService, @@ -7,8 +7,8 @@ import { NaturalIconDirective, } from '@ecodev/natural'; import {CurrencyService} from '../../../../../shared/services/currency.service'; -import {ProductType} from '../../../../../shared/generated-types'; -import {Cart, CartLineProduct} from '../../classes/cart'; +import {type ProductType} from '../../../../../shared/generated-types'; +import {type Cart, type CartLineProduct} from '../../classes/cart'; import {CartService} from '../../services/cart.service'; import {GlobalCartService} from '../../services/global-cart.service'; import {CartCollectionService} from '../../services/cart-collection.service'; diff --git a/client/app/front-office/modules/cart/components/create-order/create-order.component.ts b/client/app/front-office/modules/cart/components/create-order/create-order.component.ts index f648ead1..37dfb668 100644 --- a/client/app/front-office/modules/cart/components/create-order/create-order.component.ts +++ b/client/app/front-office/modules/cart/components/create-order/create-order.component.ts @@ -1,13 +1,13 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators} from '@angular/forms'; import {ActivatedRoute, Router, RouterLink, RouterOutlet} from '@angular/router'; import {NaturalAlertService, NaturalEnumPipe} from '@ecodev/natural'; import {finalize} from 'rxjs/operators'; import {UserService} from '../../../../../admin/users/services/user.service'; -import {CreateOrder, PaymentMethod} from '../../../../../shared/generated-types'; -import {Currency, CurrencyService} from '../../../../../shared/services/currency.service'; +import {type CreateOrder, PaymentMethod} from '../../../../../shared/generated-types'; +import {type Currency, CurrencyService} from '../../../../../shared/services/currency.service'; import {NavigationService} from '../../../../services/navigation.service'; -import {Cart} from '../../classes/cart'; +import {type Cart} from '../../classes/cart'; import {CartService} from '../../services/cart.service'; import {CartCollectionService} from '../../services/cart-collection.service'; import {DatatransService} from '../../services/datatrans.service'; diff --git a/client/app/front-office/modules/cart/services/cart.service.ts b/client/app/front-office/modules/cart/services/cart.service.ts index 91378fb5..88e5b0d5 100644 --- a/client/app/front-office/modules/cart/services/cart.service.ts +++ b/client/app/front-office/modules/cart/services/cart.service.ts @@ -2,13 +2,19 @@ import {inject, Injectable} from '@angular/core'; import {MatDialog} from '@angular/material/dialog'; import {MatSnackBar} from '@angular/material/snack-bar'; import {Router} from '@angular/router'; -import {Literal} from '@ecodev/natural'; -import {Observable} from 'rxjs'; +import {type Literal} from '@ecodev/natural'; +import {type Observable} from 'rxjs'; import {OrderService} from '../../../../admin/order/services/order.service'; -import {CreateOrder, OrderInput, OrderLineInput, PaymentMethod, ProductType} from '../../../../shared/generated-types'; +import { + type CreateOrder, + type OrderInput, + type OrderLineInput, + type PaymentMethod, + ProductType, +} from '../../../../shared/generated-types'; import {Currency, CurrencyService} from '../../../../shared/services/currency.service'; -import {DonationComponent, DonationData} from '../../../components/donation/donation.component'; -import {Cart, CartLineProduct} from '../classes/cart'; +import {DonationComponent, type DonationData} from '../../../components/donation/donation.component'; +import {type Cart, type CartLineProduct} from '../classes/cart'; import {GlobalCartService} from './global-cart.service'; import {CartCollectionService} from './cart-collection.service'; diff --git a/client/app/front-office/modules/cart/services/global-cart.service.ts b/client/app/front-office/modules/cart/services/global-cart.service.ts index 1ae0de63..c7191e82 100644 --- a/client/app/front-office/modules/cart/services/global-cart.service.ts +++ b/client/app/front-office/modules/cart/services/global-cart.service.ts @@ -1,7 +1,7 @@ -import {inject, Injectable, OnDestroy} from '@angular/core'; +import {inject, Injectable, type OnDestroy} from '@angular/core'; import {Cart} from '../classes/cart'; import {CartCollectionService} from './cart-collection.service'; -import {Subscription} from 'rxjs'; +import {type Subscription} from 'rxjs'; @Injectable({ providedIn: 'root', diff --git a/client/app/front-office/modules/shop/components/add-to-cart/add-to-cart.component.ts b/client/app/front-office/modules/shop/components/add-to-cart/add-to-cart.component.ts index 5f2929a0..0a00ca82 100644 --- a/client/app/front-office/modules/shop/components/add-to-cart/add-to-cart.component.ts +++ b/client/app/front-office/modules/shop/components/add-to-cart/add-to-cart.component.ts @@ -1,6 +1,6 @@ import {Component, inject, input} from '@angular/core'; -import {ProductType} from '../../../../../shared/generated-types'; -import {CartLineProduct} from '../../../cart/classes/cart'; +import {type ProductType} from '../../../../../shared/generated-types'; +import {type CartLineProduct} from '../../../cart/classes/cart'; import {CartService} from '../../../cart/services/cart.service'; import {RouterLink} from '@angular/router'; import {MatButton} from '@angular/material/button'; diff --git a/client/app/front-office/modules/shop/components/product-page/product-page.component.ts b/client/app/front-office/modules/shop/components/product-page/product-page.component.ts index 65248b65..4f937a1b 100644 --- a/client/app/front-office/modules/shop/components/product-page/product-page.component.ts +++ b/client/app/front-office/modules/shop/components/product-page/product-page.component.ts @@ -1,4 +1,4 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import { NaturalAbstractDetail, NaturalCapitalizePipe, @@ -9,11 +9,11 @@ import { import {ProductService} from '../../../../../admin/products/services/product.service'; import {PurchaseService} from '../../../../../profile/components/purchases/purchase.service'; import { - CurrentUserForProfileQuery, - ProductsQuery, - ProductsQueryVariables, + type CurrentUserForProfileQuery, + type ProductsQuery, + type ProductsQueryVariables, ProductType, - PurchasesQueryVariables, + type PurchasesQueryVariables, } from '../../../../../shared/generated-types'; import {ProductsPageComponent} from '../products-page/products-page.component'; import {AddToCartComponent} from '../add-to-cart/add-to-cart.component'; diff --git a/client/app/front-office/modules/shop/components/products-page/products-page.component.ts b/client/app/front-office/modules/shop/components/products-page/products-page.component.ts index 4e305f1a..68968284 100644 --- a/client/app/front-office/modules/shop/components/products-page/products-page.component.ts +++ b/client/app/front-office/modules/shop/components/products-page/products-page.component.ts @@ -1,4 +1,4 @@ -import {Component, inject, input, OnInit} from '@angular/core'; +import {Component, inject, input, type OnInit} from '@angular/core'; import {RouterLink} from '@angular/router'; import { fromUrl, @@ -10,7 +10,7 @@ import { } from '@ecodev/natural'; import {ProductService} from '../../../../../admin/products/services/product.service'; import {AbstractInfiniteLoadList} from '../../../../../shared/classes/AbstractInfiniteLoadList'; -import {ProductsQuery} from '../../../../../shared/generated-types'; +import {type ProductsQuery} from '../../../../../shared/generated-types'; import {StripTagsPipe} from '../../../../../shared/pipes/strip-tags.pipe'; import {TruncatePipe} from '../../../../../shared/pipes/truncate.pipe'; import {MatButton} from '@angular/material/button'; diff --git a/client/app/front-office/modules/shop/components/subscriptions/subscription.service.ts b/client/app/front-office/modules/shop/components/subscriptions/subscription.service.ts index 3827f0e6..71f9f795 100644 --- a/client/app/front-office/modules/shop/components/subscriptions/subscription.service.ts +++ b/client/app/front-office/modules/shop/components/subscriptions/subscription.service.ts @@ -1,19 +1,19 @@ import {Injectable} from '@angular/core'; import {Validators} from '@angular/forms'; -import {FormAsyncValidators, FormValidators, NaturalAbstractModelService, unique} from '@ecodev/natural'; +import {type FormAsyncValidators, type FormValidators, NaturalAbstractModelService, unique} from '@ecodev/natural'; import { - CreateSubscription, - CreateSubscriptionVariables, - DeleteSubscriptions, - DeleteSubscriptionsVariables, + type CreateSubscription, + type CreateSubscriptionVariables, + type DeleteSubscriptions, + type DeleteSubscriptionsVariables, ProductType, - SubscriptionInput, - SubscriptionQuery, - SubscriptionQueryVariables, - SubscriptionsQuery, - SubscriptionsQueryVariables, - UpdateSubscription, - UpdateSubscriptionVariables, + type SubscriptionInput, + type SubscriptionQuery, + type SubscriptionQueryVariables, + type SubscriptionsQuery, + type SubscriptionsQueryVariables, + type UpdateSubscription, + type UpdateSubscriptionVariables, } from '../../../../../shared/generated-types'; import { createSubscription, diff --git a/client/app/front-office/modules/shop/components/subscriptions/subscriptions.component.ts b/client/app/front-office/modules/shop/components/subscriptions/subscriptions.component.ts index cac6cc47..9149596f 100644 --- a/client/app/front-office/modules/shop/components/subscriptions/subscriptions.component.ts +++ b/client/app/front-office/modules/shop/components/subscriptions/subscriptions.component.ts @@ -1,9 +1,9 @@ -import {Component, inject, OnInit} from '@angular/core'; -import {MatDialog, MatDialogConfig} from '@angular/material/dialog'; +import {Component, inject, type OnInit} from '@angular/core'; +import {MatDialog, type MatDialogConfig} from '@angular/material/dialog'; import {ActivatedRoute, Router} from '@angular/router'; import {NaturalQueryVariablesManager} from '@ecodev/natural'; import {keyBy} from 'es-toolkit'; -import {ProductType, SubscriptionsQuery} from '../../../../../shared/generated-types'; +import {ProductType, type SubscriptionsQuery} from '../../../../../shared/generated-types'; import {EmailsComponent} from '../emails/emails.component'; import {SubscriptionService} from './subscription.service'; import {GlobalCartService} from '../../../cart/services/global-cart.service'; diff --git a/client/app/front-office/modules/shop/shop.routes.ts b/client/app/front-office/modules/shop/shop.routes.ts index c7c8207d..4a9601f8 100644 --- a/client/app/front-office/modules/shop/shop.routes.ts +++ b/client/app/front-office/modules/shop/shop.routes.ts @@ -1,9 +1,9 @@ -import {Routes} from '@angular/router'; +import {type Routes} from '@angular/router'; import {resolveProductTagByName} from '../../../admin/product-tags/services/product-tag-by-name.resolver'; import {resolveProduct} from '../../../admin/products/services/product.resolver'; import {ProductService} from '../../../admin/products/services/product.service'; -import {ProductSortingField, ProductsQueryVariables, SortingOrder} from '../../../shared/generated-types'; -import {NaturalSeo, type NaturalSeoCallback} from '@ecodev/natural'; +import {ProductSortingField, type ProductsQueryVariables, SortingOrder} from '../../../shared/generated-types'; +import {type NaturalSeo, type NaturalSeoCallback} from '@ecodev/natural'; import {ProductPageComponent} from './components/product-page/product-page.component'; import {ProductsPageComponent, ProductsViewMode} from './components/products-page/products-page.component'; import {SubscriptionsComponent} from './components/subscriptions/subscriptions.component'; diff --git a/client/app/front-office/services/navigation.service.ts b/client/app/front-office/services/navigation.service.ts index 96da8961..f53ee807 100644 --- a/client/app/front-office/services/navigation.service.ts +++ b/client/app/front-office/services/navigation.service.ts @@ -1,11 +1,11 @@ import {createGlobalPositionStrategy, createOverlayRef, OverlayConfig} from '@angular/cdk/overlay'; import {ComponentPortal} from '@angular/cdk/portal'; -import {DOCUMENT, ElementRef, inject, Injectable, Injector, StaticProvider} from '@angular/core'; -import {NavigationEnd, Router, RouterLink} from '@angular/router'; +import {DOCUMENT, type ElementRef, inject, Injectable, Injector, type StaticProvider} from '@angular/core'; +import {NavigationEnd, Router, type RouterLink} from '@angular/router'; import {cloneDeep} from 'es-toolkit'; -import {merge, Observable, Subject} from 'rxjs'; +import {merge, type Observable, Subject} from 'rxjs'; import {filter} from 'rxjs/operators'; -import {APP_MENU_DATA, MenuComponent, MenuDropdownData} from '../components/menu/menu.component'; +import {APP_MENU_DATA, MenuComponent, type MenuDropdownData} from '../components/menu/menu.component'; export type MenuItem = { display: string; diff --git a/client/app/profile/components/account/account.component.ts b/client/app/profile/components/account/account.component.ts index eacc383e..f0635b1a 100644 --- a/client/app/profile/components/account/account.component.ts +++ b/client/app/profile/components/account/account.component.ts @@ -1,4 +1,4 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {NaturalAbstractDetail, NaturalIconDirective} from '@ecodev/natural'; import {UserService} from '../../../admin/users/services/user.service'; import {MatIcon} from '@angular/material/icon'; diff --git a/client/app/profile/components/history/history.component.ts b/client/app/profile/components/history/history.component.ts index 7ce170d6..672c4cfd 100644 --- a/client/app/profile/components/history/history.component.ts +++ b/client/app/profile/components/history/history.component.ts @@ -1,4 +1,4 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {NaturalAbstractList, NaturalEnumPipe, NaturalTableButtonComponent, TypedMatCellDef} from '@ecodev/natural'; import {OrderService} from '../../../admin/order/services/order.service'; import {orders} from '../../../shared/natural-search/natural-search-facets'; diff --git a/client/app/profile/components/profile/profile.component.ts b/client/app/profile/components/profile/profile.component.ts index 13a94983..3cf4a8ca 100644 --- a/client/app/profile/components/profile/profile.component.ts +++ b/client/app/profile/components/profile/profile.component.ts @@ -1,8 +1,13 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {ActivatedRoute, RouterLink, RouterLinkActive, RouterOutlet} from '@angular/router'; import {NaturalAlertService, NaturalEnumPipe, NaturalIconDirective} from '@ecodev/natural'; import {UserService} from '../../../admin/users/services/user.service'; -import {CurrentUserForProfileQuery, Membership, ProductQuery, ProductType} from '../../../shared/generated-types'; +import { + type CurrentUserForProfileQuery, + Membership, + type ProductQuery, + ProductType, +} from '../../../shared/generated-types'; import {ProductService} from '../../../admin/products/services/product.service'; import {MatListItem, MatNavList} from '@angular/material/list'; import {AddToCartComponent} from '../../../front-office/modules/shop/components/add-to-cart/add-to-cart.component'; diff --git a/client/app/profile/components/purchases/purchase.service.ts b/client/app/profile/components/purchases/purchase.service.ts index 38ac5d09..36c19a5c 100644 --- a/client/app/profile/components/purchases/purchase.service.ts +++ b/client/app/profile/components/purchases/purchase.service.ts @@ -1,6 +1,6 @@ import {Injectable} from '@angular/core'; import {NaturalAbstractModelService} from '@ecodev/natural'; -import {PurchasesQuery, PurchasesQueryVariables} from '../../../shared/generated-types'; +import {type PurchasesQuery, type PurchasesQueryVariables} from '../../../shared/generated-types'; import {purchasesQuery} from './purchase.queries'; /** diff --git a/client/app/profile/components/purchases/purchases.component.ts b/client/app/profile/components/purchases/purchases.component.ts index 53eac133..29a8e5be 100644 --- a/client/app/profile/components/purchases/purchases.component.ts +++ b/client/app/profile/components/purchases/purchases.component.ts @@ -1,4 +1,4 @@ -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import { NaturalAbstractList, NaturalCapitalizePipe, @@ -9,7 +9,7 @@ import { NaturalSrcDensityDirective, } from '@ecodev/natural'; import {PurchaseService} from './purchase.service'; -import {ProductType, PurchasesQuery} from '../../../shared/generated-types'; +import {ProductType, type PurchasesQuery} from '../../../shared/generated-types'; import {MatPaginator} from '@angular/material/paginator'; import {MatProgressSpinner} from '@angular/material/progress-spinner'; import {MatIcon} from '@angular/material/icon'; diff --git a/client/app/profile/profile.routes.ts b/client/app/profile/profile.routes.ts index 5af6b802..45c70db9 100644 --- a/client/app/profile/profile.routes.ts +++ b/client/app/profile/profile.routes.ts @@ -1,5 +1,5 @@ -import {Routes} from '@angular/router'; -import {NaturalDialogTriggerComponent, NaturalDialogTriggerRoutingData, NaturalSeo} from '@ecodev/natural'; +import {type Routes} from '@angular/router'; +import {NaturalDialogTriggerComponent, type NaturalDialogTriggerRoutingData, type NaturalSeo} from '@ecodev/natural'; import {OrderComponent} from '../admin/order/order/order.component'; import {resolveOrder} from '../admin/order/services/order.resolver'; import {resolveViewer, resolveViewerForProfile} from '../admin/users/services/viewer.resolver'; diff --git a/client/app/shared/classes/AbstractInfiniteLoadList.ts b/client/app/shared/classes/AbstractInfiniteLoadList.ts index 1e53a6e3..1239e669 100644 --- a/client/app/shared/classes/AbstractInfiniteLoadList.ts +++ b/client/app/shared/classes/AbstractInfiniteLoadList.ts @@ -1,14 +1,14 @@ -import {Directive, OnInit} from '@angular/core'; -import {PageEvent} from '@angular/material/paginator'; +import {Directive, type OnInit} from '@angular/core'; +import {type PageEvent} from '@angular/material/paginator'; import { - ExtractTall, - ExtractVall, - Literal, + type ExtractTall, + type ExtractVall, + type Literal, NaturalAbstractList, - NaturalAbstractModelService, - PaginatedData, - PaginationInput, - QueryVariables, + type NaturalAbstractModelService, + type PaginatedData, + type PaginationInput, + type QueryVariables, } from '@ecodev/natural'; import {defaults, pick} from 'es-toolkit/compat'; import {isEqual} from 'es-toolkit'; diff --git a/client/app/shared/components/address/address.component.ts b/client/app/shared/components/address/address.component.ts index 04ea805f..e9e303a7 100644 --- a/client/app/shared/components/address/address.component.ts +++ b/client/app/shared/components/address/address.component.ts @@ -1,6 +1,6 @@ import {NaturalErrorMessagePipe, NaturalSelectComponent} from '@ecodev/natural'; import {Component, inject, Input, input, output} from '@angular/core'; -import {FormGroup, FormsModule, ReactiveFormsModule} from '@angular/forms'; +import {type FormGroup, FormsModule, ReactiveFormsModule} from '@angular/forms'; import {CountryService} from './country.service'; import {MatInput} from '@angular/material/input'; import {MatError, MatFormField, MatLabel} from '@angular/material/form-field'; diff --git a/client/app/shared/components/address/country.service.ts b/client/app/shared/components/address/country.service.ts index 6e49517c..f84953a2 100644 --- a/client/app/shared/components/address/country.service.ts +++ b/client/app/shared/components/address/country.service.ts @@ -1,6 +1,11 @@ import {Injectable} from '@angular/core'; import {NaturalAbstractModelService} from '@ecodev/natural'; -import {CountriesQuery, CountriesQueryVariables, CountryQuery, CountryQueryVariables} from '../../generated-types'; +import { + type CountriesQuery, + type CountriesQueryVariables, + type CountryQuery, + type CountryQueryVariables, +} from '../../generated-types'; import {countriesQuery, countryQuery} from './country.queries'; @Injectable({ diff --git a/client/app/shared/components/boot-loader/boot-loader.component.spec.ts b/client/app/shared/components/boot-loader/boot-loader.component.spec.ts index 95e81f70..3bb6fa36 100644 --- a/client/app/shared/components/boot-loader/boot-loader.component.spec.ts +++ b/client/app/shared/components/boot-loader/boot-loader.component.spec.ts @@ -1,4 +1,4 @@ -import {ComponentFixture, TestBed} from '@angular/core/testing'; +import {type ComponentFixture, TestBed} from '@angular/core/testing'; import {BootLoaderComponent} from './boot-loader.component'; describe('BootLoaderComponent', () => { diff --git a/client/app/shared/components/breadcrumbs/breadcrumbs.component.ts b/client/app/shared/components/breadcrumbs/breadcrumbs.component.ts index 3352fcd7..a33ec816 100644 --- a/client/app/shared/components/breadcrumbs/breadcrumbs.component.ts +++ b/client/app/shared/components/breadcrumbs/breadcrumbs.component.ts @@ -1,5 +1,5 @@ -import {Component, DestroyRef, inject, OnInit} from '@angular/core'; -import {ActivatedRouteSnapshot, NavigationEnd, Router, RouterLink} from '@angular/router'; +import {Component, DestroyRef, inject, type OnInit} from '@angular/core'; +import {type ActivatedRouteSnapshot, NavigationEnd, Router, RouterLink} from '@angular/router'; import {filter} from 'rxjs/operators'; import {MatButton} from '@angular/material/button'; import {takeUntilDestroyed} from '@angular/core/rxjs-interop'; diff --git a/client/app/shared/components/error/error.component.ts b/client/app/shared/components/error/error.component.ts index 521a4315..f98e617a 100644 --- a/client/app/shared/components/error/error.component.ts +++ b/client/app/shared/components/error/error.component.ts @@ -4,7 +4,7 @@ import {ActivatedRoute, RouterLink} from '@angular/router'; import {MatButton} from '@angular/material/button'; import {NaturalIconDirective} from '@ecodev/natural'; import {MatIcon} from '@angular/material/icon'; -import {GraphQLFormattedError} from 'graphql'; +import {type GraphQLFormattedError} from 'graphql'; @Component({ selector: 'app-error', diff --git a/client/app/shared/components/price/price.component.ts b/client/app/shared/components/price/price.component.ts index ce5b6cb8..a555dddf 100644 --- a/client/app/shared/components/price/price.component.ts +++ b/client/app/shared/components/price/price.component.ts @@ -1,6 +1,6 @@ -import {Component, DestroyRef, inject, input, OnInit} from '@angular/core'; -import {CartLineProduct} from '../../../front-office/modules/cart/classes/cart'; -import {SubscriptionsQuery} from '../../generated-types'; +import {Component, DestroyRef, inject, input, type OnInit} from '@angular/core'; +import {type CartLineProduct} from '../../../front-office/modules/cart/classes/cart'; +import {type SubscriptionsQuery} from '../../generated-types'; import {Currency, CurrencyService} from '../../services/currency.service'; import {CurrencyPipe} from '@angular/common'; import {takeUntilDestroyed} from '@angular/core/rxjs-interop'; diff --git a/client/app/shared/components/tags-navigation/tags-navigation.component.ts b/client/app/shared/components/tags-navigation/tags-navigation.component.ts index b28032bf..597cb091 100644 --- a/client/app/shared/components/tags-navigation/tags-navigation.component.ts +++ b/client/app/shared/components/tags-navigation/tags-navigation.component.ts @@ -1,7 +1,7 @@ import {Component, inject, input} from '@angular/core'; import {NaturalQueryVariablesManager} from '@ecodev/natural'; import {ProductTagService} from '../../../admin/product-tags/services/product-tag.service'; -import {ProductTagsQuery, ProductTagsQueryVariables} from '../../generated-types'; +import {type ProductTagsQuery, type ProductTagsQueryVariables} from '../../generated-types'; import {RouterLink} from '@angular/router'; @Component({ diff --git a/client/app/shared/config/apollo-options.provider.ts b/client/app/shared/config/apollo-options.provider.ts index ad0532c4..ac412f5d 100644 --- a/client/app/shared/config/apollo-options.provider.ts +++ b/client/app/shared/config/apollo-options.provider.ts @@ -1,5 +1,5 @@ import {HttpBatchLink, HttpLink} from 'apollo-angular/http'; -import {ApolloClient, ApolloLink, InMemoryCache} from '@apollo/client'; +import {type ApolloClient, type ApolloLink, InMemoryCache} from '@apollo/client'; import { createErrorLink, createHttpLink, @@ -8,7 +8,7 @@ import { NetworkActivityService, } from '@ecodev/natural'; import {APOLLO_OPTIONS} from 'apollo-angular'; -import {inject, PLATFORM_ID, Provider} from '@angular/core'; +import {inject, PLATFORM_ID, type Provider} from '@angular/core'; import {localConfig} from '../generated-config'; export const apolloDefaultOptions: ApolloClient.Options['defaultOptions'] = { diff --git a/client/app/shared/guards/administration.guard.ts b/client/app/shared/guards/administration.guard.ts index 7fede9ab..aa6f32c3 100644 --- a/client/app/shared/guards/administration.guard.ts +++ b/client/app/shared/guards/administration.guard.ts @@ -1,6 +1,6 @@ import {inject} from '@angular/core'; -import {ActivatedRouteSnapshot, Router, RouterStateSnapshot} from '@angular/router'; -import {Observable} from 'rxjs'; +import {type ActivatedRouteSnapshot, Router, type RouterStateSnapshot} from '@angular/router'; +import {type Observable} from 'rxjs'; import {map} from 'rxjs/operators'; import {UserService} from '../../admin/users/services/user.service'; diff --git a/client/app/shared/guards/auth.guard.ts b/client/app/shared/guards/auth.guard.ts index b65795e5..be38c4ea 100644 --- a/client/app/shared/guards/auth.guard.ts +++ b/client/app/shared/guards/auth.guard.ts @@ -1,6 +1,6 @@ import {inject} from '@angular/core'; -import {ActivatedRouteSnapshot, Router, RouterStateSnapshot} from '@angular/router'; -import {Observable} from 'rxjs'; +import {type ActivatedRouteSnapshot, Router, type RouterStateSnapshot} from '@angular/router'; +import {type Observable} from 'rxjs'; import {map} from 'rxjs/operators'; import {UserService} from '../../admin/users/services/user.service'; diff --git a/client/app/shared/guards/facilitator.guard.ts b/client/app/shared/guards/facilitator.guard.ts index 98d183c4..91934e39 100644 --- a/client/app/shared/guards/facilitator.guard.ts +++ b/client/app/shared/guards/facilitator.guard.ts @@ -1,6 +1,6 @@ import {inject} from '@angular/core'; -import {ActivatedRouteSnapshot, Router, RouterStateSnapshot} from '@angular/router'; -import {Observable} from 'rxjs'; +import {type ActivatedRouteSnapshot, Router, type RouterStateSnapshot} from '@angular/router'; +import {type Observable} from 'rxjs'; import {map} from 'rxjs/operators'; import {UserService} from '../../admin/users/services/user.service'; diff --git a/client/app/shared/natural-search/natural-search-facets.ts b/client/app/shared/natural-search/natural-search-facets.ts index bb07083f..96eb4d8b 100644 --- a/client/app/shared/natural-search/natural-search-facets.ts +++ b/client/app/shared/natural-search/natural-search-facets.ts @@ -1,28 +1,28 @@ import {assertInInjectionContext, inject} from '@angular/core'; import { - DropdownFacet, - FlagFacet, + type DropdownFacet, + type FlagFacet, NaturalEnumService, - NaturalSearchFacets, + type NaturalSearchFacets, replaceOperatorByName, TypeDateComponent, - TypeDateConfiguration, + type TypeDateConfiguration, TypeNaturalSelectComponent, TypeNumberComponent, - TypeNumberConfiguration, + type TypeNumberConfiguration, TypeSelectComponent, - TypeSelectConfiguration, - TypeSelectNaturalConfiguration, + type TypeSelectConfiguration, + type TypeSelectNaturalConfiguration, TypeTextComponent, wrapLike, } from '@ecodev/natural'; import {ProductTagService} from '../../admin/product-tags/services/product-tag.service'; import {UserService} from '../../admin/users/services/user.service'; import { - ProductFilterGroupConditionFile, - ProductFilterGroupConditionIsActive, - UserFilterGroupConditionShouldDelete, - UserFilterGroupConditionSubscriptionLastReview, + type ProductFilterGroupConditionFile, + type ProductFilterGroupConditionIsActive, + type UserFilterGroupConditionShouldDelete, + type UserFilterGroupConditionSubscriptionLastReview, } from '../generated-types'; function owner(): DropdownFacet> { diff --git a/client/app/shared/pipes/strip-tags.pipe.ts b/client/app/shared/pipes/strip-tags.pipe.ts index 99b227d7..cfa3c749 100644 --- a/client/app/shared/pipes/strip-tags.pipe.ts +++ b/client/app/shared/pipes/strip-tags.pipe.ts @@ -1,4 +1,4 @@ -import {Pipe, PipeTransform} from '@angular/core'; +import {Pipe, type PipeTransform} from '@angular/core'; import {striptags} from 'striptags'; @Pipe({ diff --git a/client/app/shared/pipes/truncate.pipe.ts b/client/app/shared/pipes/truncate.pipe.ts index cee39113..00747d7c 100644 --- a/client/app/shared/pipes/truncate.pipe.ts +++ b/client/app/shared/pipes/truncate.pipe.ts @@ -1,4 +1,4 @@ -import {Pipe, PipeTransform} from '@angular/core'; +import {Pipe, type PipeTransform} from '@angular/core'; @Pipe({ name: 'truncate', diff --git a/client/app/shared/services/currency.service.ts b/client/app/shared/services/currency.service.ts index 8a01f4a0..454ae1ba 100644 --- a/client/app/shared/services/currency.service.ts +++ b/client/app/shared/services/currency.service.ts @@ -1,5 +1,5 @@ import {BehaviorSubject} from 'rxjs'; -import {UserLike} from '../../admin/users/services/user.service'; +import {type UserLike} from '../../admin/users/services/user.service'; import {inject, Injectable} from '@angular/core'; import {SESSION_STORAGE} from '@ecodev/natural'; diff --git a/client/app/shared/services/logger-extra.service.ts b/client/app/shared/services/logger-extra.service.ts index 48f267d0..0a46f91e 100644 --- a/client/app/shared/services/logger-extra.service.ts +++ b/client/app/shared/services/logger-extra.service.ts @@ -1,6 +1,6 @@ import {inject, Injectable} from '@angular/core'; -import {NaturalLoggerExtra, NaturalLoggerType} from '@ecodev/natural'; -import {Observable, of} from 'rxjs'; +import {type NaturalLoggerExtra, type NaturalLoggerType} from '@ecodev/natural'; +import {type Observable, of} from 'rxjs'; import {UserService} from '../../admin/users/services/user.service'; import {localConfig} from '../generated-config'; diff --git a/client/app/shared/services/permissions.service.ts b/client/app/shared/services/permissions.service.ts index 9f30eb7b..dc4d1779 100644 --- a/client/app/shared/services/permissions.service.ts +++ b/client/app/shared/services/permissions.service.ts @@ -1,9 +1,9 @@ import {Apollo} from 'apollo-angular'; import {inject, Injectable} from '@angular/core'; -import {ignoreErrors, Literal} from '@ecodev/natural'; -import {BehaviorSubject, Observable} from 'rxjs'; +import {ignoreErrors, type Literal} from '@ecodev/natural'; +import {BehaviorSubject, type Observable} from 'rxjs'; import {concatMap, debounceTime, distinctUntilChanged, map, shareReplay} from 'rxjs/operators'; -import {PermissionsQuery} from '../generated-types'; +import {type PermissionsQuery} from '../generated-types'; import {isEqual} from 'es-toolkit'; import {permissionsQuery} from './permissions.queries'; diff --git a/client/app/shared/utils.ts b/client/app/shared/utils.ts index 8914998a..fdd6d50b 100644 --- a/client/app/shared/utils.ts +++ b/client/app/shared/utils.ts @@ -1,4 +1,4 @@ -import Big, {BigSource} from 'big.js'; +import Big, {type BigSource} from 'big.js'; export function moneyRoundUp(amount: BigSource): number { return Math.ceil(+Big(amount).times(100)) / 100; diff --git a/client/app/shared/validators.ts b/client/app/shared/validators.ts index 595c06ed..7d1a74de 100644 --- a/client/app/shared/validators.ts +++ b/client/app/shared/validators.ts @@ -1,5 +1,12 @@ -import {AbstractControl, FormControl, FormGroupDirective, NgForm, ValidationErrors, ValidatorFn} from '@angular/forms'; -import {ErrorStateMatcher} from '@angular/material/core'; +import { + type AbstractControl, + type FormControl, + type FormGroupDirective, + type NgForm, + type ValidationErrors, + type ValidatorFn, +} from '@angular/forms'; +import {type ErrorStateMatcher} from '@angular/material/core'; /** * Returns a validator that validates that there is never more than 1 value set for all given paths. diff --git a/client/app/user/components/change-password/change-password.component.ts b/client/app/user/components/change-password/change-password.component.ts index 26fa8a36..12601b38 100644 --- a/client/app/user/components/change-password/change-password.component.ts +++ b/client/app/user/components/change-password/change-password.component.ts @@ -4,7 +4,7 @@ import {FormsModule, NonNullableFormBuilder, ReactiveFormsModule} from '@angular import {ActivatedRoute, Router} from '@angular/router'; import {ifValid, NaturalAlertService, NaturalIconDirective} from '@ecodev/natural'; import {finalize} from 'rxjs/operators'; -import {UpdatePassword, UpdatePasswordVariables} from '../../../shared/generated-types'; +import {type UpdatePassword, type UpdatePasswordVariables} from '../../../shared/generated-types'; import {MatIcon} from '@angular/material/icon'; import {MatButton} from '@angular/material/button'; import {PasswordComponent} from '../password/password.component'; diff --git a/client/app/user/components/password/password.component.ts b/client/app/user/components/password/password.component.ts index c5b36f53..44fa7c4c 100644 --- a/client/app/user/components/password/password.component.ts +++ b/client/app/user/components/password/password.component.ts @@ -1,15 +1,15 @@ import {NaturalErrorMessagePipe, NaturalIconDirective} from '@ecodev/natural'; -import {Component, Input, OnInit} from '@angular/core'; +import {Component, Input, type OnInit} from '@angular/core'; import { - AbstractControl, + type AbstractControl, FormControl, FormGroup, FormsModule, ReactiveFormsModule, - ValidationErrors, + type ValidationErrors, Validators, } from '@angular/forms'; -import {ErrorStateMatcher} from '@angular/material/core'; +import {type ErrorStateMatcher} from '@angular/material/core'; import {MatIcon} from '@angular/material/icon'; import {MatInput} from '@angular/material/input'; import {MatError, MatFormField, MatHint, MatLabel, MatPrefix} from '@angular/material/form-field'; diff --git a/client/app/user/components/register/register-confirm.component.ts b/client/app/user/components/register/register-confirm.component.ts index 82025791..3a851391 100644 --- a/client/app/user/components/register/register-confirm.component.ts +++ b/client/app/user/components/register/register-confirm.component.ts @@ -1,10 +1,10 @@ import {deliverableEmail, NaturalErrorMessagePipe, NaturalIconDirective, relationsToIds} from '@ecodev/natural'; -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {pick} from 'es-toolkit'; import {RegisterComponent} from './register.component'; import {FormsModule, ReactiveFormsModule, Validators} from '@angular/forms'; -import {UserByTokenResolve} from '../../../admin/users/user'; -import {ConfirmRegistrationVariables, UserByTokenQuery} from '../../../shared/generated-types'; +import {type UserByTokenResolve} from '../../../admin/users/user'; +import {type ConfirmRegistrationVariables, type UserByTokenQuery} from '../../../shared/generated-types'; import {UserService} from '../../../admin/users/services/user.service'; import {MatButton} from '@angular/material/button'; import {AddressComponent} from '../../../shared/components/address/address.component'; diff --git a/client/app/user/components/register/register.component.ts b/client/app/user/components/register/register.component.ts index ff31cf07..a0391171 100644 --- a/client/app/user/components/register/register.component.ts +++ b/client/app/user/components/register/register.component.ts @@ -7,10 +7,10 @@ import { validateAllFormControls, } from '@ecodev/natural'; import {Apollo, gql} from 'apollo-angular'; -import {Component, inject, OnInit} from '@angular/core'; +import {Component, inject, type OnInit} from '@angular/core'; import {ActivatedRoute, Router} from '@angular/router'; -import {FormGroup, FormsModule, NonNullableFormBuilder, ReactiveFormsModule, Validators} from '@angular/forms'; -import {Register, RegisterVariables} from '../../../shared/generated-types'; +import {type FormGroup, FormsModule, NonNullableFormBuilder, ReactiveFormsModule, Validators} from '@angular/forms'; +import {type Register, type RegisterVariables} from '../../../shared/generated-types'; import {MatButton} from '@angular/material/button'; import {AddressComponent} from '../../../shared/components/address/address.component'; import {PasswordComponent} from '../password/password.component'; diff --git a/client/app/user/user.routes.ts b/client/app/user/user.routes.ts index 57f672be..c253c0f8 100644 --- a/client/app/user/user.routes.ts +++ b/client/app/user/user.routes.ts @@ -1,5 +1,5 @@ -import {Routes} from '@angular/router'; -import {NaturalSeo} from '@ecodev/natural'; +import {type Routes} from '@angular/router'; +import {type NaturalSeo} from '@ecodev/natural'; import {resolveUserByToken} from '../admin/users/services/userByToken.resolver'; import {ChangePasswordComponent} from './components/change-password/change-password.component'; import {RegisterConfirmComponent} from './components/register/register-confirm.component'; diff --git a/eslint.config.cjs b/eslint.config.cjs index 9ef94621..a7fe8d73 100644 --- a/eslint.config.cjs +++ b/eslint.config.cjs @@ -26,6 +26,7 @@ module.exports = tseslint.config( '@angular-eslint/prefer-on-push-component-change-detection': 'off', '@angular-eslint/use-component-selector': 'off', // Some components are not template-able and thus do not need selector '@typescript-eslint/consistent-type-definitions': ['error', 'type'], + '@typescript-eslint/consistent-type-exports': 'error', '@typescript-eslint/explicit-member-accessibility': 'error', '@typescript-eslint/no-confusing-void-expression': 'off', // Don't create unncessary closure and we prefer code tersity anyway '@typescript-eslint/no-dynamic-delete': 'off', @@ -77,6 +78,12 @@ module.exports = tseslint.config( style: 'kebab-case', }, ], + '@typescript-eslint/consistent-type-imports': [ + 'error', + { + fixStyle: 'inline-type-imports', + }, + ], '@typescript-eslint/explicit-function-return-type': [ 'error', { diff --git a/package.json b/package.json index 5735d713..399022c8 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,8 @@ "@angular/router": "^21.2.17", "@apollo/client": "^4.2.7", "@ecodev/fab-speed-dial": "^21.0.2", - "@ecodev/natural": "^71.0.0", - "@ecodev/natural-editor": "^71.0.0", + "@ecodev/natural": "^71.0.1", + "@ecodev/natural-editor": "^71.0.1", "@ecodev/natural-layout": "^2.0.2", "@graphql-codegen/cli": "^6.0.0", "@graphql-codegen/typescript-operations": "^5.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a3a62141..f7f8fa2e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,11 +42,11 @@ importers: specifier: ^21.0.2 version: 21.0.2(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/material@21.2.14(5d3abea766a539fd0b311e1932b77b1d))(rxjs@7.8.2) '@ecodev/natural': - specifier: ^71.0.0 - version: 71.0.0(d8fa97316196c06b59471547a9a6ef26) + specifier: ^71.0.1 + version: 71.0.1(d8fa97316196c06b59471547a9a6ef26) '@ecodev/natural-editor': - specifier: ^71.0.0 - version: 71.0.0(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/material@21.2.14(5d3abea766a539fd0b311e1932b77b1d))(@ecodev/natural@71.0.0(d8fa97316196c06b59471547a9a6ef26)) + specifier: ^71.0.1 + version: 71.0.1(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/material@21.2.14(5d3abea766a539fd0b311e1932b77b1d))(@ecodev/natural@71.0.1(d8fa97316196c06b59471547a9a6ef26)) '@ecodev/natural-layout': specifier: ^2.0.2 version: 2.0.5 @@ -552,8 +552,8 @@ packages: '@angular/material': ^21.1 rxjs: ^7.8.2 - '@ecodev/natural-editor@71.0.0': - resolution: {integrity: sha512-lvdEWp3SbOYgdyhJjBgTcZlsQo2QksF6Q9QmIW1l77qdHpQgtKrZNbltWuWZHVGCJiZ/RHbpHBAMoCZcxjeUnQ==} + '@ecodev/natural-editor@71.0.1': + resolution: {integrity: sha512-fMEFUyaW5gmBGGxGCJKX/KHxrW1/70vgLR6DsHignfaHo6108Fj6lSV8YGVAwBgUq8q+V+jgG4qShr1qvTVGAQ==} peerDependencies: '@angular/common': ^21.1.0 '@angular/core': ^21.1.0 @@ -564,8 +564,8 @@ packages: '@ecodev/natural-layout@2.0.5': resolution: {integrity: sha512-PcMT248B/XVOTdYUcpPhCdL2BbxwoxZghATnPSew4TMVMlLgk65bfMi2uY05Ywb+hPdbjwIJWZ7zepFlr/vDKw==} - '@ecodev/natural@71.0.0': - resolution: {integrity: sha512-QW0u442b6KpV5YHOaprjdv4+JWB2oEROqphI1ewdNYYVe3gaw7jhflqhRvOofQTlWhDzuC+N+TCKJiatcDhm8w==} + '@ecodev/natural@71.0.1': + resolution: {integrity: sha512-g/QDjwNaUtdlf163EK6o7AgTFi2Q6n81n1Zofdc06l0NPOcXPv5iZ3ODyo7HKaO6rbRE7cI+c4WhrxFGKvFy8g==} hasBin: true peerDependencies: '@angular/cdk': ^21.1.0 @@ -4959,13 +4959,13 @@ snapshots: rxjs: 7.8.2 tslib: 2.8.1 - '@ecodev/natural-editor@71.0.0(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/material@21.2.14(5d3abea766a539fd0b311e1932b77b1d))(@ecodev/natural@71.0.0(d8fa97316196c06b59471547a9a6ef26))': + '@ecodev/natural-editor@71.0.1(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/material@21.2.14(5d3abea766a539fd0b311e1932b77b1d))(@ecodev/natural@71.0.1(d8fa97316196c06b59471547a9a6ef26))': dependencies: '@angular/common': 21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/core': 21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/forms': 21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/material': 21.2.14(5d3abea766a539fd0b311e1932b77b1d) - '@ecodev/natural': 71.0.0(d8fa97316196c06b59471547a9a6ef26) + '@ecodev/natural': 71.0.1(d8fa97316196c06b59471547a9a6ef26) prosemirror-commands: 1.7.1 prosemirror-dropcursor: 1.8.3 prosemirror-gapcursor: 1.4.1 @@ -4983,7 +4983,7 @@ snapshots: '@ecodev/natural-layout@2.0.5': {} - '@ecodev/natural@71.0.0(d8fa97316196c06b59471547a9a6ef26)': + '@ecodev/natural@71.0.1(d8fa97316196c06b59471547a9a6ef26)': dependencies: '@angular/cdk': 21.2.14(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@21.2.17(@angular/common@21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/common': 21.2.17(@angular/core@21.2.17(@angular/compiler@21.2.17)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)