@esolve/ng-esolve-connect 0.129.0 → 0.130.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,11 @@
1
1
  import { isPlatformBrowser, CommonModule, IMAGE_LOADER, DOCUMENT } from '@angular/common';
2
- import { HttpErrorResponse, HttpClient, HttpParams, HttpHeaders, provideHttpClient, withInterceptors, withInterceptorsFromDi } from '@angular/common/http';
2
+ import { HttpErrorResponse, HttpClient, HttpStatusCode, HttpParams, HttpHeaders, provideHttpClient, withInterceptors, withInterceptorsFromDi } from '@angular/common/http';
3
3
  import * as i0 from '@angular/core';
4
- import { InjectionToken, inject, Injectable, PLATFORM_ID, signal, computed, provideAppInitializer, NgModule, ElementRef, HostListener, Input, Directive } from '@angular/core';
4
+ import { InjectionToken, inject, Injectable, PLATFORM_ID, ApplicationRef, signal, computed, provideAppInitializer, NgModule, ElementRef, HostListener, Input, Directive } from '@angular/core';
5
5
  import { SsrCookieService } from 'ngx-cookie-service-ssr';
6
- import { throwError, Subject, switchMap, timer, takeUntil, filter, distinctUntilChanged, catchError as catchError$1, of, tap, firstValueFrom, map as map$1, BehaviorSubject, iif } from 'rxjs';
7
6
  import { toObservable } from '@angular/core/rxjs-interop';
8
- import { fromUnixTime, parseISO } from 'date-fns';
7
+ import { throwError, Subject, filter, take, shareReplay, switchMap, timer, takeUntil, merge, distinctUntilChanged, firstValueFrom, from, catchError as catchError$1, of, tap, map as map$1, BehaviorSubject, iif } from 'rxjs';
8
+ import { fromUnixTime, isAfter, parseISO } from 'date-fns';
9
9
  import { map, catchError, switchMap as switchMap$1 } from 'rxjs/operators';
10
10
  import { Title, Meta } from '@angular/platform-browser';
11
11
 
