@esolve/ng-esolve-connect 0.145.0 → 0.147.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.
package/index.d.ts CHANGED
@@ -593,6 +593,28 @@ interface EsolveAssetOptions {
593
593
  area_of_application?: string;
594
594
  }
595
595
 
596
+ /**
597
+ * eSolve discount engine type — the criterion a promotion is driven by.
598
+ * Mirrors the engine's `DISCOUNT_TYPE` constants; the `type` on cart discount
599
+ * metadata and `get-cart-promotion-progress` records carries these values.
600
+ */
601
+ declare enum EsolveDiscountType {
602
+ /** Unset / abstract base. */
603
+ NONE = 0,
604
+ /** Driven by a specific stock code. */
605
+ CODE = 1,
606
+ /** Driven by a subcategory. */
607
+ SUBCATEGORY = 2,
608
+ /** Applies to everything in the cart. */
609
+ EVERYTHING = 3,
610
+ /** Driven by a category. */
611
+ CATEGORY = 4,
612
+ /** Group / "any-of" bundle. */
613
+ GROUP = 5,
614
+ /** Applied via a coupon. */
615
+ COUPON = 6
616
+ }
617
+
596
618
  type EsolveStockSortField = 'sorting_code' | 'price' | 'name' | 'description' | 'code' | 'created';
597
619
 
598
620
  type EsolveErpSalesStockSortField = EsolveStockSortField | 'total' | 'qty' | 'date';
@@ -1711,6 +1733,21 @@ interface EsolveCartErrors {
1711
1733
  tempcart_item_errors: EsolveCartItemErrors;
1712
1734
  }
1713
1735
 