@@ -522,6 +522,7 @@ class EsolveSessionService {
522
522
  this.config = inject(EsolveConfigService);
523
523
  this.cookieService = inject(EsolveCookieService);
524
524
  this.storage_key = this.setStorageKey();
525
+ this.appRef = inject(ApplicationRef);
525
526
  this.token = signal('');
526
527
  this.user_id = signal(0);
527
528
  this.access_level = signal(0);
@@ -554,8 +555,11 @@ class EsolveSessionService {
554
555
  this.timer_stop = new Subject();
555
556
  this.expire = new Subject();
556
557
  this.session_end = new Subject();
558
+ this.app_stable_init$ = this.appRef.isStable.pipe(filter(Boolean), take(1), shareReplay(1));
557
559
  this.timer_start
558
- .pipe(switchMap((time) => timer(time).pipe(takeUntil(this.timer_stop))))
560
+ .pipe(switchMap((time) => {
561
+ return timer(time).pipe(takeUntil(merge(this.timer_stop, this.timer_start)));
562
+ }))
559
563
  .subscribe(() => {
560
564
  // Stored time expired. Check if session is valid
561
565
  this.session_end.next();
@@ -652,7 +656,8 @@ class EsolveSessionService {
652
656
  stopTimer() {
653
657
  this.timer_stop.next();
654
658
  }
655
- startTimer(time) {
659
+ async startTimer(time) {
660
+ await firstValueFrom(this.app_stable_init$);
656
661
  this.timer_start.next(time);
657
662
  }
658
663
  getCachedSession() {
@@ -660,11 +665,14 @@ class EsolveSessionService {
660
665
  }
661
666
  reset() {
662
667
  this.removeCache();
663
- this.timer_stop.next();
668
+ this.stopTimer();
664
669
  }
665
670
  handleSession(session, expiry_date_unix, grace_unix) {
666
671
  const expiry_date = fromUnixTime(expiry_date_unix);
667
672
  const grace_expiry_date = fromUnixTime(expiry_date_unix + grace_unix);
673
+ if (!isAfter(grace_expiry_date, Date.now())) {
674
+ throw new Error('Invalid session expiry');
675
+ }
668
676
  this.setCache(session.token, grace_expiry_date);
669
677
  this.updateUserId(session.user_id);
670
678
  this.updateAccessLevel(session.access_level);
@@ -696,6 +704,10 @@ class EsolveSessionService {
696
704
  }
697
705
  if (typeof options.token !== 'undefined' &&
698
706
  options.token.trim() !== '') {
707
+ const expiry_date_unix = options.expiry_date_unix ?? 0;
708
+ const grace_unix = options.grace_unix ?? 0;
709
+ const grace_expiry_date = fromUnixTime(expiry_date_unix + grace_unix);
710
+ this.setCache(options.token, grace_expiry_date);
699
711
  this.updateToken(options.token);
700
712
  }
701
713
  }
@@ -813,14 +825,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
813
825
  }] });
814
826
 
815
827
  class EsolveAuthService {
828
+ #validating_session;
829
+ get validating_session() {
830
+ return this.#validating_session.asReadonly();
831
+ }
816
832
  constructor() {
817
833
  this.config = inject(EsolveConfigService);
818
834
  this.http = inject(HttpClient);
819
835
  this.session = inject(EsolveSessionService);
820
836
  this.errorHandler = inject(EsolveErrorHandlerService);
837
+ this.#validating_session = signal(false);
838
+ this.validating_session$ = toObservable(this.#validating_session);
821
839
  this.session
822
840
  .onSessionEnd()
823
- .pipe(switchMap(() => this.checkAccessToken()), catchError$1(() => of(null)))
841
+ .pipe(switchMap(() => {
842
+ return from(this.checkAccessToken()).pipe(catchError$1((error) => {
843
+ if (error instanceof HttpErrorResponse &&
844
+ error.status === HttpStatusCode.Unauthorized) {
845
+ // Token is invalid or expired
846
+ return of(null);
847
+ }
848
+ throw error;
849
+ }));
850
+ }))
824
851
  .subscribe((result) => {
825
852
  if (result) {
826
853
  this.handleAuthentication(result);
@@ -934,7 +961,10 @@ class EsolveAuthService {
934
961
  }));
935
962
  }
936
963
  async logout() {
937
- this.session.stopTimer();
964
+ if (this.session.getToken() === '') {
965
+ this.resetLocalSession();
966
+ return false;
967
+ }
938
968
  const response = await firstValueFrom(this.http
939
969
  .post(`${this.config.api_url}/set-logout.php`, {}, {
940
970
  headers: {
@@ -997,14 +1027,46 @@ class EsolveAuthService {
997
1027
  }
998
1028
  catch (error) {
999
1029
  console.error(error);
1030
+ this.session.updateToken('');
1000
1031
  this.session.reset();
1001
1032
  }
1002
1033
  return valid;
1003
1034
  }
1035
+ async validateSessionAndRefresh() {
1036
+ if (this.#validating_session()) {
1037
+ return firstValueFrom(this.onSessionValidationEnd());
1038
+ }
1039
+ this.#validating_session.set(true);
1040
+ let token = '';
1041
+ try {
1042
+ const session = this.session.getCachedSession();
1043
+ if (!session) {
1044
+ throw new Error('Invalid session');
1045
+ }
1046
+ const result = await this.checkAccessToken(session);
1047
+ if (!result.key) {
1048
+ throw new Error('Invalid key');
1049
+ }
1050
+ this.handleAuthentication(result);
1051
+ token = result.key;
1052
+ }
1053
+ catch (error) {
1054
+ console.error(error);
1055
+ this.session.updateToken('');
1056
+ const response = await firstValueFrom(this.getAnonymousSession());
1057
+ const result = response.additional_data;
1058
+ token = result.key;
1059
+ }
1060
+ finally {
1061
+ this.#validating_session.set(false);
1062
+ }
1063
+ return token;
1064
+ }
1004
1065
  /**
1005
1066
  * Use when logout fails to forcibly reset the local session
1006
1067
  */
1007
1068
  async resetLocalSession() {
1069
+ this.session.updateToken('');
1008
1070
  this.session.reset();
1009
1071
  await firstValueFrom(this.getAnonymousSession());
1010
1072
  }
@@ -1053,6 +1115,7 @@ class EsolveAuthService {
1053
1115
  }
1054
1116
  catch (error) {
1055
1117
  console.error(error);
1118
+ this.session.updateToken('');
1056
1119
  this.session.reset();
1057
1120
  }
1058
1121
  return null;
@@ -1091,6 +1154,9 @@ class EsolveAuthService {
1091
1154
  }
1092
1155
  return throwError(() => error);
1093
1156
  }
1157
+ onSessionValidationEnd() {
1158
+ return this.validating_session$.pipe(filter((busy) => !busy), switchMap(() => this.session.onTokenUpdate()), take(1));
1159
+ }
1094
1160
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EsolveAuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1095
1161
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EsolveAuthService, providedIn: 'root' }); }
1096
1162
  }
@@ -1238,6 +1304,43 @@ const esolveAuthInterceptor = (req, next) => {
1238
1304
  return next(req);
1239
1305
  };
1240
1306
 
1307
+ const esolveUnauthorizedErrorInterceptor = (req, next) => {
1308
+ const config = inject(EsolveConfigService);
1309
+ const session = inject(EsolveSessionService);
1310
+ const auth = inject(EsolveAuthService);
1311
+ if (req.url.startsWith(`${config.api_url}/`)) {
1312
+ const service_identifier = req.url.replace(`${config.api_url}/`, '');
1313
+ // Skip the following services
1314
+ const excluded_services = ['get-access-token.php', 'set-logout.php'];
1315
+ if (excluded_services.includes(service_identifier)) {
1316
+ return next(req);
1317
+ }
1318
+ return next(req).pipe(catchError$1((error) => {
1319
+ if (error.status === HttpStatusCode.Unauthorized) {
1320
+ const validation_end_stream$ = from(auth.validateSessionAndRefresh());
1321
+ // Wait for valid session and retry
1322
+ return validation_end_stream$.pipe(switchMap((token) => {
1323
+ if (req.method !== 'GET') {
1324
+ throw new Error('Invalid session. Please try again');
1325
+ }
1326
+ // Retry request with new token
1327
+ let headers = req.headers;
1328
+ const state_hash = session.getStateHash();
1329
+ headers = headers.set('X-Esolve-State-Hash', state_hash);
1330
+ // Retry request with new header
1331
+ headers = headers.set('Authorization', `Bearer ${token}`);
1332
+ const retry_req = req.clone({
1333
+ headers,
1334
+ });
1335
+ return next(retry_req);
1336
+ }));
1337
+ }
1338
+ throw error;
1339
+ }));
1340
+ }
1341
+ return next(req);
1342
+ };
1343
+
1241
1344
  const ESOLVE_EURUS_AUTO_LOGIN = provideAppInitializer(() => {
1242
1345
  const initializerFn = ((auth) => async () => {
1243
1346
  await auth.autoLogin();
@@ -1253,7 +1356,10 @@ function provideNgEsolveConnect(config, auto_login = false) {
1253
1356
  provide: ESOLVE_CONNECT_CONFIG,
1254
1357
  useValue: config,
1255
1358
  },
1256
- provideHttpClient(withInterceptors([esolveAuthInterceptor])),
1359
+ provideHttpClient(withInterceptors([
1360
+ esolveAuthInterceptor,
1361
+ esolveUnauthorizedErrorInterceptor,
1362
+ ])),
1257
1363
  ];
1258
1364
  if (auto_login) {
1259
1365
  providers.push(ESOLVE_EURUS_AUTO_LOGIN);
@@ -5988,23 +6094,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
5988
6094
  }]
5989
6095
  }], ctorParameters: () => [] });
5990
6096
 
5991
- class EsolveSessionShippingUpdateResult extends EsolveResponseResult {
6097
+ class EsolveSessionClientUpdateResult extends EsolveResponseResult {
5992
6098
  constructor(response) {
5993
6099
  super(response);
5994
6100
  if (typeof response.esolve_id === 'string') {
5995
6101
  throw new Error('Invalid response id.');
5996
6102
  }
5997
- this.shipping_updated = response.esolve_id > 0;
6103
+ this.client_updated = response.esolve_id > 0;
5998
6104
  }
5999
6105
  }
6000
6106
 
6001
- class EsolveSessionClientUpdateResult extends EsolveResponseResult {
6107
+ class EsolveSessionShippingUpdateResult extends EsolveResponseResult {
6002
6108
  constructor(response) {
6003
6109
  super(response);
6004
6110
  if (typeof response.esolve_id === 'string') {
6005
6111
  throw new Error('Invalid response id.');
6006
6112
  }
6007
- this.client_updated = response.esolve_id > 0;
6113
+ this.shipping_updated = response.esolve_id > 0;
6008
6114
  }
6009
6115
  }
6010
6116
 
@@ -6163,8 +6269,13 @@ class EsolveAccountService {
6163
6269
  if (response.auto_login) {
6164
6270
  const session_data = response.session_data;
6165
6271
  let token = '';
6272
+ let expiry_date_unix = undefined;
6273
+ let grace_unix = undefined;
6166
6274
  if (!Array.isArray(additional_data)) {
6167
6275
  token = additional_data.key;
6276
+ expiry_date_unix =
6277
+ +additional_data.expiry_time;
6278
+ grace_unix = +additional_data.grace_period;
6168
6279
  }
6169
6280
  this.sessionService.handleUpdateSession({
6170
6281
  user_id: +response.esolve_id,
@@ -6173,6 +6284,8 @@ class EsolveAccountService {
6173
6284
  shipping_id: +session_data.shipping_id,
6174
6285
  clients_id: +session_data.clients_id,
6175
6286
  token,
6287
+ expiry_date_unix,
6288
+ grace_unix,
6176
6289
  });
6177
6290
  }
6178
6291
  return new EsolveRegistrationResult(response);
@@ -9740,5 +9853,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
9740
9853
  * Generated bundle index. Do not edit.
9741
9854
  */
9742
9855
 
9743
- export { ESOLVE_CONNECT_CONFIG, ESOLVE_EURUS_AUTO_LOGIN, EsolveAccountConfirmationResult, EsolveAccountPayment, EsolveAccountService, EsolveAdditionalStockImage, EsolveAddress, EsolveAddressResult, EsolveAffiliate, EsolveAffiliateCheckResult, EsolveAffiliateLinkResult, EsolveAffiliateService, EsolveAlbum, EsolveAlbumImage, EsolveAlbumImageList, EsolveAlbumList, EsolveAlbumsService, EsolveAsset, EsolveAssetsService, EsolveAuthService, EsolveBankingDetails, EsolveBanner, EsolveBannerImage, EsolveBannerImageHotspot, EsolveBannerService, EsolveCaptcha, EsolveCaptchaService, EsolveCartAlternative, EsolveCartItem, EsolveCartService, EsolveCartStockItem, EsolveCartTotals, EsolveCategoryTreeItem, EsolveCategoryTreeService, EsolveCdnSrcDirective, EsolveChangePasswordResult, EsolveCheckoutResult, EsolveClientAsset, EsolveClientAssetList, EsolveColour, EsolveCompetition, EsolveCompetitionDates, EsolveCompetitionEntryResult, EsolveCompetitionWinner, EsolveCompetitionsService, EsolveConfigService, EsolveCookieService, EsolveCountry, EsolveCountryService, EsolveCoupon, EsolveCouponsService, EsolveDeliveriesService, EsolveDelivery, EsolveDeliveryCategoryTotals, EsolveDeliveryList, EsolveDeliveryStatus, EsolveDependantItem, EsolveDeviceService, EsolveEmptyCartResult, EsolveEmptyWishlistResult, EsolveEnquiryResult, EsolveEnquiryService, EsolveErpDocumentRequest, EsolveErpDocumentsRequestResult, EsolveErrorHandlerService, EsolveFilterFactory, EsolveGenericFilter, EsolveGeocodeAddressResult, EsolveGeocodeCoordsResult, EsolveGeocodeResult, EsolveGeocoderService, EsolveHttpError, EsolveLinkedAsset, EsolveLinkedStockItem, EsolveList, EsolveLocation, EsolveLocationAddress, EsolveLocationContactInfo, EsolveLocationGEO, EsolveLocationList, EsolveLocationPOBoxAddress, EsolveLocationTradingDay, EsolveLocationTradingTimes, EsolveLocationUpdateResult, EsolveLocationsService, EsolveManufacturer, EsolveManufacturersService, EsolveMediaStockItem, EsolveMenuItem, EsolveMenuService, EsolveMultipleSelectFilter, EsolveNewsArticle, EsolveNewsArticleAuthor, EsolveNewsArticleList, EsolveNewsGroup, EsolveNewsService, EsolveNewsletterResult, EsolveOtp, EsolveOtpService, EsolveOtpValidation, EsolvePaymentMethod, EsolvePaymentResult, EsolvePaymentService, EsolveRange, EsolveRangeFilter, EsolveRangesService, EsolveRecipeStockItem, EsolveRegistrationResult, EsolveResetPasswordResult, EsolveResponseHandlerService, EsolveResponseResult, EsolveResult, EsolveReview, EsolveReviewList, EsolveReviewResult, EsolveReviewsService, EsolveSeoInfo, EsolveSeoService, EsolveSessionAddressUpdateResult, EsolveSessionClientUpdateResult, EsolveSessionMetadataService, EsolveSessionService, EsolveSessionShippingUpdateResult, EsolveSetDeviceResult, EsolveSetNotifyResult, EsolveShippingCost, EsolveShippingMethod, EsolveShippingService, EsolveShippingTotals, EsolveSingleSelectFilter, EsolveSpecial, EsolveSpecialDates, EsolveSpecialImage, EsolveSpecialImageCollection, EsolveSpecialsService, EsolveStatement, EsolveStatementAgeing, EsolveStatementBalances, EsolveStatementTransaction, EsolveStockBadge, EsolveStockGroup, EsolveStockGroupItem, EsolveStockImage, EsolveStockImageCollection, EsolveStockItem, EsolveStockItemBase, EsolveStockItemList, EsolveStockItemLocationLevel, EsolveStockLeadTimes, EsolveStockPrice, EsolveStockReviewsReport, EsolveStockService, EsolveStockTransactionSales, EsolveSuggestedStockItem, EsolveSupplier, EsolveSuppliersService, EsolveTag, EsolveTagsService, EsolveTimeSlot, EsolveTimeSlotConfig, EsolveTimeSlotDate, EsolveTimeSlotDays, EsolveTimeSlotTimes, EsolveToggleFilter, EsolveTopic, EsolveTopicService, EsolveTransaction, EsolveTransactionAddress, EsolveTransactionAnalyticsData, EsolveTransactionApprovalResult, EsolveTransactionClient, EsolveTransactionDelivery, EsolveTransactionItem, EsolveTransactionItemPrice, EsolveTransactionList, EsolveTransactionLocation, EsolveTransactionPaymentMethod, EsolveTransactionPick, EsolveTransactionShippingMethod, EsolveTransactionTimeSlot, EsolveTransactionUser, EsolveTransactionsService, EsolveUserAccount, EsolveUserAccountBusiness, EsolveUserAccountContact, EsolveUserAccountResult, EsolveUserClientAccount, EsolveUserClientAccountBalances, EsolveUserDevice, EsolveVaultItem, EsolveVaultItemResult, EsolveVoucher, EsolveVouchersService, EsolveWalletBalances, EsolveWalletService, EsolveWalletTransaction, EsolveWalletTransactionsList, EsolveWishlistItem, EsolveWishlistService, NgEsolveConnectModule, esolveAuthInterceptor, esolveHexHash, isEsolveCdnPath, isFtgCdnPath, isLegacyEsolveCdnPath, processEsolveImageSrc, provideEsolveImageLoader, provideNgEsolveConnect };
9856
+ export { ESOLVE_CONNECT_CONFIG, ESOLVE_EURUS_AUTO_LOGIN, EsolveAccountConfirmationResult, EsolveAccountPayment, EsolveAccountService, EsolveAdditionalStockImage, EsolveAddress, EsolveAddressResult, EsolveAffiliate, EsolveAffiliateCheckResult, EsolveAffiliateLinkResult, EsolveAffiliateService, EsolveAlbum, EsolveAlbumImage, EsolveAlbumImageList, EsolveAlbumList, EsolveAlbumsService, EsolveAsset, EsolveAssetsService, EsolveAuthService, EsolveBankingDetails, EsolveBanner, EsolveBannerImage, EsolveBannerImageHotspot, EsolveBannerService, EsolveCaptcha, EsolveCaptchaService, EsolveCartAlternative, EsolveCartItem, EsolveCartService, EsolveCartStockItem, EsolveCartTotals, EsolveCategoryTreeItem, EsolveCategoryTreeService, EsolveCdnSrcDirective, EsolveChangePasswordResult, EsolveCheckoutResult, EsolveClientAsset, EsolveClientAssetList, EsolveColour, EsolveCompetition, EsolveCompetitionDates, EsolveCompetitionEntryResult, EsolveCompetitionWinner, EsolveCompetitionsService, EsolveConfigService, EsolveCookieService, EsolveCountry, EsolveCountryService, EsolveCoupon, EsolveCouponsService, EsolveDeliveriesService, EsolveDelivery, EsolveDeliveryCategoryTotals, EsolveDeliveryList, EsolveDeliveryStatus, EsolveDependantItem, EsolveDeviceService, EsolveEmptyCartResult, EsolveEmptyWishlistResult, EsolveEnquiryResult, EsolveEnquiryService, EsolveErpDocumentRequest, EsolveErpDocumentsRequestResult, EsolveErrorHandlerService, EsolveFilterFactory, EsolveGenericFilter, EsolveGeocodeAddressResult, EsolveGeocodeCoordsResult, EsolveGeocodeResult, EsolveGeocoderService, EsolveHttpError, EsolveLinkedAsset, EsolveLinkedStockItem, EsolveList, EsolveLocation, EsolveLocationAddress, EsolveLocationContactInfo, EsolveLocationGEO, EsolveLocationList, EsolveLocationPOBoxAddress, EsolveLocationTradingDay, EsolveLocationTradingTimes, EsolveLocationUpdateResult, EsolveLocationsService, EsolveManufacturer, EsolveManufacturersService, EsolveMediaStockItem, EsolveMenuItem, EsolveMenuService, EsolveMultipleSelectFilter, EsolveNewsArticle, EsolveNewsArticleAuthor, EsolveNewsArticleList, EsolveNewsGroup, EsolveNewsService, EsolveNewsletterResult, EsolveOtp, EsolveOtpService, EsolveOtpValidation, EsolvePaymentMethod, EsolvePaymentResult, EsolvePaymentService, EsolveRange, EsolveRangeFilter, EsolveRangesService, EsolveRecipeStockItem, EsolveRegistrationResult, EsolveResetPasswordResult, EsolveResponseHandlerService, EsolveResponseResult, EsolveResult, EsolveReview, EsolveReviewList, EsolveReviewResult, EsolveReviewsService, EsolveSeoInfo, EsolveSeoService, EsolveSessionAddressUpdateResult, EsolveSessionClientUpdateResult, EsolveSessionMetadataService, EsolveSessionService, EsolveSessionShippingUpdateResult, EsolveSetDeviceResult, EsolveSetNotifyResult, EsolveShippingCost, EsolveShippingMethod, EsolveShippingService, EsolveShippingTotals, EsolveSingleSelectFilter, EsolveSpecial, EsolveSpecialDates, EsolveSpecialImage, EsolveSpecialImageCollection, EsolveSpecialsService, EsolveStatement, EsolveStatementAgeing, EsolveStatementBalances, EsolveStatementTransaction, EsolveStockBadge, EsolveStockGroup, EsolveStockGroupItem, EsolveStockImage, EsolveStockImageCollection, EsolveStockItem, EsolveStockItemBase, EsolveStockItemList, EsolveStockItemLocationLevel, EsolveStockLeadTimes, EsolveStockPrice, EsolveStockReviewsReport, EsolveStockService, EsolveStockTransactionSales, EsolveSuggestedStockItem, EsolveSupplier, EsolveSuppliersService, EsolveTag, EsolveTagsService, EsolveTimeSlot, EsolveTimeSlotConfig, EsolveTimeSlotDate, EsolveTimeSlotDays, EsolveTimeSlotTimes, EsolveToggleFilter, EsolveTopic, EsolveTopicService, EsolveTransaction, EsolveTransactionAddress, EsolveTransactionAnalyticsData, EsolveTransactionApprovalResult, EsolveTransactionClient, EsolveTransactionDelivery, EsolveTransactionItem, EsolveTransactionItemPrice, EsolveTransactionList, EsolveTransactionLocation, EsolveTransactionPaymentMethod, EsolveTransactionPick, EsolveTransactionShippingMethod, EsolveTransactionTimeSlot, EsolveTransactionUser, EsolveTransactionsService, EsolveUserAccount, EsolveUserAccountBusiness, EsolveUserAccountContact, EsolveUserAccountResult, EsolveUserClientAccount, EsolveUserClientAccountBalances, EsolveUserDevice, EsolveVaultItem, EsolveVaultItemResult, EsolveVoucher, EsolveVouchersService, EsolveWalletBalances, EsolveWalletService, EsolveWalletTransaction, EsolveWalletTransactionsList, EsolveWishlistItem, EsolveWishlistService, NgEsolveConnectModule, esolveAuthInterceptor, esolveHexHash, esolveUnauthorizedErrorInterceptor, isEsolveCdnPath, isFtgCdnPath, isLegacyEsolveCdnPath, processEsolveImageSrc, provideEsolveImageLoader, provideNgEsolveConnect };
9744
9857
  //# sourceMappingURL=esolve-ng-esolve-connect.mjs.map