1736
+ /**
1737
+ * Raw `discount_metadata` entry on a cart line — the discount the engine
1738
+ * applied, as returned by the API. Coerced into
1739
+ * {@link EsolveCartItemDiscountMetadata}.
1740
+ */
1741
+ interface EsolveCartItemDiscountMetadataRecord {
1742
+ type: number | string;
1743
+ specials_id: number | string | null;
1744
+ discount_id: number | string | null;
1745
+ coupon_id: number | string | null;
1746
+ group: string | null;
1747
+ discount: number | string;
1748
+ multiplier: number | string;
1749
+ }
1750
+
1714
1751
  interface EsolveCartItemErrorRecord {
1715
1752
  code: string;
1716
1753
  name: string;
@@ -1878,6 +1915,7 @@ interface EsolveCartItemRecord {
1878
1915
  discount_price: number;
1879
1916
  discount_price_incl: number;
1880
1917
  discount_total: number;
1918
+ discount_metadata: EsolveCartItemDiscountMetadataRecord[];
1881
1919
  vat_total: number;
1882
1920
  line_total: number;
1883
1921
  line_total_incl: number;
@@ -1911,6 +1949,11 @@ interface EsolveCartItemRecord {
1911
1949
  badges?: EsolveStockBadgeRecord[];
1912
1950
  }
1913
1951
 
1952
+ interface EsolveCartItemResponse extends EsolvePostResponseItem {
1953
+ esolve_id: number;
1954
+ current_qty: number;
1955
+ }
1956
+
1914
1957
  /**
1915
1958
  * One item that makes up a promotion. Always the authoritative source for what
1916
1959
  * makes up the promotion (see `get-cart-promotion-progress`).
@@ -1938,10 +1981,9 @@ interface EsolveCartPromotionProgressQualifyingItemRecord {
1938
1981
  interface EsolveCartPromotionProgressRecord {
1939
1982
  mode: EsolveCartPromotionProgressMode;
1940
1983
  /**
1941
- * Engine discount type the record originated from: `1` = code,
1942
- * `2` = subcategory, `3` = everything, `4` = category, `5` = group/"any-of".
1984
+ * Engine discount type the record originated from.
1943
1985
  */
1944
- type: number;
1986
+ type: EsolveDiscountType;
1945
1987
  /**
1946
1988
  * Linked special ID (`0` if the discount is not tied to a special).
1947
1989
  */
@@ -1987,11 +2029,6 @@ interface EsolveCartPromotionProgressRecord {
1987
2029
  message: string;
1988
2030
  }
1989
2031
 
1990
- interface EsolveCartItemResponse extends EsolvePostResponseItem {
1991
- esolve_id: number;
1992
- current_qty: number;
1993
- }
1994
-
1995
2032
  interface EsolveCartSetItem {
1996
2033
  code: string;
1997
2034
  id?: number;
@@ -3801,6 +3838,31 @@ declare class EsolveCartItemError {
3801
3838
  constructor(record: Partial<EsolveCartItemErrorRecord>, tempcart_id?: number);
3802
3839
  }
3803
3840
 
3841
+ /**
3842
+ * A discount the engine applied to a cart line, mirrored from the cart's
3843
+ * `discount_metadata`. When a line qualifies for several promotions, this
3844
+ * identifies which one owns the line — its `type`/`specials_id`/`discount_id`
3845
+ * (or `coupon_id`) match the corresponding `get-cart-promotion-progress`
3846
+ * record.
3847
+ */
3848
+ declare class EsolveCartItemDiscountMetadata {
3849
+ /** Which criterion the applied discount is driven by. */
3850
+ type: EsolveDiscountType;
3851
+ /** Linked special ID (`null` when not tied to a special). */
3852
+ specials_id: number | null;
3853
+ /** Discount ID (`null` for group promotions, tracked per special). */
3854
+ discount_id: number | null;
3855
+ /** Coupon ID when the discount came from a coupon (`null` otherwise). */
3856
+ coupon_id: number | null;
3857
+ /** Group key for group/"any-of" promotions (`null` otherwise). */
3858
+ group: string | null;
3859
+ /** Discount amount the engine recorded for the line. */
3860
+ discount: number;
3861
+ /** Units the discount was applied across. */
3862
+ multiplier: number;
3863
+ constructor(record: Partial<EsolveCartItemDiscountMetadataRecord>);
3864
+ }
3865
+
3804
3866
  declare class EsolveCartStockItem {
3805
3867
  code: string;
3806
3868
  name: string;
@@ -3859,6 +3921,7 @@ declare class EsolveCartItem {
3859
3921
  discount_price: number;
3860
3922
  discount_price_incl: number;
3861
3923
  discount_total: number;
3924
+ discount_metadata: EsolveCartItemDiscountMetadata[];
3862
3925
  vat_total: number;
3863
3926
  total: number;
3864
3927
  total_incl: number;
@@ -3870,6 +3933,7 @@ declare class EsolveCartItem {
3870
3933
  stock_item: EsolveCartStockItem;
3871
3934
  additional_params?: EsolveCartAdditionalParams;
3872
3935
  constructor(record: Partial<EsolveCartItemRecord>);
3936
+ private processDiscountMetadata;
3873
3937
  }
3874
3938
 
3875
3939
  /**
@@ -3902,10 +3966,9 @@ declare class EsolveCartPromotionProgressItem {
3902
3966
  */
3903
3967
  mode: EsolveCartPromotionProgressMode;
3904
3968
  /**
3905
- * Engine discount type the record originated from: `1` = code,
3906
- * `2` = subcategory, `3` = everything, `4` = category, `5` = group/"any-of".
3969
+ * Engine discount type the record originated from.
3907
3970
  */
3908
- type: number;
3971
+ type: EsolveDiscountType;
3909
3972
  /**
3910
3973
  * Linked special ID (`0` if the discount is not tied to a special).
3911
3974
  */
@@ -4226,6 +4289,7 @@ declare class EsolveCategoryTreeItem implements EsolveSeoDetails {
4226
4289
  active: boolean;
4227
4290
  display_only: boolean;
4228
4291
  private image_name;
4292
+ identifier?: string | undefined;
4229
4293
  id: string;
4230
4294
  seo_details: EsolveSeoInfo;
4231
4295
  total_stock?: number;
@@ -4242,7 +4306,7 @@ declare class EsolveCategoryTreeItem implements EsolveSeoDetails {
4242
4306
  }, stock_sort?: {
4243
4307
  sort: EsolveStockSortField;
4244
4308
  order: EsolveSortOrder;
4245
- });
4309
+ }, identifier?: string | undefined);
4246
4310
  getImagePath(image_size: 'small' | 'thumb' | 'tiny'): string;
4247
4311
  }
4248
4312
 
@@ -4287,6 +4351,7 @@ interface EsolveCategoryRecord {
4287
4351
  seo_keywords: string;
4288
4352
  short_description: string;
4289
4353
  image: string;
4354
+ identifier: string;
4290
4355
  total_stock?: number;
4291
4356
  children: (EsolveCategoryRecord | EsolveSubcategoryRecord)[];
4292
4357
  cart_sort?: {
@@ -4313,6 +4378,7 @@ interface EsolveCategoryTreeItemRecord {
4313
4378
  seo_keywords: string;
4314
4379
  seo_description: string;
4315
4380
  image: string;
4381
+ identifier: string;
4316
4382
  total_stock?: number;
4317
4383
  children?: EsolveCategoryTreeItemRecord[];
4318
4384
  cart_sort?: {
@@ -7343,26 +7409,118 @@ declare class EsolveSearchService {
7343
7409
  static ɵprov: i0.ɵɵInjectableDeclaration<EsolveSearchService>;
7344
7410
  }
7345
7411
 
7412
+ /**
7413
+ * One group's settings, as they arrive.
7414
+ *
7415
+ * Every value is a string: `{prefix}app_settings.setting_value` is a TEXT
7416
+ * column, so a structured setting travels as JSON inside it. Decoding and
7417
+ * validating is the consumer's job — see `EsolveSettingsGroup.getData()`.
7418
+ */
7419
+ interface EsolveSettingsGroupGeneric {
7420
+ [setting_key: string]: string;
7421
+ }
7422
+
7423
+ interface EsolveSettingsOptions {
7424
+ /**
7425
+ * Grouped settings to read alongside the site coordinates, e.g.
7426
+ * `['webapp.boot', 'webapp.flags']`. Omitted, the response carries
7427
+ * coordinates only — exactly as it did before groups existed.
7428
+ */
7429
+ groups?: string[];
7430
+ }
7431
+
7346
7432
  interface EsolveSettingsRecord {
7347
- site_url: string;
7348
- cdn_url: string;
7433
+ /**
7434
+ * The tenant's own coordinates — the **general settings**.
7435
+ *
7436
+ * Present only when `groups` was *not* requested. They are tenant facts
7437
+ * rather than app configuration, so a grouped read leaves them out instead
7438
+ * of resending them with every group fetch. A caller that wants both asks
7439
+ * twice.
7440
+ */
7441
+ site_url?: string;
7442
+ cdn_url?: string;
7443
+ /**
7444
+ * Present only when `groups` was requested. Keyed by group, and a group
7445
+ * that was asked for but holds no rows is present and empty.
7446
+ */
7447
+ groups?: {
7448
+ [group_key: string]: EsolveSettingsGroupGeneric;
7449
+ };
7450
+ }
7451
+
7452
+ /**
7453
+ * One group of settings`.
7454
+ *
7455
+ * Deliberately opaque, mirroring `EsolveMediaLayoutSection`: a group's keys
7456
+ * are defined by whichever app reads it, so this library must not carry a
7457
+ * property per setting — it would need a release for every option any
7458
+ * template ever adds. Instead the data is held as-is and typed by the
7459
+ * caller, which also puts defaulting and validation where the option is
7460
+ * declared.
7461
+ */
7462
+ declare class EsolveSettingsGroup {
7463
+ readonly group: string;
7464
+ private readonly data;
7465
+ constructor(group: string, data?: EsolveSettingsGroupGeneric);
7466
+ /**
7467
+ * The whole group, typed by assertion.
7468
+ *
7469
+ * No checking is performed — the type parameter is the caller's claim,
7470
+ * as with `EsolveMediaLayoutSection.getData()`. Validate on the way out.
7471
+ */
7472
+ getData<T = EsolveSettingsGroupGeneric>(): T;
7473
+ /** One raw value, or `undefined` when the group does not carry it. */
7474
+ get(setting_key: string): string | undefined;
7475
+ /** The keys this group actually carries. */
7476
+ keys(): string[];
7477
+ /** Whether the group came back with nothing — an unseeded tenant. */
7478
+ isEmpty(): boolean;
7349
7479
  }
7350
7480
 
7351
7481
  declare class EsolveSettings {
7352
- site_url: string;
7353
- cdn_url: string;
7482
+ /**
7483
+ * The tenant's coordinates, or `undefined` on a grouped read.
7484
+ *
7485
+ * `get-settings.php` returns these only when no `groups` are asked for —
7486
+ * they are the general settings, not app configuration. Optional rather
7487
+ * than defaulted to `''` so that "not requested" stays distinguishable
7488
+ * from "empty", which a caller passing them to a URL builder needs.
7489
+ */
7490
+ site_url?: string;
7491
+ cdn_url?: string;
7492
+ private readonly setting_groups;
7354
7493
  constructor(record?: EsolveSettingsRecord);
7494
+ /**
7495
+ * A requested group, or `null` when it was not asked for.
7496
+ *
7497
+ * A group that was asked for but holds no rows comes back as an empty
7498
+ * group rather than `null`, so "nothing configured" stays separable from
7499
+ * "never requested".
7500
+ */
7501
+ group(group_key: string): EsolveSettingsGroup | null;
7502
+ /** The groups present on this response. */
7503
+ groups(): string[];
7355
7504
  }
7356
7505
 
7357
7506
  declare class EsolveSettingsService {
7358
7507
  private readonly config;
7359
7508
  private readonly http;
7360
7509
  /**
7361
- * Retrieves site settings
7510
+ * Retrieves either the general settings or grouped app settings.
7511
+ *
7512
+ * Called with no options the request and the response are unchanged: the
7513
+ * tenant's coordinates, `site_url` and `cdn_url`. Naming `groups` asks
7514
+ * instead for those groups from `{prefix}app_settings`, which is how an
7515
+ * app is configured without a rebuild — and the coordinates are **not**
7516
+ * returned, since they are tenant facts rather than configuration and do
7517
+ * not change between groups. A caller that needs both asks twice.
7362
7518
  *
7363
- * @returns An `Observable` with site settings
7519
+ * @param options `groups` — the group keys to read *instead of* the
7520
+ * coordinates
7521
+ * @returns An `Observable` with the settings for the shape requested
7364
7522
  */
7365
- getSettings(): Observable<EsolveSettings>;
7523
+ getSettings(options?: EsolveSettingsOptions): Observable<EsolveSettings>;
7366
7524
  static ɵfac: i0.ɵɵFactoryDeclaration<EsolveSettingsService, never>;
7367
7525
  static ɵprov: i0.ɵɵInjectableDeclaration<EsolveSettingsService>;
7368
7526
  }
@@ -7583,5 +7741,5 @@ declare class EsolveChatService {
7583
7741
  static ɵprov: i0.ɵɵInjectableDeclaration<EsolveChatService>;
7584
7742
  }
7585
7743
 
7586
- 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, EsolveBannerVideo, EsolveCaptcha, EsolveCaptchaService, EsolveCareer, EsolveCareersService, EsolveCartAlternative, EsolveCartErrorHandlerService, EsolveCartItem, EsolveCartItemError, EsolveCartPromotionProgressItem, EsolveCartPromotionProgressQualifyingItem, EsolveCartService, EsolveCartStockItem, EsolveCartTaxBreakdown, EsolveCartTotals, EsolveCategoryTreeItem, EsolveCategoryTreeService, EsolveCdnSrcDirective, EsolveChangePasswordResult, EsolveChatIntentResult, EsolveChatProductGroup, EsolveChatService, EsolveCheckoutResult, EsolveClientAsset, EsolveClientAssetList, EsolveColour, EsolveColoursService, EsolveCompetition, EsolveCompetitionDates, EsolveCompetitionEntry, EsolveCompetitionEntryResult, EsolveCompetitionStats, EsolveCompetitionVoteResult, EsolveCompetitionWinner, EsolveCompetitionsService, EsolveConfigService, EsolveCookieService, EsolveCountry, EsolveCountryService, EsolveCoupon, EsolveCouponsService, EsolveDeliveriesService, EsolveDelivery, EsolveDeliveryCategoryTotals, EsolveDeliveryList, EsolveDeliveryStatus, EsolveDependantItem, EsolveDeviceService, EsolveEmptyCartResult, EsolveEmptyWishlistResult, EsolveEnquiryForm, EsolveEnquiryFormField, EsolveEnquiryFormSubmissionResult, EsolveEnquiryFormsService, EsolveEnquiryResult, EsolveEnquiryService, EsolveErpDocumentRequest, EsolveErpDocumentsRequestResult, EsolveErrorHandlerService, EsolveEvent, EsolveEventTargetService, EsolveEventType, EsolveFilterFactory, EsolveGenericFilter, EsolveGeocodeAddressResult, EsolveGeocodeCoordsResult, EsolveGeocodeResult, EsolveGeocoderService, EsolveHttpError, EsolveLinkedAsset, EsolveLinkedStockItem, EsolveList, EsolveLocation, EsolveLocationAddress, EsolveLocationContactInfo, EsolveLocationGEO, EsolveLocationList, EsolveLocationPOBoxAddress, EsolveLocationTradingDay, EsolveLocationTradingTimes, EsolveLocationUpdateResult, EsolveLocationsService, EsolveManufacturer, EsolveManufacturersService, EsolveMaterial, EsolveMaterialsService, EsolveMediaStockItem, EsolveMenuItem, EsolveMenuService, EsolveMultipleSelectFilter, EsolveNewsArticle, EsolveNewsArticleAuthor, EsolveNewsArticleList, EsolveNewsGroup, EsolveNewsService, EsolveNewsletterResult, EsolveNotificationButtonAction, EsolveNotificationDates, EsolveNotificationsService, EsolveOtp, EsolveOtpService, EsolveOtpValidation, EsolvePaymentMethod, EsolvePaymentResult, EsolvePaymentService, EsolveRange, EsolveRangeFilter, EsolveRangesService, EsolveRecipeStockItem, EsolveRegistrationResult, EsolveResetPasswordResult, EsolveResponseHandlerService, EsolveResponseResult, EsolveResult, EsolveReview, EsolveReviewList, EsolveReviewResult, EsolveReviewsService, EsolveSearchCleanResult, EsolveSearchResult, EsolveSearchResultItem, EsolveSearchService, EsolveSearchVectorizeResult, EsolveSeoInfo, EsolveSeoService, EsolveSessionAddressUpdateResult, EsolveSessionClientUpdateResult, EsolveSessionMetadataService, EsolveSessionService, EsolveSessionShippingUpdateResult, EsolveSetDeviceResult, EsolveSetNotifyResult, EsolveSettings, EsolveSettingsService, EsolveShippingCost, EsolveShippingCostItem, EsolveShippingMethod, EsolveShippingService, EsolveShippingTotals, EsolveSingleSelectFilter, EsolveSpecial, EsolveSpecialDates, EsolveSpecialImage, EsolveSpecialImageCollection, EsolveSpecialsService, EsolveStatement, EsolveStatementAgeing, EsolveStatementBalances, EsolveStatementTransaction, EsolveStockBadge, EsolveStockBarcode, EsolveStockGroup, EsolveStockGroupItem, EsolveStockImage, EsolveStockImageCollection, EsolveStockItem, EsolveStockItemBase, EsolveStockItemList, EsolveStockItemLocationLevel, EsolveStockLeadTimes, EsolveStockLinkedCategory, EsolveStockPrice, EsolveStockReviewsReport, EsolveStockService, EsolveStockTransactionSales, EsolveSuggestedStockItem, EsolveSupplier, EsolveSuppliersService, EsolveSystemNotification, EsolveSystemNotificationType, 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 };
7587
- export type { EsolveAccountConfirmationPostResponseItem, EsolveAccountPaymentRecord, EsolveAccountPaymentsOptions, EsolveAdditionalStockImageRecord, EsolveAdditionalWhere, EsolveAddressPlaceType, EsolveAddressPostData, EsolveAddressRecord, EsolveAddressResponse, EsolveAddressType, EsolveAffiliateCheckRecord, EsolveAffiliateLinkOptions, EsolveAffiliateLinkResponse, EsolveAffiliateRecord, EsolveAffiliatesOptions, EsolveAlbumImageOptions, EsolveAlbumImageRecord, EsolveAlbumImageSize, EsolveAlbumOptions, EsolveAlbumRecord, EsolveAssetList, EsolveAssetOptions, EsolveAssetRecord, EsolveAssetType, EsolveAuthCheckData, EsolveAuthCheckResponse, EsolveAuthData, EsolveAuthGetData, EsolveAuthGetResponse, EsolveAuthResponse, EsolveAuthResponseData, EsolveAuthResult, EsolveBannerImageHotspotCoords, EsolveBannerImageHotspotRecord, EsolveBannerImageRecord, EsolveBannerImageSet, EsolveBannerImageType, EsolveBannerLink, EsolveBannerRecord, EsolveBannerType, EsolveBannerVideoRecord, EsolveCaptchaAction, EsolveCaptchaOptions, EsolveCaptchaRecord, EsolveCardData, EsolveCareerOptions, EsolveCareerRecord, EsolveCareerType, EsolveCareersSortField, EsolveCart, EsolveCartAdditionalParams, EsolveCartAlternativeRecord, EsolveCartAlternativesMap, EsolveCartEmptyResponse, EsolveCartErrors, EsolveCartItemErrorRecord, EsolveCartItemErrors, EsolveCartItemRecord, EsolveCartItemResponse, EsolveCartItemSortField, EsolveCartPromotionProgress, EsolveCartPromotionProgressDiscountType, EsolveCartPromotionProgressItemType, EsolveCartPromotionProgressMode, EsolveCartPromotionProgressQualifyingItemRecord, EsolveCartPromotionProgressRecord, EsolveCartSetAction, EsolveCartSetItem, EsolveCartTotalsRecord, EsolveCategoryIdentifier, EsolveCategoryRecord, EsolveCategoryTreeItemOptions, EsolveCategoryTreeItemRecord, EsolveChatClientActionIntent, EsolveChatDisplayHint, EsolveChatIntent, EsolveChatIntentDispatchRequest, EsolveChatIntentMessageRequest, EsolveChatIntentRequest, EsolveChatIntentResponse, EsolveChatMessage, EsolveChatProductGroupLinkRecord, EsolveChatProductGroupRecord, EsolveChatSuggestion, EsolveChatSuggestionIntent, EsolveCheckoutBody, EsolveCheckoutResponse, EsolveClientAssetRecord, EsolveClientAssetsOptions, EsolveColourOptions, EsolveColourRecord, EsolveCompetitionEntryRecord, EsolveCompetitionOptions, EsolveCompetitionRecord, EsolveCompetitionStatsRecord, EsolveCompetitionVoteRecord, EsolveCompetitionWinnerRecord, EsolveConnectConfig, EsolveCookieOptions, EsolveCountryOptions, EsolveCountryRecord, EsolveCouponRecord, EsolveCouponValidation, EsolveCouponValidationError, EsolveCouponValidationResult, EsolveCouponsCache, EsolveCustomFields, EsolveDeleteResponse, EsolveDeleteResult, EsolveDeliveriesOptions, EsolveDeliveriesSortField, EsolveDeliveryCategoryTotalsMap, EsolveDeliveryCategoryTotalsMapRecord, EsolveDeliveryCategoryTotalsRecord, EsolveDeliveryIntegration, EsolveDeliveryRecord, EsolveDeliveryStatusRecord, EsolveDeliveryStatusType, EsolveDeliveryType, EsolveDependantItemRecord, EsolveDevice, EsolveDeviceType, EsolveEnquiryFormFieldCheckboxRecord, EsolveEnquiryFormFieldFileRecord, EsolveEnquiryFormFieldHeadingRecord, EsolveEnquiryFormFieldRadioRecord, EsolveEnquiryFormFieldRecord, EsolveEnquiryFormFieldRecordBase, EsolveEnquiryFormFieldSelectRecord, EsolveEnquiryFormFieldTextRecord, EsolveEnquiryFormRecord, EsolveEnquiryFormSubmitHttpResponse, EsolveEnquiryFormSubmitResult, EsolveEnquiryResponse, EsolveErpDocumentRequestRecord, EsolveErpSalesStockSortField, EsolveEventRecord, EsolveFilter, EsolveFilterDefinitions, EsolveFilterList, EsolveFilterRecord, EsolveFilterRecordList, EsolveFilterType, EsolveForgotPasswordGetResult, EsolveForgotPasswordResponse, EsolveGenericFilterDefinition, EsolveGeocodeAddressRecord, EsolveGeocodeResponse, EsolveGeocodeResultRecord, EsolveGetResponse, EsolveInsuranceCalculationMethod, EsolveIntegrationType, EsolveLinkedAssetRecord, EsolveLinkedStockRecord, EsolveLocationFilterOptions, EsolveLocationGeoOptions, EsolveLocationImageSize, EsolveLocationOption, EsolveLocationOptions, EsolveLocationRecord, EsolveLocationSortField, EsolveLoginPostResponseItem, EsolveLoginResponse, EsolveLogoutResponse, EsolveManufacturerImageSize, EsolveManufacturerOptions, EsolveManufacturerRecord, EsolveMaterialOptions, EsolveMaterialPhraseMatchMode, EsolveMaterialRecord, EsolveMediaAssetOptions, EsolveMediaStockItemList, EsolveMediaStockItemOptions, EsolveMediaStockItemRecord, EsolveMediaStockSortField, EsolveMenu, EsolveMenuTreeRecord, EsolveNewsArticleAuthorRecord, EsolveNewsArticleOptions, EsolveNewsArticleRecord, EsolveNewsGroupRecord, EsolveNewsletterResponse, EsolveNotificationButtonActionRecord, EsolveNotificationDateRecord, EsolveNotificationDatesRecord, EsolveNotificationPosition, EsolveNotificationSize, EsolveNotificationType, EsolveOtpAction, EsolveOtpOptions, EsolveOtpRecord, EsolveOtpValidationRecord, EsolvePaymentFormInput, EsolvePaymentMethodOptions, EsolvePaymentMethodRecord, EsolvePaymentRedirectLinks, EsolvePaymentResponse, EsolvePaymentSetBody, EsolvePaymentStatus, EsolvePickStatusType, EsolvePostResponseItem, EsolvePostResponseStatus, EsolveRangeFilterDefinition, EsolveRangeFilterRecord, EsolveRangeFilterType, EsolveRangeOptions, EsolveRangeRecord, EsolveRecipeItemRecord, EsolveRecipeStockOptions, EsolveRegistrationData, EsolveRegistrationPostResponseItem, EsolveResponse, EsolveResponseLogItem, EsolveReviewListRecord, EsolveReviewOptions, EsolveReviewRecord, EsolveReviewReport, EsolveReviewResponse, EsolveReviewSortField, EsolveReviewUser, EsolveSearchAuthStatus, EsolveSearchAuthStatusType, EsolveSearchBillingRequest, EsolveSearchBillingResponse, EsolveSearchBillingTotal, EsolveSearchCleanResponse, EsolveSearchRequest, EsolveSearchResponse, EsolveSearchResultRecord, EsolveSearchVectorizeGetRequest, EsolveSearchVectorizeGetResponse, EsolveSearchVectorizeItem, EsolveSearchVectorizeRequest, EsolveSearchVectorizeResponse, EsolveSelectFilter, EsolveSelectFilterRecord, EsolveSelectFilterType, EsolveSeoDetails, EsolveServiceProvider, EsolveSession, EsolveSessionData, EsolveSessionUpdateOptions, EsolveSetResponse, EsolveSettingsRecord, EsolveShippingCalculationMethod, EsolveShippingCostItemRecord, EsolveShippingCostRecord, EsolveShippingLocation, EsolveShippingMethodOptions, EsolveShippingMethodRecord, EsolveSort, EsolveSortOrder, EsolveSpecialImageCollectionRecord, EsolveSpecialImageRecord, EsolveSpecialOptions, EsolveSpecialRecord, EsolveStatementAgeingRecord, EsolveStatementBalancesRecord, EsolveStatementRecord, EsolveStatementTransactionRecord, EsolveStockAssetOptions, EsolveStockBadgeRecord, EsolveStockBarcodeOptions, EsolveStockBarcodeRecord, EsolveStockBaseRecord, EsolveStockCartParameter, EsolveStockCartParameterInput, EsolveStockFieldSetOptions, EsolveStockFilterOptions, EsolveStockGroupItemRecord, EsolveStockHistorySortField, EsolveStockImageCollectionRecord, EsolveStockImageSize, EsolveStockItemBaseOptions, EsolveStockItemHistoryOptions, EsolveStockItemLocationLevelRecord, EsolveStockItemOptions, EsolveStockLeadTimesRecord, EsolveStockLinkedCategoryRecord, EsolveStockRecord, EsolveStockReviewsReportRecord, EsolveStockSortField, EsolveStockType, EsolveStockUnitOfMeasure, EsolveSubcategoryRecord, EsolveSupplierOptions, EsolveSupplierRecord, EsolveSystemNotificationOptions, EsolveSystemNotificationRecord, EsolveSystemNotificationTypeRecord, EsolveTagOptions, EsolveTagPhraseMatchMode, EsolveTagRecord, EsolveTimeSlotCheckout, EsolveTimeSlotConfigRecord, EsolveTimeSlotDateRecord, EsolveTimeSlotDaysRecord, EsolveTimeSlotRecord, EsolveTimeSlotTimesRecord, EsolveToggleFilterType, EsolveTopicRecord, EsolveTrackingCode, EsolveTranactionApproval, EsolveTransactionAnalyticsDataRecord, EsolveTransactionApprovalState, EsolveTransactionClientRecord, EsolveTransactionItemRecord, EsolveTransactionLocationRecord, EsolveTransactionOptions, EsolveTransactionPaymentMethodRecord, EsolveTransactionRecord, EsolveTransactionSalesStockItemOptions, EsolveTransactionShippingMethodRecord, EsolveTransactionSortField, EsolveTransactionTimeSlotRecord, EsolveTransactionType, EsolveTransactionUserRecord, EsolveUrlTarget, EsolveUserAccountData, EsolveUserAccountRecord, EsolveUserClientAccountBalancesRecord, EsolveUserClientAccountRecord, EsolveUserDeviceOptions, EsolveUserDeviceRecord, EsolveValidateOtpResponse, EsolveVaultRecord, EsolveVaultResponse, EsolveVoucherRecord, EsolveVoucherValidation, EsolveVoucherValidationError, EsolveVoucherValidationResult, EsolveVouchersCache, EsolveWalletBalancesRecord, EsolveWalletCashOutOptions, EsolveWalletCashOutResponse, EsolveWalletTransactionOptions, EsolveWalletTransactionRecord, EsolveWalletTransactionType, EsolveWishlist, EsolveWishlistItemRecord, EsolveWishlistItemResponse, EsolveWishlistSetAction, EsolveWishlistSetItem };
7744
+ 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, EsolveBannerVideo, EsolveCaptcha, EsolveCaptchaService, EsolveCareer, EsolveCareersService, EsolveCartAlternative, EsolveCartErrorHandlerService, EsolveCartItem, EsolveCartItemDiscountMetadata, EsolveCartItemError, EsolveCartPromotionProgressItem, EsolveCartPromotionProgressQualifyingItem, EsolveCartService, EsolveCartStockItem, EsolveCartTaxBreakdown, EsolveCartTotals, EsolveCategoryTreeItem, EsolveCategoryTreeService, EsolveCdnSrcDirective, EsolveChangePasswordResult, EsolveChatIntentResult, EsolveChatProductGroup, EsolveChatService, EsolveCheckoutResult, EsolveClientAsset, EsolveClientAssetList, EsolveColour, EsolveColoursService, EsolveCompetition, EsolveCompetitionDates, EsolveCompetitionEntry, EsolveCompetitionEntryResult, EsolveCompetitionStats, EsolveCompetitionVoteResult, EsolveCompetitionWinner, EsolveCompetitionsService, EsolveConfigService, EsolveCookieService, EsolveCountry, EsolveCountryService, EsolveCoupon, EsolveCouponsService, EsolveDeliveriesService, EsolveDelivery, EsolveDeliveryCategoryTotals, EsolveDeliveryList, EsolveDeliveryStatus, EsolveDependantItem, EsolveDeviceService, EsolveDiscountType, EsolveEmptyCartResult, EsolveEmptyWishlistResult, EsolveEnquiryForm, EsolveEnquiryFormField, EsolveEnquiryFormSubmissionResult, EsolveEnquiryFormsService, EsolveEnquiryResult, EsolveEnquiryService, EsolveErpDocumentRequest, EsolveErpDocumentsRequestResult, EsolveErrorHandlerService, EsolveEvent, EsolveEventTargetService, EsolveEventType, EsolveFilterFactory, EsolveGenericFilter, EsolveGeocodeAddressResult, EsolveGeocodeCoordsResult, EsolveGeocodeResult, EsolveGeocoderService, EsolveHttpError, EsolveLinkedAsset, EsolveLinkedStockItem, EsolveList, EsolveLocation, EsolveLocationAddress, EsolveLocationContactInfo, EsolveLocationGEO, EsolveLocationList, EsolveLocationPOBoxAddress, EsolveLocationTradingDay, EsolveLocationTradingTimes, EsolveLocationUpdateResult, EsolveLocationsService, EsolveManufacturer, EsolveManufacturersService, EsolveMaterial, EsolveMaterialsService, EsolveMediaStockItem, EsolveMenuItem, EsolveMenuService, EsolveMultipleSelectFilter, EsolveNewsArticle, EsolveNewsArticleAuthor, EsolveNewsArticleList, EsolveNewsGroup, EsolveNewsService, EsolveNewsletterResult, EsolveNotificationButtonAction, EsolveNotificationDates, EsolveNotificationsService, EsolveOtp, EsolveOtpService, EsolveOtpValidation, EsolvePaymentMethod, EsolvePaymentResult, EsolvePaymentService, EsolveRange, EsolveRangeFilter, EsolveRangesService, EsolveRecipeStockItem, EsolveRegistrationResult, EsolveResetPasswordResult, EsolveResponseHandlerService, EsolveResponseResult, EsolveResult, EsolveReview, EsolveReviewList, EsolveReviewResult, EsolveReviewsService, EsolveSearchCleanResult, EsolveSearchResult, EsolveSearchResultItem, EsolveSearchService, EsolveSearchVectorizeResult, EsolveSeoInfo, EsolveSeoService, EsolveSessionAddressUpdateResult, EsolveSessionClientUpdateResult, EsolveSessionMetadataService, EsolveSessionService, EsolveSessionShippingUpdateResult, EsolveSetDeviceResult, EsolveSetNotifyResult, EsolveSettings, EsolveSettingsGroup, EsolveSettingsService, EsolveShippingCost, EsolveShippingCostItem, EsolveShippingMethod, EsolveShippingService, EsolveShippingTotals, EsolveSingleSelectFilter, EsolveSpecial, EsolveSpecialDates, EsolveSpecialImage, EsolveSpecialImageCollection, EsolveSpecialsService, EsolveStatement, EsolveStatementAgeing, EsolveStatementBalances, EsolveStatementTransaction, EsolveStockBadge, EsolveStockBarcode, EsolveStockGroup, EsolveStockGroupItem, EsolveStockImage, EsolveStockImageCollection, EsolveStockItem, EsolveStockItemBase, EsolveStockItemList, EsolveStockItemLocationLevel, EsolveStockLeadTimes, EsolveStockLinkedCategory, EsolveStockPrice, EsolveStockReviewsReport, EsolveStockService, EsolveStockTransactionSales, EsolveSuggestedStockItem, EsolveSupplier, EsolveSuppliersService, EsolveSystemNotification, EsolveSystemNotificationType, 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 };
7745
+ export type { EsolveAccountConfirmationPostResponseItem, EsolveAccountPaymentRecord, EsolveAccountPaymentsOptions, EsolveAdditionalStockImageRecord, EsolveAdditionalWhere, EsolveAddressPlaceType, EsolveAddressPostData, EsolveAddressRecord, EsolveAddressResponse, EsolveAddressType, EsolveAffiliateCheckRecord, EsolveAffiliateLinkOptions, EsolveAffiliateLinkResponse, EsolveAffiliateRecord, EsolveAffiliatesOptions, EsolveAlbumImageOptions, EsolveAlbumImageRecord, EsolveAlbumImageSize, EsolveAlbumOptions, EsolveAlbumRecord, EsolveAssetList, EsolveAssetOptions, EsolveAssetRecord, EsolveAssetType, EsolveAuthCheckData, EsolveAuthCheckResponse, EsolveAuthData, EsolveAuthGetData, EsolveAuthGetResponse, EsolveAuthResponse, EsolveAuthResponseData, EsolveAuthResult, EsolveBannerImageHotspotCoords, EsolveBannerImageHotspotRecord, EsolveBannerImageRecord, EsolveBannerImageSet, EsolveBannerImageType, EsolveBannerLink, EsolveBannerRecord, EsolveBannerType, EsolveBannerVideoRecord, EsolveCaptchaAction, EsolveCaptchaOptions, EsolveCaptchaRecord, EsolveCardData, EsolveCareerOptions, EsolveCareerRecord, EsolveCareerType, EsolveCareersSortField, EsolveCart, EsolveCartAdditionalParams, EsolveCartAlternativeRecord, EsolveCartAlternativesMap, EsolveCartEmptyResponse, EsolveCartErrors, EsolveCartItemDiscountMetadataRecord, EsolveCartItemErrorRecord, EsolveCartItemErrors, EsolveCartItemRecord, EsolveCartItemResponse, EsolveCartItemSortField, EsolveCartPromotionProgress, EsolveCartPromotionProgressDiscountType, EsolveCartPromotionProgressItemType, EsolveCartPromotionProgressMode, EsolveCartPromotionProgressQualifyingItemRecord, EsolveCartPromotionProgressRecord, EsolveCartSetAction, EsolveCartSetItem, EsolveCartTotalsRecord, EsolveCategoryIdentifier, EsolveCategoryRecord, EsolveCategoryTreeItemOptions, EsolveCategoryTreeItemRecord, EsolveChatClientActionIntent, EsolveChatDisplayHint, EsolveChatIntent, EsolveChatIntentDispatchRequest, EsolveChatIntentMessageRequest, EsolveChatIntentRequest, EsolveChatIntentResponse, EsolveChatMessage, EsolveChatProductGroupLinkRecord, EsolveChatProductGroupRecord, EsolveChatSuggestion, EsolveChatSuggestionIntent, EsolveCheckoutBody, EsolveCheckoutResponse, EsolveClientAssetRecord, EsolveClientAssetsOptions, EsolveColourOptions, EsolveColourRecord, EsolveCompetitionEntryRecord, EsolveCompetitionOptions, EsolveCompetitionRecord, EsolveCompetitionStatsRecord, EsolveCompetitionVoteRecord, EsolveCompetitionWinnerRecord, EsolveConnectConfig, EsolveCookieOptions, EsolveCountryOptions, EsolveCountryRecord, EsolveCouponRecord, EsolveCouponValidation, EsolveCouponValidationError, EsolveCouponValidationResult, EsolveCouponsCache, EsolveCustomFields, EsolveDeleteResponse, EsolveDeleteResult, EsolveDeliveriesOptions, EsolveDeliveriesSortField, EsolveDeliveryCategoryTotalsMap, EsolveDeliveryCategoryTotalsMapRecord, EsolveDeliveryCategoryTotalsRecord, EsolveDeliveryIntegration, EsolveDeliveryRecord, EsolveDeliveryStatusRecord, EsolveDeliveryStatusType, EsolveDeliveryType, EsolveDependantItemRecord, EsolveDevice, EsolveDeviceType, EsolveEnquiryFormFieldCheckboxRecord, EsolveEnquiryFormFieldFileRecord, EsolveEnquiryFormFieldHeadingRecord, EsolveEnquiryFormFieldRadioRecord, EsolveEnquiryFormFieldRecord, EsolveEnquiryFormFieldRecordBase, EsolveEnquiryFormFieldSelectRecord, EsolveEnquiryFormFieldTextRecord, EsolveEnquiryFormRecord, EsolveEnquiryFormSubmitHttpResponse, EsolveEnquiryFormSubmitResult, EsolveEnquiryResponse, EsolveErpDocumentRequestRecord, EsolveErpSalesStockSortField, EsolveEventRecord, EsolveFilter, EsolveFilterDefinitions, EsolveFilterList, EsolveFilterRecord, EsolveFilterRecordList, EsolveFilterType, EsolveForgotPasswordGetResult, EsolveForgotPasswordResponse, EsolveGenericFilterDefinition, EsolveGeocodeAddressRecord, EsolveGeocodeResponse, EsolveGeocodeResultRecord, EsolveGetResponse, EsolveInsuranceCalculationMethod, EsolveIntegrationType, EsolveLinkedAssetRecord, EsolveLinkedStockRecord, EsolveLocationFilterOptions, EsolveLocationGeoOptions, EsolveLocationImageSize, EsolveLocationOption, EsolveLocationOptions, EsolveLocationRecord, EsolveLocationSortField, EsolveLoginPostResponseItem, EsolveLoginResponse, EsolveLogoutResponse, EsolveManufacturerImageSize, EsolveManufacturerOptions, EsolveManufacturerRecord, EsolveMaterialOptions, EsolveMaterialPhraseMatchMode, EsolveMaterialRecord, EsolveMediaAssetOptions, EsolveMediaStockItemList, EsolveMediaStockItemOptions, EsolveMediaStockItemRecord, EsolveMediaStockSortField, EsolveMenu, EsolveMenuTreeRecord, EsolveNewsArticleAuthorRecord, EsolveNewsArticleOptions, EsolveNewsArticleRecord, EsolveNewsGroupRecord, EsolveNewsletterResponse, EsolveNotificationButtonActionRecord, EsolveNotificationDateRecord, EsolveNotificationDatesRecord, EsolveNotificationPosition, EsolveNotificationSize, EsolveNotificationType, EsolveOtpAction, EsolveOtpOptions, EsolveOtpRecord, EsolveOtpValidationRecord, EsolvePaymentFormInput, EsolvePaymentMethodOptions, EsolvePaymentMethodRecord, EsolvePaymentRedirectLinks, EsolvePaymentResponse, EsolvePaymentSetBody, EsolvePaymentStatus, EsolvePickStatusType, EsolvePostResponseItem, EsolvePostResponseStatus, EsolveRangeFilterDefinition, EsolveRangeFilterRecord, EsolveRangeFilterType, EsolveRangeOptions, EsolveRangeRecord, EsolveRecipeItemRecord, EsolveRecipeStockOptions, EsolveRegistrationData, EsolveRegistrationPostResponseItem, EsolveResponse, EsolveResponseLogItem, EsolveReviewListRecord, EsolveReviewOptions, EsolveReviewRecord, EsolveReviewReport, EsolveReviewResponse, EsolveReviewSortField, EsolveReviewUser, EsolveSearchAuthStatus, EsolveSearchAuthStatusType, EsolveSearchBillingRequest, EsolveSearchBillingResponse, EsolveSearchBillingTotal, EsolveSearchCleanResponse, EsolveSearchRequest, EsolveSearchResponse, EsolveSearchResultRecord, EsolveSearchVectorizeGetRequest, EsolveSearchVectorizeGetResponse, EsolveSearchVectorizeItem, EsolveSearchVectorizeRequest, EsolveSearchVectorizeResponse, EsolveSelectFilter, EsolveSelectFilterRecord, EsolveSelectFilterType, EsolveSeoDetails, EsolveServiceProvider, EsolveSession, EsolveSessionData, EsolveSessionUpdateOptions, EsolveSetResponse, EsolveSettingsGroupGeneric, EsolveSettingsOptions, EsolveSettingsRecord, EsolveShippingCalculationMethod, EsolveShippingCostItemRecord, EsolveShippingCostRecord, EsolveShippingLocation, EsolveShippingMethodOptions, EsolveShippingMethodRecord, EsolveSort, EsolveSortOrder, EsolveSpecialImageCollectionRecord, EsolveSpecialImageRecord, EsolveSpecialOptions, EsolveSpecialRecord, EsolveStatementAgeingRecord, EsolveStatementBalancesRecord, EsolveStatementRecord, EsolveStatementTransactionRecord, EsolveStockAssetOptions, EsolveStockBadgeRecord, EsolveStockBarcodeOptions, EsolveStockBarcodeRecord, EsolveStockBaseRecord, EsolveStockCartParameter, EsolveStockCartParameterInput, EsolveStockFieldSetOptions, EsolveStockFilterOptions, EsolveStockGroupItemRecord, EsolveStockHistorySortField, EsolveStockImageCollectionRecord, EsolveStockImageSize, EsolveStockItemBaseOptions, EsolveStockItemHistoryOptions, EsolveStockItemLocationLevelRecord, EsolveStockItemOptions, EsolveStockLeadTimesRecord, EsolveStockLinkedCategoryRecord, EsolveStockRecord, EsolveStockReviewsReportRecord, EsolveStockSortField, EsolveStockType, EsolveStockUnitOfMeasure, EsolveSubcategoryRecord, EsolveSupplierOptions, EsolveSupplierRecord, EsolveSystemNotificationOptions, EsolveSystemNotificationRecord, EsolveSystemNotificationTypeRecord, EsolveTagOptions, EsolveTagPhraseMatchMode, EsolveTagRecord, EsolveTimeSlotCheckout, EsolveTimeSlotConfigRecord, EsolveTimeSlotDateRecord, EsolveTimeSlotDaysRecord, EsolveTimeSlotRecord, EsolveTimeSlotTimesRecord, EsolveToggleFilterType, EsolveTopicRecord, EsolveTrackingCode, EsolveTranactionApproval, EsolveTransactionAnalyticsDataRecord, EsolveTransactionApprovalState, EsolveTransactionClientRecord, EsolveTransactionItemRecord, EsolveTransactionLocationRecord, EsolveTransactionOptions, EsolveTransactionPaymentMethodRecord, EsolveTransactionRecord, EsolveTransactionSalesStockItemOptions, EsolveTransactionShippingMethodRecord, EsolveTransactionSortField, EsolveTransactionTimeSlotRecord, EsolveTransactionType, EsolveTransactionUserRecord, EsolveUrlTarget, EsolveUserAccountData, EsolveUserAccountRecord, EsolveUserClientAccountBalancesRecord, EsolveUserClientAccountRecord, EsolveUserDeviceOptions, EsolveUserDeviceRecord, EsolveValidateOtpResponse, EsolveVaultRecord, EsolveVaultResponse, EsolveVoucherRecord, EsolveVoucherValidation, EsolveVoucherValidationError, EsolveVoucherValidationResult, EsolveVouchersCache, EsolveWalletBalancesRecord, EsolveWalletCashOutOptions, EsolveWalletCashOutResponse, EsolveWalletTransactionOptions, EsolveWalletTransactionRecord, EsolveWalletTransactionType, EsolveWishlist, EsolveWishlistItemRecord, EsolveWishlistItemResponse, EsolveWishlistSetAction, EsolveWishlistSetItem };
package/media/index.d.ts CHANGED
@@ -4,17 +4,50 @@ import { ComponentType, ComponentPortal } from '@angular/cdk/portal';
4
4
  import { EsolveUrlTarget, EsolveManufacturerRecord, EsolveRangeRecord, EsolveTagRecord, EsolveTopicRecord, EsolveCustomFields, EsolveSeoDetails, EsolveTag, EsolveTopic, EsolveSeoInfo, EsolveManufacturer, EsolveRange, EsolveSort } from '@esolve/ng-esolve-connect';
5
5
  import { Observable } from 'rxjs';
6
6
 
7
+ /**
8
+ * How a layout or section names its component.
9
+ *
10
+ * Either eagerly, as a class reference, or lazily, as a loader returning one —
11
+ * the same pair of keys Angular's `Route` uses, and chosen for the same reason:
12
+ * a component class and a loader are both functions at runtime, so the only way
13
+ * to tell them apart by inspection is Angular's private `ɵcmp`. An explicit key
14
+ * is cheaper to read and does not depend on a compiler internal.
15
+ *
16
+ * `component` stays the default. A config that sets neither is a configuration
17
+ * error, reported when the registry is built rather than when a page renders.
18
+ */
19
+ interface EsolveComponentSource {
20
+ /** Bundled with whatever imports the config — the original behaviour. */
21
+ component?: ComponentType<any>;
22
+ /**
23
+ * Loaded on first render of a section that uses it, in its own chunk.
24
+ *
25
+ * loadComponent: () => import('./hero').then((m) => m.HeroSection)
26
+ *
27
+ * Opt in per entry rather than per config: a CMS-composed landing page
28
+ * usually wants its above-the-fold sections eager and the rest lazy, and
29
+ * that is a decision only the consuming app can make.
30
+ */
31
+ loadComponent?: () => Promise<ComponentType<any>>;
32
+ }
33
+
7
34
  type EsolveMediaLayoutSectionType = 'media' | 'banner' | 'albums' | 'categories_grid' | 'categories_slider' | 'linked_stock' | 'stock' | 'linked_document_assets' | 'custom';
8
35
 
9
- interface EsolveLayoutSectionConfig {
36
+ /**
37
+ * Maps a section key (and optionally a sub key) onto the component that renders
38
+ * it. Supply exactly one of `component` or `loadComponent`.
39
+ */
40
+ interface EsolveLayoutSectionConfig extends EsolveComponentSource {
10
41
  key: EsolveMediaLayoutSectionType;
11
42
  sub_key?: string;
12
- component: ComponentType<any>;
13
43
  }
14
44
 
15
- interface EsolveLayoutConfig {
45
+ /**
46
+ * Maps a layout key onto the component that renders it, plus the sections that
47
+ * layout overrides. Supply exactly one of `component` or `loadComponent`.
48
+ */
49
+ interface EsolveLayoutConfig extends EsolveComponentSource {
16
50
  key: string;
17
- component: ComponentType<any>;
18
51
  sections?: {
19
52
  [key: string]: EsolveLayoutSectionConfig[] | undefined;
20
53
  /**
@@ -166,8 +199,12 @@ declare class EsolveMediaArticle implements EsolveSeoDetails {
166
199
  declare class EsolveMediaLayoutComponent implements OnChanges {
167
200
  private readonly layoutService;
168
201
  media: EsolveMediaArticle;
169
- portal?: ComponentPortal<any> | null;
202
+ /** See `EsolveMediaSectionComponent.portals` for why this is a signal. */
203
+ readonly portal: i0.WritableSignal<ComponentPortal<any> | null>;
204
+ /** Guards against a slow render from an older `media` landing last. */
205
+ private render_token;
170
206
  ngOnChanges(): void;
207
+ private processPortal;
171
208
  static ɵfac: i0.ɵɵFactoryDeclaration<EsolveMediaLayoutComponent, never>;
172
209
  static ɵcmp: i0.ɵɵComponentDeclaration<EsolveMediaLayoutComponent, "eslv-media-layout", never, { "media": { "alias": "media"; "required": true; }; }, {}, never, never, true, never>;
173
210
  }
@@ -175,9 +212,19 @@ declare class EsolveMediaLayoutComponent implements OnChanges {
175
212
  declare class EsolveMediaSectionComponent implements OnChanges {
176
213
  private readonly layoutService;
177
214
  key: string;
178
- portals: ComponentPortal<any>[];
215
+ /**
216
+ * A signal, not a field, because a section may name its component lazily
217
+ * and the portals are then assigned after an `await`. A plain field works
218
+ * only while the assignment happens inside `ngOnChanges` — once it happens
219
+ * in a promise callback, a zoneless app has nothing to tell it to re-render
220
+ * and the section never appears, with no error anywhere.
221
+ */
222
+ readonly portals: i0.WritableSignal<ComponentPortal<any>[]>;
223
+ /** Guards against a slow render from an older `key` landing last. */
224
+ private render_token;
179
225
  ngOnChanges(): void;
180
226
  private processPortals;
227
+ private createPortal;
181
228
  static ɵfac: i0.ɵɵFactoryDeclaration<EsolveMediaSectionComponent, never>;
182
229
  static ɵcmp: i0.ɵɵComponentDeclaration<EsolveMediaSectionComponent, "eslv-media-section", never, { "key": { "alias": "key"; "required": true; }; }, {}, never, never, true, never>;
183
230
  }
@@ -244,19 +291,35 @@ declare class EsolveMediaLayoutService {
244
291
  private layout_map;
245
292
  private section_map;
246
293
  private default_layout;
294
+ /** Loader → its in-flight or settled import, so each chunk is fetched once. */
295
+ private loading_map;
247
296
  constructor();
248
297
  getMedia(): EsolveMediaArticle;
249
298
  setMedia(media: EsolveMediaArticle): void;
250
- getLayout(): ComponentType<any>;
299
+ getLayout(): EsolveComponentSource;
251
300
  getSectionContent(key: string): EsolveMediaLayoutSection[];
252
- getSectionComponent(key: string, section: EsolveMediaLayoutSection): ComponentType<any>;
301
+ getSectionComponent(key: string, section: EsolveMediaLayoutSection): EsolveComponentSource;
253
302
  private searchLayout;
303
+ /**
304
+ * Resolves a source to a component class, importing it on first use.
305
+ *
306
+ * The loader's own promise is cached, not just its result, so N sections
307
+ * sharing one lazy component trigger one import rather than N — and a
308
+ * second render while the first is still in flight awaits the same promise.
309
+ */
310
+ resolveComponent(source: EsolveComponentSource): Promise<ComponentType<any>>;
254
311
  private setLayout;
255
312
  private setSection;
313
+ /**
314
+ * Fails at registry construction rather than at render. A config that names
315
+ * no component at all is a typo, and the render-time failure is swallowed
316
+ * into a `console.error` in dev and silence in production.
317
+ */
318
+ private assertSource;
256
319
  private createSectionMapKey;
257
320
  static ɵfac: i0.ɵɵFactoryDeclaration<EsolveMediaLayoutService, never>;
258
321
  static ɵprov: i0.ɵɵInjectableDeclaration<EsolveMediaLayoutService>;
259
322
  }
260
323
 
261
324
  export { ESOLVE_CONNECT_MEDIA_CONFIG, EsolveHeading, EsolveMediaArticle, EsolveMediaGroup, EsolveMediaLayoutComponent, EsolveMediaLayoutSection, EsolveMediaLayoutService, EsolveMediaLink, EsolveMediaSectionComponent, EsolveMediaService, NgEsolveConnectMediaModule, provideNgEsolveConnectMedia };
262
- export type { EsolveConnectMediaConfig, EsolveHeadingRecord, EsolveLayoutConfig, EsolveLayoutSectionConfig, EsolveMediaGroupRecord, EsolveMediaLayoutSectionRecord, EsolveMediaLayoutSectionType, EsolveMediaLinkRecord, EsolveMediaRecord, EsolveMediaSectionDataGeneric, EsolveMediaStockSectionData, EsolveSectionKeyOptions };
325
+ export type { EsolveComponentSource, EsolveConnectMediaConfig, EsolveHeadingRecord, EsolveLayoutConfig, EsolveLayoutSectionConfig, EsolveMediaGroupRecord, EsolveMediaLayoutSectionRecord, EsolveMediaLayoutSectionType, EsolveMediaLinkRecord, EsolveMediaRecord, EsolveMediaSectionDataGeneric, EsolveMediaStockSectionData, EsolveSectionKeyOptions };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esolve/ng-esolve-connect",
3
- "version": "0.145.0",
3
+ "version": "0.147.0",
4
4
  "homepage": "https://www.esolve.co.za/",
5
5
  "description": "An Angular library that speaks to an eSolve instance's API",
6
6
  "peerDependencies": {