{"version":3,"sources":["webpack:///../../../src/utilities/utils.ts?fbc0","webpack:///../../src/get-selected-variant.ts?f0c0","webpack:///../../src/get-wishlist-by-customer-id.ts?e873","webpack:///../../src/delete-address.ts?f9a3","webpack:///../../src/get-attribute-definitions.ts?cc6b","webpack:///../../src/get-org-unit-configuration.ts?4793","webpack:///../../../src/order-templates/get-full-order-template.ts?72c6","webpack:///../../src/get-refiners-by-category.ts?6d4e","webpack:///../../src/get-business-partner-operation-requests.ts?bece","webpack:///../../src/refine-search-by-category.ts?3e65","webpack:///../../../src/order-templates/add-item-to-order-template.ts?fff3","webpack:///../../src/get-delivery-options-for-selected-variant.ts?3f6c","webpack:///../../src/get-customer.ts?8319","webpack:///../../../../src/utilities/data-structures/dictionary.ts?bab3","webpack:///../../../src/order-templates/add-order-template-to-cart.ts?6ee4","webpack:///../../../src/order-templates/create-order-template.ts?03c1","webpack:///../../src/get-feature-state.ts?1a1d","webpack:///../../../src/order-templates/update-order-template-header.ts?1f77","webpack:///../../src/get-order-history.ts?76fd","webpack:///../../../../src/utilities/events/event.ts?15a9","webpack:///../../../src/invoices/get-invoices.ts?22cb","webpack:///src/connectors/msdyn365-exp-test/msdyn365-exp-test.provider.ts?22ac","webpack:///../../src/search-org-unit-locations.ts?d18d","webpack:///src/modules/wishlist-items/actions/get-items-in-wishlists.ts?d05a","webpack:///src/modules/list-page-summary/list-page-summary.action.ts?9732","webpack:///../../src/get-scan-results.ts?6b44","webpack:///../../../src/utilities/input-data-parser.ts?027a","webpack:///src/dataActions/get-attributes-for-selected-variant.ts?5b72","webpack:///src/data-actions/tab-state-data-action.ts?8dcc","webpack:///../../src/update-customer-personalization.ts?4aa9","webpack:///../../src/checkout.ts?57e0","webpack:///../../src/delete-organization-user.ts?7f5d","webpack:///../../../src/utilities/QueryResultSettingsProxy.ts?5e44","webpack:///../../src/get-categories-hierarchy.ts?acde","webpack:///src/connectors/msdyn365-exp-test/msdyn365-exp-test.listener.ts?3fc6","webpack:///../../src/edit-organization-user.ts?d2ac","webpack:///src/store-selector-state-manager/base-store-selector-state-manager.ts?edbe","webpack:///src/store-selector-state-manager/map-store-selector-state-manager.ts?d1f8","webpack:///src/store-selector-state-manager/store-selector-state-manager-data-action.ts?22fb","webpack:///../../src/get-simple-products.ts?fed7","webpack:///../../../src/order-templates/get-order-templates-preview.ts?b8c3","webpack:///../../src/get-channel-delivery-option-configuration.ts?a716","webpack:///../../src/get-dimensions-for-selected-variant.ts?6bf4","webpack:///../../../../src/utilities/promise-queue/finite-promise-queue.ts?77bf","webpack:///../../src/get-ratings-summary-input.ts?3ccb","webpack:///./lib/component-registration.js?266e","webpack:///../../../src/utilities/index.ts?5407","webpack:///../../../../src/utilities/extensions/object-extensions.ts?6388","webpack:///../../../../src/utilities/extensions/array-extensions.ts?1a2a","webpack:///../../../../src/utilities/extensions/enum-extensions.ts?cf51","webpack:///../../../../src/utilities/extensions/string-extensions.ts?ab9f","webpack:///../../src/get-checkout-cart.ts?79bc","webpack:///../../src/get-current-business-partner-user.ts?1479","webpack:///src/modules/product-page-summary/product-page-summary.action.ts?836c","webpack:///../../src/update-customer-attributes.ts?8d49","webpack:///./lib/module-registration.js?44dd","webpack:///./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/rng.js?b47d","webpack:///./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/regex.js?08ba","webpack:///./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/stringify.js?6cb1","webpack:///./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/validate.js?acea","webpack:///./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/v4.js?0101","webpack:///../../../../src/utilities/random/guid.ts?1947","webpack:///../../../../src/utilities/random/index.ts?1f9d","webpack:///../../src/get-full-available-inventory-nearby.ts?20be","webpack:///../../src/get-items-in-wishlist.ts?0d27","webpack:///../../src/get-price-for-selected-variant.ts?9e79","webpack:///./node_modules/react-universal-component/dist/requireById sync ^.*$?a75b","webpack:///../../src/get-full-products-by-refine-search-text.ts?2ad7","webpack:///../../../src/utilities/refiner-utils.ts?1e61","webpack:///../../../../src/utilities/Url-builder/parameterize.ts?f5a5","webpack:///../../../../src/utilities/Url-builder/category-url-builder.ts?e564","webpack:///../../../../src/utilities/Url-builder/invoice-url-builder.ts?d542","webpack:///../../../../src/utilities/Url-builder/product-url-builder.ts?baf1","webpack:///../../src/get-loyalty-transaction-estimation.ts?e254","webpack:///../../src/index.ts?0e3e","webpack:///../../src/get-ratings-summary.ts?49bc","webpack:///./lib/module-registration.local.js?540f","webpack:///../../src/get-full-products-by-refine-search-category.ts?30ab","webpack:///../../src/get-delivery-options-for-cartlines.ts?4dfe","webpack:///../../../../src/utilities/promise-queue/promise-queue.ts?e362","webpack:///../../src/get-address.ts?20a3","webpack:///../../src/get-products-by-category.ts?accf","webpack:///../../../src/utilities/product-inventory-utils.ts?58b5","webpack:///../../src/get-store-location-information.ts?1df0","webpack:///../../src/get-full-products.ts?ba9a","webpack:///../../../../src/utilities/promise-queue/index.ts?c43d","webpack:///external \"React\"?c481","webpack:///src/modules/category-page-summary/category-page-summary.action.ts?be94","webpack:///../../src/get-organization-users-count.ts?b5f7","webpack:///../../../src/order-templates/get-paginated-order-template-lines.ts?9b12","webpack:///../../src/generic-data-action.ts?f887","webpack:///../../../src/invoices/get-invoice-details.ts?66a9","webpack:///../../../src/invoices/get-invoice.ts?479e","webpack:///../../src/get-customer-loyalty-cards.ts?2466","webpack:///external \"ReactDOM\"?4b2d","webpack:///../../../src/order-templates/get-order-templates.ts?a3b1","webpack:///../../src/get-loyalty-card.ts?7213","webpack:///../../src/get-products-in-active-cart.ts?3376","webpack:///./lib/connector-registration.js?87e5","webpack:///../../src/get-related-products.ts?6f93","webpack:///../../src/add-organization-user.ts?ed86","webpack:///../../src/get-current-category-hierarchy.ts?d48e","webpack:///../../src/get-current-category.ts?354d","webpack:///../../src/get-media-locations-by-id.ts?8462","webpack:///../../src/get-category-paths.ts?b007","webpack:///../../src/get-refiners-by-text.ts?c52a","webpack:///../../../src/utilities/order-templates.ts?d593","webpack:///../../src/get-organization-users.ts?b72e","webpack:///../../src/get-promotion-options-for-cartlines.ts?1a35","webpack:///./lib/view-registration.js?92f2","webpack:///../../src/issue-loyalty.ts?f8fa","webpack:///../../src/get-customer-balance.ts?d165","webpack:///../../src/get-availabilities-cartlines.ts?b8e8","webpack:///../../../../src/utilities/events/index.ts?d3a5","webpack:///../../src/get-media-locations-for-selected-variant.ts?fd54","webpack:///../../src/get-list.ts?4fd5","webpack:///../../src/get-product-availabilities-for-selected-variant.ts?0abd","webpack:///../../src/get-organization-wide-order-history.ts?92b8","webpack:///../../src/get-categories.ts?8dc6","webpack:///src/modules/default-page-summary/default-page-summary.action.ts?121d","webpack:///src/modules/wishlist-items/actions/get-product-availabilities-wishlist-items.ts?4a20","webpack:///../../../src/order-templates/update-order-template-line.ts?527b","webpack:///../../src/update-address.ts?3e4d","webpack:///../../src/add-address.ts?fb17","webpack:///../../../src/utilities/getRnrKeys.ts?700f","webpack:///../../src/search-by-text.ts?ebe1","webpack:///../../src/get-search-configuration.ts?acd1","webpack:///src/data-actions/accordion-state-data-action.ts?0c51","webpack:///../../../src/order-templates/get-full-order-templates.ts?b553","webpack:///../../src/update-primary-address.ts?83fa"],"names":["wrapInResolvedAsyncResult","input","status","result","metadata","wrapInRejectedAsyncResult","buildQueryResultSettings","inputData","searchInputData","q","Error","Paging","Top","maxItems","Number","top","Skip","skip","getSelectedProductIdFromActionInput","requestContext","query","productId","urlTokens","itemId","config","generateImageUrl","imageUrl","apiSettings","startsWith","baseImageUrl","encodeURIComponent","generateProductImageUrl","product","PrimaryImageUrl","buildCartLine","quantity","catalogId","CatalogId","Description","EntryMethodTypeValue","ItemId","ProductId","RecordId","Quantity","TrackingId","UnitOfMeasureSymbol","DefaultUnitOfMeasure","buildWishlistLine","customerId","wishlistId","CommerceListId","CustomerId","getProductDetailsCriteriaFromActionInput","getPrice","hidePrice","getRating","hideRating","buildCacheKey","base","locale","channelId","buildCacheKeyWithUrlTokens","defaultCacheKey","recordId","pageType","generateKey","args","options","handler","separator","undefined","map","arg","join","getFallbackImageUrl","SelectedVariantInput","matchingDimensionValues","bypassCache","getCacheKey","getCacheObjectType","dataCacheType","this","getSelectedVariantActionDataAction","id","action","async","ctx","response","callerContext","baseProduct","Array","isArray","baseProductHadUnmatchedDimension","Dimensions","dimension","matchedTargetDimension","find","targetDimension","DimensionTypeValue","DimensionValue","length","variants","queryResultSettings","newImageUrl","retailActionDataAction","user","isAuthenticated","deleteAddressHandler","customer","address","Addresses","filter","cur","deleteAddressActionDataAction","isBatched","GetAttributeDefinitionsInput","attributeDefinitionCriteria","getAttributeDefinitionsActionDataAction","channel","CustomerAttributeGroupId","then","trace","AttributeGroupIdentifier","GetFullOrderTemplateInput","orderTemplateId","getFullOrderTemplateActionDataAction","inputParams","productLists","inputLines","Id","linesState","lines","totalCount","fromInputData","QueryResultSettings","count","RefinersByCategoryInput","category","queryResultSettingsProxy","currentCategory","cacheKeyHint","shouldCacheOutput","createRefinersByCategoryInput","isNaN","categoryId","categorySlug","GetBusinessPartnerOperationRequestsInput","fromDate","toDate","getBusinessPartnerOperationRequestsAction","userInput","isNullOrEmpty","B2BUserId","Date","now","RefineSearchByCriteriaInput","refinementCriteria","refinementCriterion","AddItemToOrderTemplateInput","unitOfMeasure","addItemToOrderTemplateActionDataAction","productListLineToAdd","ProductListId","UnitOfMeasure","productListLine","telemetry","error","GetDeliveryOptionsForSelectedVariantInput","selectedProduct","featureState","getFeatureState","context","createDeliveryOptionsForSelectedVariantInput","getDeliveryOptionsForSelectedVariantAction","item","Name","IsEnabled","Promise","resolve","activeProduct","selectedVariantInput","productResult","ItemTypeValue","catch","message","exception","debug","getDeliveryOptionsForSelectedVariantActionDataAction","GetCustomerInput","accountNumber","customerAccountNumber","getCustomerActionDataAction","token","Dictionary","_values","_length","entries","forEach","keyValuePair","setValue","key","value","hasValue","defaultValue","getValue","removeValue","getKeys","Object","keys","AddOrderTemplateToCartInput","addOrderTemplateToCartActionDataAction","cartState","getPaginatedOrderTemplateLinesInput","orderTemplateLines","addedCartLines","cartLines","productLine","fullProduct","ProductDetails","cart","Version","concat","refreshCart","CreateOrderTemplateInput","templateName","createOrderTemplateActionDataAction","orderTemplate","ProductListTypeValue","createdProductList","FeatureStateInput","featureNames","createGetFeatureStateInput","getFeatureStateAction","getFeatureStateActionDataAction","UpdateOrderTemplateHeaderInput","updateOrderTemplateHeaderActionDataAction","updatedProductList","Event","_subscribers","instance","push","instanceId","element","subscriber","GetInvoicesInput","searchCriteria","CreateGetInvoicesInput","InvoicePaidStatusValues","getInvoices","InvoiceTypeValues","businessPartner","BusinessPartnerId","AccountNumber","getInvoicesAsync","getInvoicesDataAction","connector","variantSet1","variantId","experimentId","variantSet2","variantSet3","variantSet4","console","log","name","experiments","friendlyName","description","type","Running","link","variations","Active","weight","Draft","createdDate","lastModifiedDate","lastModifiedBy","Paused","Archived","userId","attributes","match","JSON","stringify","secretManager","createSearchOrgUnitLocationsInputFunc","ActiveWishlistInput","getActiveWishlistItems","wishlists","productInputs","currWishlist","CommerceListLines","commerceListLine","products","getActiveWishlistItemsDataAction","ListPageSummaryInput","getSubListItem","sitePathOfRequest","imageList","getImages","fields","content","images","sublistHref","listName","_name","sitePath","Title","title","ShortDescription","shortDescription","BackgroundColor","backgroundColor","ForegroundColor","foregroundColor","Href","Images","getSitePath","resultImageList","image","href","imageItem","altText","width","height","createGetListInput","listData","pageData","list","items","_id","data","getInputListData","listItems","productList","parentImageList","itemsPerPage","getItemsPerPage","skipCount","getSkipCount","productItems","sum","index","clonedList","productItem","GetScanResultInput","sku","skuNumber","scanResults","Product","MasterProductId","ScanResult","ProductDimensionFull","parseSearchData","AttributesForSelectedVariantInput","createAttributesForSelectedVariantInput","getAttributesForSelectedVariantAction","attributeValues","createTabStateInput","getGenericActionDataAction","updateCustomerPersonalizationInput","userAccountNumber","isOptOut","preferenceType","updateCustomerPersonalizationActionDataAction","newCustomer","OptOutWebActivityTracking","OptOutPersonalization","updatedCustomer","update","CheckOutInput","cartId","cartVersion","receiptEmail","cartTenderLines","billingAddress","checkOutActionDataAction","requestUrl","baseUrl","requestOptions","headers","oun","Authorization","cartTenderLineItem","TokenizedPaymentCard","House","CardTokenInfo","Phone","ThreeLetterISORegionName","Street","City","State","ZipCode","Country","toUpperCase","Address1","Zip","requestBody","DeleteOrganizationUserInput","newUser","deleteOrganizationUserDataAction","QueryResultSettingsProxy","Sorting","Columns","column","ColumnName","IsDescending","fromModuleData","sortingCriteria","CategoriesInput","mappedToHierarchy","_mappedToHierarchy","getLocale","mapCategoryToHierarchy","categoryList","categoryMap","reduce","memo","localName","nameTranslations","nameTranslation","Language","toLowerCase","Text","getFriendlyName","NameTranslations","categoryHierarchy","NeutralizedName","zeroCategory","parentId","ParentCategory","Url","parent","Children","createCategoriesHierarchyInput","topItems","topCategories","parseInt","getCategoryHierarchyAction","categories","getCategoryHierarchyActionDataAction","connectorListener","eventName","payload","EditOrganizationUserInput","editOrganizationUserDataAction","updatedUser","listMapViewState","displayList","displayMap","preferredStoreLocalStorageKey","isMapModuleLoaded","_readFromToCookie","storeInfo","parse","preferredStore","_context","storeId","selectedStoreLocationId","storeName","writeToCookie","StoreId","StoreName","Latitude","Longitude","_writeToCookie","latitude","longitude","lastInlineShownStoreInfo","_removeCookie","isBrowser","window","localStorage","removeItem","setItem","cookieValue","getItem","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchTerm","actionContext","BingMapsApiKey","BingMapsEnabled","jsonp","crypto","getRandomValues","Uint32Array","encodeURI","geolocationApiUrl","app","script","document","createElement","setAttribute","remove","resourceSets","resources","point","coordinates","body","appendChild","getElementById","url","lang","market","reject","defer","src","mapAPIReady","isMapApiLoaded","addEventListener","createStoreSelectorStateInput","ProductInput","toString","getSimpleProductsAction","inputs","productIdMapping","productIds","idx","getDefault","mappedProducts","split","GetOrderTemplatesPreviewInput","createGetOrderTemplatesPreviewInput","getOrderTemplatesPreview","getOrderTemplatesPreviewDataAction","GetChannelDeliveryConfigurationInput","GetDimensionsForSelectedVariantInput","getDimensionsForSelectedVariantActionDataAction","results","dimensionValues","fullDimension","DimensionValues","FinitePromiseQueueError","FinitePromiseQueue","maxQueueLength","InvalidMaxQueueLengthPassed","super","_maxQueueLength","promiseBody","totalElementsCount","_queue","_isBusy","shift","ProcessWasDiscardedFromTheQueue","enqueue","GetRatingsSummaryInput","tenantId","serviceEndpoint","universal","require","default","componentDictionary","component","chunkName","ignoreBabelRename","ObjectExtensions","isNullOrUndefined","isString","isNumber","isFunction","ArrayExtensions","hasElements","unique","from","Set","all","predicate","EnumExtensions","getValues","enumClass","getNumericValues","getNames","getEnumValues","StringExtensions","isNullOrWhitespace","trim","GetCheckoutCartInput","CartCookieName","CartCookie","getCheckoutCartDataAction","get","activeCart","checkoutCart","GetCurrentBusinessPartnerUserInput","createGetCurrentBusinessPartnerUserInput","getCurrentBusinessPartnerUser","customerInput","IsB2b","ProductPageSummaryInput","simpleProductData","productUrl","productBrand","canonicalDomain","productAttributes","productAttribute","TextValue","getProductBrand","sharingImageUrl","canonicalUrl","faviconUrl","price","AdjustedPrice","sharingImage","updateCustomerAttributesInput","customerAttributes","phone","vatNumber","updateCustomerAttributesActionDataAction","VatNumber","Attributes","registerAllModules","requiredModules","binding","modules","dataActions","handleError","modPath","errObject","msg","errorObject","process","exit","detailedWebpackError","module","isNotRegistered","moduleName","findIndex","$type","definitionPath","isNodeModule","moduleNamespace","packageName","parentDefinitionPath","moduleDirectory","path","runOn","definitionExtensions","themeSettings","actionPath","prototype","sanitizedActionPath","RegistrationId","e","rnds8","Uint8Array","validate","uuid","REGEX","test","byteToHex","i","substr","arr","offset","arguments","TypeError","v4","buf","rnds","random","rng","bind","msCrypto","Guid","generateGuid","GetFullAvailableInventoryNearbyInput","_productId","_latitude","_longitude","_radius","_DistanceUnitValue","_IgnoreLocation","radius","DistanceUnitValue","IgnoreLocation","createGetFullAvailableInventoryNearbyInput","getFullAvailableInventoryNearbyAction","searchArea","Radius","retailMulitplePickupMFeatureState","ProductIds","SearchArea","DefaultWarehouseOnly","FilterByChannelFulfillmentGroup","QuantityUnitTypeValue","productInventoryInformation","productWarehouseInformation","ProductWarehouseInventoryAvailabilities","storeMap","Map","stores","store","InventoryLocationId","set","locationDeliveryOptions","orgUnitChannel","ChannelId","channelCollection","channelIdList","channelDeliveryOptions","_getLocationPickUpDeliveryModes","availabilityPromiseList","locationDeliveryOption","_channeldeliveryoption","orgUnitLocation","channelDeleiveryOptions","OrgUnitNumber","OrgUnitAvailability","hours","itemAvailabilities","InventLocationId","has","AvailableQuantity","ProductAvailableQuantity","availability","OrgUnitLocation","ItemAvailabilities","ProductInventoryInformation","OrgUnitPickUpDeliveryModes","StoreHours","_getAvailabilityWithHours","getFullAvailableInventoryNearbyActionDataAction","PriceForSelectedVariantInput","createActivePriceForSelectedVariantInput","getPriceForSelectedVariantAction","affliations","CustomerAffiliations","affliation","aff","AffiliationId","RetailAffiliationId","projectDomain","productPrice","retailServerProxyVersion","CustomerContextualPrice","getPriceForSelectedVariantActionDataAction","webpackContext","req","webpackContextResolve","__webpack_require__","o","code","exports","FullProductsRefineSearchByTextInput","searchText","criteria","productDetailsCriteria","getFullProductsByRefineSearchTextActionDataAction","getRefinedProducts","fullProductInputs","searchResults","productSearchResult","getRefinedFullProducts","parameterize","sep","parameterizeFeatureFlags","neutralizedName","candidateName","platformSettings","enableUrlLocalization","enableUrlEncoding","replace","getCategorySlug","categoryName","Slug","getCategoryUrl","getInvoiceDetailsPageUrlSync","invoiceId","includes","indexOf","getProductUrlSync","getProductPageUrlSync","GetLoyaltyTransactionEstimationInput","createGetLoyaltyTransactionEstimationInput","getLoyaltyTransactionEstimationAction","promises","_getCart","_getLoyalty","_getOrgUnits","CardNumber","Currency","points","loyaltyCardInput","getLoyaltyTransactionEstimationActionDataAction","createInput","getRatingsSummaryDataAction","inputIsValid","FullProductsRefineSearchByCategoryInput","ProductDetailsCriteria","getFullProductsByRefineSearchCategoryActionDataAction","hasSortingColumn","ProductDeliveryOptionsForCartLineItems","getDeliveryOptionsForCartLineItems","x","getDeliveryOptionsForCartLineItemsDataAction","PromiseQueueElement","PromiseQueue","_dequeue","_canProcess","_processElement","_processNext","AddressInput","createGetAddressInput","getAddressAction","getAddressActionDataAction","ProductsByCategoryInput","getProductsByCategoryActionDataAction","productSearchResults","mapProductInventoryInformation","productsWarehouseInventory","enableStockCheck","inventoryLevel","physicalProductMap","mapInventoryWithPhysicalBufferEnabled","totalAvailableProductMap","mapInventoryWithTotalAvailableBufferEnabled","productMap","mapInventoryWithThresholdEnabled","productWarehouseInventoryAvailability","TotalAvailable","productQty","outOfStockThreshold","productAvailableQuantity","IsProductAvailable","shouldRenderLabel","displayLabelEnabled","PhysicalAvailableInventoryLevelCode","productQuantity","PhysicalAvailable","StockLevelCode","StockLevelLabel","PhysicalAvailableInventoryLevelLabel","TotalAvailableInventoryLevelCode","TotalAvailableInventoryLevelLabel","inventoryCode","inventoryRanges","GetOrgUnitLocationsByAreaInput","_Latitude","_Longitude","_Radius","createGetOrgUnitLocationsByAreaInput","getOrgUnitLocationsByArea","locationPromiseList","_getLocationWithHours","getOrgUnitLocationsByAreaDataAction","FullProductInput","_getActivePrices","validProductIds","productCollection","validInputs","Boolean","ProductPrice","_getProductRatings","productRating","ProductRating","getFullProductsActionDataAction","ratingsAndPricePromises","React","CategoryPageSummaryInput","createGetCurrentCategoryInput","categoryUrl","OfflineImage","OrganizationUsersCountInput","createGetOrganizationUsersCountInput","getOrganizationUsersCount","users","GetPaginatedOrderTemplateLinesInput","getPaginatedOrderTemplateLinesAction","orderTemplateLinesState","promise","productListLines","listLine","fullProductsInfo","line","getPaginatedOrderTemplateLinesActionDataAction","GenericInput","cacheKey","cacheObjectType","getGenericAction","GetInvoiceDetailsInput","CreateGetInvoiceDetailsInput","getInvoiceDetails","InvoiceId","getInvoiceDetailsAsync","getInvoiceDetailsDataAction","GetInvoiceInput","CreateGetInvoiceInput","getInvoice","InvoiceIds","invoices","ReactDOM","GetOrderTemplatesInput","productListId","createGetOrderTemplatesInput","getOrderTemplatesAction","productListSearchCriteria","GetLoyaltyCardInput","createGetLoyaltyCardInput","getLoyaltyAction","cards","firstCard","card","LoyaltyEnrollmentDate","LoyaltyEnrollmentDateLocal","getLoyaltyActionDataAction","ActiveCartProductsInput","getActiveCartProductsAction","defaultOrderQuantityLimitsFeatureConfig","platform","enableDefaultOrderQuantityLimits","featureStates","customerInfo","warning","isOrderQuantityLimitsFeatureEnabled","productIdsByFulfillmentStoreId","resultProducts","CartLines","cartLine","FulfillmentStoreId","entryFulfillmentStoreId","entryProductIds","accum","searchStoreCriteria","StoreNumber","orgUnits","getActiveCartProductsActionWhenQuantityLimitsFeatureIsOn","hasInvoiceLine","getActiveCartProductsActionDataAction","handleMissingImplementationDetails","functionName","connectorName","connectorType","connectorDictionary","connectorProviderImpl","connectorListenerImpl","provider","listener","validateConnectorRegistration","connectorImpl","__proto__","initialize","getConfigForClientSideInit","initializeClientSide","getExperiments","getVariantsForUser","activateExperiment","logEvent","verifyExperimentationReigstration","GetRelatedProductsInput","relationType","getRelatedProductsActionDataAction","querySettings","productRelationTypes","productRelationTypeId","_productRelationType","foundProductRelationTypeId","productRelationType","searchProductRelationType","stack","AddOrganizationUserInput","addOrganizationUserDataAction","CurrentCategoryHierarchyInput","activeCategoryId","getCurrentCategoryHierarchyAction","fullCategoryHierarchy","categoryArray","findCategory","childCategory","reverse","getCurrentCategoryHierarchyActionDataAction","CurrentCategoryInput","tempActionContext","searchCategory","foundCategory","cat","matchingChild","getCurrentCategoryAction","categoryInput","getCurrentCategoryActionDataAction","MediaLocationsByIdInput","createMediaLocationsByIdInput","getMediaLocationsByIdAction","mediaLocation","Uri","AltText","getMediaLocationsByIdActionDataAction","GetCategoryPathsInput","categoryPathLooksups","constructedCacheKey","categoryPath","createGetCategoryPathsInput","getCategoryPathsAction","categoryPathResults","CategoryPath","slice","getCategoryPathsActionDataAction","RefinersByTextInput","createRefinersByTextInput","getRefinersByTextActionDataAction","OrderTemplateLine","OrderTemplate","totalLines","OrganizationUsersInput","createGetOrganizationUsersInput","getOrganizationUsers","getOrganizationUsersDataAction","PromotionOptionsForCartLineItems","getPromotionOptionsForCartLineItemsDataAction","cartLineIds","c","LineId","viewDictionary","IssueLoyaltyInput","updateCart","updateLoyaltyCardId","loyaltyCardNumber","issueLoyaltyActionDataAction","CustomerAccount","issuedCard","GetCustomerBalanceInput","createGetCustomerBalanceInput","getCustomerBalanceAction","InvoiceAccount","getCustomerBalanceActionDataAction","ProductAvailabilitiesForCartLineItems","getDeliveryMode","featureSate","channelDeliveryOptionConfig","pickupDeliveryMode","DeliveryMode","PickupDeliveryModeCodes","deliveryMode","getAvailabilitiesForCartLineItems","shippingItems","bopisItems","productAvailabilities","channelConfiguration","retailMultiplePickUpOptionEnabled","PickupDeliveryModeCode","EmailDeliveryModeCode","shippingProductAvailabilities","bopisItem","productWarehouse","WarehouseId","InventLocationDataAreaId","DataAreaId","quantityUnitTypeSales","getProductWarehouseAvail","productWarehouseMapping","getAvailabilitiesForCartLineItemsDataAction","MediaLocationsForSelectedVariantInput","getMediaLocationsForSelectedVariantActionDataAction","ListInput","documentId","itemsCount","DocumentId","ItemsCount","ItemsPerPage","SkipCount","Items","ProductItems","getListDataDataAction","inputArray","listitem","getInutListData","ProductAvailabilitiesForSelectedVariantInput","createProductAvailabilitiesForSelectedVariantInput","getProductAvailabilitiesForSelectedVariantAction","ProductTypeValue","mergeProductWarehouseToProductAvailabities","productAvailable","getProductAvailabilitiesForSelectedVariantActionDataAction","GetOrganizationWideOrderHistoryInput","getOrganizationWideOrderHistoryDataAction","getCategoryActionDataAction","PageSummaryInput","keywords","ProductAvailabilitiesForWishlistItems","getAvailabilitiesForWishlistItems","validProducts","getAvailabilitiesForWishlistItemsDataAction","UpdateOrderTemplateInput","getLinesInput","linesToUpdate","lineToUpdate","updatedLines","updatedLine","updateAddressHandler","IsPrimary","updateAddressActionDataAction","AddressManagementInput","createAddressManagementInput","doAddressManagementOperation","operationHandler","addAddressHandler","addAddressActionDataAction","getRnrPartnerId","rnr","getRnrEndpointId","getRnrAuthEndpointId","endpoint","proxyUrl","endsWith","substring","search","querySettingsProxy","SearchConfigurationInput","getSearchConfigurationActionDataAction","createAccordionStateInput","GetFullOrderTemplatesInput","getFullOrderTemplatesActionDataAction","orderTemplates","updatePrimaryAddressActionDataAction","setPrimaryAddress","primaryAddresses","addresses","addr"],"mappings":"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AW,OACXC,aAAc,UAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,YAId,KAAAG,YAA2B,CAC/B,CACIJ,UAAW,OACXC,aAAc,UAElB,CACID,UAAW,OACXC,aAAc,UAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,WAElB,CACID,UAAW,OACXC,aAAc,YAIf,6BACH,OAAOjF,QAAQC,QAAQ,IAEpB,qBAAqB1J,GAExB,OADA8O,QAAQC,6EAA6E/O,MAC9E,EAGJ,iBACH,OAAOyJ,QAAQC,QAAQ,CACnBsF,KAAM,sBACNC,YAAa,CACT,CACItL,GAAI,SACJuL,aAAc,eACdC,YAAa,yCACbC,KAAM,WACN1Q,OAAQ,QAAM2Q,QACdC,KAAM,yCACNC,WAAY,CACR,CACI5L,GAAI,OACJuL,aAAc,YACdxQ,OAAQ,QAAM8Q,OACdC,OAAQ,OAEZ,CACI9L,GAAI,OACJuL,aAAc,YACdxQ,OAAQ,QAAM8Q,OACdC,OAAQ,OAEZ,CACI9L,GAAI,OACJuL,aAAc,YACdxQ,OAAQ,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","file":"static/js/20.653db873639e187e.chunk.js","sourcesContent":["/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IAny, ICommerceApiSettings, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\nimport {\n CartLine,\n CommerceListLine,\n ProductSearchResult,\n QueryResultSettings,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { ProductDetailsCriteria } from '../get-full-products';\nimport { parseSearchData } from './input-data-parser';\n\nexport const wrapInResolvedAsyncResult = (input: T | null | undefined): AsyncResult => {\n return >{\n status: 'SUCCESS',\n result: input,\n metadata: {}\n };\n};\n\nexport const wrapInRejectedAsyncResult = (input: T | null | undefined): AsyncResult => {\n return >{\n status: 'FAILED',\n result: input,\n metadata: {}\n };\n};\n\nexport const buildQueryResultSettings = (inputData: ICreateActionContext, IGeneric>): QueryResultSettings => {\n try {\n const searchInputData = parseSearchData(inputData);\n const search = searchInputData.q;\n if (!search) {\n throw new Error('Query string ?q={searchText} is needed for search actions.');\n }\n const top = (searchInputData.maxItems && Number(searchInputData.maxItems)) || searchInputData.top;\n return { Paging: { Top: top, Skip: searchInputData.skip } };\n } catch {\n return {};\n }\n};\n\n/**\n * Utility function to extract the active productId in the following priority:\n * First query param (productId), then UrlToken (itemId), then module config.\n * @param inputData The Action Input data.\n */\nexport const getSelectedProductIdFromActionInput = (inputData: ICreateActionContext>): string | undefined => {\n if (inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.productId) {\n return inputData.requestContext.query.productId;\n } else if (inputData && inputData.requestContext && inputData.requestContext.urlTokens && inputData.requestContext.urlTokens.itemId) {\n return inputData.requestContext.urlTokens.itemId;\n } else if (inputData && inputData.config && inputData.config.productId) {\n return inputData.config.productId;\n }\n return undefined;\n};\n\n/**\n * Generates a Image URL based on data return from retail server.\n * @param imageUrl The image url returned by Retail Server.\n * @param ctx The request context.\n * @param apiSettings\n */\nexport const generateImageUrl = (imageUrl: string | undefined, apiSettings: ICommerceApiSettings): string | undefined => {\n if (imageUrl) {\n // Images hosted in CMS include schema\n if (imageUrl.startsWith('http')) {\n return imageUrl;\n }\n\n // Images hosted in Retail Server must be encoded and joined with the base image url\n return apiSettings.baseImageUrl + encodeURIComponent(imageUrl);\n }\n\n // D365Commerce.telemetry.warning(`Unable to generate a proper Image URL for Product: ${product.RecordId}`);\n return undefined;\n\n};\n\n/**\n * Generates a Image URL for a product based on data return from retail server.\n * @param product The Product returned by Retail Server.\n * @param ctx The request context.\n * @param apiSettings\n */\nexport const generateProductImageUrl = (\n product: SimpleProduct | ProductSearchResult,\n apiSettings: ICommerceApiSettings\n): string | undefined => {\n return generateImageUrl(product.PrimaryImageUrl, apiSettings);\n};\n\n/**\n * Creates a CartLine object from the passed data.\n * @param product The product.\n * @param quantity The quantity.\n * @param catalogId The catalog.\n */\nexport const buildCartLine = (product: SimpleProduct, quantity?: number, catalogId?: number): CartLine => {\n return {\n CatalogId: catalogId || 0,\n Description: product.Description,\n\n // TODO: Investigate this value and what it represents\n EntryMethodTypeValue: 3,\n ItemId: product.ItemId,\n ProductId: product.RecordId,\n Quantity: quantity || 1,\n TrackingId: '',\n UnitOfMeasureSymbol: product.DefaultUnitOfMeasure\n };\n};\n\n/**\n * Creates a CommerceListLine (also know as WishlistLine) object from the passed data.\n * @param productId The RecordId of the Product to be added.\n * @param customerId The account number of the customer.\n * @param wishlistId The Id of the commerce list.\n */\nexport const buildWishlistLine = (productId: number, customerId: string, wishlistId: number): CommerceListLine => {\n return {\n CommerceListId: wishlistId,\n ProductId: productId,\n CustomerId: customerId\n };\n};\n\n/**\n * Utility function to prepare the product details criteria before getting full product:\n * @param inputData The Action Input data\n */\nexport const getProductDetailsCriteriaFromActionInput = (inputData: ICreateActionContext>): ProductDetailsCriteria => {\n if (inputData && inputData.config) {\n return {\n getPrice: !inputData.config.hidePrice,\n getRating: !inputData.config.hideRating\n };\n }\n return {\n getPrice: true,\n getRating: true\n };\n};\n\n/**\n * Transforms search text into the expected 'search terms' format, expected by refiner APIs.\n * @param searchText Free-form text used for searching for products or categories of products.\n */\nexport const ensureSearchTextIsFormedProperly = (searchText: string): string => {\n const prefix = searchText.startsWith('\\'') ? '' : '\\'';\n const suffix = searchText.endsWith('\\'') ? '' : '\\'';\n return `${prefix}${searchText}${suffix}`;\n};\n\nexport const ensureSafeSearchText = (searchText: string): string => {\n return searchText.replace(/[^\\d\\sA-Za-z]+/g, '');\n};\n\nexport const buildCacheKey = (base: string, apiSettings: ICommerceApiSettings, locale?: string): string => {\n return `${base}-chanId:${apiSettings.channelId}-catId:${apiSettings.catalogId}${locale ? `-${locale}` : ''}`;\n};\n\nexport const buildCacheKeyWithUrlTokens = (base: string, requestContext: IRequestContext): string => {\n const urlTokens = requestContext.urlTokens;\n const defaultCacheKey = buildCacheKey(base, requestContext.apiSettings, requestContext.locale);\n return urlTokens ? `${defaultCacheKey}-${urlTokens.itemId}-${urlTokens.recordId}-${urlTokens.pageType}` : defaultCacheKey;\n};\n\n/**\n * Generates a key from set of arguments as inputs.\n *\n * @param args Argument list of pivots to generate key from.\n * @param handler Handler function for null/undefined values.\n */\n\ntype TKeyTypes = string | number | boolean | null | undefined;\ninterface IGenerateKeyOptions {\n separator?: string;\n handler?(input: null | undefined): string;\n}\nexport const generateKey = (args: TKeyTypes[], options?: IGenerateKeyOptions): string => {\n const { handler, separator }: IGenerateKeyOptions = { ...{ separator: '-', handler: undefined }, ...(options || {}) };\n return args\n .map(arg => {\n if (arg === null || arg === undefined) {\n if (handler) {\n return handler(arg);\n }\n }\n return arg;\n })\n .join(separator);\n};\n\n/**\n * Gets the fall back image url for a variant image.\n * @param itemId Item id of a product.\n * @param apiSettings Api setting from request context.\n */\nexport const getFallbackImageUrl = (itemId: string | undefined, apiSettings: ICommerceApiSettings): string | undefined => {\n if (!itemId) {\n return '';\n }\n\n const productUrl = `Products/${itemId}_000_001.png`;\n return generateImageUrl(productUrl, apiSettings);\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { BypassCache } from '@msdyn365-commerce/retail-proxy';\nimport { getByIdAsync, getVariantsByDimensionValuesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductDimension, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { generateProductImageUrl, getSelectedProductIdFromActionInput } from './utilities/utils';\n\n/**\n * Get selected variant action input class.\n */\nexport class SelectedVariantInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public matchingDimensionValues: ProductDimension[];\n\n public bypassCache? : BypassCache;\n\n constructor(productId: number, channelId: number, matchingDimensionValues?: ProductDimension[], bypassCache? : BypassCache) {\n this.productId = productId;\n this.channelId = channelId;\n this.matchingDimensionValues = matchingDimensionValues || [];\n this.bypassCache = bypassCache;\n }\n\n public getCacheKey = () => 'SelectedVariant';\n\n public getCacheObjectType = () => 'SimpleProduct';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the getSelectedVariant data action.\n * @param inputData The input data passed to the createInput method.\n */\nconst createInput = (inputData: ICreateActionContext>): SelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new SelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId, []);\n }\n throw new Error('Unable to create SelectedVariantInput, no productId found on module config or query');\n\n};\n\n/**\n * Action method for the getSelectedVariant data aciton.\n * @param input The action input class.\n * @param ctx The action context.\n */\nasync function getSelectedVariantAction(input: SelectedVariantInput, ctx: IActionContext): Promise {\n let product: SimpleProduct | null = null;\n\n const response = await getByIdAsync({ callerContext: ctx, bypassCache: input.bypassCache }, input.productId, input.channelId);\n\n const baseProduct: SimpleProduct = Array.isArray(response) ? response[0] : response;\n\n // Need to dereference this before editing it. Otherwise we might not\n // properly get the mobx events because if things aren't properly observable\n // they won't fire when you set them, and then if you don't deref the value in\n // the cache will match the value when you try to save it, so it won't detect any\n // changes there either\n product = { ...baseProduct };\n\n if (product) {\n let baseProductHadUnmatchedDimension: boolean = false;\n if (product.Dimensions) {\n product.Dimensions.map(dimension => {\n const matchedTargetDimension = input.matchingDimensionValues.find(\n targetDimension => targetDimension.DimensionTypeValue === dimension.DimensionTypeValue\n );\n\n if (matchedTargetDimension) {\n dimension.DimensionValue = matchedTargetDimension.DimensionValue;\n } else {\n baseProductHadUnmatchedDimension = true;\n }\n });\n }\n\n if (!baseProductHadUnmatchedDimension && input.matchingDimensionValues.length > 0) {\n const variants = await getVariantsByDimensionValuesAsync(\n { callerContext: ctx, bypassCache: input.bypassCache, queryResultSettings: {} },\n baseProduct.RecordId,\n input.channelId,\n input.matchingDimensionValues\n );\n\n if (variants && variants.length > 0) {\n product = variants[0];\n }\n }\n\n const newImageUrl = generateProductImageUrl(product, ctx.requestContext.apiSettings);\n\n if (newImageUrl) {\n product.PrimaryImageUrl = newImageUrl;\n }\n }\n\n return product;\n}\n\n/**\n * The complete getSelectedVariant data action.\n */\nexport const getSelectedVariantActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-selected-variant',\n action: >getSelectedVariantAction,\n input: createInput\n});\n\nexport default getSelectedVariantActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { createObservableDataAction, IAction, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createGetByCustomerInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CommerceListsDataActions.g';\nimport { CommerceList } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { buildQueryResultSettings } from './utilities/utils';\n\nconst createWishlistInput = (inputData: ICreateActionContext) => {\n if (\n inputData.requestContext &&\n inputData.requestContext.user &&\n inputData.requestContext.user.isAuthenticated\n ) {\n return createGetByCustomerInput(buildQueryResultSettings(inputData), null);\n }\n\n throw new Error('[get-wishlist-by-customer-id] Unable to create input for getWishlists');\n};\n\n/**\n * Get Org Unit Configuration Data Action.\n */\nexport const retailActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-wishlist-by-customer-id',\n action: >retailAction,\n input: createWishlistInput\n});\n\nexport default retailActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { Address, Customer } from '@msdyn365-commerce/retail-proxy';\n\nimport { createAddressManagementInput, doAddressManagementOperation, IAddressManagementInput } from './add-address';\n\nexport function deleteAddressHandler(customer: Customer, address: Address): Customer {\n customer.Addresses = customer.Addresses || [];\n customer.Addresses = [...customer.Addresses.filter(cur => cur.RecordId !== address.RecordId)];\n return customer;\n}\n\nexport async function deleteAddressAction(input: IAddressManagementInput, ctx: IActionContext): Promise {\n return doAddressManagementOperation(input, ctx, deleteAddressHandler);\n}\n\n/**\n * The deleteAddress data action\n * Calls the read RetailServer API to get information about a customer\n * Removes all address information from the retireved customer, and\n * then updates that customer via the update RetailServer API.\n */\nexport const deleteAddressActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/delete-address',\n action: >deleteAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>(createAddressManagementInput),\n isBatched: false\n});\n\nexport default deleteAddressActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport {\n getAttributeDefinitionsAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { AttributeDefinition, AttributeDefinitionCriteria } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get attribute definitions data action.\n */\nexport class GetAttributeDefinitionsInput implements IActionInput {\n public attributeDefinitionCriteria?: AttributeDefinitionCriteria;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, attributeDefinitionCriteria?: AttributeDefinitionCriteria) {\n this.attributeDefinitionCriteria = attributeDefinitionCriteria;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('AttributeDefinitions', this.apiSettings);\n\n public getCacheObjectType = () => 'CustomerAttribute';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): GetAttributeDefinitionsInput => {\n const { apiSettings, channel } = inputData.requestContext;\n if (!channel || !channel.CustomerAttributeGroupId) {\n throw new Error('[getAttributeDefinitions][createInput]: Customer attribute group id is not found.');\n }\n\n return new GetAttributeDefinitionsInput(apiSettings, { AttributeGroupIdentifier: channel.CustomerAttributeGroupId });\n};\n\nconst getAttributeDefinitionsAction = async (input: GetAttributeDefinitionsInput, ctx: IActionContext): Promise => {\n if (input && ctx.requestContext.channel && ctx.requestContext.channel.CustomerAttributeGroupId) {\n return getAttributeDefinitionsAsync({ callerContext: ctx }, input.attributeDefinitionCriteria || null).then(response => {\n return response;\n });\n }\n\n ctx.trace('[getAttributeDefinitions]Invalid input passed to action');\n return [];\n};\n\nexport const getAttributeDefinitionsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-custom-attributes',\n action: >getAttributeDefinitionsAction,\n input: createInput\n});\n\nexport default getAttributeDefinitionsActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { createObservableDataAction, IAction } from '@msdyn365-commerce/core';\nimport { retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createGetOrgUnitConfigurationInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Get Org Unit Configuration Data Action.\n */\nexport const retailActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-org-unit-configuration',\n action: >retailAction,\n input: () => {\n return createGetOrgUnitConfigurationInput();\n }\n});\n\nexport default retailActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { ProductList } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { getOrderTemplates, GetOrderTemplatesInput, getPaginatedOrderTemplateLinesAction, GetPaginatedOrderTemplateLinesInput, QueryResultSettingsProxy } from '..';\nimport { OrderTemplate } from '../utilities/order-templates';\n\n/**\n * Input class for the GetOrderTemplates data action.\n */\nexport class GetFullOrderTemplateInput implements IActionInput {\n public orderTemplateId: string;\n\n public queryResultSettings: IQueryResultSettings;\n\n constructor(orderTemplateId: string, queryResultSettings: IQueryResultSettings) {\n this.orderTemplateId = orderTemplateId;\n this.queryResultSettings = queryResultSettings;\n }\n\n public getCacheKey = () => `GetFullOrderTemplate|${this.orderTemplateId}`;\n\n public getCacheObjectType = () => 'GetFullOrderTemplate';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the GetOrderTemplate method.\n * @param inputData The input data passed to the createInput method.\n * @param orderTemplateId\n */\nexport const createGetFullOrderTemplateInput = (inputData: ICreateActionContext, orderTemplateId: string): GetFullOrderTemplateInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order templates. User is not authenticated.');\n }\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n queryResultSettings.count = true;\n\n return new GetFullOrderTemplateInput(orderTemplateId, queryResultSettings);\n};\n\n/**\n * The action method for the GetFullOrderTemplate data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function getFullOrderTemplateAction(input: GetFullOrderTemplateInput, ctx: IActionContext): Promise {\n if (!ctx.requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order template. User is not authenticated.');\n }\n\n const inputParams = new GetOrderTemplatesInput(input.orderTemplateId);\n const productLists: ProductList[] = await getOrderTemplates(inputParams, ctx);\n\n if (!productLists || productLists.length !== 1) {\n throw new Error('Unable to get full order template. Order template was not found.');\n }\n\n const inputLines = new GetPaginatedOrderTemplateLinesInput(productLists[0].Id, input.queryResultSettings);\n const linesState = await getPaginatedOrderTemplateLinesAction(inputLines, ctx);\n return new OrderTemplate(productLists[0], linesState.lines, linesState.totalCount);\n}\n\n/**\n * The GetFullOrderTemplate Data Action\n * Returns order templates.\n */\nexport const getFullOrderTemplateActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-full-order-template',\n action: >getFullOrderTemplateAction,\n input: createGetFullOrderTemplateInput\n});\n\nexport default getFullOrderTemplateActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductRefiner } from '@msdyn365-commerce/retail-proxy';\nimport { getRefinersByCategoryAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport getCurrentCategory, { CurrentCategoryInput } from './get-current-category';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Action Input class for the getRefinersByCategory data action.\n */\nexport class RefinersByCategoryInput implements IActionInput {\n public readonly catalogId: number;\n\n public readonly currentCategory: CurrentCategoryInput;\n\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n constructor(category: CurrentCategoryInput, queryResultSettingsProxy: QueryResultSettingsProxy, catalogId?: number) {\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.catalogId = catalogId || 0;\n this.currentCategory = category;\n }\n\n public getCacheKey = () => `${this.currentCategory.getCacheKey()}|${this.catalogId}|${this.queryResultSettingsProxy.cacheKeyHint}`;\n\n public getCacheObjectType = () => 'ProductRefiner';\n\n public shouldCacheOutput = () => true;\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nexport const createRefinersByCategoryInput = (inputData: ICreateActionContext>): IActionInput => {\n if (inputData && inputData.requestContext) {\n const catalogId = inputData.config ? Number(inputData.config.catalogId) : 0;\n const currentCategory = new CurrentCategoryInput(inputData.requestContext);\n\n return new RefinersByCategoryInput(\n currentCategory,\n QueryResultSettingsProxy.fromInputData(inputData),\n Number.isNaN(catalogId) ? 0 : catalogId\n );\n }\n\n throw new Error('Please specify categoryId query string in request.');\n};\n\n/**\n * Calls the Retail API and returns all refiners by category.\n * @param input\n * @param ctx\n */\nexport async function getRefinersByCategoryAction(input: RefinersByCategoryInput, ctx: IActionContext): Promise {\n let categoryId = input.currentCategory.categoryId;\n if (input.currentCategory.categorySlug && !categoryId) {\n const category = await getCurrentCategory(input.currentCategory, ctx);\n if (!category) {\n ctx.trace('[getRefinersByCategoryAction] Unable to find category');\n return [];\n }\n categoryId = category.RecordId;\n }\n\n return getRefinersByCategoryAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n input.catalogId,\n categoryId || 0\n );\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-refiners-by-category',\n action: >getRefinersByCategoryAction,\n input: createRefinersByCategoryInput\n});\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { BusinessPartnerOperationRequest, BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { getOperationRequestsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnerUsersDataActions.g';\n\nimport { getCurrentBusinessPartnerUser, GetCurrentBusinessPartnerUserInput } from './get-current-business-partner-user';\nimport { StringExtensions } from './utilities';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get customer data action.\n */\nexport class GetBusinessPartnerOperationRequestsInput implements IActionInput {\n public fromDate: Date;\n\n public toDate: Date;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, fromDate: Date, toDate: Date) {\n this.apiSettings = apiSettings;\n this.fromDate = fromDate;\n this.toDate = toDate;\n }\n\n public getCacheKey = () => buildCacheKey('BusinessPartnerOperationRequests-cacheKey', this.apiSettings);\n\n public getCacheObjectType = () => 'BusinessPartnerOperationRequest[]';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): GetBusinessPartnerOperationRequestsInput => {\n const fromDate = new Date(Date.now() - (86400000 * 3)); // 3 days ago.\n\n const toDate: Date = new Date(Date.now());\n return new GetBusinessPartnerOperationRequestsInput(inputData.requestContext.apiSettings, fromDate, toDate);\n};\n\nexport async function getBusinessPartnerOperationRequestsAction(input: GetBusinessPartnerOperationRequestsInput, ctx: IActionContext): Promise {\n if (input) {\n const userInput = new GetCurrentBusinessPartnerUserInput(ctx.requestContext.apiSettings);\n const user: BusinessPartnerUser | undefined = await getCurrentBusinessPartnerUser(userInput, ctx);\n\n if (user && !StringExtensions.isNullOrEmpty(user.B2BUserId)) {\n return getOperationRequestsAsync({ callerContext: ctx }, user.B2BUserId, input.fromDate, input.toDate);\n }\n\n return [];\n }\n\n ctx.trace('[getBusinessPartnerOperationRequest]Invalid input passed to action');\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-business-partner-operation-requests',\n action: >getBusinessPartnerOperationRequestsAction,\n input: createInput\n});\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction,\n IAction, IActionInput, IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { ProductRefinerValue, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { createRefineSearchByCategoryInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { retailAction } from '@msdyn365-commerce/retail-proxy/dist/retail-action';\n\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Action Input class for the refineSearchByCategory data action.\n */\nexport class RefineSearchByCriteriaInput implements IActionInput {\n public readonly categoryId?: number;\n\n public readonly channelId?: number;\n\n public readonly refinementCriteria: ProductRefinerValue[];\n\n public readonly catalogId: number;\n\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(\n queryResultSettingsProxy: QueryResultSettingsProxy,\n apiSettings: ICommerceApiSettings,\n categoryId?: number,\n channelId?: number,\n refinementCriteria?: ProductRefinerValue[],\n catalogId?: number\n ) {\n this.categoryId = categoryId;\n this.channelId = channelId;\n this.refinementCriteria = refinementCriteria || [];\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.catalogId = catalogId || 0;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('RefineSearchByCriteriaInputCache', this.apiSettings);\n\n public getCacheObjectType = () => 'RefineSearchByCriteriaInput';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CreateInput method for the refineSearchByCategory data action.\n * @param inputData\n */\nexport const createInput = (inputData: ICreateActionContext>): IActionInput => {\n const refinementCriteria = inputData.config && inputData.config.refinementCriteria;\n\n if (inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.categoryId) {\n return createRefineSearchByCategoryInput(\n QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings,\n +inputData.requestContext.apiSettings.channelId,\n inputData.config ? Number(inputData.config.catalogId) : 0,\n +inputData.requestContext.query.categoryId,\n !Array.isArray(refinementCriteria) ? [] : refinementCriteria.map((refinementCriterion: ProductRefinerValue) => refinementCriterion)\n );\n }\n\n throw new Error('Please specify categoryId, refinerId, and refinerSourceValue query string in request.');\n};\n\n/**\n * The RefineSearchByCategory data action\n * Uses categoryId query string parameter to call the RefinerSearchByCategory\n * RetailServer API to get information about products.\n */\nexport const retailActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/regin-search-by-category',\n action: >retailAction,\n input: createInput\n});\n\nexport default retailActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { addProductListLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { ProductListLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for the AddItemToOrderTemplate data action.\n */\nexport class AddItemToOrderTemplateInput implements IActionInput {\n public readonly orderTemplateId: string;\n\n public readonly productId: number;\n\n public readonly quantity: number;\n\n public readonly unitOfMeasure: string;\n\n constructor(orderTemplateId: string, productId: number, quantity: number, unitOfMeasure: string) {\n this.orderTemplateId = orderTemplateId;\n this.productId = productId;\n this.quantity = quantity;\n this.unitOfMeasure = unitOfMeasure || 'ea';\n }\n\n public getCacheKey = () => 'AddItemToOrderTemplateInput';\n\n public getCacheObjectType = () => 'AddItemToOrderTemplateInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the AddItemToOrderTemplate method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {string} orderTemplateId The id of order template to update.\n * @param {number} productId The id of a product to add.\n * @param {number} quantity How many items of this product to add.\n * @param unitOfMeasure\n */\nexport const addItemToOrderTemplateInput = (\n inputData: ICreateActionContext, orderTemplateId: string, productId: number, quantity: number, unitOfMeasure: string): AddItemToOrderTemplateInput => {\n\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create order template. User is not authenticated.');\n }\n return new AddItemToOrderTemplateInput(orderTemplateId, productId, quantity, unitOfMeasure);\n};\n\n/**\n * The action method for the AddItemToOrderTemplate data action.\n * @param {AddItemToOrderTemplateInput} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function addItemToOrderTemplateAction(input: AddItemToOrderTemplateInput, ctx: IActionContext): Promise {\n try {\n const productListLineToAdd: ProductListLine = {\n ProductListId: input.orderTemplateId,\n ProductId: input.productId,\n Quantity: input.quantity,\n UnitOfMeasure: input.unitOfMeasure\n };\n\n const productListLine: ProductListLine[] = await addProductListLinesAsync({\n callerContext: ctx\n }, input.orderTemplateId, [productListLineToAdd]);\n\n if (productListLine && productListLine.length === 1 && productListLine[0] && productListLine[0].ProductListId) {\n return productListLine[0];\n }\n ctx.telemetry.error('Product list line was not returned when adding it to order template');\n throw new Error('Product list line was not returned when adding it to order template');\n\n } catch (error) {\n ctx.telemetry.error('Not able to add an item to order template', error);\n throw error;\n }\n}\n\n/**\n * The AddItemToOrderTemplate Data Action.\n * Returns product list line that was added to the order template.\n */\nexport const addItemToOrderTemplateActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/add-item-to-order-template',\n action: >addItemToOrderTemplateAction,\n input: addItemToOrderTemplateInput\n});\n\nexport default addItemToOrderTemplateActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { FeatureState } from '@msdyn365-commerce/retail-proxy';\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { FilterDeliveryModeOption, ProductDeliveryOptions, ReleasedProductType, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from '.';\nimport { FeatureStateInput, getFeatureStateAction } from './get-feature-state';\n\n/**\n * Input class for the GetDeliveryOptionsForSelectedVariant Data Action.\n */\nexport class GetDeliveryOptionsForSelectedVariantInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public selectedProduct: SimpleProduct | undefined;\n\n public customerId: string;\n\n public featureState?: boolean;\n\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, customerId?: string, featureState?: boolean) {\n this.productId = productId;\n this.channelId = channelId;\n this.selectedProduct = selectedProduct;\n this.customerId = customerId || '';\n this.featureState = featureState;\n }\n\n public getCacheKey = () => 'DeliveryOptionsForSelectedVariant';\n\n public getCacheObjectType = () => 'DeliveryOptions';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n * @param context\n */\nexport async function getFeatureState(context: IActionContext): Promise {\n return getFeatureStateAction(new FeatureStateInput(), context);\n}\n\n/**\n * The createInput method for the GetDeliveryOptionsForSelectedVariant Data Action.\n * @param inputData The input data for the createInput method.\n */\nexport const createDeliveryOptionsForSelectedVariantInput = (inputData: ICreateActionContext>): GetDeliveryOptionsForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new GetDeliveryOptionsForSelectedVariantInput(\n +productId,\n +inputData.requestContext.apiSettings.channelId,\n undefined,\n undefined\n );\n }\n throw new Error('Unable to create PriceForSelectedVariantInput, no productId found on module config or query');\n\n};\n\n/**\n * The Action Method for the GetDeliveryOptionsForSelectedVariant Data Action\n * Pulls the currently selected variant from the cache using the getSelectedVariant data action, and gets it's supported delivery options\n * via the getDeliveryOptionsAsync RetailServer API.\n * @param input\n * @param ctx\n */\nexport async function getDeliveryOptionsForSelectedVariantAction(\n input: GetDeliveryOptionsForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n if (input.featureState === undefined) {\n const featureState = await getFeatureState(ctx);\n input.featureState = featureState?.find(item => item.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature')?.IsEnabled;\n }\n\n return Promise.resolve()\n .then(() => {\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\n\n if (!activeProduct) {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\n\n return getSelectedVariant(selectedVariantInput, ctx);\n }\n\n return activeProduct;\n })\n .then((productResult: SimpleProduct | null) => {\n const activeProduct: SimpleProduct | undefined = productResult;\n\n if (activeProduct) {\n return getDeliveryOptionsAsync(\n { callerContext: ctx, queryResultSettings: {} },\n [activeProduct.RecordId],\n {},\n\n // For service item, should not apply the filter, otherwise there will be no electronic delivery mode\n (input.featureState && productResult?.ItemTypeValue !== ReleasedProductType.Service) ? FilterDeliveryModeOption.FilterOutNonPickupDeliveryMode : null\n ).then(response => {\n if (response && response.length > 0) {\n return response[0];\n }\n\n return undefined;\n });\n }\n\n return undefined;\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getDeliveryOptionsForSelectedVariantAction]Error executing action');\n throw new Error('[getDeliveryOptionsForSelectedVariantAction]Error executing action');\n });\n}\n\nexport const getDeliveryOptionsForSelectedVariantActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-delivery-options-for-selected-variant',\n action: >getDeliveryOptionsForSelectedVariantAction,\n input: createDeliveryOptionsForSelectedVariantInput\n});\n\nexport default getDeliveryOptionsForSelectedVariantActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { readAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\n\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get customer data action.\n */\nexport class GetCustomerInput implements IActionInput {\n public customerAccountNumber?: string;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, accountNumber?: string) {\n this.customerAccountNumber = accountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`Customer-${this.customerAccountNumber}`, this.apiSettings);\n\n public getCacheObjectType = () => 'Customer';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): GetCustomerInput => {\n const { user, apiSettings } = inputData.requestContext;\n if (!user.token || !user.isAuthenticated) {\n throw new Error('[getCustomer][createInput]: User is not Authenticated.');\n }\n\n return new GetCustomerInput(apiSettings);\n};\n\nconst getCustomerAction = async (input: GetCustomerInput, ctx: IActionContext): Promise => {\n if (input && ctx.requestContext.user.isAuthenticated) {\n // TO-DO- Need to clean up this code once SDK releases new proxy that handles null.\n return readAsync({ callerContext: ctx }, input.customerAccountNumber || '').then(response => {\n return Array.isArray(response) ? response[0] : response;\n });\n }\n\n ctx.trace('[getCustomer]Invalid input passed to action');\n return {};\n};\n\nexport const getCustomerActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-customer',\n action: >getCustomerAction,\n input: createInput\n});\n\nexport default getCustomerActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/**\n * Represents a pair of two fields: key and value.\n * Used to initialize a dictionary.\n */\nexport interface IKeyValuePair {\n readonly key: Key;\n readonly value: Value;\n}\n\n/**\n * Represents a dictionary in memory storage.\n */\nexport class Dictionary {\n /**\n * Values stored in the dictionary.\n */\n private _values: { [eventName: string]: Value };\n\n /**\n * The number of values stored in the dictionary (does not include keys).\n */\n private _length: number;\n\n /**\n * Initializes an empty dictionary or a dictionary with the given key value pairs.\n * @param {IKeyValuePair[]} entries The key value pairs which should be stored in the dictionary initially.\n */\n public constructor(...entries: IKeyValuePair[]) {\n this._values = {};\n this._length = 0;\n entries.forEach(keyValuePair => {\n this.setValue(keyValuePair.key, keyValuePair.value);\n });\n }\n\n /**\n * Removes value from the dictionary for the given key.\n * @param {Key} key The key to retrieve the value.\n * @remark Does nothing in case the key is not present in the dictionary.\n */\n public removeValue(key: Key): void {\n if (!this.hasValue(key)) {\n return;\n }\n\n --this._length;\n delete this._values[key];\n }\n\n /**\n * Retrieves a value from the dictionary or returns undefined in case it's not found.\n * @param {Key} key The key to retrieve the value.\n * @returns {Value | undefined} The value stored in the dictionary or undefined in case it's not found.\n */\n public getValue(key: Key): Value | undefined {\n return this._values[key];\n }\n\n /**\n * Retrieves a value from the dictionary.\n * In case it's not found, adds the default value to the dictionary and returns it.\n * @param {Key} key The key to retrieve the value.\n * @param defaultValue\n * @returns {Value} The value stored in the dictionary or the default value in case it's not found.\n */\n public getValueWithDefaultValue(key: Key, defaultValue: Value): Value {\n if (!this.hasValue(key)) {\n this.setValue(key, defaultValue);\n }\n return this.getValue(key)!;\n }\n\n /**\n * Sets the value to the dictionary for the given key.\n * @remarks In case undefined was passed, removes the value from the dictionary instead.\n * @param {Key} key The key under which the value should be stored.\n * @param {Value} value The value which should be stored in the dictionary.\n */\n public setValue(key: Key, value: Value): void {\n if (value === undefined) {\n this.removeValue(key);\n return;\n }\n\n if (!this.hasValue(key)) {\n ++this._length;\n }\n\n this._values[key] = value;\n }\n\n /**\n * Checks if the dictionary stores some value (except undefined) for the given key.\n * @param {Key} key The key to retrieve the value.\n * @returns {boolean} True in case the value is present, false otherwise or if it's undefined.\n */\n public hasValue(key: Key): boolean {\n return this._values[key] !== undefined;\n }\n\n /**\n * Checks if the dictionary is empty.\n * @returns {boolean} True if the dictionary is empty, false otherwise.\n */\n public isEmpty(): boolean {\n return this.length === 0;\n }\n\n /**\n * Retrieves the number of values stored in the dictionary.\n * @remark Use `isEmpty` to check if the dictionary has any elements.\n * @returns {number} The number of values stored.\n */\n public get length(): number {\n return this._length;\n }\n\n /**\n * Clears the dictionary by removing all elements from the storage.\n */\n public clear(): void {\n this._values = {};\n this._length = 0;\n }\n\n /**\n * Returns all values stored in the dictionary.\n * @returns {Value[]} List of values.\n */\n public getValues(): Value[] {\n return this.getKeys().map(key => this._values[key]);\n }\n\n /**\n * Returns all keys stored in the dictionary.\n * @returns {string[]} List of keys.\n */\n public getKeys(): Key[] {\n return Object.keys(this._values);\n }\n\n /**\n * Returns all key value pairs stored in the dictionary.\n * @returns {IKeyValuePair[]} List of key value pairs.\n */\n public getKeyValuePairs(): IKeyValuePair[] {\n return this.getKeys().map(key => {\n return { key, value: this._values[key] };\n });\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { CartLine, QueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { addCartLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\n\nimport { getPaginatedOrderTemplateLinesAction, GetPaginatedOrderTemplateLinesInput } from './get-paginated-order-template-lines';\n\n/**\n * Input class for the AddOrderTemplateToCart data action.\n */\nexport class AddOrderTemplateToCartInput implements IActionInput {\n public readonly orderTemplateId: string;\n\n constructor(orderTemplateId: string) {\n this.orderTemplateId = orderTemplateId;\n }\n\n public getCacheKey = () => 'AddOrderTemplateToCartInput';\n\n public getCacheObjectType = () => 'AddOrderTemplateToCartInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the AddOrderTemplateToCart method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {string} orderTemplateId The id of template.\n */\nexport const addOrderTemplateToCartInput = (inputData: ICreateActionContext, orderTemplateId: string): AddOrderTemplateToCartInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create order template. User is not authenticated.');\n }\n return new AddOrderTemplateToCartInput(orderTemplateId);\n};\n\n/**\n * The action method for the AddOrderTemplateToCart data action.\n * @param {AddOrderTemplateToCartInput} input The action input.\n * @param {IActionContext} ctx The action context.\n * @param context\n */\nexport async function addOrderTemplateToCartAction(input: AddOrderTemplateToCartInput, context: IActionContext): Promise {\n const cartState = await getCartState(context);\n const chunkCount = 1000;\n const queryResultSettings: QueryResultSettings = {\n Paging: {\n Top: chunkCount,\n Skip: 0\n }\n };\n const getPaginatedOrderTemplateLinesInput = new GetPaginatedOrderTemplateLinesInput(input.orderTemplateId, queryResultSettings);\n let orderTemplateLines = await getPaginatedOrderTemplateLinesAction(getPaginatedOrderTemplateLinesInput, context);\n let addedCartLines: CartLine[] = [];\n for (let skip = chunkCount; orderTemplateLines.lines.length > 0; skip += chunkCount) {\n const cartLines: CartLine[] = orderTemplateLines.lines.map(productLine => {\n const cartLine: CartLine = {\n ItemId: productLine.fullProduct?.ProductDetails.ItemId,\n ProductId: productLine.productListLine.ProductId,\n Quantity: productLine.productListLine.Quantity,\n TrackingId: '',\n UnitOfMeasureSymbol: productLine.productListLine.UnitOfMeasure\n };\n return cartLine;\n });\n await addCartLinesAsync({ callerContext: context }, cartState.cart.Id, cartLines, cartState.cart.Version!).catch(error => {\n context.telemetry.trace(error);\n context.telemetry.trace('Unable to add order template to cart.');\n throw error;\n });\n addedCartLines = addedCartLines.concat(cartLines);\n getPaginatedOrderTemplateLinesInput.queryResultSettings.Paging!.Skip = skip;\n orderTemplateLines = await getPaginatedOrderTemplateLinesAction(getPaginatedOrderTemplateLinesInput, context);\n }\n await cartState.refreshCart({});\n return addedCartLines;\n}\n\n/**\n * The AddOrderTemplateToCart Data Action.\n * Returns created order template.\n */\nexport const addOrderTemplateToCartActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/add-order-template-to-cart',\n action: >addOrderTemplateToCartAction,\n input: addOrderTemplateToCartInput\n});\nexport default addOrderTemplateToCartActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { ProductList, ProductListType } from '@msdyn365-commerce/retail-proxy';\nimport { createProductListAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\n\n/**\n * Input class for the CreateOrderTemplate data action.\n */\nexport class CreateOrderTemplateInput implements IActionInput {\n public readonly templateName: string;\n\n constructor(templateName: string) {\n this.templateName = templateName;\n }\n\n public getCacheKey = () => 'CreateOrderTemplateInput';\n\n public getCacheObjectType = () => 'CreateOrderTemplateInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the CreateOrderTemplate method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {string} templateName The name of template.\n */\nexport const createOrderTemplateInput = (inputData: ICreateActionContext, templateName: string): CreateOrderTemplateInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create order template. User is not authenticated.');\n }\n return new CreateOrderTemplateInput(templateName);\n};\n\n/**\n * The action method for the CreateOrderTemplate data action.\n * @param {CreateOrderTemplateInput} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function createOrderTemplateAction(input: CreateOrderTemplateInput, ctx: IActionContext): Promise {\n try {\n const orderTemplate: ProductList = {\n Id: '',\n Name: input.templateName,\n ProductListTypeValue: ProductListType.OrderTemplate\n };\n const createdProductList = await createProductListAsync({\n callerContext: ctx\n }, orderTemplate);\n if (createdProductList && createdProductList.Id !== '') {\n return createdProductList;\n }\n ctx.telemetry.error('Created product list was null');\n throw new Error('Created product list was null');\n\n } catch (error) {\n ctx.telemetry.error('Not able to create order template', error);\n throw error;\n }\n}\n\n/**\n * The CreateOrderTemplate Data Action.\n * Returns created order template.\n */\nexport const createOrderTemplateActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/create-order-template',\n action: >createOrderTemplateAction,\n input: createOrderTemplateInput\n});\n\nexport default createOrderTemplateActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { FeatureState } from '@msdyn365-commerce/retail-proxy';\nimport { getFeatureStatesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\n/**\n * Input class for the getFeatureState data action.\n * The life time of the data action is 'application'.\n */\nexport class FeatureStateInput implements IActionInput {\n // Any additional feature names that needs to be checked in the code for enablement needs to be appended here:\n public readonly featureNames: string[] = [\n 'Dynamics.AX.Application.RetailB2BEcommerceFeature',\n 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature',\n 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature'\n ];\n\n public getCacheKey = () => 'FeatureState';\n\n public getCacheObjectType = () => 'FeatureState';\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * CreateInput method for the getFeatureState method.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetFeatureStateInput = (inputData: ICreateActionContext>): IActionInput => {\n return new FeatureStateInput();\n};\n\n/**\n * The action method for the getFeatureState data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function getFeatureStateAction(input: FeatureStateInput, ctx: IActionContext): Promise {\n const featureState = await getFeatureStatesAsync({ callerContext: ctx }, input.featureNames);\n return featureState;\n}\n\n/**\n * The getFeatureState data action\n * Gets the feature state via the read RetailServer API\n * Returns address information associated with the retrieved customer.\n */\nexport const getFeatureStateActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-feature-state',\n action: >getFeatureStateAction,\n input: createGetFeatureStateInput\n});\n\nexport default getFeatureStateActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { ProductList } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for the UpdateOrderTemplate data action.\n */\nexport class UpdateOrderTemplateHeaderInput implements IActionInput {\n public readonly orderTemplate: ProductList;\n\n constructor(orderTemplate: ProductList) {\n this.orderTemplate = orderTemplate;\n }\n\n public getCacheKey = () => 'UpdateOrderTemplateHeaderInput';\n\n public getCacheObjectType = () => 'UpdateOrderTemplateHeaderInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the UpdateOrderTemplateHeader method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {ProductList} orderTemplate The template header.\n */\nexport const updateOrderTemplateHeaderInput = (inputData: ICreateActionContext, orderTemplate: ProductList): UpdateOrderTemplateHeaderInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to update order template. User is not authenticated.');\n }\n return new UpdateOrderTemplateHeaderInput(orderTemplate);\n};\n\n/**\n * The action method for the UpdateOrderTemplate data action.\n * @param {UpdateOrderTemplateHeaderInput} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function updateOrderTemplateHeaderAction(input: UpdateOrderTemplateHeaderInput, ctx: IActionContext): Promise {\n try {\n const { orderTemplate } = input;\n const updatedProductList = await updateAsync({\n callerContext: ctx\n }, orderTemplate);\n if (updatedProductList) {\n return updatedProductList;\n }\n ctx.telemetry.error(`Updated product list ${orderTemplate.Id} came back as null.`);\n throw new Error('Updated product list was null.');\n\n } catch (error) {\n ctx.telemetry.error('Not able to update order template', error);\n throw error;\n }\n}\n\n/**\n * The UpdateOrderTemplate Data Action.\n * Returns updated order template.\n */\nexport const updateOrderTemplateHeaderActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/update-order-template-header',\n action: >updateOrderTemplateHeaderAction,\n input: updateOrderTemplateHeaderInput\n});\n\nexport default updateOrderTemplateHeaderActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { createObservableDataAction, IAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { IDataServiceRequest, retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createGetOrderShipmentsHistoryInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\nimport { OrderShipments } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): IDataServiceRequest => {\n if (\n inputData.requestContext &&\n inputData.requestContext.user &&\n inputData.requestContext.user.isAuthenticated\n ) {\n return createGetOrderShipmentsHistoryInput({\n Paging: {\n Top: 100,\n Skip: 0\n }\n },\n\n // @ts-expect-error\n null);\n }\n\n throw new Error('Unable to create order history input. User is not authenticated.');\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-order-history',\n action: >retailAction,\n input: createInput\n});\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IEventSubscriber } from './event-subscriber';\n\n/**\n * Represents a simple event with subscribers. Notifies the subscribers once the event is triggered.\n */\nexport class Event {\n /**\n * The list of subscribers.\n */\n private _subscribers: IEventSubscriber[];\n\n /**\n * Initializes the event with a empty subscribers list.\n */\n public constructor() {\n this._subscribers = [];\n }\n\n /**\n * Subscribes given instance to the event.\n * @param {IEventSubscriber} instance The info about the subscriber.\n */\n public subscribe(instance: IEventSubscriber): void {\n this._subscribers.push(instance);\n }\n\n /**\n * Removes the subscriber from the list of subscribers watching the event.\n * @param {string} instanceId The unique identifier of the subscriber which was earlier passed in `subscribe` method in `IEventSubscriber`.\n */\n public unsubscribe(instanceId: string): void {\n this._subscribers = this._subscribers.filter(element => element.instanceId !== instanceId);\n }\n\n /**\n * Clears the list of subscriber removing all instances watching the event.\n */\n public unsubscribeAll(): void {\n this._subscribers = [];\n }\n\n /**\n * Triggers the event.\n * Notifies the subscribers that the event is triggered by calling `handler` method.\n */\n public trigger(): void {\n this._subscribers.forEach(subscriber => {\n subscriber.handler();\n });\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { InvoicePaidStatus, InvoiceSearchCriteria, InvoiceType, IQueryResultSettings, OrderInvoice, SalesOrdersDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\n\nimport getCustomer, { GetCustomerInput } from '../get-customer';\nimport { QueryResultSettingsProxy } from '../utilities/QueryResultSettingsProxy';\n\nconst getDefaultSearchCriteria = (): InvoiceSearchCriteria => {\n return {\n InvoicePaidStatusValues: [InvoicePaidStatus.None]\n };\n};\n\n/**\n * Input class for get invoice data action.\n */\nexport class GetInvoicesInput implements IActionInput {\n public readonly searchCriteria: InvoiceSearchCriteria;\n\n public readonly queryResultSettings: IQueryResultSettings;\n\n constructor(searchCriteria: InvoiceSearchCriteria, queryResultSettings: IQueryResultSettings) {\n this.searchCriteria = searchCriteria;\n this.queryResultSettings = queryResultSettings;\n }\n\n public getCacheKey = () => 'BusinessPartnerInvoices';\n\n public getCacheObjectType = () => 'OrderInvoice';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const CreateGetInvoicesInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n\n return new GetInvoicesInput(getDefaultSearchCriteria(), queryResultSettings);\n};\n\nexport async function getInvoices(input: GetInvoicesInput, context: IActionContext): Promise {\n if (!context?.requestContext?.user?.isAuthenticated) {\n throw new Error('Unable to get list of invoices. User is not authenticated.');\n }\n\n input.searchCriteria.InvoiceTypeValues = [InvoiceType.SalesOrderInvoice];\n\n const businessPartner = await getCurrentAsync({ callerContext: context });\n input.searchCriteria.BusinessPartnerId = businessPartner.BusinessPartnerId;\n\n const customer = await getCustomer(new GetCustomerInput(context.requestContext.apiSettings), context);\n input.searchCriteria.CustomerId = customer.AccountNumber;\n\n return SalesOrdersDataActions.getInvoicesAsync(\n { callerContext: context, queryResultSettings: input.queryResultSettings },\n input.searchCriteria);\n}\n\nexport const getInvoicesDataAction = createObservableDataAction({\n id: 'get-invoices',\n action: >getInvoices,\n input: CreateGetInvoicesInput\n});\n\nexport default getInvoicesDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any, max-lines */\nimport { IExperimentationProvider, IExperimentsResult, ISecretManager, IVariants, State } from '@msdyn365-commerce/core';\n/**\n * A basic implementation of the ExperimentationProvider interface used for testing\n */\nclass MsDyn365ExpTestConnector implements IExperimentationProvider {\n private variantSet1: IVariants[] = [\n {\n variantId: 'var1',\n experimentId: 'expid1'\n },\n {\n variantId: 'var1',\n experimentId: 'expid4'\n },\n {\n variantId: 'var1',\n experimentId: 'expid6'\n },\n {\n variantId: 'var1',\n experimentId: 'expid7'\n },\n {\n variantId: 'var1',\n experimentId: 'expid8'\n },\n {\n variantId: 'var1',\n experimentId: 'expid9'\n },\n {\n variantId: 'var1',\n experimentId: 'expid10'\n },\n {\n variantId: 'var1',\n experimentId: 'expid11'\n },\n {\n variantId: 'var1',\n experimentId: 'expid12'\n }\n ];\n\n private variantSet2: IVariants[] = [\n {\n variantId: 'var2',\n experimentId: 'expid1'\n },\n {\n variantId: 'var2',\n experimentId: 'expid5'\n },\n {\n variantId: 'var2',\n experimentId: 'expid7'\n },\n {\n variantId: 'var2',\n experimentId: 'expid8'\n },\n {\n variantId: 'var2',\n experimentId: 'expid9'\n },\n {\n variantId: 'var2',\n experimentId: 'expid10'\n },\n {\n variantId: 'var2',\n experimentId: 'expid11'\n },\n {\n variantId: 'var2',\n experimentId: 'expid12'\n }\n ];\n\n private variantSet3: IVariants[] = [\n {\n variantId: 'var1',\n experimentId: 'expid5'\n },\n {\n variantId: 'var2',\n experimentId: 'expid13'\n },\n {\n variantId: 'var2',\n experimentId: 'expid14'\n },\n {\n variantId: 'var2',\n experimentId: 'expid15'\n },\n {\n variantId: 'var2',\n experimentId: 'expid16'\n },\n {\n variantId: 'var2',\n experimentId: 'expid17'\n },\n {\n variantId: 'var2',\n experimentId: 'expid18'\n },\n {\n variantId: 'var2',\n experimentId: 'expid19'\n },\n {\n variantId: 'var2',\n experimentId: 'expid20'\n },\n {\n variantId: 'var2',\n experimentId: 'expid21'\n },\n {\n variantId: 'var2',\n experimentId: 'expid22'\n },\n {\n variantId: 'var2',\n experimentId: 'expid23'\n },\n {\n variantId: 'var2',\n experimentId: 'expid24'\n },\n {\n variantId: 'var2',\n experimentId: 'expid25'\n }\n ];\n\n private variantSet4: IVariants[] = [\n {\n variantId: 'var1',\n experimentId: 'expid5'\n },\n {\n variantId: 'var1',\n experimentId: 'expid1'\n },\n {\n variantId: 'var1',\n experimentId: 'expid13'\n },\n {\n variantId: 'var1',\n experimentId: 'expid14'\n },\n {\n variantId: 'var1',\n experimentId: 'expid15'\n },\n {\n variantId: 'var1',\n experimentId: 'expid16'\n },\n {\n variantId: 'var1',\n experimentId: 'expid17'\n },\n {\n variantId: 'var1',\n experimentId: 'expid18'\n },\n {\n variantId: 'var1',\n experimentId: 'expid19'\n },\n {\n variantId: 'var1',\n experimentId: 'expid20'\n },\n {\n variantId: 'var1',\n experimentId: 'expid21'\n },\n {\n variantId: 'var1',\n experimentId: 'expid22'\n },\n {\n variantId: 'var1',\n experimentId: 'expid23'\n },\n {\n variantId: 'var1',\n experimentId: 'expid24'\n },\n {\n variantId: 'var1',\n experimentId: 'expid25'\n }\n ];\n\n public getConfigForClientSideInit(): Promise {\n return Promise.resolve({});\n }\n public initializeClientSide(config: any): boolean {\n console.log(`Initialize client side called on MsDyn365ExpTestConnector with config ${config}`);\n return true;\n }\n\n public getExperiments(): Promise {\n return Promise.resolve({\n name: 'msdyn365-exp-test-2',\n experiments: [\n {\n id: 'expid1',\n friendlyName: 'experiment-1',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n link: 'www.msdyn365-exp-test-connector/expid1',\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var3',\n friendlyName: 'variant-3',\n status: State.Draft,\n weight: '0.2'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid2',\n friendlyName: 'experiment-2',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Paused,\n link: 'www.msdyn365-exp-test-connector/expid2',\n variations: [\n {\n id: 'var3',\n friendlyName: 'variant-3',\n status: State.Paused,\n weight: '1.0'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid3',\n friendlyName: 'experiment-3',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Archived,\n variations: [\n {\n id: 'var4',\n friendlyName: 'variant-4',\n status: State.Archived,\n weight: '1.0'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid4',\n friendlyName: 'experiment-4',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid5',\n friendlyName: 'experiment-5',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid6',\n friendlyName: 'experiment-6',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid7',\n friendlyName: 'experiment-7',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid8',\n friendlyName: 'experiment-8',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid9',\n friendlyName: 'experiment-9',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid10',\n friendlyName: 'experiment-10',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid11',\n friendlyName: 'experiment-11',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid12',\n friendlyName: 'experiment-12',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid13',\n friendlyName: 'experiment-13',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid14',\n friendlyName: 'experiment-14',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid15',\n friendlyName: 'experiment-15',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid16',\n friendlyName: 'experiment-16',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid17',\n friendlyName: 'experiment-17',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid18',\n friendlyName: 'experiment-18',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid19',\n friendlyName: 'experiment-19',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid20',\n friendlyName: 'experiment-20',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid21',\n friendlyName: 'experiment-21',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid22',\n friendlyName: 'experiment-22',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid23',\n friendlyName: 'experiment-23',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid24',\n friendlyName: 'experiment-24',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n },\n {\n id: 'expid25',\n friendlyName: 'experiment-25',\n description: 'This is a msdyn365-exp test experiment',\n type: 'A/B Test',\n status: State.Running,\n variations: [\n {\n id: 'var1',\n friendlyName: 'variant-1',\n status: State.Active,\n weight: '0.4'\n },\n {\n id: 'var2',\n friendlyName: 'variant-2',\n status: State.Active,\n weight: '0.6'\n }\n ],\n createdDate: '05/01/2020',\n lastModifiedDate: '05/01/2020',\n lastModifiedBy: 'User 1'\n }\n ]\n });\n }\n public getVariantsForUser(userId: string, attributes?: { [index: string]: string } | undefined): IVariants[] {\n if (userId.match(/^[0-3].*$/)) {\n return this.variantSet1;\n } else if (userId.match(/^[4-7].*$/)) {\n return this.variantSet2;\n } else if (userId.match(/^[8-9|a-b].*$/)) {\n return this.variantSet3;\n } else {\n return this.variantSet4;\n }\n }\n public activateExperiment(userId: string, experiments: IVariants[], attributes?: { [index: string]: string } | undefined): boolean {\n console.log(\n `Active experiment called on MsDyn365ExpTestConnector with userId: ${userId}, experiments: ${JSON.stringify(\n experiments\n )}, attributes: ${JSON.stringify(attributes)}`\n );\n return true;\n }\n public initialize(config: any, secretManager?: ISecretManager): Promise {\n console.log(`MsDyn365 Exp Test Connector called with config: ${JSON.stringify(config)}`);\n return Promise.resolve(true);\n }\n}\n\nconst connector = new MsDyn365ExpTestConnector();\nexport default connector;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { createObservableDataAction, IAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { IDataServiceRequest, retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createSearchOrgUnitLocationsInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { buildQueryResultSettings } from './utilities/utils';\n\n/**\n * Search Org Unit Locations action createInput method.\n * @param inputData\n */\nexport function createSearchOrgUnitLocationsInputFunc(inputData: ICreateActionContext, IGeneric>): IDataServiceRequest {\n return createSearchOrgUnitLocationsInput(buildQueryResultSettings(inputData), {});\n}\n\nexport const retailActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/search-org-unit-locations',\n action: >retailAction,\n input: createSearchOrgUnitLocationsInputFunc\n});\n\nexport default retailActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { CommerceListLine } from '@msdyn365-commerce/retail-proxy';\nimport { getByCustomerAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CommerceListsDataActions.g';\nimport { FullProductInput, getFullProducts, getProductDetailsCriteriaFromActionInput } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Input class for getActiveWishlistItems data action.\n */\nexport class ActiveWishlistInput implements IActionInput {\n public getCacheKey = () => 'ActiveWishlistItems';\n\n public getCacheObjectType = () => 'ActiveWishlistItems';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new ActiveWishlistInput();\n};\n\n/**\n * Calls the Retail API and returns a CommerceList object based on the passed GetCartInput.\n * @param input\n * @param ctx\n */\nexport async function getActiveWishlistItems(input: ActiveWishlistInput, ctx: IActionContext): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n if (!input) {\n throw new Error('[getActiveWishlistItems]No valid Input was provided, failing');\n }\n\n if (ctx.requestContext.user.isAuthenticated) {\n const wishlists = await getByCustomerAsync({ callerContext: ctx, queryResultSettings: {} }, null);\n\n if (wishlists && wishlists.length > 0) {\n const productInputs: FullProductInput[] = [];\n wishlists.forEach((currWishlist) => {\n if (currWishlist.CommerceListLines) {\n currWishlist.CommerceListLines.forEach((commerceListLine: CommerceListLine) => {\n if (commerceListLine.ProductId) {\n productInputs.push(new FullProductInput(commerceListLine.ProductId, ctx.requestContext.apiSettings, getProductDetailsCriteriaFromActionInput(ctx)));\n }\n });\n }\n });\n\n if (productInputs.length > 0) {\n return getFullProducts(productInputs, ctx)\n .then(products => {\n if (products) {\n return products;\n }\n return [];\n\n })\n .catch(error => {\n ctx.trace(error);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug('[getActiveWishlistItems]Unable to hydrate cart with product information');\n throw new Error('[getActiveWishlistItems]Unable to hydrate cart with product information');\n });\n }\n ctx.trace('No productIds found for wishlist');\n\n } else {\n ctx.trace('[getActiveWishlistItems]Not able to get wishlists for the customer');\n return [];\n }\n }\n ctx.trace('[getActiveWishlistItems]User token not found for wishlists');\n return [];\n}\n\nexport const getActiveWishlistItemsDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/wishlist/wishlist-items/get-items-in-wishlist',\n action: >getActiveWishlistItems,\n input: createInput\n});\n\nexport default getActiveWishlistItemsDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { Image, ISubList } from '@msdyn365-commerce-modules/data-types';\nimport { buildCacheKeyWithUrlTokens, getList, ListInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { IProductItem } from '@msdyn365-commerce-modules/retail-actions/dist/types/get-list';\n\nimport { IDefaultPageSummaryConfig } from '../default-page-summary/default-page-summary.props.autogenerated';\nimport { IPageSummaryData } from '../IPageSummaryData';\n\n/** List Page Summary Input */\nexport class ListPageSummaryInput implements IActionInput {\n public requestContext: IRequestContext;\n\n public config: IDefaultPageSummaryConfig;\n\n constructor(config: IDefaultPageSummaryConfig, requestContext: IRequestContext) {\n this.config = config || {};\n this.requestContext = requestContext;\n }\n\n public getCacheObjectType = (): string => 'ListPageSummary';\n\n public getCacheKey = (): string => buildCacheKeyWithUrlTokens('ListPageSummary', this.requestContext);\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * List item type enum.\n */\nconst enum ListItemType {\n list = 'list',\n product = 'product'\n}\n\n/**\n * Get the url of sub list.\n * @param listName\n * @param sitePath\n */\nfunction getSubListUrl(listName: string, sitePath: string): string {\n if (!listName) {\n return '';\n }\n\n if (!sitePath) {\n return `/${listName}.l`;\n }\n\n // SitePath has a leading '/'\n return `${sitePath}/${listName}.l`;\n}\n\n/**\n * Get sub list item.\n * @param item\n * @param sitePathOfRequest\n */\nfunction getSubListItem(item: IGeneric, sitePathOfRequest: string): ISubList {\n const imageList: Image[] = getImages(item.fields.content.images);\n\n const sublistHref = getSubListUrl(item.fields._name, sitePathOfRequest);\n return {\n Title: item.fields.content.title,\n Description: item.fields.content.description,\n ShortDescription: item.fields.content.shortDescription,\n BackgroundColor: item.fields.content.backgroundColor,\n ForegroundColor: item.fields.content.foregroundColor,\n Href: sublistHref,\n Images: imageList\n };\n}\n\n/**\n * Get site path.\n * @param inputData\n */\nfunction getSitePath(inputData: ICreateActionContext, IGeneric>): string {\n return inputData && inputData.requestContext && inputData.requestContext.sitePath ? inputData.requestContext.sitePath : '';\n}\n\n/**\n * Get items per page.\n * @param inputData\n */\nfunction getItemsPerPage(inputData: ICreateActionContext, IGeneric>): number {\n if (!inputData || !inputData.config || !inputData.config.itemsPerPage) {\n return 50;\n }\n\n const result = Number(inputData.config.itemsPerPage);\n if (isNaN(result)) {\n return 50;\n }\n\n return result;\n}\n\n/**\n * Get skip count.\n * @param inputData\n */\nfunction getSkipCount(inputData: ICreateActionContext, IGeneric>): number {\n return inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.skipCount ? Number(inputData.requestContext.query.skipCount) : 0;\n}\n\n/**\n * Get images.\n * @param images\n */\nfunction getImages(images: IGeneric[]): Image[] {\n const resultImageList: Image[] = [];\n\n if (!images) {\n return resultImageList;\n }\n\n images.forEach(item => {\n if (item && item.image && item.image.href) {\n // Add image item\n const imageItem: Image = {\n href: item.image.href,\n altText: item.image.altText,\n title: item.image.title,\n width: item.image.width,\n height: item.image.height\n };\n\n resultImageList.push(imageItem);\n }\n });\n\n return resultImageList;\n}\n\n/**\n * Get input list data.\n * @param inputData\n */\nfunction getInputListData(inputData: ICreateActionContext, IGeneric>): IGeneric {\n let listData =\n !inputData || !inputData.requestContext || !inputData.requestContext.pageData ? null : inputData.requestContext.pageData.list;\n if (\n !inputData ||\n !inputData.requestContext ||\n !inputData.requestContext.pageData ||\n !inputData.requestContext.pageData.list ||\n !inputData.requestContext.pageData.list.content ||\n !inputData.requestContext.pageData.list.content.items ||\n !inputData.requestContext.pageData.list.content.title ||\n !inputData.requestContext.pageData.list._id\n ) {\n if (\n !inputData ||\n !inputData.data ||\n !inputData.data.list ||\n !inputData.data.list.content ||\n !inputData.data.list.content.items ||\n !inputData.data.list.content.title ||\n !inputData.data.list._id\n ) {\n console.error('data is not well defined for list action input');\n throw new Error('data is not well defined for list action input');\n }\n\n listData = inputData.data.list;\n }\n return listData;\n}\n\nconst createGetListInput = (inputData: IActionContext): ListInput => {\n const listData: IGeneric = getInputListData(inputData);\n const listItems: (IProductItem[] | ISubList)[] = [];\n let productList: IProductItem[] = [];\n\n const parentImageList: Image[] = getImages(listData.content.images);\n\n const itemsPerPage = getItemsPerPage(inputData);\n const skipCount = getSkipCount(inputData);\n\n // This is the list contains all product and will be used to call getSimpleProducts data action.\n const productItems: IProductItem[] = [];\n const sum = skipCount + itemsPerPage;\n for (let index = skipCount; index < listData.content.items.length && index < sum; index++) {\n const item = listData.content.items[index];\n if (item.type === ListItemType.list) {\n if (!item.fields || !item.fields.content || !item.fields.content.title) {\n console.error(`sublist item fields, content or title missing in list ${listData._id}`);\n continue;\n }\n\n // If any elements in product list, then copy it and add to list items\n if (productList.length > 0) {\n const clonedList = [...productList];\n listItems.push(clonedList);\n productList = [];\n }\n\n // Build and add sublist item\n listItems.push(getSubListItem(item, getSitePath(inputData)));\n }\n\n if (item.type === ListItemType.product) {\n if (!item.fields || !item.fields.recordId) {\n console.error(`product item missing recordId in list ${listData._id}`);\n continue;\n }\n\n // Add product item\n const productItem: IProductItem = {\n RecordId: item.fields.recordId,\n CatalogId: item.fields.catalogId || '0'\n };\n\n productList.push(productItem);\n productItems.push(productItem);\n }\n }\n\n // Save the last portion of product items.\n if (productList.length > 0) {\n listItems.push(productList);\n }\n\n return new ListInput(\n listData._id,\n listData.content.title,\n listData.content.description,\n listData.content.shortDescription,\n listData.content.backgroundColor,\n listData.content.foregroundColor,\n parentImageList,\n listItems,\n productItems,\n listData.content.items.length,\n itemsPerPage,\n skipCount\n );\n};\n\nconst action = async (input: ListPageSummaryInput, context: IActionContext): Promise => {\n const { config } = input;\n let listData;\n try {\n listData = await getList(createGetListInput(context), context);\n } catch {\n // Do nothing, if there's an error running the action fall back to values defined from data\n }\n if (listData && listData.Title) {\n return {\n title: listData.Title,\n description: listData.Description\n };\n\n // If the action fails fallback to values defined from data\n } else if (config) {\n return {\n title: config.title,\n description: config.description\n };\n }\n return {};\n\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/page-summary/list-page-summary',\n action: >action,\n input: (args: ICreateActionContext) => {\n return new ListPageSummaryInput(args.config, args.requestContext);\n }\n});\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { readAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ScanResultsDataActions.g';\nimport { ProductDimension } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { getDimensionsForSelectedVariant, GetDimensionsForSelectedVariantInput } from '.';\nimport { IScanResultWithProduct } from './utilities/scan-result-with-product';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class to get product from sku number.\n */\nexport class GetScanResultInput implements IActionInput {\n public skuNumber: string;\n\n public channelId: number;\n\n public matchingDimensionValues: ProductDimension[];\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, sku: string, channelId: number, matchingDimensionValues?: ProductDimension[]) {\n this.skuNumber = sku;\n this.channelId = channelId;\n this.matchingDimensionValues = matchingDimensionValues || [];\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`Product-${this.skuNumber}`, this.apiSettings);\n\n public getCacheObjectType = () => 'ProductSKU';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CreateInput method for the getSelectedVariant data action.\n * @param inputData The input data passed to the createInput method.\n * @param skuuNumber SkuNumber to send ScanResult API.\n * @param skuNumber\n * @param channelId ChannelId required to get dimension for given product.\n * @param matchingDimensionValues\n */\nconst createInput = (inputData: ICreateActionContext, skuNumber: string, channelId: number, matchingDimensionValues?: ProductDimension[]) => {\n return new GetScanResultInput(inputData.requestContext.apiSettings, skuNumber, channelId, matchingDimensionValues);\n};\n\n/**\n * Action method for the product and dimension from scan result and dimension api.\n * @param input The action input class.\n * @param ctx The action context.\n */\nexport async function getScanResult(input: GetScanResultInput, ctx: IActionContext): Promise {\n return readAsync({ callerContext: ctx }, input.skuNumber)\n .then(scanResults => {\n if (scanResults && scanResults.Product) {\n return getDimensionsForSelectedVariant(new GetDimensionsForSelectedVariantInput(\n scanResults.Product.MasterProductId ? scanResults.Product.MasterProductId : scanResults.Product.RecordId, input.channelId, input.matchingDimensionValues), ctx)\n .then(response => {\n if (response && response.length > 0) {\n return { ScanResult: scanResults, Product: scanResults.Product, ProductDimensionFull: response };\n }\n return { ScanResult: scanResults, Product: scanResults.Product };\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getScanResult, getDimensionsForSelectedVariant]Error executing action');\n throw new Error('[getScanResult, getDimensionsForSelectedVariant]Error executing action');\n });\n }\n\n throw new Error('Unable to get result from scan result data action.');\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getScanResult]Error executing action');\n throw new Error('[getScanResult]Error executing action');\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-scan-results',\n action: >getScanResult,\n input: createInput\n});\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { QueryResultSettings } from '@msdyn365-commerce/retail-proxy';\n\nimport { QueryResultSettingsProxy } from './QueryResultSettingsProxy';\n\nexport interface ISearchData {\n q: string;\n skip: number;\n top: number;\n itemsPerPage: string;\n maxItems: string;\n channelId: number;\n queryResultSettings: QueryResultSettings;\n}\n\nexport const parseSearchData = (inputData: ICreateActionContext>): ISearchData => {\n // Query is of type 'IDictionary | undefined', so that q and skip are not recognized by tsc\n // @ts-expect-error:2339\n const { requestContext: { query: { q, top, skip }, apiSettings: { channelId } }, config: { maxItems, itemsPerPage } } = inputData;\n const queryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n return {\n q,\n skip: (skip && Number(skip) || 0),\n top: (top && Number(top) || 50),\n itemsPerPage, // TODO BUGBUG 21667361\n maxItems, // TODO BUGBUG 21667361\n channelId,\n queryResultSettings\n };\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { AttributeValue, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getAttributeValuesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Chains getting the SelectedVariant with GetActivePrice.\n */\nexport class AttributesForSelectedVariantInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public catalogId: number;\n\n public selectedProduct: SimpleProduct | undefined;\n\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, catalogId?: number) {\n this.productId = productId;\n this.channelId = channelId;\n this.selectedProduct = selectedProduct;\n this.catalogId = catalogId || 0;\n }\n\n public getCacheKey = () => 'AttributesForSelectedVariant';\n\n public getCacheObjectType = () => 'ProductAttributeValue';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const createAttributesForSelectedVariantInput = (inputData: ICreateActionContext>): AttributesForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new AttributesForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId);\n }\n throw new Error('Unable to create PriceForSelectedVariantInput, no productId found on module config or query');\n\n};\n\n/**\n * Calls the Retail API a get a list of dimension values for a given product.\n * @param input\n * @param ctx\n */\nexport async function getAttributesForSelectedVariantAction(\n input: AttributesForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n return Promise.resolve().then(() => {\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\n\n if (!activeProduct) {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\n\n return getSelectedVariant(selectedVariantInput, ctx);\n }\n\n return activeProduct;\n }).then((productResult: SimpleProduct | null) => {\n const activeProduct: SimpleProduct | undefined = productResult;\n\n if (activeProduct) {\n return getAttributeValuesAsync({ callerContext: ctx, queryResultSettings: {} }, activeProduct.RecordId, input.channelId, input.catalogId);\n }\n\n return null;\n }).then((attributeValues: AttributeValue[] | null) => {\n const resultArray = attributeValues;\n if (resultArray) {\n return resultArray;\n }\n\n return [];\n }).catch((error: Error) => {\n ctx.trace(error.message);\n throw new Error('[getPriceForSelectedVariantAction]Error executing action');\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/product-info/get-attributes-for-selected-variant',\n action: >getAttributesForSelectedVariantAction,\n input: createAttributesForSelectedVariantInput\n});\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { createObservableDataAction, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IActiveTabState } from './tab-state';\n\nexport function createTabStateInput(result: IActiveTabState): GenericInput {\n return new GenericInput('activeTabState', result, 'IActiveTabState');\n}\n\nconst createTabStateInputInternal = (): IActionInput => {\n return createTabStateInput({});\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createTabStateInputInternal\n});\n\nexport default getGenericActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput,\n ICommerceApiSettings\n} from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport {\n readAsync, updateAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\n\nimport { buildCacheKey } from '.';\nimport { GetCustomerInput } from './get-customer';\n\nexport interface IUpdateCustomerPersonalizationInput extends IActionInput {\n isOptOut: boolean;\n userAccountNumber: string;\n apiSettings: ICommerceApiSettings;\n preferenceType?: string;\n}\n\n/**\n * Input class for the updateCustomerPersonalization.\n */\nexport class updateCustomerPersonalizationInput implements IUpdateCustomerPersonalizationInput {\n public userAccountNumber: string;\n\n public isOptOut: boolean;\n\n public apiSettings: ICommerceApiSettings;\n\n public preferenceType: string | undefined;\n\n constructor(userAccountNumber: string, isOptOut: boolean, apiSettings: ICommerceApiSettings, preferenceType?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n this.isOptOut = isOptOut;\n this.preferenceType = preferenceType;\n }\n\n public getCacheKey = (): string => buildCacheKey(`${this.userAccountNumber}`, this.apiSettings);\n\n public getCacheObjectType = () => 'Customer';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The action method for the updateCustomerPersonalization data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function updateCustomerPersonalizationAction(input: IUpdateCustomerPersonalizationInput, ctx: IActionContext): Promise {\n const { userAccountNumber, isOptOut, preferenceType } = input;\n const customer = await readAsync({ callerContext: ctx, bypassCache: 'get' }, userAccountNumber);\n if (!customer) {\n throw new Error('Unable to find customer');\n }\n\n const newCustomer = { ...customer };\n\n switch (preferenceType) {\n case 'web-tracking':\n newCustomer.OptOutWebActivityTracking = isOptOut;\n break;\n case undefined:\n case 'personalization':\n default:\n newCustomer.OptOutPersonalization = isOptOut;\n }\n\n const updatedCustomer = await updateAsync({ callerContext: ctx }, newCustomer);\n\n if (!updatedCustomer) {\n throw new Error('Unable to update customer');\n }\n\n ctx.update(new GetCustomerInput(ctx.requestContext.apiSettings), updatedCustomer);\n\n return updatedCustomer;\n}\n\n/**\n * The updateCustomerPersonalization data action\n * Returns the updated customer.\n */\nexport const updateCustomerPersonalizationActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/update-customer-personalization',\n action: >updateCustomerPersonalizationAction\n});\n\nexport default updateCustomerPersonalizationActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IHTTPRequestOptions,\n IHTTPResponse,\n sendCommerceRequest\n} from '@msdyn365-commerce/core';\nimport { Address, CartTenderLine, SalesOrder } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Check Out action Input.\n */\nexport class CheckOutInput implements IActionInput {\n public cartId: string;\n\n public cartVersion: number;\n\n public receiptEmail?: string;\n\n public cartTenderLines?: CartTenderLine[];\n\n public billingAddress?: Address;\n\n constructor(cartId: string, cartVersion: number, receiptEmail?: string, cartTenderLines?: CartTenderLine[], billingAddress?: Address) {\n this.cartId = cartId;\n this.cartVersion = cartVersion;\n this.receiptEmail = receiptEmail;\n this.cartTenderLines = cartTenderLines;\n this.billingAddress = billingAddress;\n }\n\n public getCacheKey = () => `${this.cartId}-${this.cartVersion}`;\n\n public getCacheObjectType = () => 'CheckOut';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Calls the Retail API to check out and returns sales order.\n * @param input\n * @param ctx\n */\nexport async function checkOutAction(input: CheckOutInput, ctx: IActionContext): Promise {\n const { apiSettings } = ctx.requestContext;\n const requestUrl = `${apiSettings.baseUrl}Commerce/Carts('${input.cartId}')/Checkout?api-version=7.3`;\n const requestOptions: IHTTPRequestOptions = {\n headers: {\n oun: apiSettings.oun,\n 'Content-Type': 'application/json'\n }\n };\n\n if (requestOptions.headers && ctx.requestContext.user.token) {\n requestOptions.headers.Authorization = `id_token ${ctx.requestContext.user.token}`;\n }\n\n if (input.cartTenderLines && input.cartTenderLines.length > 0) {\n input.cartTenderLines = input.cartTenderLines.map((cartTenderLineItem: CartTenderLine) => {\n // @ts-expect-error\n cartTenderLineItem['@odata.type'] = '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine';\n\n // @ts-expect-error\n cartTenderLineItem['Amount@odata.type'] = '#Decimal';\n\n if (cartTenderLineItem.TokenizedPaymentCard) {\n // @ts-expect-error\n cartTenderLineItem.TokenizedPaymentCard['@odata.type'] =\n '#Microsoft.Dynamics.Commerce.Runtime.DataModel.TokenizedPaymentCard';\n\n // Force the House prop to be set, so that call succeeds\n if (!cartTenderLineItem.TokenizedPaymentCard.House) {\n cartTenderLineItem.TokenizedPaymentCard.House = 'N/A';\n }\n\n if (cartTenderLineItem.TokenizedPaymentCard.CardTokenInfo) {\n // @ts-expect-error\n cartTenderLineItem.TokenizedPaymentCard.CardTokenInfo['@odata.type'] =\n '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CardTokenInfo';\n }\n\n if (input.billingAddress) {\n const { Phone, ThreeLetterISORegionName = '', Street, City, State, ZipCode } = input.billingAddress;\n cartTenderLineItem.TokenizedPaymentCard = {\n ...cartTenderLineItem.TokenizedPaymentCard,\n Phone,\n Country: ThreeLetterISORegionName.toUpperCase(),\n Address1: Street,\n City,\n State,\n Zip: ZipCode\n };\n }\n }\n\n return cartTenderLineItem;\n });\n }\n\n const requestBody = {\n receiptEmail: input.receiptEmail,\n cartVersion: input.cartVersion || null,\n ...(input.cartTenderLines && { cartTenderLines: input.cartTenderLines })\n };\n\n // Perform check-out operation\n return sendCommerceRequest(requestUrl, 'post', requestBody, requestOptions).then((response: IHTTPResponse) => {\n if (response.status >= 200 && response.status < 300 && response.data) {\n return response.data;\n } else if (response.data) {\n throw response.data;\n }\n throw new Error('[checkOutAction] Invalid response recieved from RetailServer');\n });\n}\n\nexport const checkOutActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/checkout',\n action: >checkOutAction\n});\nexport default checkOutActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { BusinessPartnerUser, NullResult } from '@msdyn365-commerce/retail-proxy';\nimport { deleteAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnerUsersDataActions.g';\n\n/**\n * Input class for DeleteOrganizationUser data action.\n */\nexport class DeleteOrganizationUserInput implements IActionInput {\n public user: BusinessPartnerUser;\n\n constructor(newUser: BusinessPartnerUser) {\n this.user = newUser;\n }\n\n public getCacheKey = () => 'DeleteOrganizationUser';\n\n public getCacheObjectType = () => 'DeleteOrganizationUser';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Input class for DeleteOrganizationUser data action.\n * @param inputData\n * @param newUser\n */\nexport const createDeleteOrganizationUserInput = (inputData: ICreateActionContext>, newUser: BusinessPartnerUser): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new DeleteOrganizationUserInput(newUser);\n};\n\n/**\n * The DeleteOrganizationUser data action\n * Calls getCurrent() to get a businessPartnerId from the user requesting the action.\n * It then maps the newUsers' businessPartnerId to the same as the above user.\n * Calls the createBusinessPartner to then create a new entitiy in the database with the\n * information passed into through newUser.\n * @param input\n * @param ctx\n */\nexport async function deleteOrganizationUser(input: DeleteOrganizationUserInput, ctx: IActionContext): Promise {\n const { user } = input;\n\n return deleteAsync({ callerContext: ctx }, user)\n .catch(error => {\n console.log(error);\n ctx.telemetry.debug('[Delete-organization-user] Unable to delete BusinessPartnerUser account');\n throw new Error('[Delete-organization-user] Unable to delete BusinessPartnerUser account');\n });\n}\n\n/**\n * The DeleteOrganizationUser data action\n * Calls the read RetailServer API to get the BusinessPartnerId from the admin\n * account and Deletes that businessPartner to the recieved input (new User)/\n * We then send this new User through the RetailServer API so that the database\n * is updated.\n */\nexport const deleteOrganizationUserDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/delete-organization-user',\n action: >deleteOrganizationUser,\n input: <(args: ICreateActionContext) => IActionInput>(createDeleteOrganizationUserInput)\n});\n\nexport default deleteOrganizationUserDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IAny, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\nimport { QueryResultSettings, SortColumn } from '@msdyn365-commerce/retail-proxy';\n\nimport { IQueryResultSettingsModuleConfig } from './IQueryResultSettingsModuleConfig';\n\n/**\n * Wrapper for query result settings, which guarantees some properties that are optional in the real subject\n * and includes some common utilities for data actions.\n */\nexport class QueryResultSettingsProxy {\n // Real subject\n private readonly queryResultSettings: QueryResultSettings;\n\n get QueryResultSettings(): QueryResultSettings {\n return this.queryResultSettings;\n }\n\n /**\n * Gets the hints for the cache key based on query result settings.\n */\n get cacheKeyHint(): string {\n // The factory method guarantees values are defined\n const topHint = `top-${this.queryResultSettings.Paging!.Top!}`;\n const skipHint = `skip-${this.queryResultSettings.Paging!.Skip!}`;\n const sortingHintData = (this.queryResultSettings.Sorting!.Columns || []).map((column: SortColumn) => {\n return `${column.ColumnName}--${column.IsDescending && 'desc' || 'asc'}`;\n }).join(',') || undefined;\n const sortingHint = `sortBy-${sortingHintData}`;\n return `${topHint}|${skipHint}|${sortingHint}`;\n }\n\n /**\n * Factory method for data actions.\n * @param inputData Input data.\n */\n public static fromInputData(inputData: ICreateActionContext>): QueryResultSettingsProxy {\n const { requestContext, config } = inputData;\n return QueryResultSettingsProxy.fromModuleData(requestContext, config as IQueryResultSettingsModuleConfig);\n }\n\n /**\n * Factory method for modules.\n * @param requestContext RequestContext.\n * @param config Module config from props.\n */\n public static fromModuleData(requestContext: IRequestContext, config: IQueryResultSettingsModuleConfig): QueryResultSettingsProxy {\n const sortingCriteria = config && config.sortingCriteria || undefined;\n const query = requestContext && requestContext.query;\n const top = query && query.top || undefined;\n const skip = query && query.skip || undefined;\n\n const queryResultSettings = {\n Paging: {\n Skip: (skip && Number(skip) || 0),\n Top: (top && Number(top) || config?.itemsPerPage || 50)\n },\n Sorting: sortingCriteria || {}\n };\n\n return new QueryResultSettingsProxy(queryResultSettings);\n }\n\n /**\n * Factory method.\n */\n public static getDefault(): QueryResultSettingsProxy {\n return new QueryResultSettingsProxy({ Paging: {}, Sorting: {} });\n }\n\n /**\n * Private constructor, expect instances to be created with the factory method.\n * @param queryResultSettings\n */\n private constructor(\n queryResultSettings: QueryResultSettings\n ) {\n this.queryResultSettings = queryResultSettings;\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\nimport { Category, TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\n\nimport getCategoryAction, { CategoriesInput as RawCategoriesInput } from './get-categories';\nimport { getCategoryUrl } from './utilities/Url-builder';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input for get-categories data action.\n */\nexport class CategoriesInput implements IActionInput {\n public readonly maxItems: number;\n\n public readonly channelId: number;\n\n private readonly sitePath: string;\n\n private readonly _mappedToHierarchy: boolean;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n private readonly locale?: string;\n\n constructor(context: IRequestContext, mappedToHierarchy: boolean, maxItems?: number) {\n this._mappedToHierarchy = mappedToHierarchy;\n this.maxItems = maxItems || 250;\n this.channelId = context && context.apiSettings && context.apiSettings.channelId ? +context.apiSettings.channelId : 0;\n this.sitePath = context && context.sitePath || '';\n this.apiSettings = context.apiSettings;\n this.locale = context.locale || '';\n }\n\n public getCacheKey = () => buildCacheKey(`${this.channelId}|${this.sitePath}|top-${this.maxItems || 250}`, this.apiSettings, this.locale);\n\n public getCacheObjectType = () => (this._mappedToHierarchy ? 'CategoryHierarchy' : 'Category');\n\n public dataCacheType = (): CacheType => 'application';\n\n public getLocale = (): string => this.locale || '';\n}\n\nconst getFriendlyName = (locale?: string, nameTranslations?: TextValueTranslation[]): string | undefined => {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && nameTranslations.length > 0) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n return nameTranslation && nameTranslation.Text;\n};\n\nexport interface ICategoryMap {\n [RecordId: number]: CategoryHierarchy;\n}\n\n/**\n * Creates a hierarchy of categories based on the ParentCategory property.\n * @param categoryList Categories that will be converted into a hierarchy.\n * @param ctx\n * @param locale\n * @returns Hierarchy of categories in array.\n */\nexport const mapCategoryToHierarchy = (categoryList: Category[], ctx: IActionContext, locale?: string): CategoryHierarchy[] => {\n if (!categoryList || categoryList.length === 0) {\n return [];\n }\n\n const categoryMap: ICategoryMap = categoryList.reduce((memo: ICategoryMap, category: Category) => {\n const localName = getFriendlyName(locale, category.NameTranslations);\n const categoryHierarchy = { ...category };\n categoryHierarchy.NeutralizedName = category.Name;\n categoryHierarchy.Name = localName || categoryHierarchy.NeutralizedName;\n memo[category.RecordId] = categoryHierarchy;\n return memo;\n }, {});\n\n let zeroCategory = categoryMap[0];\n\n Object.keys(categoryMap).forEach((id: string) => {\n const element = categoryMap[+id];\n const parentId = element.ParentCategory;\n element.Url = getCategoryUrl(element, ctx, categoryMap);\n if (parentId === 0) {\n zeroCategory = element;\n return;\n }\n\n const parent = parentId && categoryMap[parentId];\n if (parent) {\n parent.Children = parent.Children || [];\n parent.Children.push(element);\n }\n });\n\n return (zeroCategory && zeroCategory.Children) || [];\n};\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nexport const createCategoriesHierarchyInput = (inputData: ICreateActionContext>): IActionInput => {\n const topItems = inputData.config && inputData.config.topCategories && Number.parseInt(inputData.config.topCategories, 10);\n return new CategoriesInput(inputData.requestContext, true, topItems);\n};\n\n/**\n * Calls the Retail API and returns all the categories as a hierarchy.\n * @param input\n * @param ctx\n */\nexport async function getCategoryHierarchyAction(input: CategoriesInput, ctx: IActionContext): Promise {\n const categories = await getCategoryAction(\n new RawCategoriesInput(ctx.requestContext, false, input.maxItems),\n ctx\n );\n return mapCategoryToHierarchy(categories, ctx, input.getLocale());\n}\n\nexport const getCategoryHierarchyActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-categories-hierarchy',\n action: >getCategoryHierarchyAction,\n input: createCategoriesHierarchyInput\n});\n\nexport default getCategoryHierarchyActionDataAction;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IExpLogger } from '@msdyn365-commerce/telemetry-internal';\n\n/**\n * A basic implementation of the ExperimentationProvider interface used for testing\n */\nclass MsDyn365ExpTestConnectorListener implements IExpLogger {\n private userId: string = '';\n public initializeClientSide(config: any, userId: string): boolean {\n this.userId = userId;\n console.log(`Listener initialize called with config ${JSON.stringify(config)} and userId ${userId}`);\n return true;\n }\n public logEvent(eventName: string, payload: any, attributes?: any): void {\n console.log(`tracking events with event type - ${eventName}, payload - ${payload}, user id - ${this.userId}`);\n }\n}\n\nconst connectorListener = new MsDyn365ExpTestConnectorListener();\nexport default connectorListener;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnerUsersDataActions.g';\n\n/**\n * Input class for edit organization user data action.\n */\nexport class EditOrganizationUserInput implements IActionInput {\n public user: BusinessPartnerUser;\n\n constructor(newUser: BusinessPartnerUser) {\n this.user = newUser;\n }\n\n public getCacheKey = () => 'EditOrganizationUser';\n\n public getCacheObjectType = () => 'EditOrganizationUser';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Input class for edit organization user data action.\n * @param inputData\n * @param newUser\n */\nexport const createEditOrganizationUserInput = (inputData: ICreateActionContext>, newUser: BusinessPartnerUser): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new EditOrganizationUserInput(newUser);\n};\n\nexport async function editOrganizationUser(input: EditOrganizationUserInput, ctx: IActionContext): Promise {\n const { user } = input;\n\n return updateAsync({ callerContext: ctx }, user)\n .then(updatedUser => {\n return updatedUser;\n })\n .catch(() => {\n ctx.telemetry.debug('[Edit-organization-user] Unable to update BusinessPartnerUser account');\n throw new Error('[Edit-organization-user] Unable to update BusinessPartnerUser account');\n });\n}\n\n/**\n * The EditOrganizationUser data action\n * Takes in an instance of a BusinessPartnerUser and updates the\n * same user with the new information.\n */\nexport const editOrganizationUserDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/Edit-organization-user',\n action: >editOrganizationUser,\n input: <(args: ICreateActionContext) => IActionInput>(createEditOrganizationUserInput)\n});\n\nexport default editOrganizationUserDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport MsDyn365, { IActionContext } from '@msdyn365-commerce/core';\nimport { action, computed, observable } from 'mobx';\n\nimport { IListMapViewState, ILoadMapApiInput, IStoreInfo, IStoreSelectionStateContext, IStoreSelectorLocation, IStoreSelectorStateManager } from './i-store-selection-state-manager';\n\n/**\n * Abstract instance of IStoreSelectorStateManager with base implementation\n * of everything except the geoLocate function.\n */\nexport abstract class BaseStoreSelectorStateManager implements IStoreSelectorStateManager {\n\n @computed public get isDialogOpen(): Readonly {\n return this._context !== undefined;\n }\n\n @computed public get context(): Readonly {\n return this._context;\n }\n\n @observable public isMapApiLoaded?: boolean;\n\n @observable public selectedStoreLocationId?: string;\n\n @observable public preferredStore?: IStoreInfo;\n\n @observable public listMapViewState: IListMapViewState = { displayList: true, displayMap: false };\n\n @observable public isMapModuleLoaded?: boolean;\n\n @observable public lastInlineShownStoreInfo?: IStoreInfo;\n\n @observable protected _context?: IStoreSelectionStateContext;\n\n private readonly preferredStoreLocalStorageKey: string = '_msdyn365__preferredStore_';\n\n constructor() {\n this.isMapModuleLoaded = false;\n const value = this._readFromToCookie(this.preferredStoreLocalStorageKey);\n try {\n const storeInfo: IStoreInfo | undefined = value ? JSON.parse(value) : undefined;\n if (storeInfo) {\n this.preferredStore = storeInfo;\n }\n } catch {\n this.preferredStore = undefined;\n }\n\n }\n\n public abstract geoLocate(searchTerm: string, actionContext: IActionContext): Promise;\n\n public abstract loadMapApi(input: ILoadMapApiInput): Promise;\n\n @action\n public async toggleListMapViewState(): Promise {\n this.listMapViewState = {\n displayList: !this.listMapViewState.displayList,\n displayMap: !this.listMapViewState.displayMap\n };\n }\n\n @action\n public async setMapModuleLoaded(input: boolean): Promise {\n this.isMapModuleLoaded = input;\n }\n\n @action\n public async setOrgUnitStoreInformation(input: IStoreSelectionStateContext): Promise {\n this._context = input;\n }\n\n @action\n public async setSelectedStoreLocationId(storeId: string | undefined): Promise {\n this.selectedStoreLocationId = storeId;\n }\n\n @action\n public async setPreferredStoreLocation(storeId?: string, storeName?: string | undefined, writeToCookie: boolean = false, latitude?: number, longitude?: number): Promise {\n const storeInfo: IStoreInfo = { StoreId: storeId, StoreName: storeName, Latitude: latitude, Longitude: longitude };\n this.preferredStore = storeInfo;\n if (writeToCookie) {\n this._writeToCookie(this.preferredStoreLocalStorageKey, JSON.stringify(storeInfo));\n }\n }\n\n @action\n public async setLastInlineStoreInfo(latitude?: number, longitude?: number): Promise {\n const storeInfo: IStoreInfo = { StoreId: '', StoreName: '', Latitude: latitude, Longitude: longitude };\n this.lastInlineShownStoreInfo = storeInfo;\n }\n\n @action\n public async clearPreferredStore(writeToCookie: boolean): Promise {\n this.preferredStore = undefined;\n if (writeToCookie) {\n this._removeCookie(this.preferredStoreLocalStorageKey);\n }\n }\n\n @action\n public async openDialog(input: IStoreSelectionStateContext): Promise {\n if (this._context && this._context.id === input.id) {\n throw new Error('Dialog is already opened');\n }\n\n this._context = input;\n }\n\n @action\n public async closeDialog(): Promise {\n this._context = undefined;\n }\n\n private _removeCookie(key: string): void {\n if (!key) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.removeItem(key);\n }\n }\n\n private _writeToCookie(key: string, value: string | undefined): void {\n if (!key || !value) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.setItem(key, value);\n }\n }\n\n private _readFromToCookie(key: string): string | undefined {\n if (!key) {\n return undefined;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n const cookieValue = storage.getItem(key);\n if (cookieValue) {\n return cookieValue;\n }\n }\n\n return undefined;\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { action } from 'mobx';\n\nimport { BaseStoreSelectorStateManager } from './base-store-selector-state-manager';\nimport { ILoadMapApiInput, IStoreSelectorLocation } from './i-store-selection-state-manager';\nimport { IMapWindow, MapLocationsResult } from './models/map-data';\n\ndeclare const window: IMapWindow;\n\n/**\n * Instance of IStoreSelectorStateManager manager that uses Map service\n * for geo location.\n */\nexport class MapStoreSelectorStateManager extends BaseStoreSelectorStateManager {\n private readonly SERVICE_ENDPOINT: string = 'https://dev.virtualearth.net/REST/v1/';\n\n private readonly MAP_API_ENDPOINT: string = 'https://www.bing.com/api/maps/mapcontrol?callback=mapAPIReady';\n\n @action\n public async geoLocate(searchTerm: string, actionContext: IActionContext): Promise {\n if (!searchTerm ||\n !actionContext.requestContext.channel ||\n !actionContext.requestContext.channel.BingMapsApiKey ||\n !actionContext.requestContext.channel.BingMapsEnabled) {\n return undefined;\n }\n\n const jsonp = `mapSearchCallback_${crypto.getRandomValues(new Uint32Array(1))[0]}`;\n const query = encodeURI(searchTerm);\n const key = encodeURI(actionContext.requestContext.channel.BingMapsApiKey);\n\n const geolocationApiUrl = actionContext.requestContext.app && actionContext.requestContext.app.config && actionContext.requestContext.app.config.geolocationApiUrl;\n const requestUrl = `${geolocationApiUrl ? geolocationApiUrl : this.SERVICE_ENDPOINT}/Locations?query=${query}&key=${key}&jsonp=${jsonp}`;\n\n return new Promise((resolve) => {\n const script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('src', requestUrl);\n\n window[jsonp] = (data: MapLocationsResult) => {\n delete window[jsonp];\n script.remove();\n\n if (data && data.resourceSets && data.resourceSets.length > 0 && data.resourceSets[0].resources.length > 0) {\n resolve({\n latitude: data.resourceSets[0].resources[0].point.coordinates[0],\n longitude: data.resourceSets[0].resources[0].point.coordinates[1]\n });\n }\n\n resolve(undefined);\n };\n\n document.body.appendChild(script);\n });\n\n }\n\n @action\n public async loadMapApi(input: ILoadMapApiInput): Promise {\n const isScriptAlreadyLoaded = !!document?.getElementById('msdyn_map-api-script');\n\n if (isScriptAlreadyLoaded) {\n // Prevents from loading multiple script into the body\n return Promise.resolve();\n }\n\n const url = `${this.MAP_API_ENDPOINT}${input.key ? `&key=${input.key}` : ''}${input.lang ? `&setLang=${input.lang}` : ''}${input.market ? `&setMkt=${input.market}` : ''}`;\n\n return new Promise((resolve, reject) => {\n const script = document?.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n script.id = 'msdyn_map-api-script';\n if (window) {\n window.mapAPIReady = () => {\n this.isMapApiLoaded = true;\n resolve();\n };\n }\n script.addEventListener('error', (error: string | Event) => {\n reject(error);\n });\n document?.body?.appendChild(script);\n });\n }\n\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IStoreSelectorStateManager } from './i-store-selection-state-manager';\nimport { MapStoreSelectorStateManager } from './map-store-selector-state-manager';\n\nexport function createStoreSelectorStateInput(result: IStoreSelectorStateManager): GenericInput {\n return new GenericInput('mapSSSM', result, 'IStoreSelectorStateManager');\n}\n\nconst createStoreSelectorStateInputInternal = (inputData: ICreateActionContext>): IActionInput => {\n return createStoreSelectorStateInput(new MapStoreSelectorStateManager());\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createStoreSelectorStateInputInternal\n});\n\nexport default getGenericActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IDictionary, IGeneric } from '@msdyn365-commerce/core';\nimport { getByIdsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { buildCacheKey, generateProductImageUrl } from './utilities/utils';\n\n/**\n * Product Input.\n */\nexport class ProductInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(productId: number | string, apiSettings: ICommerceApiSettings, channelId?: number) {\n this.apiSettings = apiSettings;\n this.productId = +productId;\n this.channelId = channelId || apiSettings.channelId;\n }\n\n public getCacheKey = () => buildCacheKey(`RecordId-${this.productId.toString()}-ChannelId-${this.channelId.toString()}`, this.apiSettings);\n\n public getCacheObjectType = () => 'SimpleProduct';\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nexport const createSimpleProductsInput = (inputData: ICreateActionContext>): IActionInput[] => {\n let productIds = inputData.config && inputData.config.productIds;\n if (!productIds) {\n return [];\n }\n\n productIds = typeof productIds === 'string' ? productIds.split(',') : productIds;\n return !Array.isArray(productIds) ? [] : productIds.map((productId: string) => {\n return new ProductInput(productId, inputData.requestContext.apiSettings);\n });\n};\n\n/**\n * Calls the Retail API and returns the product based on the passed ProductInput.\n * @param inputs\n * @param ctx\n */\nexport async function getSimpleProductsAction(inputs: ProductInput[], ctx: IActionContext): Promise {\n if (!Array.isArray(inputs) || inputs.length === 0) {\n ctx.trace('[getSimpleProductsAction] Invalid or empty inputs passed.');\n return [];\n }\n\n const productIdMapping: IDictionary = {};\n const productIds = inputs.map((input, idx) => {\n productIdMapping[input.productId] = idx;\n return input.productId;\n });\n\n return getByIdsAsync({ callerContext: ctx, queryResultSettings: QueryResultSettingsProxy.getDefault().QueryResultSettings }, inputs[0].channelId, productIds).then(products => {\n const mappedProducts = products.map(product => {\n try {\n const newImageUrl = generateProductImageUrl(product, ctx.requestContext.apiSettings);\n\n if (newImageUrl) {\n product.PrimaryImageUrl = newImageUrl;\n }\n\n return product;\n } catch {\n ctx.trace('[getSimpleProductsAction] Unable to update ImageURL for Product');\n }\n })\n .reduce((memo: SimpleProduct[], product: SimpleProduct | undefined) => {\n if (!product) {\n return memo;\n }\n const idx = productIdMapping[product.RecordId];\n memo[idx] = product;\n return memo;\n }, []);\n\n // NOTE: This is not an ideal fix, but will resolve all current issues\n return inputs.map(input => {\n const foundProduct = mappedProducts.find(product => product && product.RecordId === input.productId);\n return foundProduct || {};\n });\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-simple-products',\n action: >getSimpleProductsAction,\n input: createSimpleProductsInput,\n isBatched: true\n});\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\n\nimport { OrderTemplate } from '../utilities/order-templates';\nimport { QueryResultSettingsProxy } from '../utilities/QueryResultSettingsProxy';\nimport getFullOrderTemplates, { GetFullOrderTemplatesInput } from './get-full-order-templates';\n\n/**\n * Input class for the GetOrderTemplates data action.\n */\nexport class GetOrderTemplatesPreviewInput implements IActionInput {\n public queryResultSettings: IQueryResultSettings;\n\n constructor(queryResultSettings: IQueryResultSettings) {\n this.queryResultSettings = queryResultSettings;\n this.queryResultSettings.count = true;\n this.queryResultSettings.Paging!.Top = 4;\n }\n\n public getCacheKey = () => 'GetOrderTemplatesPreview';\n\n public getCacheObjectType = () => 'GetOrderTemplatesPreview';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the GetOrderTemplate method.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetOrderTemplatesPreviewInput = (inputData: ICreateActionContext): GetOrderTemplatesPreviewInput => {\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n return new GetOrderTemplatesPreviewInput(queryResultSettings);\n};\n\n/**\n * The action method for the GetOrderTemplatesPreview data action.\n * @param input The action input.\n * @param context The action context.\n */\nexport async function getOrderTemplatesPreview(input: GetOrderTemplatesPreviewInput, context: IActionContext): Promise {\n return getFullOrderTemplates(new GetFullOrderTemplatesInput(input.queryResultSettings), context);\n}\n\n/**\n * The GetOrderTemplatesPreview Data Action\n * Returns order templates.\n */\nexport const getOrderTemplatesPreviewDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-order-templates-preview',\n action: >getOrderTemplatesPreview,\n input: createGetOrderTemplatesPreviewInput\n});\n\nexport default getOrderTemplatesPreviewDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ChannelDeliveryOptionConfiguration } from '@msdyn365-commerce/retail-proxy';\nimport { getChannelDeliveryOptionConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get channel delivery option configuration data action.\n */\nexport class GetChannelDeliveryConfigurationInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, accountNumber?: string) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('ChannelDeliveryConfiguration', this.apiSettings);\n\n public getCacheObjectType = () => 'ChannelDeliveryConfiguration';\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nconst createInput = (inputData: ICreateActionContext>): GetChannelDeliveryConfigurationInput => {\n const { apiSettings } = inputData.requestContext;\n if (!apiSettings) {\n throw new Error('[getChannelDeliveryOptionConfiguration][createInput]: API setting not available.');\n }\n\n return new GetChannelDeliveryConfigurationInput(apiSettings);\n};\n\nconst getChannelDeliveryOptionConfigurationAction = async (input: GetChannelDeliveryConfigurationInput, ctx: IActionContext): Promise => {\n if (input) {\n return getChannelDeliveryOptionConfigurationAsync({ callerContext: ctx }).then(response => {\n return response;\n });\n }\n\n ctx.trace('[get-channel-delivery-option-configuration]Invalid input passed to action');\n return {};\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-channel-delivery-option-configuration',\n action: >getChannelDeliveryOptionConfigurationAction,\n input: createInput\n});\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { getDimensionValuesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductDimension, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport getSelectedVariant, { SelectedVariantInput } from './get-selected-variant';\nimport { getSelectedProductIdFromActionInput } from './utilities/utils';\n\n/**\n * Input class for the getDimensionsForSelectedVariant data action.\n */\nexport class GetDimensionsForSelectedVariantInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public matchingDimensionValues: ProductDimension[];\n\n constructor(productId: number, channelId: number, matchingDimensionValues?: ProductDimension[]) {\n this.productId = productId;\n this.channelId = channelId;\n this.matchingDimensionValues = matchingDimensionValues || [];\n }\n\n public getCacheKey = () => 'DimensionsForSelectedVariant';\n\n public getCacheObjectType = () => 'DimensionsForSelectedVariantInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Create input method for the getDimensionsForSelectedVariant data action.\n * @param inputData The input data passed to the createInput method.\n */\nconst createDimensionsForSelectedVariantInput = (inputData: ICreateActionContext>): SelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new GetDimensionsForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId, []);\n }\n throw new Error('Unable to create DimensionsForSelectedVariantInput, no productId found on module config or query');\n\n};\n\n/**\n * Action Method for the getDimensionsForSelectedVariant Data Action.\n * @param input\n * @param ctx\n */\nasync function getDimensionsForSelectedVariantAction(\n input: GetDimensionsForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId, input.matchingDimensionValues);\n\n const activeProduct: SimpleProduct | null = await getSelectedVariant(selectedVariantInput, ctx);\n\n if (activeProduct && activeProduct.Dimensions && activeProduct.Dimensions.length > 0) {\n const results: ProductDimensionFull[] = [];\n\n for (const dimension of activeProduct.Dimensions) {\n const dimensionValues = await getDimensionValuesAsync(\n { callerContext: ctx, queryResultSettings: {} },\n activeProduct.MasterProductId ? activeProduct.MasterProductId : activeProduct.RecordId,\n input.channelId,\n dimension.DimensionTypeValue,\n input.matchingDimensionValues.filter(value => value.DimensionTypeValue !== dimension.DimensionTypeValue),\n null\n );\n\n const fullDimension: ProductDimensionFull = {\n ...dimension,\n DimensionValues: dimensionValues\n };\n\n results.push(fullDimension);\n }\n\n return results;\n }\n\n return [];\n}\n\n/**\n * The GetDimensionsForSelectedVariantDataAction\n * Get the currently selected Variant via the getSelectedVariant data action, and the gets the\n * available product dimensions for the variant via the getDimensionValues RetailServer API.\n */\nexport const getDimensionsForSelectedVariantActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-dimensions/for-selected-variant',\n action: >getDimensionsForSelectedVariantAction,\n input: createDimensionsForSelectedVariantInput\n});\n\nexport default getDimensionsForSelectedVariantActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { PromiseBodyWrapper } from './base-promise-queue';\nimport { PromiseQueue } from './promise-queue';\n\nexport enum FinitePromiseQueueError {\n InvalidMaxQueueLengthPassed = 'Invalid maxQueueLength value passed to FinitePromiseQueue. maxQueueLength should be more or equal to 2.',\n ProcessWasDiscardedFromTheQueue = 'The process was discarded from FinitePromiseQueue.'\n}\n\n/**\n * Represents a FIFO queue over promises with a limited number of elements waiting for execution.\n * @remark\n * In case the queue reaches the limit,\n * before adding a new element the queue discards the oldest added element which is waiting to be processed.\n * Does not discard elements which are in progress under execution.\n * The discarded element will not be processed and executed.\n * @author Bohdan Yevchenko \n */\nexport class FinitePromiseQueue extends PromiseQueue {\n /**\n * @see constructor\n */\n private readonly _maxQueueLength: number;\n\n /**\n * Initializes the queue with the given limit.\n * @param {number} maxQueueLength\n * Defines the limit of maximum number of elements in the queue.\n * @remarks Includes both the number of elements waiting for the execution\n * and the element processed by the queue at the moment (in case there is some).\n * Value can't be less than 2.\n */\n public constructor(maxQueueLength: number) {\n if (maxQueueLength < 2) {\n throw new Error(FinitePromiseQueueError.InvalidMaxQueueLengthPassed);\n }\n\n super();\n this._maxQueueLength = maxQueueLength;\n }\n\n /**\n * Adds promise to the queue and automatically starts the queue execution.\n * @remarks In case the queue has reached the limit, also discards the oldest added element.\n * @param {PromiseBodyWrapper} promiseBody\n * The body of a function which contains a call to the promise which has to be executed in the queue.\n */\n public async enqueue(promiseBody: PromiseBodyWrapper): Promise {\n let totalElementsCount = this._queue.length;\n\n // If queue hasn't finished processing an element,\n // consider this element as pending.\n if (this._isBusy) {\n ++totalElementsCount;\n }\n\n // Discards the oldest added element from the queue to meet the given limitations.\n // The very first element in the queue is considered as oldest added.\n // Can't discard the element which is under execution as the promise can't be cancelled.\n if (totalElementsCount === this._maxQueueLength) {\n const element = this._queue.shift();\n if (element) {\n element.reject(FinitePromiseQueueError.ProcessWasDiscardedFromTheQueue);\n }\n }\n\n return super.enqueue(promiseBody);\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, IActionInput } from '@msdyn365-commerce/core';\n\n/**\n * ReviewsGetRatingsSummary Input Action.\n */\nexport class GetRatingsSummaryInput implements IActionInput {\n /**\n * The Id representing the product to get the ratings for.\n */\n public productId: string;\n\n /**\n * The ID representing the tenant.\n */\n public tenantId: string;\n\n /**\n * The ratings and reviews service endpoint.\n */\n public serviceEndpoint: string;\n\n constructor(\n productId: string,\n tenantId: string,\n serviceEndpoint: string\n ) {\n this.productId = productId;\n this.tenantId = tenantId;\n this.serviceEndpoint = serviceEndpoint;\n }\n\n // RnR does not use RS endpoint, so shouldn't use buildCacheKey\n public getCacheKey = () => `${this.productId}-${this.tenantId}`;\n\n public getCacheObjectType = () => 'RatingsSummary';\n\n public dataCacheType = (): CacheType => 'application';\n}\n","/**\n* Copyright (c) 2018 Microsoft Corporation\n* Modules Registration\n* THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n*/\n\nconst universal = require('react-universal-component').default;\nexport const componentDictionary = {};\n\ncomponentDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|components|cartlineitem'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/components/cartlineitem.component.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-fabrikam-design-kit-dist-lib-modules-fabrikam-views-components-cartlineitem.component.js',\n ignoreBabelRename: true\n }\n )};\ncomponentDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|components|promocode'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/components/promocode.component.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-fabrikam-design-kit-dist-lib-modules-fabrikam-views-components-promocode.component.js',\n ignoreBabelRename: true\n }\n )};","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport * from './data-structures';\nexport * from './events';\nexport * from './extensions';\nexport * from './promise-queue';\nexport * from './random';\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\n/**\n * Namespace which extends Object functionality.\n */\nexport namespace ObjectExtensions {\n\n /**\n * @description Verifies whether the value is null or undefined.\n * @param {any} value The value to examine.\n * @returns {boolean} True if the value is null or undefined, false otherwise.\n */\n export function isNullOrUndefined(value: any): value is null | undefined {\n return value === null || value === undefined;\n }\n\n /**\n * @description Verifies whether the value is of type string.\n * @param {any} value The value to examine.\n * @returns {boolean} True if the value is a string, false otherwise.\n */\n export function isString(value: any): value is string {\n return typeof value === 'string';\n }\n\n /**\n * @description Verifies whether the value is of type number.\n * @param {any} value The value to examine.\n * @returns {boolean} True if the value is a number, false otherwise.\n */\n export function isNumber(value: any): value is number {\n return typeof value === 'number';\n }\n\n /**\n * Verifies whether the object is a function.\n * @param {any} object The object.\n * @param value\n * @returns {boolean} True if the object is a function, false otherwise.\n */\n export function isFunction(value: any): boolean {\n return typeof value === 'function';\n }\n\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { ObjectExtensions } from './object-extensions';\n\nexport type NonEmptyArray = [T, ...T[]];\n\n/**\n * Namespace which extends Array functionality.\n */\nexport namespace ArrayExtensions {\n\n /**\n * @description Remove duplicate elements in the array.\n * @param {T[]} value The array to examine.\n * @returns {T[]} An array with only unique elements.\n */\n export function unique(value: T[]): T[] {\n if (!hasElements(value)) {\n return [];\n }\n\n return Array.from(new Set(value));\n }\n\n /**\n * @description Verifies whether the object array has elements.\n * @param {ReadonlyArray} value The array to examine.\n * @returns {boolean} True if the object has at least one element in the array, false otherwise (if array is not defined or empty).\n */\n export function hasElements(value: NonEmptyArray | T[] | null | undefined): value is NonEmptyArray {\n return !ObjectExtensions.isNullOrUndefined(value) && value.length > 0;\n }\n\n /**\n * @description Checks if all elements satisfy given condition.\n * @param {T[]} value The array to examine.\n * @param {(value: T, index: number, array: T[]) => boolean} predicate The function which checks an element.\n * @returns {boolean} True if the array is empty or all the inner elements satisfy given condition,\n * false if at least one element does not pass the condition.\n */\n export function all(value: T[] | null | undefined, predicate: (value: T, index: number, array: T[]) => boolean): boolean {\n if (!hasElements(value)) {\n return true;\n }\n\n return value.filter(predicate).length === value.length;\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { ObjectExtensions } from './object-extensions';\n\n/**\n * Namespace which extends enum functionality.\n */\nexport namespace EnumExtensions {\n\n /**\n * @description Returns a list of numeric values and enum names for the specified enum.\n * @param enumClass\n * @param {any} value The enum to examine.\n * @returns {(number | string)[]} An array of numeric values and enum names.\n */\n export function getValues(enumClass: any): (number | string)[] {\n if (ObjectExtensions.isNullOrUndefined(enumClass)) {\n return [];\n }\n\n return Object.keys(enumClass).map(item => enumClass[item]);\n }\n\n /**\n * @description Returns a list of enum names for the specified enum.\n * @param enumClass\n * @param {any} value The enum to examine.\n * @returns {(number | string)[]} An array of string values.\n */\n export function getNames(enumClass: any): string[] {\n return getValues(enumClass).filter(ObjectExtensions.isString);\n }\n\n /**\n * @description Returns a list of numeric values for the specified enum.\n * @param enumClass\n * @param {any} value The enum to examine.\n * @returns {number[]} An array of numeric values.\n */\n export function getNumericValues(enumClass: any): number[] {\n return getValues(enumClass).filter(ObjectExtensions.isNumber);\n }\n\n /**\n * @description Returns a list of enum values for the specified enum.\n * @param enumClass\n * @param {any} value The enum to examine.\n * @returns {number[]} An array of enum values.\n */\n export function getEnumValues(enumClass: any): T[] {\n return getNumericValues(enumClass).map(value => value);\n }\n\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { ObjectExtensions } from './object-extensions';\n\n/**\n * Namespace which extends string functionality.\n */\nexport namespace StringExtensions {\n\n /**\n * Checks if string is null, undefined, empty, or whitespace.\n * @param {string | null | undefined} value The string to examine.\n * @returns {boolean} True if it's null, undefined, empty, or whitespace; false otherwise.\n */\n export function isNullOrWhitespace(value: string | null | undefined): boolean {\n return isNullOrEmpty(value) || value!.trim() === '';\n }\n\n /**\n * Checks if string is null, undefined, or empty.\n * @param {string | null | undefined} value The string to examine.\n * @returns {boolean} True if it's null, undefined, empty, or whitespace; false otherwise.\n */\n export function isNullOrEmpty(value: string | null | undefined): boolean {\n if (ObjectExtensions.isNullOrUndefined(value)) {\n return true;\n }\n\n if (!ObjectExtensions.isString(value)) {\n throw new Error('StringExtensions has received a non-string input.');\n }\n\n return value === '';\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { Cart } from '@msdyn365-commerce/retail-proxy';\nimport { copyAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport Cookie from 'js-cookie';\n\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for getCheckoutCart data action.\n */\nexport class GetCheckoutCartInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('ActiveCheckoutCart', this.apiSettings);\n\n public getCacheObjectType = () => 'ActiveCheckoutCart';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new GetCheckoutCartInput(inputData.requestContext.apiSettings);\n};\n\nconst CartCookieName: string = msdyn365Commerce.CartCookie || 'cart';\n\n/**\n * Data action to copy the cart for checkout actions.\n * @param input\n * @param ctx\n */\nexport async function getCheckoutCart(input: GetCheckoutCartInput, ctx: IActionContext): Promise {\n const cartId = Cookie.get(CartCookieName) || '';\n if (cartId) {\n const currentCartState = await getCartState(ctx);\n const activeCart = currentCartState.cart;\n\n // Check if there is an active cart and it isn't empty\n if (activeCart && Object.keys(activeCart).length > 0) {\n const checkoutCart = await copyAsync({ callerContext: ctx }, activeCart.Id, 2);\n\n if (checkoutCart) {\n return Array.isArray(checkoutCart) ? checkoutCart[0] : checkoutCart;\n }\n } else {\n ctx.trace('[get-checkout-cart] Can\\'t create a checkout cart since active cart is empty');\n }\n }\n\n return {};\n}\n\nexport const getCheckoutCartDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-checkout-cart',\n action: >getCheckoutCart,\n input: createInput\n});\n\nexport default getCheckoutCartDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { BusinessPartnerUser, Customer } from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnerUsersDataActions.g';\n\nimport getCustomer, { GetCustomerInput } from './get-customer';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get current business partner user data action.\n */\nexport class GetCurrentBusinessPartnerUserInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('CurrentBusinessPartnerUser', this.apiSettings);\n\n public getCacheObjectType = () => 'BusinessPartner';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nexport const createGetCurrentBusinessPartnerUserInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new GetCurrentBusinessPartnerUserInput(requestContext.apiSettings);\n};\n\nexport async function getCurrentBusinessPartnerUser(input: GetCurrentBusinessPartnerUserInput, ctx: IActionContext): Promise {\n const customerInput = new GetCustomerInput(ctx.requestContext.apiSettings);\n const customer: Customer = await getCustomer(customerInput, ctx);\n\n if (customer?.IsB2b) {\n return getCurrentAsync({ callerContext: ctx });\n }\n return undefined;\n\n}\n\nexport default createObservableDataAction({\n id: 'get-current-business-partner-user',\n action: >getCurrentBusinessPartnerUser,\n input: createGetCurrentBusinessPartnerUserInput\n});\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { getAttributeValuesAsync, getByIdAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { buildCacheKey, generateImageUrl, getProductUrlSync, getSelectedProductIdFromActionInput } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IPageSummaryData } from '../IPageSummaryData';\nimport { IProductPageSummaryConfig } from './product-page-summary.props.autogenerated';\n\n/** Product Page Summary Input */\nexport class ProductPageSummaryInput implements IActionInput {\n public apiSettings: ICommerceApiSettings;\n\n public config: IProductPageSummaryConfig;\n\n public productId: number;\n\n constructor(config: IProductPageSummaryConfig, apiSettings: ICommerceApiSettings, productId: number) {\n this.config = config || {};\n this.apiSettings = apiSettings;\n this.productId = productId;\n }\n\n public getCacheObjectType = (): string => 'ProductPageSummary';\n\n public getCacheKey = (): string => `${buildCacheKey('ProductPageSummary', this.apiSettings)}-${this.config.title}-${this.productId}`;\n\n public dataCacheType = (): CacheType => 'application';\n}\n\nexport interface IProductPageSummary extends IPageSummaryData {\n price?: number;\n productId?: number;\n productBrand?: string;\n}\n\nconst createInput = (args: ICreateActionContext) => {\n const productId = getSelectedProductIdFromActionInput(args);\n\n if (productId) {\n return new ProductPageSummaryInput(args.config, args.requestContext.apiSettings, +productId);\n }\n throw new Error('Unable to create ProductPageSummaryAction input, no productId found on module config or query');\n\n};\n\n// Checks product attributes for the presence of brand attribute to extract the brand name for product metadata\nconst getProductBrand = async (context: IActionContext, recordId: number, channelId: number, catalogId: number): Promise => {\n const productAttributes = await getAttributeValuesAsync({ callerContext: context, queryResultSettings: {} }, recordId, channelId, catalogId);\n for (const productAttribute of productAttributes) {\n if (productAttribute.Name === 'Brand') {\n return productAttribute.TextValue;\n }\n }\n return;\n};\n\nconst action = async (input: ProductPageSummaryInput, context: IActionContext): Promise => {\n const { config, productId, apiSettings } = input;\n let simpleProductData;\n try {\n simpleProductData = await getByIdAsync({ callerContext: context }, productId, apiSettings.channelId);\n } catch {\n // Do nothing, if there's an error we fall back to values defined from config\n }\n if (simpleProductData) {\n let productUrl: string | undefined;\n try {\n productUrl = getProductUrlSync(simpleProductData, context);\n const canonicalDomain = context.requestContext.canonicalDomain;\n if (productUrl && canonicalDomain) {\n productUrl = `https://${canonicalDomain}${productUrl}`;\n } else {\n productUrl = undefined;\n }\n } catch {\n productUrl = undefined;\n }\n let productBrand: string | undefined;\n try {\n productBrand = await getProductBrand(context, productId, apiSettings.channelId, apiSettings.catalogId);\n } catch {\n productBrand = undefined;\n }\n return {\n title: simpleProductData.Name,\n description: simpleProductData.Description,\n sharingImageUrl: generateImageUrl(simpleProductData.PrimaryImageUrl, apiSettings),\n canonicalUrl: productUrl,\n faviconUrl: config && config.faviconUrl,\n productId: simpleProductData.RecordId,\n price: simpleProductData.AdjustedPrice,\n productBrand\n };\n\n // If the action fails fallback to values defined from config\n } else if (config) {\n return {\n title: config.title,\n description: config.description,\n sharingImageUrl: config.sharingImage && config.sharingImage.src,\n faviconUrl: config && config.faviconUrl\n };\n }\n return {};\n\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/page-summary/product-page-summary',\n action: >action,\n input: createInput\n});\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput,\n ICommerceApiSettings\n} from '@msdyn365-commerce/core';\nimport { Customer, CustomerAttribute } from '@msdyn365-commerce/retail-proxy';\nimport {\n readAsync, updateAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\n\nimport { buildCacheKey } from '.';\nimport { GetCustomerInput } from './get-customer';\n\nexport interface IUpdateCustomerAttributesInput extends IActionInput {\n phone?: string;\n vatNumber?: string;\n customerAttributes: CustomerAttribute[];\n userAccountNumber: string;\n apiSettings: ICommerceApiSettings;\n}\n\n/**\n * Input class for the updateCustomerAttributes.\n */\nexport class updateCustomerAttributesInput implements IUpdateCustomerAttributesInput {\n public userAccountNumber: string;\n\n public customerAttributes: CustomerAttribute[];\n\n public apiSettings: ICommerceApiSettings;\n\n public phone?: string;\n\n public vatNumber?: string;\n\n constructor(userAccountNumber: string, customerAttributes: CustomerAttribute[], apiSettings: ICommerceApiSettings, phone?: string, vatNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n this.customerAttributes = customerAttributes;\n this.phone = phone;\n this.vatNumber = vatNumber;\n }\n\n public getCacheKey = (): string => buildCacheKey(`${this.userAccountNumber}`, this.apiSettings);\n\n public getCacheObjectType = () => 'Customer';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The action method for the updateCustomerAttributes data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function updateCustomerAttributesAction(input: IUpdateCustomerAttributesInput, ctx: IActionContext): Promise {\n const { customerAttributes, phone, vatNumber, userAccountNumber } = input;\n\n const customer = await readAsync({ callerContext: ctx, bypassCache: 'get' }, userAccountNumber);\n\n if (!customer) {\n ctx.telemetry.debug('[update-customer-attributes] Unable to find customer');\n throw new Error('Unable to find customer');\n }\n\n const newCustomer = { ...customer };\n newCustomer.Phone = phone;\n newCustomer.VatNumber = vatNumber;\n newCustomer.Attributes = customerAttributes;\n\n const updatedCustomer = await updateAsync({ callerContext: ctx }, newCustomer);\n\n if (!updatedCustomer) {\n ctx.telemetry.debug('[update-customer-attributes] Unable to update customer attributes');\n throw new Error('Unable to update customer attributes');\n }\n\n ctx.update(new GetCustomerInput(ctx.requestContext.apiSettings), updatedCustomer);\n\n return updatedCustomer;\n}\n\n/**\n * The updateCustomerAttributes data action\n * Returns the updated customer.\n */\nexport const updateCustomerAttributesActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/update-customer-attributes',\n action: >updateCustomerAttributesAction\n});\n\nexport default updateCustomerAttributesActionDataAction;\n","\n/**\n * Copyright (c) 2018 Microsoft Corporation\n * Modules Registration\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n */\n\nconst universal = require('react-universal-component').default;\n\n/**\n * Register all available modules\n */\nexport const registerAllModules = (requiredModules) => {\n let binding = { modules: {}, dataActions: {} };\n const { log, error } = console;\n const detailedWebpackError = (msg, errorObject) => { error(msg); error(errorObject); process.env.NODE_ENV !== 'development' && error('Run in dev mode to see full list of errors'); process.exit(50); }\n const handleError = (modPath, errObject) => {\n detailedWebpackError('Error with path: ' + modPath, errObject);\n }\n if (requiredModules) {\n requiredModules = requiredModules.map((module) => module.toLowerCase());\n }\n const isNotRegistered = (moduleName) => {\n return !requiredModules || requiredModules.length <= 0 || requiredModules.findIndex((module) => module === moduleName) !== -1;\n };\n\n try {\n\n\n isNotRegistered('aad-generic') && (binding.modules['aad-generic'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/aad-generic/aad-generic'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-aad-generic-aad-generic',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/aad-generic/aad-generic.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'aad-generic',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/aad-generic'\n });\n \n\n isNotRegistered('accordion') && (binding.modules['accordion'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion/accordion'),\n {\n chunkName: () => '@msdyn365-commerce-modules-accordion-dist-lib-modules-accordion-accordion',\n ignoreBabelRename: true\n }\n ),\n $type: 'moduleDefinition',\n dataActions: [{name:'accordionExpandedState', path:'@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion/accordion.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'accordion',\n packageName: 'accordion',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion'\n });\n \n\n isNotRegistered('accordion-item') && (binding.modules['accordion-item'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion-item/accordion-item'),\n {\n chunkName: () => '@msdyn365-commerce-modules-accordion-dist-lib-modules-accordion-item-accordion-item',\n ignoreBabelRename: true\n }\n ),\n $type: 'moduleDefinition',\n dataActions: [{name:'accordionExpandedState', path:'@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion-item/accordion-item.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'accordion-item',\n packageName: 'accordion',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion-item'\n });\n \n\n isNotRegistered('account-address-tile') && (binding.modules['account-address-tile'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-address-tile/account-address-tile'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-address-tile-account-address-tile',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-address-tile/account-address-tile.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'account-address-tile',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-address-tile'\n });\n \n\n isNotRegistered('account-customer-balance') && (binding.modules['account-customer-balance'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance/account-customer-balance'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-customer-balance-account-customer-balance',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'b2bUserInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-business-partner-user', runOn: 0},{name:'balance', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance/account-customer-balance.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'account-customer-balance',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance'\n });\n \n\n isNotRegistered('account-customer-balance-tile') && (binding.modules['account-customer-balance-tile'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance-tile/account-customer-balance-tile'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-customer-balance-tile-account-customer-balance-tile',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'balance', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance-tile/account-customer-balance-tile.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'account-customer-balance-tile',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance-tile'\n });\n \n\n isNotRegistered('account-generic-tile') && (binding.modules['account-generic-tile'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-generic-tile/account-generic-tile'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-generic-tile-account-generic-tile',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-generic-tile/account-generic-tile.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'account-generic-tile',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-generic-tile'\n });\n \n\n isNotRegistered('account-invoice-tile') && (binding.modules['account-invoice-tile'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-invoice-tile/account-invoice-tile'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-invoice-tile-account-invoice-tile',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'customerBalance', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', runOn: 0},{name:'invoices', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-invoice-tile/account-invoice-tile.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'account-invoice-tile',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-invoice-tile'\n });\n \n\n isNotRegistered('account-loyalty') && (binding.modules['account-loyalty'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty/account-loyalty'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-loyalty-account-loyalty',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty/account-loyalty.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'account-loyalty',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty'\n });\n \n\n isNotRegistered('account-loyalty-tile') && (binding.modules['account-loyalty-tile'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty-tile/account-loyalty-tile'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-loyalty-tile-account-loyalty-tile',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty-tile/account-loyalty-tile.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'account-loyalty-tile',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty-tile'\n });\n \n\n isNotRegistered('account-management-address') && (binding.modules['account-management-address'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/address/dist/lib/modules/account-management-address/account-management-address'),\n {\n chunkName: () => '@msdyn365-commerce-modules-address-dist-lib-modules-account-management-address-account-management-address',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/account-management-address/account-management-address.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'account-management-address',\n packageName: 'address',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/account-management-address'\n });\n \n\n isNotRegistered('account-order-templates-tile') && (binding.modules['account-order-templates-tile'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-order-templates-tile/account-order-templates-tile'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-order-templates-tile-account-order-templates-tile',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 1},{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates', runOn: 1}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-order-templates-tile/account-order-templates-tile.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'account-order-templates-tile',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-order-templates-tile'\n });\n \n\n isNotRegistered('account-profile') && (binding.modules['account-profile'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile/account-profile'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-profile-account-profile',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'attributeDefinitions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-attribute-definitions', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile/account-profile.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'account-profile',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile'\n });\n \n\n isNotRegistered('account-profile-edit') && (binding.modules['account-profile-edit'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile-edit/account-profile-edit'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-profile-edit-account-profile-edit',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile-edit/account-profile-edit.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'account-profile-edit',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile-edit'\n });\n \n\n isNotRegistered('account-welcome-tile') && (binding.modules['account-welcome-tile'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-welcome-tile/account-welcome-tile'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-welcome-tile-account-welcome-tile',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'accountInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-welcome-tile/account-welcome-tile.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'account-welcome-tile',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-welcome-tile'\n });\n \n\n isNotRegistered('account-wishlist-tile') && (binding.modules['account-wishlist-tile'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-wishlist-tile/account-wishlist-tile'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-wishlist-tile-account-wishlist-tile',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-wishlist-tile/account-wishlist-tile.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'account-wishlist-tile',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-wishlist-tile'\n });\n \n\n isNotRegistered('b2b-requests-status') && (binding.modules['b2b-requests-status'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/b2b-requests-status/b2b-requests-status'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-b2b-requests-status-b2b-requests-status',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'b2bUserInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-business-partner-user', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'operationRequests', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-business-partner-operation-requests', runOn: 1}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/b2b-requests-status/b2b-requests-status.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'b2b-requests-status',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/b2b-requests-status'\n });\n \n\n isNotRegistered('b2b-requests-tile') && (binding.modules['b2b-requests-tile'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/b2b-requests-tile/b2b-requests-tile'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-b2b-requests-tile-b2b-requests-tile',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/b2b-requests-tile/b2b-requests-tile.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'b2b-requests-tile',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/b2b-requests-tile'\n });\n \n\n isNotRegistered('back-top-footer') && (binding.modules['back-top-footer'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/back-top-footer/back-top-footer'),\n {\n chunkName: () => '@msdyn365-commerce-modules-footer-dist-lib-modules-back-top-footer-back-top-footer',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/footer/dist/lib/modules/back-top-footer/back-top-footer.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'back-top-footer',\n packageName: 'footer',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/footer/dist/lib/modules/back-top-footer'\n });\n \n\n isNotRegistered('breadcrumb') && (binding.modules['breadcrumb'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/breadcrumb/dist/lib/modules/breadcrumb/breadcrumb'),\n {\n chunkName: () => '@msdyn365-commerce-modules-breadcrumb-dist-lib-modules-breadcrumb-breadcrumb',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'categoryHierarchy', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy', runOn: 0},{name:'categoryPaths', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-category-paths', runOn: 0},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/breadcrumb/dist/lib/modules/breadcrumb/breadcrumb.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'breadcrumb',\n packageName: 'breadcrumb',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/breadcrumb/dist/lib/modules/breadcrumb'\n });\n \n\n isNotRegistered('business-account-address') && (binding.modules['business-account-address'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/address/dist/lib/modules/business-account-address/business-account-address'),\n {\n chunkName: () => '@msdyn365-commerce-modules-address-dist-lib-modules-business-account-address-business-account-address',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'countryStates', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/business-account-address/business-account-address.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'business-account-address',\n packageName: 'address',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/business-account-address'\n });\n \n\n isNotRegistered('business-organization-list') && (binding.modules['business-organization-list'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/business-organization-list/dist/lib/modules/business-organization-list/business-organization-list'),\n {\n chunkName: () => '@msdyn365-commerce-modules-business-organization-list-dist-lib-modules-business-organization-list-business-organization-list',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'users', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/business-organization-list/dist/lib/modules/business-organization-list/business-organization-list.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'business-organization-list',\n packageName: 'business-organization-list',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/business-organization-list/dist/lib/modules/business-organization-list'\n });\n \n\n isNotRegistered('business-sign-up') && (binding.modules['business-sign-up'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/business-account-management/dist/lib/modules/business-sign-up/business-sign-up'),\n {\n chunkName: () => '@msdyn365-commerce-modules-business-account-management-dist-lib-modules-business-sign-up-business-sign-up',\n ignoreBabelRename: true\n }\n ),\n $type: 'containerModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/business-account-management/dist/lib/modules/business-sign-up/business-sign-up.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'business-sign-up',\n packageName: 'business-account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/business-account-management/dist/lib/modules/business-sign-up'\n });\n \n\n isNotRegistered('buybox') && (binding.modules['buybox'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/buybox/dist/lib/modules/buybox/buybox'),\n {\n chunkName: () => '@msdyn365-commerce-modules-buybox-dist-lib-modules-buybox-buybox',\n ignoreBabelRename: true\n }\n ),\n $type: 'containerModule',\n dataActions: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview', runOn: 1},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productAvailableQuantity', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant', runOn: 0},{name:'productDimensions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant', runOn: 0},{name:'productPrice', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant', runOn: 0},{name:'ratingsSummary', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/buybox/dist/lib/modules/buybox/buybox.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'buybox',\n packageName: 'buybox',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/buybox/dist/lib/modules/buybox'\n });\n \n\n isNotRegistered('carousel') && (binding.modules['carousel'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/carousel/dist/lib/modules/carousel/carousel'),\n {\n chunkName: () => '@msdyn365-commerce-modules-carousel-dist-lib-modules-carousel-carousel',\n ignoreBabelRename: true\n }\n ),\n $type: 'containerModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/carousel/dist/lib/modules/carousel/carousel.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'carousel',\n packageName: 'carousel',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/carousel/dist/lib/modules/carousel'\n });\n \n\n isNotRegistered('cart') && (binding.modules['cart'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/cart/dist/lib/modules/cart/cart'),\n {\n chunkName: () => '@msdyn365-commerce-modules-cart-dist-lib-modules-cart-cart',\n ignoreBabelRename: true\n }\n ),\n $type: 'containerModule',\n dataActions: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview', runOn: 1},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 0},{name:'productAvailabilites', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines', runOn: 0},{name:'products', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0},{name:'wishlistItems', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 1}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/cart/dist/lib/modules/cart/cart.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'cart',\n packageName: 'cart',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/cart/dist/lib/modules/cart'\n });\n \n\n isNotRegistered('cart-icon') && (binding.modules['cart-icon'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon/cart-icon'),\n {\n chunkName: () => '@msdyn365-commerce-modules-cart-dist-lib-modules-cart-icon-cart-icon',\n ignoreBabelRename: true\n }\n ),\n $type: 'containerModule',\n dataActions: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action', runOn: 1},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon/cart-icon.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'cart-icon',\n packageName: 'cart',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon'\n });\n \n\n isNotRegistered('category-page-summary') && (binding.modules['category-page-summary'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary'),\n {\n chunkName: () => '@msdyn365-commerce-modules-page-summary-dist-lib-modules-default-page-summary-default-page-summary',\n ignoreBabelRename: true\n }\n ),\n $type: 'htmlHeadTagsModule',\n dataActions: [{name:'pageSummary', path:'@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'category-page-summary',\n packageName: 'page-summary',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary'\n });\n \n\n isNotRegistered('checkout') && (binding.modules['checkout'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/checkout'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-checkout',\n ignoreBabelRename: true\n }\n ),\n $type: 'containerModule',\n dataActions: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 1},{name:'products', path:'@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/actions/get-products-in-active-checkout-cart', runOn: 1}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/checkout.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'checkout',\n packageName: 'checkout',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout'\n });\n \n\n isNotRegistered('checkout-billing-address') && (binding.modules['checkout-billing-address'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/address/dist/lib/modules/checkout-billing-address/checkout-billing-address'),\n {\n chunkName: () => '@msdyn365-commerce-modules-address-dist-lib-modules-checkout-billing-address-checkout-billing-address',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'countryStates', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/checkout-billing-address/checkout-billing-address.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'checkout-billing-address',\n packageName: 'address',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/checkout-billing-address'\n });\n \n\n isNotRegistered('checkout-customer-account-payment') && (binding.modules['checkout-customer-account-payment'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-customer-account-payment/checkout-customer-account-payment'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-customer-account-payment-checkout-customer-account-payment',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'creditBalances', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-customer-account-payment/checkout-customer-account-payment.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'checkout-customer-account-payment',\n packageName: 'checkout',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-customer-account-payment'\n });\n \n\n isNotRegistered('checkout-delivery-options') && (binding.modules['checkout-delivery-options'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-delivery-options/checkout-delivery-options'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-delivery-options-checkout-delivery-options',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-delivery-options/checkout-delivery-options.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'checkout-delivery-options',\n packageName: 'checkout',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-delivery-options'\n });\n \n\n isNotRegistered('checkout-gift-card') && (binding.modules['checkout-gift-card'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-gift-card/checkout-gift-card'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-gift-card-checkout-gift-card',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-gift-card/checkout-gift-card.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'checkout-gift-card',\n packageName: 'checkout',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-gift-card'\n });\n \n\n isNotRegistered('checkout-guest-profile') && (binding.modules['checkout-guest-profile'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-guest-profile/checkout-guest-profile'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-guest-profile-checkout-guest-profile',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-guest-profile/checkout-guest-profile.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'checkout-guest-profile',\n packageName: 'checkout',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-guest-profile'\n });\n \n\n isNotRegistered('checkout-loyalty') && (binding.modules['checkout-loyalty'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-loyalty/checkout-loyalty'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-loyalty-checkout-loyalty',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1},{name:'loyaltyTransactionEstimation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-transaction-estimation', runOn: 1}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-loyalty/checkout-loyalty.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'checkout-loyalty',\n packageName: 'checkout',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-loyalty'\n });\n \n\n isNotRegistered('checkout-order-confirmation') && (binding.modules['checkout-order-confirmation'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/checkout-order-confirmation/checkout-order-confirmation'),\n {\n chunkName: () => '@msdyn365-commerce-modules-order-management-dist-lib-modules-checkout-order-confirmation-checkout-order-confirmation',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1},{name:'tenderTypes', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/checkout-order-confirmation/checkout-order-confirmation.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'checkout-order-confirmation',\n packageName: 'order-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/checkout-order-confirmation'\n });\n \n\n isNotRegistered('checkout-payment-instrument') && (binding.modules['checkout-payment-instrument'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/checkout-payment-instrument'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-payment-instrument-checkout-payment-instrument',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'cardPaymentAcceptPoint', path:'@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/actions/get-card-payment-accept-point', runOn: 1},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/checkout-payment-instrument.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'checkout-payment-instrument',\n packageName: 'checkout',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument'\n });\n \n\n isNotRegistered('checkout-pickup') && (binding.modules['checkout-pickup'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-pickup/checkout-pickup'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-pickup-checkout-pickup',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 1}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-pickup/checkout-pickup.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'checkout-pickup',\n packageName: 'checkout',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-pickup'\n });\n \n\n isNotRegistered('checkout-section-container') && (binding.modules['checkout-section-container'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-section-container/checkout-section-container'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-section-container-checkout-section-container',\n ignoreBabelRename: true\n }\n ),\n $type: 'containerModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-section-container/checkout-section-container.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'checkout-section-container',\n packageName: 'checkout',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-section-container'\n });\n \n\n isNotRegistered('checkout-shipping-address') && (binding.modules['checkout-shipping-address'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/address/dist/lib/modules/checkout-shipping-address/checkout-shipping-address'),\n {\n chunkName: () => '@msdyn365-commerce-modules-address-dist-lib-modules-checkout-shipping-address-checkout-shipping-address',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'countryStates', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/checkout-shipping-address/checkout-shipping-address.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'checkout-shipping-address',\n packageName: 'address',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/checkout-shipping-address'\n });\n \n\n isNotRegistered('checkout-terms-and-conditions') && (binding.modules['checkout-terms-and-conditions'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-terms-and-conditions/checkout-terms-and-conditions'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-terms-and-conditions-checkout-terms-and-conditions',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'checkout-terms-and-conditions',\n packageName: 'checkout',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-terms-and-conditions'\n });\n \n\n isNotRegistered('content-block') && (binding.modules['content-block'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/content-block/dist/lib/modules/content-block/content-block'),\n {\n chunkName: () => '@msdyn365-commerce-modules-content-block-dist-lib-modules-content-block-content-block',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/content-block/dist/lib/modules/content-block/content-block.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'content-block',\n packageName: 'content-block',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/content-block/dist/lib/modules/content-block'\n });\n \n\n isNotRegistered('cookie-compliance') && (binding.modules['cookie-compliance'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/cookie-compliance/dist/lib/modules/cookie-compliance/cookie-compliance'),\n {\n chunkName: () => '@msdyn365-commerce-modules-cookie-compliance-dist-lib-modules-cookie-compliance-cookie-compliance',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/cookie-compliance/dist/lib/modules/cookie-compliance/cookie-compliance.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'cookie-compliance',\n packageName: 'cookie-compliance',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/cookie-compliance/dist/lib/modules/cookie-compliance'\n });\n \n\n isNotRegistered('default-container') && (binding.modules['default-container'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container/default-container'),\n {\n chunkName: () => '@msdyn365-commerce-modules-core-components-dist-lib-modules-default-container-default-container',\n ignoreBabelRename: true\n }\n ),\n $type: 'containerModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container/default-container.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'default-container',\n packageName: 'core-components',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container'\n });\n \n\n isNotRegistered('default-container-2-slots') && (binding.modules['default-container-2-slots'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-2-slots/default-container-2-slots'),\n {\n chunkName: () => '@msdyn365-commerce-modules-core-components-dist-lib-modules-default-container-2-slots-default-container-2-slots',\n ignoreBabelRename: true\n }\n ),\n $type: 'containerModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-2-slots/default-container-2-slots.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'default-container-2-slots',\n packageName: 'core-components',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-2-slots'\n });\n \n\n isNotRegistered('default-container-3-slots') && (binding.modules['default-container-3-slots'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-3-slots/default-container-3-slots'),\n {\n chunkName: () => '@msdyn365-commerce-modules-core-components-dist-lib-modules-default-container-3-slots-default-container-3-slots',\n ignoreBabelRename: true\n }\n ),\n $type: 'containerModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-3-slots/default-container-3-slots.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'default-container-3-slots',\n packageName: 'core-components',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-3-slots'\n });\n \n\n isNotRegistered('default-external-script') && (binding.modules['default-external-script'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-external-script/default-external-script'),\n {\n chunkName: () => '@msdyn365-commerce-modules-core-components-dist-lib-modules-default-external-script-default-external-script',\n ignoreBabelRename: true\n }\n ),\n $type: 'scriptModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-external-script/default-external-script.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'default-external-script',\n packageName: 'core-components',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-external-script'\n });\n \n\n isNotRegistered('default-inline-script') && (binding.modules['default-inline-script'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-inline-script/default-inline-script'),\n {\n chunkName: () => '@msdyn365-commerce-modules-core-components-dist-lib-modules-default-inline-script-default-inline-script',\n ignoreBabelRename: true\n }\n ),\n $type: 'scriptModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-inline-script/default-inline-script.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'default-inline-script',\n packageName: 'core-components',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-inline-script'\n });\n \n\n isNotRegistered('default-metatags') && (binding.modules['default-metatags'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-metatags/default-metatags'),\n {\n chunkName: () => '@msdyn365-commerce-modules-core-components-dist-lib-modules-default-metatags-default-metatags',\n ignoreBabelRename: true\n }\n ),\n $type: 'htmlHeadTagsModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-metatags/default-metatags.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'default-metatags',\n packageName: 'core-components',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-metatags'\n });\n \n\n isNotRegistered('default-page') && (binding.modules['default-page'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-page/default-page'),\n {\n chunkName: () => '@msdyn365-commerce-modules-core-components-dist-lib-modules-default-page-default-page',\n ignoreBabelRename: true\n }\n ),\n $type: 'pageModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-page/default-page.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'default-page',\n packageName: 'core-components',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-page'\n });\n \n\n isNotRegistered('default-page-summary') && (binding.modules['default-page-summary'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary'),\n {\n chunkName: () => '@msdyn365-commerce-modules-page-summary-dist-lib-modules-default-page-summary-default-page-summary',\n ignoreBabelRename: true\n }\n ),\n $type: 'htmlHeadTagsModule',\n dataActions: [{name:'pageSummary', path:'@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'default-page-summary',\n packageName: 'page-summary',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary'\n });\n \n\n isNotRegistered('fabrikam') && (binding.modules['fabrikam'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/fabrikam'),\n {\n chunkName: () => '@msdyn365-commerce-modules-fabrikam-design-kit-dist-lib-modules-fabrikam-fabrikam',\n ignoreBabelRename: true\n }\n ),\n $type: 'themeModule',\n dataActions: [],\n definitionExtensions: ['buybox','content-block','media-gallery','navigation-menu','promo-banner','text-block'],\n definitionPath: 'node_modules/@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/fabrikam.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'fabrikam',\n packageName: 'fabrikam-design-kit',\n \n parentDefinitionPath: '',\n \n themeSettings: 'fabrikam.theme.settings.json',\n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam'\n });\n \n\n isNotRegistered('footer-category') && (binding.modules['footer-category'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/footer-category/footer-category'),\n {\n chunkName: () => '@msdyn365-commerce-modules-footer-dist-lib-modules-footer-category-footer-category',\n ignoreBabelRename: true\n }\n ),\n $type: 'containerModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/footer/dist/lib/modules/footer-category/footer-category.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'footer-category',\n packageName: 'footer',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/footer/dist/lib/modules/footer-category'\n });\n \n\n isNotRegistered('footer-item') && (binding.modules['footer-item'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/footer-item/footer-item'),\n {\n chunkName: () => '@msdyn365-commerce-modules-footer-dist-lib-modules-footer-item-footer-item',\n ignoreBabelRename: true\n }\n ),\n $type: 'moduleDefinition',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/footer/dist/lib/modules/footer-item/footer-item.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'footer-item',\n packageName: 'footer',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/footer/dist/lib/modules/footer-item'\n });\n \n\n isNotRegistered('gift-card-balance-check') && (binding.modules['gift-card-balance-check'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/gift-card-balance-check/gift-card-balance-check'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-gift-card-balance-check-gift-card-balance-check',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/gift-card-balance-check/gift-card-balance-check.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'gift-card-balance-check',\n packageName: 'checkout',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/gift-card-balance-check'\n });\n \n\n isNotRegistered('header') && (binding.modules['header'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/header/dist/lib/modules/header/header'),\n {\n chunkName: () => '@msdyn365-commerce-modules-header-dist-lib-modules-header-header',\n ignoreBabelRename: true\n }\n ),\n $type: 'containerModule',\n dataActions: [{name:'accountInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/header/dist/lib/modules/header/header.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'header',\n packageName: 'header',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/header/dist/lib/modules/header'\n });\n \n\n isNotRegistered('iframe') && (binding.modules['iframe'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/iframe/dist/lib/modules/iframe/iframe'),\n {\n chunkName: () => '@msdyn365-commerce-modules-iframe-dist-lib-modules-iframe-iframe',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/iframe/dist/lib/modules/iframe/iframe.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'iframe',\n packageName: 'iframe',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/iframe/dist/lib/modules/iframe'\n });\n \n\n isNotRegistered('invoice-details') && (binding.modules['invoice-details'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/invoice-details/dist/lib/modules/invoice-details/invoice-details'),\n {\n chunkName: () => '@msdyn365-commerce-modules-invoice-details-dist-lib-modules-invoice-details-invoice-details',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'invoice', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoice', runOn: 0},{name:'invoiceDetails', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoice-details', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/invoice-details/dist/lib/modules/invoice-details/invoice-details.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'invoice-details',\n packageName: 'invoice-details',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/invoice-details/dist/lib/modules/invoice-details'\n });\n \n\n isNotRegistered('invoices-list') && (binding.modules['invoices-list'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/invoice/dist/lib/modules/invoices-list/invoices-list'),\n {\n chunkName: () => '@msdyn365-commerce-modules-invoice-dist-lib-modules-invoices-list-invoices-list',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'b2bUserInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-business-partner-user', runOn: 0},{name:'customer', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'customerBalance', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', runOn: 0},{name:'invoices', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/invoice/dist/lib/modules/invoices-list/invoices-list.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'invoices-list',\n packageName: 'invoice',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/invoice/dist/lib/modules/invoices-list'\n });\n \n\n isNotRegistered('list-page-summary') && (binding.modules['list-page-summary'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary'),\n {\n chunkName: () => '@msdyn365-commerce-modules-page-summary-dist-lib-modules-default-page-summary-default-page-summary',\n ignoreBabelRename: true\n }\n ),\n $type: 'htmlHeadTagsModule',\n dataActions: [{name:'pageSummary', path:'@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'list-page-summary',\n packageName: 'page-summary',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary'\n });\n \n\n isNotRegistered('loyalty-sign-up') && (binding.modules['loyalty-sign-up'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-sign-up/loyalty-sign-up'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-loyalty-sign-up-loyalty-sign-up',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-sign-up/loyalty-sign-up.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'loyalty-sign-up',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-sign-up'\n });\n \n\n isNotRegistered('loyalty-terms') && (binding.modules['loyalty-terms'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-terms/loyalty-terms'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-loyalty-terms-loyalty-terms',\n ignoreBabelRename: true\n }\n ),\n $type: 'containerModule',\n dataActions: [{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-terms/loyalty-terms.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'loyalty-terms',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-terms'\n });\n \n\n isNotRegistered('map') && (binding.modules['map'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/map/dist/lib/modules/map/map'),\n {\n chunkName: () => '@msdyn365-commerce-modules-map-dist-lib-modules-map-map',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/map/dist/lib/modules/map/map.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'map',\n packageName: 'map',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/map/dist/lib/modules/map'\n });\n \n\n isNotRegistered('media-gallery') && (binding.modules['media-gallery'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/media-gallery/dist/lib/modules/media-gallery/media-gallery'),\n {\n chunkName: () => '@msdyn365-commerce-modules-media-gallery-dist-lib-modules-media-gallery-media-gallery',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'mediaLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-media-locations-by-id', runOn: 0},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/media-gallery/dist/lib/modules/media-gallery/media-gallery.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'media-gallery',\n packageName: 'media-gallery',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/media-gallery/dist/lib/modules/media-gallery'\n });\n \n\n isNotRegistered('navigation-menu') && (binding.modules['navigation-menu'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/navigation-menu/dist/lib/modules/navigation-menu/navigation-menu'),\n {\n chunkName: () => '@msdyn365-commerce-modules-navigation-menu-dist-lib-modules-navigation-menu-navigation-menu',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'categories', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/navigation-menu/dist/lib/modules/navigation-menu/navigation-menu.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'navigation-menu',\n packageName: 'navigation-menu',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/navigation-menu/dist/lib/modules/navigation-menu'\n });\n \n\n isNotRegistered('notifications-list') && (binding.modules['notifications-list'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/notifications-lists/dist/lib/modules/notifications-list/notifications-list'),\n {\n chunkName: () => '@msdyn365-commerce-modules-notifications-lists-dist-lib-modules-notifications-list-notifications-list',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/notifications-lists/dist/lib/modules/notifications-list/notifications-list.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'notifications-list',\n packageName: 'notifications-lists',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/notifications-lists/dist/lib/modules/notifications-list'\n });\n \n\n isNotRegistered('order-confirmation') && (binding.modules['order-confirmation'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-confirmation/order-confirmation'),\n {\n chunkName: () => '@msdyn365-commerce-modules-order-management-dist-lib-modules-order-confirmation-order-confirmation',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1},{name:'orderHydration', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations', runOn: 0},{name:'tenderTypes', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/order-confirmation/order-confirmation.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'order-confirmation',\n packageName: 'order-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/order-confirmation'\n });\n \n\n isNotRegistered('order-details') && (binding.modules['order-details'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-details/order-details'),\n {\n chunkName: () => '@msdyn365-commerce-modules-order-management-dist-lib-modules-order-details-order-details',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'channels', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1},{name:'orderHydration', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations', runOn: 0},{name:'tenderTypes', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/order-details/order-details.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'order-details',\n packageName: 'order-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/order-details'\n });\n \n\n isNotRegistered('order-history') && (binding.modules['order-history'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-history/order-history'),\n {\n chunkName: () => '@msdyn365-commerce-modules-order-management-dist-lib-modules-order-history-order-history',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'channels', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/order-history/order-history.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'order-history',\n packageName: 'order-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/order-history'\n });\n \n\n isNotRegistered('order-template') && (binding.modules['order-template'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/order-template'),\n {\n chunkName: () => '@msdyn365-commerce-modules-order-template-dist-lib-modules-order-template-order-template',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'orderTemplate', path:'@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/actions/get-order-template', runOn: 1}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/order-template.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'order-template',\n packageName: 'order-template',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template'\n });\n \n\n isNotRegistered('order-template-list') && (binding.modules['order-template-list'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template-list/order-template-list'),\n {\n chunkName: () => '@msdyn365-commerce-modules-order-template-dist-lib-modules-order-template-list-order-template-list',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview', runOn: 1}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template-list/order-template-list.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'order-template-list',\n packageName: 'order-template',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template-list'\n });\n \n\n isNotRegistered('organization-users-tile') && (binding.modules['organization-users-tile'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/organization-users-tile/organization-users-tile'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-organization-users-tile-organization-users-tile',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'users', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users-count', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/organization-users-tile/organization-users-tile.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'organization-users-tile',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/organization-users-tile'\n });\n \n\n isNotRegistered('password-reset') && (binding.modules['password-reset'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset/password-reset'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-password-reset-password-reset',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset/password-reset.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'password-reset',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset'\n });\n \n\n isNotRegistered('password-reset-verification') && (binding.modules['password-reset-verification'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset-verification/password-reset-verification'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-password-reset-verification-password-reset-verification',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset-verification/password-reset-verification.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'password-reset-verification',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset-verification'\n });\n \n\n isNotRegistered('place-holder-for-container-preview') && (binding.modules['place-holder-for-container-preview'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/place-holder-for-container-preview/place-holder-for-container-preview'),\n {\n chunkName: () => '@msdyn365-commerce-modules-core-components-dist-lib-modules-place-holder-for-container-preview-place-holder-for-container-preview',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/place-holder-for-container-preview/place-holder-for-container-preview.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'place-holder-for-container-preview',\n packageName: 'core-components',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/place-holder-for-container-preview'\n });\n \n\n isNotRegistered('product-collection') && (binding.modules['product-collection'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/product-collection/dist/lib/modules/product-collection/product-collection'),\n {\n chunkName: () => '@msdyn365-commerce-modules-product-collection-dist-lib-modules-product-collection-product-collection',\n ignoreBabelRename: true\n }\n ),\n $type: 'containerModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/product-collection/dist/lib/modules/product-collection/product-collection.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'product-collection',\n packageName: 'product-collection',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/product-collection/dist/lib/modules/product-collection'\n });\n \n\n isNotRegistered('product-page-summary') && (binding.modules['product-page-summary'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary'),\n {\n chunkName: () => '@msdyn365-commerce-modules-page-summary-dist-lib-modules-product-page-summary-product-page-summary',\n ignoreBabelRename: true\n }\n ),\n $type: 'htmlHeadTagsModule',\n dataActions: [{name:'productPageSummary', path:'@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'product-page-summary',\n packageName: 'page-summary',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary'\n });\n \n\n isNotRegistered('product-specification') && (binding.modules['product-specification'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/product-specification/dist/lib/modules/product-specification/product-specification'),\n {\n chunkName: () => '@msdyn365-commerce-modules-product-specification-dist-lib-modules-product-specification-product-specification',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productSpecificationData', path:'@msdyn365-commerce-modules/product-specification/dist/lib/dataActions/get-attributes-for-selected-variant', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/product-specification/dist/lib/modules/product-specification/product-specification.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'product-specification',\n packageName: 'product-specification',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/product-specification/dist/lib/modules/product-specification'\n });\n \n\n isNotRegistered('promo-banner') && (binding.modules['promo-banner'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner/promo-banner'),\n {\n chunkName: () => '@msdyn365-commerce-modules-promo-banner-dist-lib-modules-promo-banner-promo-banner',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner/promo-banner.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'promo-banner',\n packageName: 'promo-banner',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner'\n });\n \n\n isNotRegistered('quick-order') && (binding.modules['quick-order'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/quick-order/dist/lib/modules/quick-order/quick-order'),\n {\n chunkName: () => '@msdyn365-commerce-modules-quick-order-dist-lib-modules-quick-order-quick-order',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/quick-order/dist/lib/modules/quick-order/quick-order.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'quick-order',\n packageName: 'quick-order',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/quick-order/dist/lib/modules/quick-order'\n });\n \n\n isNotRegistered('quickview') && (binding.modules['quickview'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/buybox/dist/lib/modules/quickview/quickview'),\n {\n chunkName: () => '@msdyn365-commerce-modules-buybox-dist-lib-modules-quickview-quickview',\n ignoreBabelRename: true\n }\n ),\n $type: 'containerModule',\n dataActions: [{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/buybox/dist/lib/modules/quickview/quickview.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'quickview',\n packageName: 'buybox',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/buybox/dist/lib/modules/quickview'\n });\n \n\n isNotRegistered('ratings-histogram') && (binding.modules['ratings-histogram'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/ratings-histogram/ratings-histogram'),\n {\n chunkName: () => '@msdyn365-commerce-modules-ratings-reviews-dist-lib-modules-ratings-histogram-ratings-histogram',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'ratingsReviewsState', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action', runOn: 1},{name:'ratingsSummary', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/ratings-histogram/ratings-histogram.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'ratings-histogram',\n packageName: 'ratings-reviews',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/ratings-histogram'\n });\n \n\n isNotRegistered('reviews-list') && (binding.modules['reviews-list'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/reviews-list/reviews-list'),\n {\n chunkName: () => '@msdyn365-commerce-modules-ratings-reviews-dist-lib-modules-reviews-list-reviews-list',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'ratingsReviewsState', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action', runOn: 1},{name:'ratingsSummary', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary', runOn: 0},{name:'reviewsList', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-product-reviews', runOn: 0},{name:'userReview', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/reviews-list/reviews-list.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'reviews-list',\n packageName: 'ratings-reviews',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/reviews-list'\n });\n \n\n isNotRegistered('script-injector') && (binding.modules['script-injector'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/script-injector/script-injector'),\n {\n chunkName: () => '@msdyn365-commerce-modules-core-components-dist-lib-modules-script-injector-script-injector',\n ignoreBabelRename: true\n }\n ),\n $type: 'scriptModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/script-injector/script-injector.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'script-injector',\n packageName: 'core-components',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/script-injector'\n });\n \n\n isNotRegistered('search') && (binding.modules['search'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/search/dist/lib/modules/search/search'),\n {\n chunkName: () => '@msdyn365-commerce-modules-search-dist-lib-modules-search-search',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'searchState', path:'@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action', runOn: 1}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/search/dist/lib/modules/search/search.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'search',\n packageName: 'search',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/search/dist/lib/modules/search'\n });\n \n\n isNotRegistered('search-result-container') && (binding.modules['search-result-container'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/search-result-container'),\n {\n chunkName: () => '@msdyn365-commerce-modules-search-result-container-dist-lib-modules-search-result-container-search-result-container',\n ignoreBabelRename: true\n }\n ),\n $type: 'containerModule',\n dataActions: [{name:'category', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category', runOn: 0},{name:'categoryHierarchy', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy', runOn: 0},{name:'featureProduct', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'listPageState', path:'@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/list-page-state', runOn: 0},{name:'products', path:'@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-full-products-by-collection', runOn: 0},{name:'refiners', path:'@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-refiners-for-collection', runOn: 0},{name:'searchConfiguration', path:'@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-mapped-search-configuration', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/search-result-container.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'search-result-container',\n packageName: 'search-result-container',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container'\n });\n \n\n isNotRegistered('sign-in') && (binding.modules['sign-in'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-in/sign-in'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-sign-in-sign-in',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-in/sign-in.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'sign-in',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-in'\n });\n \n\n isNotRegistered('sign-up') && (binding.modules['sign-up'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-up/sign-up'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-sign-up-sign-up',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-up/sign-up.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'sign-up',\n packageName: 'account-management',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-up'\n });\n \n\n isNotRegistered('site-picker') && (binding.modules['site-picker'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/site-picker/dist/lib/modules/site-picker/site-picker'),\n {\n chunkName: () => '@msdyn365-commerce-modules-site-picker-dist-lib-modules-site-picker-site-picker',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/site-picker/dist/lib/modules/site-picker/site-picker.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'site-picker',\n packageName: 'site-picker',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/site-picker/dist/lib/modules/site-picker'\n });\n \n\n isNotRegistered('social-share') && (binding.modules['social-share'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share/social-share'),\n {\n chunkName: () => '@msdyn365-commerce-modules-social-share-dist-lib-modules-social-share-social-share',\n ignoreBabelRename: true\n }\n ),\n $type: 'moduleDefinition',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share/social-share.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'social-share',\n packageName: 'social-share',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share'\n });\n \n\n isNotRegistered('social-share-item') && (binding.modules['social-share-item'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share-item/social-share-item'),\n {\n chunkName: () => '@msdyn365-commerce-modules-social-share-dist-lib-modules-social-share-item-social-share-item',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share-item/social-share-item.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'social-share-item',\n packageName: 'social-share',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share-item'\n });\n \n\n isNotRegistered('spacer') && (binding.modules['spacer'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/spacer/dist/lib/modules/spacer/spacer'),\n {\n chunkName: () => '@msdyn365-commerce-modules-spacer-dist-lib-modules-spacer-spacer',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/spacer/dist/lib/modules/spacer/spacer.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'spacer',\n packageName: 'spacer',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/spacer/dist/lib/modules/spacer'\n });\n \n\n isNotRegistered('starter') && (binding.modules['starter'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/starter-theme-pack/dist/lib/modules/starter/starter'),\n {\n chunkName: () => '@msdyn365-commerce-modules-starter-theme-pack-dist-lib-modules-starter-starter',\n ignoreBabelRename: true\n }\n ),\n $type: 'themeModule',\n dataActions: [],\n definitionExtensions: ['content-block','promo-banner','text-block'],\n definitionPath: 'node_modules/@msdyn365-commerce-modules/starter-theme-pack/dist/lib/modules/starter/starter.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'starter',\n packageName: 'starter-theme-pack',\n \n parentDefinitionPath: '',\n \n themeSettings: 'starter.theme.settings.json',\n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/starter-theme-pack/dist/lib/modules/starter'\n });\n \n\n isNotRegistered('store-selector') && (binding.modules['store-selector'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector/store-selector'),\n {\n chunkName: () => '@msdyn365-commerce-modules-store-selector-dist-lib-modules-store-selector-store-selector',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'availabilitiesWithHours', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby', runOn: 1},{name:'storeLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector/store-selector.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'store-selector',\n packageName: 'store-selector',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector'\n });\n \n\n isNotRegistered('tab') && (binding.modules['tab'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/tab/dist/lib/modules/tab/tab'),\n {\n chunkName: () => '@msdyn365-commerce-modules-tab-dist-lib-modules-tab-tab',\n ignoreBabelRename: true\n }\n ),\n $type: 'moduleDefinition',\n dataActions: [{name:'activeTabState', path:'@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/tab/dist/lib/modules/tab/tab.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'tab',\n packageName: 'tab',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/tab/dist/lib/modules/tab'\n });\n \n\n isNotRegistered('tab-item') && (binding.modules['tab-item'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/tab/dist/lib/modules/tab-item/tab-item'),\n {\n chunkName: () => '@msdyn365-commerce-modules-tab-dist-lib-modules-tab-item-tab-item',\n ignoreBabelRename: true\n }\n ),\n $type: 'moduleDefinition',\n dataActions: [{name:'activeTabState', path:'@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/tab/dist/lib/modules/tab-item/tab-item.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'tab-item',\n packageName: 'tab',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/tab/dist/lib/modules/tab-item'\n });\n \n\n isNotRegistered('text-block') && (binding.modules['text-block'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/text-block/dist/lib/modules/text-block/text-block'),\n {\n chunkName: () => '@msdyn365-commerce-modules-text-block-dist-lib-modules-text-block-text-block',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/text-block/dist/lib/modules/text-block/text-block.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'text-block',\n packageName: 'text-block',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/text-block/dist/lib/modules/text-block'\n });\n \n\n isNotRegistered('video-player') && (binding.modules['video-player'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/video-player/dist/lib/modules/video-player/video-player'),\n {\n chunkName: () => '@msdyn365-commerce-modules-video-player-dist-lib-modules-video-player-video-player',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/video-player/dist/lib/modules/video-player/video-player.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'video-player',\n packageName: 'video-player',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/video-player/dist/lib/modules/video-player'\n });\n \n\n isNotRegistered('wishlist-items') && (binding.modules['wishlist-items'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/wishlist-items'),\n {\n chunkName: () => '@msdyn365-commerce-modules-wishlist-dist-lib-modules-wishlist-items-wishlist-items',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'productAvailability', path:'@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-product-availabilities-wishlist-items', runOn: 1},{name:'products', path:'@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-items-in-wishlists', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 1}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/wishlist-items.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'wishlist-items',\n packageName: 'wishlist',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items'\n });\n \n\n isNotRegistered('write-review') && (binding.modules['write-review'] = {\n component: universal(\n () =>\n import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/write-review/write-review'),\n {\n chunkName: () => '@msdyn365-commerce-modules-ratings-reviews-dist-lib-modules-write-review-write-review',\n ignoreBabelRename: true\n }\n ),\n $type: 'contentModule',\n dataActions: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'userReview', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review', runOn: 0}],\n \n definitionPath: 'node_modules/@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/write-review/write-review.definition.json',\n isNodeModule: true,\n moduleNamespace: '@msdyn365-commerce-modules',\n name: 'write-review',\n packageName: 'ratings-reviews',\n \n parentDefinitionPath: '',\n \n \n moduleDirectory: 'node_modules/@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/write-review'\n });\n \n\n {\n \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/addToCart-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/addToCart-telemetry.action');\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n }\n \n }\n\n {\n \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/copyCart-checkOut-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/copyCart-checkOut-telemetry.action');\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n }\n \n }\n\n {\n \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/getById-product-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/getById-product-telemetry.action');\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n }\n \n }\n\n {\n \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/getByIds-product-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/getByIds-product-telemetry.action');\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n }\n \n }\n\n {\n \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/getVariantsByDimensionValues-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/getVariantsByDimensionValues-telemetry.action');\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n }\n \n }\n\n {\n \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/purchase-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/purchase-telemetry.action');\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n }\n \n }\n\n {\n \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/readCart-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/readCart-telemetry.action');\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n }\n \n }\n\n {\n \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/removeFromCart-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/removeFromCart-telemetry.action');\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n }\n \n }\n\n {\n \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/updateCart-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/updateCart-telemetry.action');\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n }\n \n }\n\n {\n \n const actionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action');\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n }\n \n }\n\n {\n \n const actionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action');\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n }\n \n }\n\n {\n \n const actionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action');\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n }\n \n }\n\n {\n \n const actionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action');\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n }\n \n }\n\n if (isNotRegistered('accordion')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('accordion-item')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-address-tile')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-address-tile')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-customer-balance')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-business-partner-user';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-business-partner-user');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-customer-balance')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-customer-balance')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-customer-balance-tile')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-customer-balance-tile')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-invoice-tile')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-invoice-tile')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-loyalty')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-loyalty-tile')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-management-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-management-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-management-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-management-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-order-templates-tile')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-order-templates-tile')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-order-templates-tile')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-profile')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-attribute-definitions';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-attribute-definitions');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-profile')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-welcome-tile')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('account-wishlist-tile')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('b2b-requests-status')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-business-partner-operation-requests';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-business-partner-operation-requests');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('b2b-requests-status')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-business-partner-user';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-business-partner-user');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('b2b-requests-status')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('b2b-requests-tile')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('breadcrumb')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-category-paths';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-category-paths');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('breadcrumb')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('breadcrumb')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('business-account-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('business-account-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('business-account-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('business-account-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('business-organization-list')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('business-organization-list')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('buybox')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('buybox')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('buybox')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('buybox')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('buybox')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('buybox')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('buybox')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('buybox')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('buybox')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('buybox')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('buybox')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('buybox')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('cart')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('cart')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('cart')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('cart')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('cart')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('cart')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('cart')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('cart')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('cart')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('cart')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('cart')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('cart')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('cart-icon')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('cart-icon')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('cart-icon')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('cart-icon')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('cart-icon')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('category-page-summary')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/actions/get-products-in-active-checkout-cart';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/actions/get-products-in-active-checkout-cart');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-billing-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-billing-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-billing-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-billing-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-billing-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-billing-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-billing-address')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-customer-account-payment')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-customer-account-payment')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-customer-account-payment')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-delivery-options')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-delivery-options')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-delivery-options')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-gift-card')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-guest-profile')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-guest-profile')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-loyalty')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-loyalty')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-transaction-estimation';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-transaction-estimation');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-loyalty')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-payment-instrument')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/actions/get-card-payment-accept-point';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/actions/get-card-payment-accept-point');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-payment-instrument')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-payment-instrument')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-payment-instrument')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-pickup')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-pickup')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-pickup')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-pickup')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-pickup')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-shipping-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-shipping-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-shipping-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-shipping-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-shipping-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-shipping-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-shipping-address')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-shipping-address')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('checkout-terms-and-conditions')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('default-page-summary')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('header')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('header')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('header')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('invoice-details')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoice';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoice');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('invoice-details')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoice-details';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoice-details');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('invoices-list')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-business-partner-user';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-business-partner-user');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('invoices-list')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('invoices-list')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('invoices-list')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('list-page-summary')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('loyalty-sign-up')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('loyalty-terms')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('map')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('media-gallery')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-media-locations-by-id';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-media-locations-by-id');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('media-gallery')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('navigation-menu')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-confirmation')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-confirmation')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-confirmation')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-confirmation')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-confirmation')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-details')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-details')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-details')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-details')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-details')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-details')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-details')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-history')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-history')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-history')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-history')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-history')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-template')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/actions/get-order-template';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/actions/get-order-template');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-template')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('order-template-list')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('organization-users-tile')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users-count';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users-count');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('product-page-summary')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('product-specification')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/product-specification/dist/lib/dataActions/get-attributes-for-selected-variant';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/product-specification/dist/lib/dataActions/get-attributes-for-selected-variant');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('product-specification')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('quick-order')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('quick-order')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('quick-order')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('quickview')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('quickview')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('quickview')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('ratings-histogram')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('ratings-histogram')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('reviews-list')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-product-reviews';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-product-reviews');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('reviews-list')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('reviews-list')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('reviews-list')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('reviews-list')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('search')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('search-result-container')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('search-result-container')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('search-result-container')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('search-result-container')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-full-products-by-collection';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-full-products-by-collection');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('search-result-container')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-mapped-search-configuration';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-mapped-search-configuration');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('search-result-container')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-refiners-for-collection';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-refiners-for-collection');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('search-result-container')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/list-page-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/list-page-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('store-selector')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('store-selector')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('store-selector')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('tab')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('tab-item')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('wishlist-items')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('wishlist-items')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('wishlist-items')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('wishlist-items')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-items-in-wishlists';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-items-in-wishlists');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('wishlist-items')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-product-availabilities-wishlist-items';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-product-availabilities-wishlist-items');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('wishlist-items')) {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('write-review')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n if (isNotRegistered('write-review')) {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n binding.dataActions[sanitizedActionPath] = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n \n\n \n } catch (e) {\n handleError('-', e);\n }\n \n return binding;\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { v4 as uuidv4 } from 'uuid';\n\n/**\n * Namespace which provides functionality for GUID.\n */\nexport namespace Guid {\n export function generateGuid(): string {\n return uuidv4();\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Guid as _guid } from './guid';\n\nexport namespace Random {\n export import Guid = _guid;\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ChannelDeliveryOption, FeatureState, ItemAvailability, OrgUnitAvailability, OrgUnitLocation, ProductWarehouseInventoryInformation, SearchArea, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { getChannelDeliveryOptionsAsync, getOrgUnitLocationsByAreaAsync, getStoreHoursAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport { getEstimatedAvailabilityAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport { FeatureStateInput, getFeatureStateAction } from './get-feature-state';\nimport { IFullOrgUnitAvailability } from './utilities/full-org-unit-availability';\nimport { IProductInventoryInformation } from './utilities/product-inventory-information';\nimport { mapProductInventoryInformation } from './utilities/product-inventory-utils';\n\n/**\n * Get selected variant action input class.\n */\nexport class GetFullAvailableInventoryNearbyInput implements IActionInput {\n public latitude?: number;\n\n public longitude?: number;\n\n public radius?: number;\n\n public productId?: number;\n\n public DistanceUnitValue?: number;\n\n public IgnoreLocation?: boolean;\n\n constructor(_productId?: number, _latitude?: number, _longitude?: number, _radius?: number, _DistanceUnitValue?: number, _IgnoreLocation?: boolean) {\n this.productId = _productId;\n this.latitude = _latitude;\n this.longitude = _longitude;\n this.radius = _radius;\n this.DistanceUnitValue = _DistanceUnitValue;\n this.IgnoreLocation = _IgnoreLocation;\n }\n\n public getCacheKey = () => 'GetFullAvailableInventoryNearbyInputCache';\n\n public getCacheObjectType = () => 'GetFullAvailableInventoryNearbyInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the getSelectedVariant data action.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetFullAvailableInventoryNearbyInput = (inputData: ICreateActionContext>): GetFullAvailableInventoryNearbyInput => {\n return new GetFullAvailableInventoryNearbyInput();\n};\n\n/**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n * @param context\n */\nexport async function getFeatureState(context: IActionContext): Promise {\n return getFeatureStateAction(new FeatureStateInput(), context);\n}\n\n/**\n * Action method for the getSelectedVariant data aciton.\n * @param input The action input class.\n * @param ctx The action context.\n */\nexport async function getFullAvailableInventoryNearbyAction(\n input: GetFullAvailableInventoryNearbyInput,\n ctx: IActionContext\n): Promise {\n // No valid product we want to return undefined so module knows there are no results yet\n if (!input.productId) {\n return undefined;\n }\n\n if (((!input.radius && input.radius !== 0) || !input.latitude || !input.longitude) && !input.IgnoreLocation) {\n // No valid location we want to return empty array so module can show no locations message\n return [];\n }\n\n const searchArea: SearchArea = {\n Latitude: input.latitude,\n Longitude: input.longitude,\n Radius: input.radius,\n DistanceUnitValue: input.DistanceUnitValue || 0 // 0 is miles\n };\n\n const featureState = await getFeatureState(ctx);\n const retailMulitplePickupMFeatureState = featureState?.find(item => item.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature')?.IsEnabled;\n\n return getEstimatedAvailabilityAsync(\n { callerContext: ctx },\n {\n ProductIds: [input.productId],\n SearchArea: searchArea,\n DefaultWarehouseOnly: false,\n FilterByChannelFulfillmentGroup: true,\n QuantityUnitTypeValue: 2 // 2: Sales unit\n })\n .then(async (productWarehouseInformation: ProductWarehouseInventoryInformation) => {\n const productInventoryInformation = mapProductInventoryInformation(ctx, productWarehouseInformation?.ProductWarehouseInventoryAvailabilities);\n return getOrgUnitLocationsByAreaAsync({ callerContext: ctx }, searchArea)\n .then(async (stores: OrgUnitLocation[]) => {\n // Constructing a store mapping based on the InventoryId.\n const storeMap = new Map();\n stores.forEach(store => {\n if (store.InventoryLocationId) {\n storeMap.set(store.InventoryLocationId, store);\n }\n });\n\n let locationDeliveryOptions: ChannelDeliveryOption[] | undefined = [];\n\n // If mulitple pickup mode is enable then call getchanneldeliveryoption\n if (retailMulitplePickupMFeatureState) {\n const orgUnitChannel = stores.map(store => store.ChannelId);\n locationDeliveryOptions = await _getLocationPickUpDeliveryModes(orgUnitChannel, ctx);\n }\n\n const availabilityPromiseList = stores.map(store => {\n const locationDeliveryOption = locationDeliveryOptions?.find(_channeldeliveryoption => _channeldeliveryoption.ChannelId === store.ChannelId);\n return _getAvailabilityWithHours(store, productInventoryInformation, storeMap, ctx, locationDeliveryOption);\n });\n\n return Promise.all(availabilityPromiseList);\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby] error getting Available Inventory Nearby');\n ctx.trace(error.message);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug('[GetFullAvailableInventoryNearby] error getting Available Inventory Nearby');\n return [];\n });\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby][getEstimatedAvailabilityAsync] error getting availability product warehouse information.');\n ctx.trace(error.message);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug('[GetFullAvailableInventoryNearby][getEstimatedAvailabilityAsync] error getting availability product warehouse information.');\n return [];\n });\n}\n\n/**\n * Action method that obtains the store information along with store hours and product availability.\n * @param orgUnitLocation The org unit location.\n * @param productWarehouseInventoryInformation The product ware house information.\n * @param productInventoryInformation\n * @param storeMap A map that contains store information group by the inventory location id.\n * @param ctx The action context.\n * @param channelDeleiveryOptions\n */\nasync function _getAvailabilityWithHours(\n orgUnitLocation: OrgUnitLocation,\n productInventoryInformation: IProductInventoryInformation[],\n storeMap: Map,\n ctx: IActionContext, channelDeleiveryOptions: ChannelDeliveryOption | undefined): Promise {\n if (!orgUnitLocation || !orgUnitLocation.OrgUnitNumber) {\n return { OrgUnitAvailability: undefined };\n }\n\n return getStoreHoursAsync({ callerContext: ctx }, orgUnitLocation.OrgUnitNumber)\n .then((hours: StoreHours) => {\n const itemAvailabilities: ItemAvailability[] = [];\n if (productInventoryInformation &&\n storeMap) {\n productInventoryInformation.forEach(element => {\n if (element.InventLocationId && storeMap.has(element.InventLocationId) && element.InventLocationId === orgUnitLocation.InventoryLocationId) {\n itemAvailabilities.push({ AvailableQuantity: element.ProductAvailableQuantity?.AvailableQuantity });\n }\n });\n }\n\n const availability: OrgUnitAvailability = {\n OrgUnitLocation: orgUnitLocation,\n ItemAvailabilities: itemAvailabilities\n };\n\n if (hours && !(hours instanceof Error)) {\n return { OrgUnitAvailability: availability, StoreHours: hours, ProductInventoryInformation: productInventoryInformation, OrgUnitPickUpDeliveryModes: channelDeleiveryOptions };\n }\n\n return { OrgUnitAvailability: availability, ProductInventoryInformation: productInventoryInformation, OrgUnitPickUpDeliveryModes: channelDeleiveryOptions };\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby] error getting availability with hours');\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[GetFullAvailableInventoryNearby] error getting availability with hours');\n return { OrgUnitAvailability: {} };\n });\n}\n\n/**\n * Action method that obtains the channel delivery option information.\n * @param channelCollection The org unit channel Id list.\n * @param ctx The action context.\n */\nasync function _getLocationPickUpDeliveryModes(\n channelCollection: (number| undefined)[],\n ctx: IActionContext): Promise {\n if (channelCollection?.length === 0 || channelCollection === undefined) {\n return undefined;\n }\n\n const channelIdList: number[] = [];\n channelCollection?.map(id => {\n if (id !== undefined) {\n return channelIdList.push(id);\n }\n });\n\n // To get all channel pickup delivery mode filterOption should be 4\n return getChannelDeliveryOptionsAsync({ callerContext: ctx }, channelIdList, 4)\n .then((channelDeliveryOptions: ChannelDeliveryOption[]) => {\n\n if (channelDeliveryOptions && !(channelDeliveryOptions instanceof Error)) {\n return channelDeliveryOptions;\n }\n\n return undefined;\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby][getChannelDeliveryOptionsAsync] error getting availability with channel delivery options');\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[GetFullAvailableInventoryNearby] [getChannelDeliveryOptionsAsync] error getting availability with channel delivery options');\n return [];\n });\n}\n\n/**\n * The complete getFullAvailableInventoryNearby data action.\n */\nexport const getFullAvailableInventoryNearbyActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-full-available-inventory-nearby',\n action: >getFullAvailableInventoryNearbyAction,\n input: createGetFullAvailableInventoryNearbyInput\n});\n\nexport default getFullAvailableInventoryNearbyActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { CommerceListLine } from '@msdyn365-commerce/retail-proxy';\nimport { getByCustomerAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CommerceListsDataActions.g';\n\nimport { FullProductInput, getFullProducts, getProductDetailsCriteriaFromActionInput } from '.';\n\n/**\n * Input class for getActiveWishlistItems data action.\n */\nexport class ActiveWishlistInput implements IActionInput {\n public getCacheKey = () => 'ActiveWishlistItems';\n\n public getCacheObjectType = () => 'ActiveWishlistItems';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new ActiveWishlistInput();\n};\n\n/**\n * Calls the Retail API and returns a CommerceList object based on the passed GetCartInput.\n * @param input\n * @param ctx\n */\nexport async function getActiveWishlistItems(input: ActiveWishlistInput, ctx: IActionContext): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n if (!input) {\n throw new Error('[getActiveWishlistItems]No valid Input was provided, failing');\n }\n\n if (ctx.requestContext.user.isAuthenticated) {\n const wishlists = await getByCustomerAsync({ callerContext: ctx, queryResultSettings: {} }, null);\n\n if (wishlists && wishlists.length > 0) {\n const productInputs: FullProductInput[] = [];\n if (wishlists[0].CommerceListLines) {\n wishlists[0].CommerceListLines.forEach((commerceListLine: CommerceListLine) => {\n if (commerceListLine.ProductId) {\n productInputs.push(new FullProductInput(commerceListLine.ProductId, ctx.requestContext.apiSettings, getProductDetailsCriteriaFromActionInput(ctx)));\n }\n });\n }\n\n if (productInputs.length > 0) {\n return getFullProducts(productInputs, ctx)\n .then(products => {\n if (products) {\n return products;\n }\n return [];\n\n })\n .catch(error => {\n ctx.trace(error);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getActiveWishlistItems]Unable to hydrate cart with product information');\n throw new Error('[getActiveWishlistItems]Unable to hydrate cart with product information');\n });\n }\n ctx.trace('No productIds found for wishlist');\n\n } else {\n ctx.trace('[getActiveWishlistItems]Not able to get wishlists for the customer');\n return [];\n }\n }\n ctx.trace('[getActiveWishlistItems]User token not found for wishlists');\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-items-in-wishlist',\n action: >getActiveWishlistItems,\n input: createInput\n});\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { getActivePricesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { AffiliationLoyaltyTier, CustomerAffiliation, ProductPrice, ProjectionDomain, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport * as semver from 'semver';\n\nimport { getCustomer, getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from '.';\nimport { GetCustomerInput } from './get-customer';\n\n/**\n * Input class for the GetPriceForSelectedVariant Data Action.\n */\nexport class PriceForSelectedVariantInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public selectedProduct: SimpleProduct | undefined;\n\n public customerId?: string;\n\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, customerId?: string) {\n this.productId = productId;\n this.channelId = channelId;\n this.selectedProduct = selectedProduct;\n this.customerId = customerId || '';\n }\n\n public getCacheKey = () => 'PriceForSelectedVariant';\n\n public getCacheObjectType = () => 'Price';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The createInput method for the GetPriceForSelectedVariantDataAction.\n * @param inputData The input data for the createInput method.\n */\nexport const createActivePriceForSelectedVariantInput = (inputData: ICreateActionContext>): PriceForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new PriceForSelectedVariantInput(\n +productId,\n +inputData.requestContext.apiSettings.channelId,\n undefined);\n }\n throw new Error('Unable to create PriceForSelectedVariantInput, no productId found on module config or query');\n\n};\n\n/**\n * The Action Method for the GetPriceForSelectedVariant Data Action\n * Pulls the currently selected variant from the cache using the getSelectedVariant data action, and gets it's current contextual price\n * via the getActivePrice RetailServer API.\n * @param input\n * @param ctx\n */\nexport async function getPriceForSelectedVariantAction(\n input: PriceForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n const affliations: AffiliationLoyaltyTier[] = [];\n if (ctx.requestContext && ctx.requestContext.user && ctx.requestContext.user.isAuthenticated) {\n const customerInput = new GetCustomerInput(ctx.requestContext.apiSettings);\n const customer = await getCustomer(customerInput, ctx);\n if (customer && customer.CustomerAffiliations) {\n customer.CustomerAffiliations.forEach((affliation: CustomerAffiliation) => {\n const aff: AffiliationLoyaltyTier = { AffiliationId: affliation.RetailAffiliationId, CustomerId: customer.AccountNumber };\n affliations.push(aff);\n\n });\n }\n }\n return Promise.resolve()\n .then(() => {\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\n\n if (!activeProduct) {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\n\n return getSelectedVariant(selectedVariantInput, ctx);\n }\n\n return activeProduct;\n })\n .then((productResult: SimpleProduct | null) => {\n const projectDomain: ProjectionDomain = { ChannelId: +ctx.requestContext.apiSettings.channelId, CatalogId: +ctx.requestContext.apiSettings.catalogId };\n\n const activeProduct: SimpleProduct | undefined = productResult;\n if (activeProduct) {\n\n return getActivePricesAsync(\n { callerContext: ctx, queryResultSettings: {} },\n projectDomain,\n [activeProduct.RecordId],\n new Date(),\n input.customerId || null,\n affliations,\n true\n ).then(response => {\n if (response && response.length > 0) {\n const productPrice = response[0];\n\n // If RS Verison < 9.16.0 (aka 10.0.6), customer contextual price won't be\n // included so instead just use AdjustedPrice\n if (semver.lt(ctx.requestContext.apiSettings.retailServerProxyVersion, '9.16.0')) {\n productPrice.CustomerContextualPrice = productPrice.AdjustedPrice;\n }\n\n return productPrice;\n }\n throw new Error('[getPriceForSelectedVariantAction]Invalid response recieved from calculateProductPrice');\n });\n }\n\n return null;\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getPriceForSelectedVariantAction]Error executing action');\n throw new Error('[getPriceForSelectedVariantAction]Error executing action');\n });\n}\n\nexport const getPriceForSelectedVariantActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-price-for-selected-variant',\n action: >getPriceForSelectedVariantAction,\n input: createActivePriceForSelectedVariantInput\n});\n\nexport default getPriceForSelectedVariantActionDataAction;\n","var map = {\n\t\".\": \"aVE6\",\n\t\"./\": \"aVE6\",\n\t\"./index\": \"aVE6\",\n\t\"./index.js\": \"aVE6\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"T4xW\";","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IRefineFullProductSearchOutput } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductRefinerValue } from '@msdyn365-commerce/retail-proxy';\nimport { refineSearchByTextAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport { ProductDetailsCriteria } from './get-full-products';\nimport { parseSearchData } from './utilities/input-data-parser';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { getRefinedFullProducts, IRefinableProductsInput } from './utilities/refiner-utils';\nimport { getProductDetailsCriteriaFromActionInput } from './utilities/utils';\n\n/**\n * Input for refining products returned by the search text.\n */\nexport class FullProductsRefineSearchByTextInput implements IActionInput, IRefinableProductsInput {\n public readonly searchText: string;\n\n public readonly channelId?: number;\n\n public readonly refinementCriteria: ProductRefinerValue[];\n\n public readonly itemsPerPage?: number;\n\n public readonly skipCount?: number;\n\n public readonly catalogId: number;\n\n public productDetailsCriteria?: ProductDetailsCriteria;\n\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n constructor(\n queryResultSettingsProxy: QueryResultSettingsProxy,\n searchText?: string,\n channelId?: number,\n refinementCriteria?: ProductRefinerValue[],\n catalogId?: number,\n criteria?: ProductDetailsCriteria\n ) {\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.searchText = searchText || '';\n this.channelId = channelId;\n this.refinementCriteria = refinementCriteria || [];\n this.catalogId = catalogId || 0;\n this.productDetailsCriteria = criteria;\n }\n\n public getCacheKey = () => 'FullProductsRefineSearchByTextInputCache';\n\n public getCacheObjectType = () => 'FullProductsRefineSearchByTextInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates the input required to make the core action calls.\n * @param inputData\n */\nexport const createFullProductsRefineSearchByTextInput = (inputData: ICreateActionContext>): IActionInput => {\n const refinementCriteria = inputData.config && inputData.config.refinementCriteria;\n const queryResultSettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n if (!Array.isArray(refinementCriteria)) {\n return new FullProductsRefineSearchByTextInput(queryResultSettingsProxy);\n }\n\n const searchInputData = parseSearchData(inputData);\n const catalogId = inputData.requestContext.apiSettings.catalogId;\n const productDetailsCriteria = getProductDetailsCriteriaFromActionInput(inputData);\n\n return new FullProductsRefineSearchByTextInput(\n queryResultSettingsProxy,\n searchInputData.q,\n searchInputData.channelId,\n refinementCriteria,\n catalogId,\n productDetailsCriteria\n );\n};\n\n/**\n * Calls the refine-search-by-text action.\n * Based on search result calls get-full-products to get all the product details.\n * @param input\n * @param ctx\n */\nexport function getFullProductsByRefineSearchTextAction(\n input: FullProductsRefineSearchByTextInput,\n ctx: IActionContext\n): Promise {\n return getRefinedFullProducts(\n input,\n ctx,\n () => {\n return refineSearchByTextAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n input.channelId || 0,\n input.catalogId,\n input.searchText,\n input.refinementCriteria);\n }\n );\n}\n\nexport const getFullProductsByRefineSearchTextActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-full-products-by-refine-search-text',\n action: >getFullProductsByRefineSearchTextAction,\n input: createFullProductsRefineSearchByTextInput,\n isBatched: false\n});\n\nexport default getFullProductsByRefineSearchTextActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IRefineFullProductSearchOutput } from '@msdyn365-commerce/commerce-entities';\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { ProductRefinerValue, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\n\nimport getFullProducts, { FullProductInput, ProductDetailsCriteria } from '../get-full-products';\n\n/**\n * Common refinable products input includes both product detail criteria and refinement criteria.\n */\nexport interface IRefinableProductsInput {\n refinementCriteria: ProductRefinerValue[];\n productDetailsCriteria?: ProductDetailsCriteria;\n}\n\n/**\n * If refinement criteria is set, then gets refined products.\n * @param input Refinable products input.\n * @param ctx Action context.\n * @param getRefinedProducts Callback function to get a promise (e.g. RefineSearchByCategoryAsync, refineSearchByTextAsync)\n * that is executed to get refined products or full set of products.\n */\nexport async function getRefinedFullProducts(\n input: IRefinableProductsInput,\n ctx: IActionContext,\n getRefinedProducts: () => Promise\n): Promise {\n\n if (!input || !input.refinementCriteria) {\n ctx.trace('[getFullProductsByRefineSearchCategoryAction] Invalid input.');\n return {};\n }\n\n if (input.refinementCriteria.length === 0) {\n ctx.trace('[getFullProductsByRefineSearchCategoryAction] No refiners specified.');\n return {};\n }\n const { apiSettings } = ctx.requestContext;\n\n let fullProductInputs: FullProductInput[] = [];\n\n const searchResults = await getRefinedProducts();\n if (!searchResults) {\n ctx.telemetry.error('[getFullProductsByRefineSearchCategoryAction] no searchResults returned');\n } else {\n fullProductInputs = searchResults.map(\n (product: ProductSearchResult): FullProductInput => {\n return new FullProductInput(product.RecordId, apiSettings, input.productDetailsCriteria || new ProductDetailsCriteria());\n }\n );\n }\n\n if (fullProductInputs.length > 0) {\n const productResult = await getFullProducts(fullProductInputs, ctx);\n return {\n productSearchResult: productResult,\n refinementCriteria: input.refinementCriteria\n };\n }\n return {\n productSearchResult: [],\n refinementCriteria: input.refinementCriteria\n };\n\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport msdyn365Commerce, { IParameterizeFeatureFlags } from '@msdyn365-commerce/core';\n\nexport function parameterize(name: string = '', sep = '-', parameterizeFeatureFlags: IParameterizeFeatureFlags = {}, neutralizedName?: string) {\n // If neutralizedName flag enabled, we use neutralizedName to construct string\n const candidateName = (msdyn365Commerce.platformSettings && msdyn365Commerce.platformSettings.enableUrlLocalization || parameterizeFeatureFlags.enableUrlLocalization) ? name : neutralizedName || name;\n\n /*\n 1\t‘ ‘ (space)\t-> (single dash)\n 3\tAny character disallowed in URLs -> URL-encode\n 5\t‘ & ‘ (space ampersand space) -> (single dash)\n 6\t‘ - ‘ (space dash space) -> (single dash)\n 7\t‘ ‘ (2+ spaces) -> (single dash)\n 10\t[A-Z] (capital letters) -> [a-z] (lower-case)\n 12\tAny non-ASCII character outside of the set of disallowed characters -> URL-encode\n */\n if (parameterizeFeatureFlags.enableUrlEncoding || msdyn365Commerce.platformSettings && msdyn365Commerce.platformSettings.enableUrlEncoding) {\n // Replace url reserved characters with dash, and remove front and end dash;\n // &*!() reserved characters that can not be encoded by encodeURIComponent()\n return encodeURIComponent(candidateName.toLowerCase().replace(/[\\s!&'()*]+/g, '-').trim().replace(/-+/g, '-').replace(/^-+|-+$/g, ''));\n }\n return name\n .toLowerCase()\n .replace(/[^\\d_a-z\\-]+/g, ' ')\n .trim()\n .replace(/\\s+/g, sep);\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { getParameterizeFeatureFlags, getUrlSync, IActionContext, IParameterizeFeatureFlags } from '@msdyn365-commerce/core';\n\nimport { parameterize } from './parameterize';\n\ninterface ICategoryMap {\n [RecordId: number]: CategoryHierarchy;\n}\n\n/**\n * Builds slugs for category.\n * @param category\n * @param categoryMap\n * @param parameterizeFeatureFlags\n */\nexport function getCategorySlug(category: CategoryHierarchy, categoryMap: ICategoryMap, parameterizeFeatureFlags?: IParameterizeFeatureFlags): string {\n if (!category || !category.Name) {\n // Invalid category\n return '';\n }\n const categoryName = parameterize(category.Name, undefined, parameterizeFeatureFlags, category.NeutralizedName);\n if (!category.ParentCategory || category.ParentCategory === 0) {\n // Base case assign url\n category.Slug = category.Slug || `/${categoryName}`;\n } else if (category.ParentCategory) {\n category.Slug = category.Slug || `${getCategorySlug(categoryMap[category.ParentCategory], categoryMap, parameterizeFeatureFlags)}/${categoryName}`;\n }\n\n return category.Slug || '';\n}\n\n/**\n * Gets Url for category hierarchy. Returns string and adds url to Url property of category hierarchy.\n * @param category Category to generate URL for.\n * @param ctx\n * @param categoryMap Dictionary of all categories.\n */\nexport function getCategoryUrl(category: CategoryHierarchy, ctx?: IActionContext, categoryMap?: ICategoryMap): string | undefined {\n if (!category.Url && ctx && categoryMap) {\n if (!category.Slug) {\n const parameterizeFeatureFlags: IParameterizeFeatureFlags = ctx.requestContext ? getParameterizeFeatureFlags(ctx) : {};\n category.Slug = getCategorySlug(category, categoryMap, parameterizeFeatureFlags);\n }\n category.Url = getUrlSync('category', ctx, { category });\n }\n return category.Url;\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\n\n/**\n * Syncronously creates an invoice detail page url.\n * @param invoiceId Invoice Id.\n * @param ctx\n */\nexport function getInvoiceDetailsPageUrlSync(invoiceId: string, ctx: IActionContext): string {\n let url = getUrlSync('invoice-details', ctx) || '';\n url = url.includes('?') ? url.substr(0, url.indexOf('?')) : url;\n return `${url}?invoiceId=${invoiceId}`;\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Syncronously creates a product url.\n * @param product Simple product to get url from.\n * @param ctx\n * @param category Category to add to product url.\n */\nexport function getProductUrlSync(product: SimpleProduct, ctx: IActionContext, category?: CategoryHierarchy): string {\n const selectedProduct = { ...product, RecordId: product.MasterProductId || product.RecordId };\n\n return getProductPageUrlSync(selectedProduct.Name || '', selectedProduct.RecordId, ctx, category)!;\n}\n\n/**\n * Syncronously creates a product detail page url.\n * @param name Simple product name.\n * @param recordId Record id of product.\n * @param ctx\n * @param category\n */\nexport function getProductPageUrlSync(name: string, recordId: number, ctx: IActionContext, category?: CategoryHierarchy): string {\n return getUrlSync('product', ctx, {\n product: { Name: name || '', RecordId: recordId },\n category\n })!;\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { Cart, ChannelConfiguration, LoyaltyCard, LoyaltyPointRedemptionEstimate } from '@msdyn365-commerce/retail-proxy';\nimport { getMaxLoyaltyPointsToRedeemForTransactionBalanceAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { getOrgUnitConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\n\nimport { buildCacheKey, getLoyalty, GetLoyaltyCardInput } from '.';\n\n/**\n * Input class for the getLoyaltyCard data action.\n */\nexport class GetLoyaltyTransactionEstimationInput implements IActionInput {\n public userAccountNumber?: string;\n\n public apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`GetLoyaltyCardTransactionEstimation-${this.userAccountNumber}`, this.apiSettings);\n\n public getCacheObjectType = () => 'GetLoyaltyCardTransactionEstimation';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CreateInput method for the getLoyaltyCard method.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetLoyaltyTransactionEstimationInput = (inputData: ICreateActionContext): GetLoyaltyTransactionEstimationInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n return new GetLoyaltyTransactionEstimationInput(inputData.requestContext.apiSettings);\n }\n\n return new GetLoyaltyTransactionEstimationInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * The action method for the getLoyaltyCard data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function getLoyaltyTransactionEstimationAction(input: GetLoyaltyTransactionEstimationInput, ctx: IActionContext): Promise {\n\n if (!ctx.requestContext.user.isAuthenticated) {\n return {};\n }\n\n const promises: [Promise, Promise, Promise] = [_getCart(ctx), _getLoyalty(input, ctx), _getOrgUnits(ctx)];\n return Promise.all(promises)\n .then((result) => {\n if (result && result.length >= 2 && result[1].CardNumber) {\n return getMaxLoyaltyPointsToRedeemForTransactionBalanceAsync({ callerContext: ctx }, result[0].Id, result[1].CardNumber!, result[2].Currency || '')\n .then(points => {\n return points;\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('Error getting Loyalty Point Redemption Estimate');\n throw new Error('Error getting Loyalty Point Redemption Estimate');\n });\n }\n return {};\n })\n .catch(error => {\n return {};\n });\n}\n\nasync function _getCart(ctx: IActionContext): Promise {\n const cartState = await getCartState(ctx);\n\n return cartState.cart;\n}\n\nasync function _getLoyalty(input: GetLoyaltyTransactionEstimationInput, ctx: IActionContext): Promise {\n const loyaltyCardInput = new GetLoyaltyCardInput(input.apiSettings);\n return getLoyalty(loyaltyCardInput, ctx);\n}\n\nasync function _getOrgUnits(ctx: IActionContext): Promise {\n return getOrgUnitConfigurationAsync({ callerContext: ctx, queryResultSettings: {} });\n}\n\n/**\n * The getLoyaltyTransactionEstimation data action\n * Returns the loyalty card belonging to the customer.\n */\nexport const getLoyaltyTransactionEstimationActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-loyalty-transaction-estimation',\n action: >getLoyaltyTransactionEstimationAction,\n input: <(args: ICreateActionContext) => IActionInput>createGetLoyaltyTransactionEstimationInput\n});\n\nexport default getLoyaltyTransactionEstimationActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport addAddress, { AddressManagementInput } from './add-address';\nimport addOrganizationUser, { AddOrganizationUserInput } from './add-organization-user';\nimport checkout, { CheckOutInput } from './checkout';\nimport deleteAddress from './delete-address';\nimport deleteOrganizationUser, { DeleteOrganizationUserInput } from './delete-organization-user';\nimport editOrganizationUser, { EditOrganizationUserInput } from './edit-organization-user';\nimport { GenericInput, getGenericAction } from './generic-data-action';\nimport getAddress, { AddressInput } from './get-address';\nimport getAttributeDefinitions, { GetAttributeDefinitionsInput } from './get-attribute-definitions';\nimport getAvailabilitiesForCartLineItems, { ProductAvailabilitiesForCartLineItems } from './get-availabilities-cartlines';\nimport getCategories from './get-categories';\nimport getCategoriesHierarchy, { CategoriesInput } from './get-categories-hierarchy';\nimport getCategoryPaths from './get-category-paths';\nimport getChannelDeliveryOptionConfiguration, { GetChannelDeliveryConfigurationInput } from './get-channel-delivery-option-configuration';\nimport getCheckoutCart, { GetCheckoutCartInput } from './get-checkout-cart';\nimport getCurrentCategory, { CurrentCategoryInput } from './get-current-category';\nimport getCurrentCategoryHierarchy from './get-current-category-hierarchy';\nimport getCustomer, { GetCustomerInput } from './get-customer';\nimport getCustomerBalance, { GetCustomerBalanceInput } from './get-customer-balance';\nimport getCustomerLoyaltyCards from './get-customer-loyalty-cards';\nimport getDeliveryOptionsForCartLineItems, { ProductDeliveryOptionsForCartLineItems } from './get-delivery-options-for-cartlines';\nimport getDeliveryOptionsForSelectedVariant, { GetDeliveryOptionsForSelectedVariantInput } from './get-delivery-options-for-selected-variant';\nimport getDimensionsForSelectedVariant, { GetDimensionsForSelectedVariantInput } from './get-dimensions-for-selected-variant';\nimport getFeatureState, { createGetFeatureStateInput } from './get-feature-state';\nimport getFullAvailableInventoryNearby, { GetFullAvailableInventoryNearbyInput } from './get-full-available-inventory-nearby';\nimport getFullProducts, { FullProductInput, ProductDetailsCriteria } from './get-full-products';\nimport getFullProductByRefineSearchCategory, {\n FullProductsRefineSearchByCategoryInput\n} from './get-full-products-by-refine-search-category';\nimport getFullProductByRefineSearchText, {\n FullProductsRefineSearchByTextInput\n} from './get-full-products-by-refine-search-text';\nimport getActiveWishlistItems, { ActiveWishlistInput } from './get-items-in-wishlist';\nimport getList, { ListInput } from './get-list';\nimport getLoyalty, { GetLoyaltyCardInput } from './get-loyalty-card';\nimport getLoyaltyTransactionEstimation, { GetLoyaltyTransactionEstimationInput } from './get-loyalty-transaction-estimation';\nimport getMediaLocationsById, { MediaLocationsByIdInput } from './get-media-locations-by-id';\nimport getMediaLocationsForSelectedVariant, { MediaLocationsForSelectedVariantInput } from './get-media-locations-for-selected-variant';\nimport getOrderHistory from './get-order-history';\nimport getOrgUnitConfiguration from './get-org-unit-configuration';\nimport getOrganizationUsers, { OrganizationUsersInput } from './get-organization-users';\nimport getOrganizationUsersCount from './get-organization-users-count';\nimport getOrganizationWideOrderHistory, { GetOrganizationWideOrderHistoryInput } from './get-organization-wide-order-history';\nimport getPriceForSelectedVariant, { PriceForSelectedVariantInput } from './get-price-for-selected-variant';\nimport getProductAvailabilitiesForSelectedVariant, { ProductAvailabilitiesForSelectedVariantInput } from './get-product-availabilities-for-selected-variant';\nimport getProductsByCategory from './get-products-by-category';\nimport getActiveCartProductsAction, { ActiveCartProductsInput } from './get-products-in-active-cart';\nimport getPromotionOptionsForCartLineItems, { PromotionOptionsForCartLineItems } from './get-promotion-options-for-cartlines';\nimport getRatingsSummary from './get-ratings-summary';\nimport { GetRatingsSummaryInput } from './get-ratings-summary-input';\nimport getRefinersByCategory, { createRefinersByCategoryInput, RefinersByCategoryInput } from './get-refiners-by-category';\nimport getRefinersByText, { createRefinersByTextInput, RefinersByTextInput } from './get-refiners-by-text';\nimport getRelatedProducts, { GetRelatedProductsInput } from './get-related-products';\nimport getScanResult, { GetScanResultInput } from './get-scan-results';\nimport getSearchConfiguration, { SearchConfigurationInput } from './get-search-configuration';\nimport getSelectedVariant, { SelectedVariantInput } from './get-selected-variant';\nimport getSimpleProducts, { getSimpleProductsAction, ProductInput } from './get-simple-products';\nimport getOrgUnitLocationsByArea, { GetOrgUnitLocationsByAreaInput } from './get-store-location-information';\nimport getWishlistByCustomerId from './get-wishlist-by-customer-id';\nimport getInvoiceDetails, { GetInvoiceDetailsInput } from './invoices/get-invoice-details';\nimport getInvoices, { GetInvoicesInput } from './invoices/get-invoices';\nimport issueLoyalty, { IssueLoyaltyInput } from './issue-loyalty';\nimport addItemToOrderTemplate, { AddItemToOrderTemplateInput } from './order-templates/add-item-to-order-template';\nimport addOrderTemplateToCartAction, { AddOrderTemplateToCartInput } from './order-templates/add-order-template-to-cart';\nimport createOrderTemplate, { CreateOrderTemplateInput } from './order-templates/create-order-template';\nimport getFullOrderTemplate, { GetFullOrderTemplateInput } from './order-templates/get-full-order-template';\nimport getFullOrderTemplates, { GetFullOrderTemplatesInput } from './order-templates/get-full-order-templates';\nimport getOrderTemplates, { createGetOrderTemplatesInput, GetOrderTemplatesInput } from './order-templates/get-order-templates';\nimport getOrderTemplatesPreview, { GetOrderTemplatesPreviewInput } from './order-templates/get-order-templates-preview';\nimport getPaginatedOrderTemplateLinesAction, { GetPaginatedOrderTemplateLinesInput } from './order-templates/get-paginated-order-template-lines';\nimport updateOrderTemplateHeader, { UpdateOrderTemplateHeaderInput } from './order-templates/update-order-template-header';\nimport updateOrderTemplateAction, { UpdateOrderTemplateInput } from './order-templates/update-order-template-line';\nimport refineSearchByCategory, { RefineSearchByCriteriaInput } from './refine-search-by-category';\nimport searchByText from './search-by-text';\nimport updateAddress from './update-address';\nimport updateCustomerAttributes, { updateCustomerAttributesInput } from './update-customer-attributes';\nimport updateCustomerPersonalization, { updateCustomerPersonalizationInput } from './update-customer-personalization';\nimport updatePrimaryAddress from './update-primary-address';\nimport { IFullOrgUnitAvailability } from './utilities/full-org-unit-availability';\nimport { getRnrAuthEndpointId, getRnrEndpointId, getRnrPartnerId } from './utilities/getRnrKeys';\nimport { IProductInventoryInformation } from './utilities/product-inventory-information';\nimport { mapProductInventoryInformation } from './utilities/product-inventory-utils';\nimport { IScanResultWithProduct } from './utilities/scan-result-with-product';\nimport {\n buildCacheKey,\n buildCacheKeyWithUrlTokens,\n buildCartLine,\n buildQueryResultSettings,\n buildWishlistLine,\n generateImageUrl,\n generateProductImageUrl,\n getFallbackImageUrl,\n getProductDetailsCriteriaFromActionInput,\n getSelectedProductIdFromActionInput,\n wrapInRejectedAsyncResult,\n wrapInResolvedAsyncResult\n} from './utilities/utils';\n\nexport * from './utilities';\nexport * from './utilities/order-templates';\nexport * from './utilities/Url-builder';\n\nexport {\n ActiveCartProductsInput,\n ActiveWishlistInput,\n addAddress,\n addItemToOrderTemplate,\n AddItemToOrderTemplateInput,\n addOrderTemplateToCartAction,\n AddOrderTemplateToCartInput,\n addOrganizationUser,\n AddOrganizationUserInput,\n AddressInput,\n AddressManagementInput,\n buildCacheKey,\n buildCacheKeyWithUrlTokens,\n buildCartLine,\n buildQueryResultSettings,\n buildWishlistLine,\n CategoriesInput,\n checkout,\n CheckOutInput,\n createGetFeatureStateInput,\n createGetOrderTemplatesInput,\n createOrderTemplate,\n CreateOrderTemplateInput,\n createRefinersByCategoryInput,\n createRefinersByTextInput,\n CurrentCategoryInput,\n deleteAddress,\n deleteOrganizationUser,\n DeleteOrganizationUserInput,\n editOrganizationUser,\n EditOrganizationUserInput,\n FullProductInput,\n FullProductsRefineSearchByCategoryInput,\n FullProductsRefineSearchByTextInput,\n generateImageUrl,\n generateProductImageUrl,\n GenericInput,\n getActiveCartProductsAction,\n getActiveWishlistItems,\n getAddress,\n getAttributeDefinitions,\n GetAttributeDefinitionsInput,\n getAvailabilitiesForCartLineItems,\n getCategories,\n getCategoriesHierarchy,\n getCategoryPaths,\n GetChannelDeliveryConfigurationInput,\n getChannelDeliveryOptionConfiguration,\n getCheckoutCart,\n GetCheckoutCartInput,\n getCurrentCategory,\n getCurrentCategoryHierarchy,\n getCustomer,\n getCustomerBalance,\n GetCustomerBalanceInput,\n GetCustomerInput,\n getCustomerLoyaltyCards,\n getDeliveryOptionsForCartLineItems,\n getDeliveryOptionsForSelectedVariant,\n GetDeliveryOptionsForSelectedVariantInput,\n getDimensionsForSelectedVariant,\n GetDimensionsForSelectedVariantInput,\n getFallbackImageUrl,\n getFeatureState,\n getFullAvailableInventoryNearby,\n GetFullAvailableInventoryNearbyInput,\n getFullOrderTemplate,\n GetFullOrderTemplateInput,\n getFullOrderTemplates,\n GetFullOrderTemplatesInput,\n getFullProductByRefineSearchCategory,\n getFullProductByRefineSearchText,\n getFullProducts,\n getGenericAction,\n getInvoiceDetails,\n GetInvoiceDetailsInput,\n getInvoices,\n GetInvoicesInput,\n getList,\n getLoyalty,\n GetLoyaltyCardInput,\n getLoyaltyTransactionEstimation,\n GetLoyaltyTransactionEstimationInput,\n getMediaLocationsById,\n getMediaLocationsForSelectedVariant,\n getOrderHistory,\n getOrderTemplates,\n GetOrderTemplatesInput,\n getOrderTemplatesPreview,\n GetOrderTemplatesPreviewInput,\n getOrganizationUsers,\n getOrganizationUsersCount,\n getOrganizationWideOrderHistory,\n GetOrganizationWideOrderHistoryInput,\n getOrgUnitConfiguration,\n getOrgUnitLocationsByArea,\n GetOrgUnitLocationsByAreaInput,\n getPaginatedOrderTemplateLinesAction,\n GetPaginatedOrderTemplateLinesInput,\n getPriceForSelectedVariant,\n getProductAvailabilitiesForSelectedVariant,\n getProductDetailsCriteriaFromActionInput,\n getProductsByCategory,\n getPromotionOptionsForCartLineItems,\n getRatingsSummary,\n GetRatingsSummaryInput,\n getRefinersByCategory,\n getRefinersByText,\n getRelatedProducts,\n GetRelatedProductsInput,\n getRnrAuthEndpointId,\n getRnrEndpointId,\n getRnrPartnerId,\n getScanResult,\n GetScanResultInput,\n getSearchConfiguration,\n getSelectedProductIdFromActionInput,\n getSelectedVariant,\n getSimpleProducts,\n getSimpleProductsAction,\n getWishlistByCustomerId,\n IFullOrgUnitAvailability,\n IProductInventoryInformation,\n IScanResultWithProduct,\n issueLoyalty,\n IssueLoyaltyInput,\n ListInput,\n mapProductInventoryInformation,\n MediaLocationsByIdInput,\n MediaLocationsForSelectedVariantInput,\n OrganizationUsersInput,\n PriceForSelectedVariantInput,\n ProductAvailabilitiesForCartLineItems,\n ProductAvailabilitiesForSelectedVariantInput,\n ProductDeliveryOptionsForCartLineItems,\n ProductDetailsCriteria,\n ProductInput,\n PromotionOptionsForCartLineItems,\n RefinersByCategoryInput,\n RefinersByTextInput,\n refineSearchByCategory,\n RefineSearchByCriteriaInput,\n searchByText,\n SearchConfigurationInput,\n SelectedVariantInput,\n updateAddress,\n updateCustomerAttributes,\n updateCustomerAttributesInput,\n updateCustomerPersonalization,\n updateCustomerPersonalizationInput,\n updateOrderTemplateAction,\n updateOrderTemplateHeader,\n UpdateOrderTemplateHeaderInput,\n UpdateOrderTemplateInput,\n updatePrimaryAddress,\n wrapInRejectedAsyncResult,\n wrapInResolvedAsyncResult };\n\nexport { IQueryResultSettingsModuleConfig } from './utilities/IQueryResultSettingsModuleConfig';\nexport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { RatingsSummary } from '@msdyn365-commerce/commerce-entities';\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric, sendRequest } from '@msdyn365-commerce/core';\n\nimport { GetRatingsSummaryInput, getSelectedProductIdFromActionInput } from '.';\nimport { getRnrEndpointId, getRnrPartnerId } from './utilities/getRnrKeys';\n\nexport const createInput = (input: ICreateActionContext>): IActionInput => {\n const productId = getSelectedProductIdFromActionInput(input);\n if (productId) {\n return new GetRatingsSummaryInput(productId, getRnrPartnerId(input), getRnrEndpointId(input));\n }\n throw new Error('[GetRatingsSummary] Not all necessary parameters found while creating Input for getRatingsSummaryApi');\n};\n\n/**\n * This function gets the ratings summary.\n * @param input\n * @param ctx\n */\nasync function getRatingsSummary(input: GetRatingsSummaryInput, ctx: IActionContext): Promise {\n if (!inputIsValid(input)) {\n ctx.trace('[GetRatingsSummary] Failed to get ratings summary for product');\n return {};\n }\n\n const requestUrl = `${input.serviceEndpoint}/v2.0/ratings/product/${input.productId}/summary?` +\n `tenantId=${input.tenantId}`;\n return sendRequest(requestUrl, 'get').then((response) => {\n return response.data;\n }).catch((error) => {\n ctx.trace('[GetRatingsSummary] Failed to get ratings summary for product');\n throw error;\n });\n}\n\nfunction inputIsValid(input: GetRatingsSummaryInput): boolean {\n return input && input.productId.length > 0 && input.tenantId.length > 0;\n}\n\nexport const getRatingsSummaryDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-ratings-summary',\n action: >getRatingsSummary,\n input: createInput\n});\n\nexport default getRatingsSummaryDataAction;\n","\n/**\n * Copyright (c) 2018 Microsoft Corporation\n * Modules Registration\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n */\n\nconst universal = require('react-universal-component').default;\n\n/**\n * Register all available modules\n */\nexport const registerAllModules = (requiredModules) => {\n let binding = { modules: {}, dataActions: {} };\n const { log, error } = console;\n const detailedWebpackError = (msg, errorObject) => { error(msg); error(errorObject); process.env.NODE_ENV !== 'development' && error('Run in dev mode to see full list of errors'); process.exit(50); }\n const handleError = (modPath, errObject) => {\n detailedWebpackError('Error with path: ' + modPath, errObject);\n }\n if (requiredModules) {\n requiredModules = requiredModules.map((module) => module.toLowerCase());\n }\n const isNotRegistered = (moduleName) => {\n return !requiredModules || requiredModules.length <= 0 || requiredModules.findIndex((module) => module === moduleName) !== -1;\n };\n\n try {\n\n\n \n } catch (e) {\n handleError('-', e);\n }\n \n return binding;\n};","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { FullProduct, IRefineFullProductSearchOutput } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductRefinerValue, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { refineSearchByCategoryAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport getFullProducts, { FullProductInput, ProductDetailsCriteria } from './get-full-products';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { getProductDetailsCriteriaFromActionInput } from './utilities/utils';\n\n/**\n * Refine search for full products input.\n */\nexport class FullProductsRefineSearchByCategoryInput implements IActionInput {\n public readonly categoryId?: number;\n\n public readonly channelId?: number;\n\n public readonly refinementCriteria: ProductRefinerValue[];\n\n public readonly catalogId: number;\n\n public ProductDetailsCriteria?: ProductDetailsCriteria;\n\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n constructor(\n queryResultSettingsProxy: QueryResultSettingsProxy,\n categoryId?: number,\n channelId?: number,\n refinementCriteria?: ProductRefinerValue[],\n catalogId?: number,\n criteria?: ProductDetailsCriteria\n\n ) {\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.categoryId = categoryId;\n this.channelId = channelId;\n this.refinementCriteria = refinementCriteria || [];\n this.catalogId = catalogId || 0;\n this.ProductDetailsCriteria = criteria;\n }\n\n public getCacheKey = () => 'FullProductsRefineSearchByCategoryInputCache';\n\n public getCacheObjectType = () => 'FullProductsRefineSearchByCategoryInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates the input required to make the core action calls.\n * @param inputData\n */\nexport const createFullProductsRefineSearchByCategoryInput = (inputData: ICreateActionContext>): IActionInput => {\n const refinementCriteria = inputData.config && inputData.config.refinementCriteria;\n const queryResultSettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n if (!Array.isArray(refinementCriteria)) {\n return new FullProductsRefineSearchByCategoryInput(queryResultSettingsProxy);\n }\n\n if (inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.categoryId) {\n const categoryId = Number(inputData.requestContext.query.categoryId);\n const channelId = inputData.requestContext.apiSettings.channelId;\n const catalogId = inputData.requestContext.apiSettings.catalogId;\n const productDetailsCriteria = getProductDetailsCriteriaFromActionInput(inputData);\n return new FullProductsRefineSearchByCategoryInput(\n queryResultSettingsProxy,\n categoryId,\n +channelId,\n refinementCriteria,\n catalogId,\n productDetailsCriteria\n );\n }\n\n throw new Error('Please specify categoryId, refinerId, and refinerSourceValue query string in request.');\n};\n\n/**\n * Calls the refine-search-by-category action.\n * Based on search result calls get-full-products to get all the product details.\n * @param input\n * @param ctx\n */\nexport async function getFullProductsByRefineSearchCategoryAction(\n input: FullProductsRefineSearchByCategoryInput,\n ctx: IActionContext\n): Promise {\n if (!input || !input.refinementCriteria) {\n ctx.trace('[getFullProductsByRefineSearchCategoryAction] Invalid input.');\n return {};\n }\n\n const hasSortingColumn = input.queryResultSettingsProxy.QueryResultSettings &&\n input.queryResultSettingsProxy.QueryResultSettings.Sorting &&\n input.queryResultSettingsProxy.QueryResultSettings.Sorting.Columns &&\n input.queryResultSettingsProxy.QueryResultSettings.Sorting.Columns.length > 0;\n if (input.refinementCriteria.length === 0 && !hasSortingColumn) {\n ctx.telemetry.trace('[getFullProductsByRefineSearchCategoryAction] No refiners or sorting specified.');\n return {};\n }\n const { apiSettings } = ctx.requestContext;\n\n let refinementCriteria: ProductRefinerValue[] = [];\n const fullProductInputs = await refineSearchByCategoryAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n input.channelId || 0,\n input.catalogId,\n input.categoryId || 0,\n input.refinementCriteria\n ).then(searchResults => {\n refinementCriteria = input.refinementCriteria;\n return searchResults.map(\n (product: ProductSearchResult): FullProductInput => {\n return new FullProductInput(product.RecordId, apiSettings, input.ProductDetailsCriteria || new ProductDetailsCriteria());\n }\n );\n });\n\n if (fullProductInputs.length > 0) {\n const productResult = await >getFullProducts(fullProductInputs, ctx);\n return {\n productSearchResult: productResult,\n refinementCriteria\n };\n }\n return {\n productSearchResult: [],\n refinementCriteria\n };\n\n}\n\nexport const getFullProductsByRefineSearchCategoryActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-full-products-by-refine-search-category',\n action: >getFullProductsByRefineSearchCategoryAction,\n input: createFullProductsRefineSearchByCategoryInput,\n isBatched: false\n});\n\nexport default getFullProductsByRefineSearchCategoryActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { ProductAvailableQuantity, ProductDeliveryOptions } from '@msdyn365-commerce/retail-proxy';\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport { ActiveCartProductsInput, buildCacheKey, getActiveCartProductsAction } from '.';\n\n/**\n * Input class for delivery options for items in cart.\n */\nexport class ProductDeliveryOptionsForCartLineItems implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('ActiveCartLineItemsDeliveryOptions', this.apiSettings);\n\n public getCacheObjectType = () => 'ActiveCartLineItemsDeliveryOptions';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst createInput = (inputData: ICreateActionContext>) => {\n return new ProductDeliveryOptionsForCartLineItems(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail API to get the delivery options for items in the cart.\n * @param input\n * @param ctx\n */\nexport async function getDeliveryOptionsForCartLineItems(input: ProductDeliveryOptionsForCartLineItems, ctx: IActionContext): Promise {\n // If no input is provided fail out\n if (!input) {\n throw new Error('[getDeliveryOptionsForCartLineItems]No valid Input was provided, failing');\n }\n const cartState = await getCartState(ctx);\n const cart = cartState.cart;\n const products = await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx);\n\n if (!cart || !products || products.length === 0) {\n ctx.trace('[getDeliveryOptionsForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\n return [];\n }\n\n return getDeliveryOptionsAsync({ callerContext: ctx, queryResultSettings: {} }, products.map(x => x.RecordId), {}, null)\n .then(result => {\n return result;\n }).catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getDeliveryOptionsForCartLineItems]Error executing action');\n throw new Error('[getDeliveryOptionsForCartLineItems]Error executing action');\n });\n}\n\nexport const getDeliveryOptionsForCartLineItemsDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-delivery-options-for-cartlines',\n action: >getDeliveryOptionsForCartLineItems,\n input: createInput\n});\n\nexport default getDeliveryOptionsForCartLineItemsDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IPromiseQueue, PromiseBodyWrapper, PromiseRejectType, PromiseResolveType } from './base-promise-queue';\n\n/**\n * Represents an inner node which is stored in a promise queue.\n * Used internally in the PromiseQueue implementation.\n * @author Bohdan Yevchenko \n */\nclass PromiseQueueElement {\n /**\n * The body of a wrapper-function which contains a call to the promise which has to be executed in the queue.\n */\n public readonly body: PromiseBodyWrapper;\n\n /**\n * Method that resolves the promise after the promise from the body is resolved.\n */\n public readonly resolve: PromiseResolveType;\n\n /**\n * Method that rejects the promise after the promise from the body is rejected.\n */\n public readonly reject: PromiseRejectType;\n\n /**\n * Initializes queue element with the given data.\n * @param {PromiseBodyWrapper} body The body of a wrapper-function which contains a call to the promise which has to be executed in the queue.\n * @param {PromiseResolveType} resolve Method that resolves the promise after the promise from the body is resolved.\n * @param {PromiseRejectType} reject Method that rejects the promise after the promise from the body is rejected.\n */\n public constructor(\n body: PromiseBodyWrapper,\n resolve: PromiseResolveType,\n reject: PromiseRejectType) {\n\n this.body = body;\n this.resolve = resolve;\n this.reject = reject;\n }\n}\n\n/**\n * Represents a FIFO basic queue over promises.\n * @author Bohdan Yevchenko \n */\nexport class PromiseQueue implements IPromiseQueue {\n /**\n * A list of promises waiting for execution.\n */\n protected readonly _queue: PromiseQueueElement[];\n\n /**\n * Defines whether the queue is processing some element.\n */\n protected _isBusy: boolean;\n\n /**\n * Defines whether the queue can start processing new element.\n */\n private get _canProcess(): boolean {\n return !this._isBusy && this._queue.length > 0;\n }\n\n /**\n * Creates a new instance of PromiseQueue.\n */\n public constructor() {\n this._queue = [];\n this._isBusy = false;\n }\n\n /**\n * Adds promise to the queue and automatically starts the queue execution.\n * @param {PromiseBodyWrapper} promiseBody\n * The body of a function which contains a call to the promise which has to be executed in the queue.\n */\n public async enqueue(promiseBody: PromiseBodyWrapper): Promise {\n return new Promise(async (resolve, reject) => {\n this._queue.push(new PromiseQueueElement(promiseBody, resolve, reject));\n await this._dequeue();\n });\n }\n\n /**\n * If the queue is free, starts processing the first element in the queue and waits until all the elements are processed.\n * Otherwise (if busy or has no elements to process), does nothing.\n */\n private async _dequeue(): Promise {\n // Skip if queue is not able to process any elements.\n if (!this._canProcess) {\n return;\n }\n\n // Lock queue to prevent parallel execution.\n this._isBusy = true;\n\n // Retrieve an element from the waiting queue and start processing.\n const element: PromiseQueueElement = this._queue.shift()!;\n await this._processElement(element);\n\n // Continue executing the subsequent queue elements.\n await this._processNext();\n }\n\n /**\n * Executes the given wrapper over the promise and calls initial resolve/reject correspondingly.\n * @param {PromiseQueueElement} element The queue element which should be processed now.\n */\n private async _processElement(element: PromiseQueueElement): Promise {\n try {\n await element.body().then(element.resolve).catch(element.reject);\n } catch (error) {\n element.reject(error);\n }\n }\n\n /**\n * Unlocks the queue and tries to process the next element in the queue.\n */\n private async _processNext(): Promise {\n this._isBusy = false;\n await this._dequeue();\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { Address } from '@msdyn365-commerce/retail-proxy';\n\nimport getCustomer, { GetCustomerInput } from './get-customer';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for the getAddress data action.\n */\nexport class AddressInput implements IActionInput {\n public userAccountNumber?: string;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`GetAddress-${this.userAccountNumber}`, this.apiSettings);\n\n public getCacheObjectType = () => 'GetAddress';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CreateInput method for the getAddress method.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetAddressInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create address input. User is not authenticated.');\n }\n\n return new AddressInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * The action method for the getAddress data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function getAddressAction(input: AddressInput, ctx: IActionContext): Promise {\n const customerInput = new GetCustomerInput(ctx.requestContext.apiSettings, input.userAccountNumber);\n const customer = await getCustomer(customerInput, ctx);\n\n if (!customer) {\n throw new Error('Not able to get customer');\n }\n\n return customer.Addresses || [];\n}\n\n/**\n * The getAddress data action\n * Gets a customers information via the read RetailServer API\n * Returns address information associated with the retrieved customer.\n */\nexport const getAddressActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-address',\n action: >getAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>createGetAddressInput\n});\n\nexport default getAddressActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { searchByCategoryAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport getCurrentCategory, { CurrentCategoryInput } from './get-current-category';\nimport getProducts, { ProductInput } from './get-simple-products';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Product by category ID Input action.\n */\nexport class ProductsByCategoryInput implements IActionInput {\n public categoryId?: number;\n\n public categorySlug?: string;\n\n public categoryName?: string;\n\n public catalogId: number;\n\n public currentCategory: CurrentCategoryInput;\n\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(category: CurrentCategoryInput, apiSettings: ICommerceApiSettings, queryResultSettingsProxy: QueryResultSettingsProxy) {\n this.apiSettings = apiSettings;\n this.currentCategory = category;\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.catalogId = apiSettings.catalogId;\n this.categoryId = category.categoryId;\n this.categorySlug = category.categorySlug;\n }\n\n public getCacheKey = () => buildCacheKey(`${this.categoryId || this.categorySlug}|${this.catalogId}|${this.queryResultSettingsProxy.cacheKeyHint}`, this.apiSettings);\n\n public getCacheObjectType = () => 'Products-From-Search';\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * CreateInput method for the getProductsByCategory data aciton.\n * @param inputData\n */\nexport const createGetProductsByCategoryInput = (inputData: ICreateActionContext>): IActionInput => {\n if (inputData && inputData.requestContext) {\n const currentCategory = new CurrentCategoryInput(inputData.requestContext);\n const queryResultSettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n return new ProductsByCategoryInput(\n currentCategory,\n inputData.requestContext.apiSettings,\n queryResultSettingsProxy\n );\n }\n\n throw new Error('Please specify categoryId query string in request.');\n};\n\n/**\n * Action method for the getProductsByCategory data action.\n * @param input\n * @param ctx\n */\nexport async function getProductsByCategoryAction(input: ProductsByCategoryInput, ctx: IActionContext): Promise {\n const { apiSettings } = ctx.requestContext;\n let categoryId = input.currentCategory.categoryId;\n if (input.currentCategory.categorySlug && !categoryId) {\n const category = await getCurrentCategory(input.currentCategory, ctx);\n if (!category) {\n ctx.trace('[getProductsByCategoryAction] Unable to find category');\n return [];\n }\n categoryId = category.RecordId;\n }\n\n const productInputs = await searchByCategoryAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n +apiSettings.channelId,\n input.catalogId,\n categoryId || 0\n ).then(productSearchResults => {\n return productSearchResults.map(\n (product: ProductSearchResult): ProductInput => {\n return new ProductInput(product.RecordId, apiSettings);\n }\n );\n });\n\n if (productInputs.length > 0) {\n return await getProducts(productInputs, ctx);\n }\n return [];\n\n}\n\n/**\n * The getProductsByCategory data action\n * Retrieves the current category of the request via the getCurrentCategory data action\n * Then calls the searchByCategory RetailServer API to get a list of products associated with\n * the current category, and finally fully hydrates the data for those prodcuts via the\n * getProducts data action, returning a list of SimpleProducts within the current category.\n */\nexport const getProductsByCategoryActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-products-by-category',\n action: >getProductsByCategoryAction,\n input: createGetProductsByCategoryInput\n});\n\nexport default getProductsByCategoryActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { ProductAvailableQuantity, ProductWarehouseInventoryAvailability } from '@msdyn365-commerce/retail-proxy';\n\nimport { IProductInventoryInformation } from './product-inventory-information';\n\n/**\n * The function that maps a ProductWareHouse object into a ProductAvailabilityQuantity.\n * @param ctx\n * @param productsWarehouseInventory\n */\nexport function mapProductInventoryInformation(ctx: IActionContext, productsWarehouseInventory?: ProductWarehouseInventoryAvailability[]): IProductInventoryInformation[] {\n const productInventoryInformation: IProductInventoryInformation[] = [];\n\n if (ctx.requestContext.app.config.enableStockCheck === undefined || ctx.requestContext.app.config.enableStockCheck === false) {\n return productInventoryInformation;\n }\n\n if (productsWarehouseInventory && productsWarehouseInventory.length > 0) {\n for (const product of productsWarehouseInventory) {\n switch (ctx.requestContext.app.config.inventoryLevel) {\n case 'physicalAvailable':\n // Inventory level is enabled with Physical inventory\n const physicalProductMap = mapInventoryWithPhysicalBufferEnabled(ctx, product);\n if (physicalProductMap) {\n productInventoryInformation.push(physicalProductMap);\n }\n break;\n case 'totalAvailable':\n // Inventory level is enabled with Total available inventory\n const totalAvailableProductMap = mapInventoryWithTotalAvailableBufferEnabled(ctx, product);\n if (totalAvailableProductMap) {\n productInventoryInformation.push(totalAvailableProductMap);\n }\n break;\n default:\n // When inventory level is inventoryThreshold or not defined\n const productMap = mapInventoryWithThresholdEnabled(ctx, product);\n if (productMap) {\n productInventoryInformation.push(productMap);\n }\n break;\n }\n }\n }\n return productInventoryInformation;\n}\n\nexport function mapInventoryWithThresholdEnabled(ctx: IActionContext, productWarehouseInventoryAvailability: ProductWarehouseInventoryAvailability): IProductInventoryInformation | null {\n if (productWarehouseInventoryAvailability && productWarehouseInventoryAvailability.ProductId && productWarehouseInventoryAvailability.TotalAvailable !== undefined) {\n const productQty = productWarehouseInventoryAvailability.TotalAvailable - ctx.requestContext.app.config.outOfStockThreshold;\n const productAvailableQuantity: ProductAvailableQuantity = {\n ProductId: productWarehouseInventoryAvailability.ProductId,\n AvailableQuantity: productQty > 0 ? productQty : 0\n };\n\n return {\n ProductAvailableQuantity: productAvailableQuantity,\n IsProductAvailable: !!(productAvailableQuantity.AvailableQuantity && productAvailableQuantity.AvailableQuantity > 0),\n InventLocationId: productWarehouseInventoryAvailability.InventLocationId\n };\n }\n\n return null;\n}\n\nexport function mapInventoryWithPhysicalBufferEnabled(ctx: IActionContext, productWarehouseInventoryAvailability: ProductWarehouseInventoryAvailability): IProductInventoryInformation | null {\n const shouldRenderLabel = displayLabelEnabled(ctx, productWarehouseInventoryAvailability.PhysicalAvailableInventoryLevelCode);\n\n if (productWarehouseInventoryAvailability && productWarehouseInventoryAvailability.ProductId && productWarehouseInventoryAvailability.TotalAvailable !== undefined) {\n // As per the new buffer logic from RS,\n // if code is out of stock then we set the available quantity to 0 regardless of the actual value from API\n const productQuantity = productWarehouseInventoryAvailability.PhysicalAvailableInventoryLevelCode === 'OOS' ? 0 : productWarehouseInventoryAvailability.PhysicalAvailable;\n\n const productAvailableQuantity: ProductAvailableQuantity = {\n ProductId: productWarehouseInventoryAvailability.ProductId,\n AvailableQuantity: productQuantity\n };\n return {\n ProductAvailableQuantity: productAvailableQuantity,\n StockLevelCode: shouldRenderLabel ? productWarehouseInventoryAvailability.PhysicalAvailableInventoryLevelCode : undefined,\n StockLevelLabel: shouldRenderLabel ? productWarehouseInventoryAvailability.PhysicalAvailableInventoryLevelLabel : undefined,\n IsProductAvailable: productAvailableQuantity.AvailableQuantity != undefined && (productAvailableQuantity.AvailableQuantity > 0),\n InventLocationId: productWarehouseInventoryAvailability.InventLocationId\n };\n }\n\n return null;\n}\n\nexport function mapInventoryWithTotalAvailableBufferEnabled(ctx: IActionContext, productWarehouseInventoryAvailability: ProductWarehouseInventoryAvailability): IProductInventoryInformation | null {\n const shouldRenderLabel = displayLabelEnabled(ctx, productWarehouseInventoryAvailability.TotalAvailableInventoryLevelCode);\n if (productWarehouseInventoryAvailability && productWarehouseInventoryAvailability.ProductId && productWarehouseInventoryAvailability.TotalAvailable !== undefined) {\n // As per the new buffer logic from RS,\n // if code is out of stock then we set the available quantity to 0 regardless of the actual value from API\n const productQuantity = productWarehouseInventoryAvailability.TotalAvailableInventoryLevelCode === 'OOS' ? 0 : productWarehouseInventoryAvailability.TotalAvailable;\n\n const productAvailableQuantity: ProductAvailableQuantity = {\n ProductId: productWarehouseInventoryAvailability.ProductId,\n AvailableQuantity: productQuantity\n };\n return {\n ProductAvailableQuantity: productAvailableQuantity,\n StockLevelCode: shouldRenderLabel ? productWarehouseInventoryAvailability.TotalAvailableInventoryLevelCode : undefined,\n StockLevelLabel: shouldRenderLabel ? productWarehouseInventoryAvailability.TotalAvailableInventoryLevelLabel : undefined,\n IsProductAvailable: productAvailableQuantity.AvailableQuantity != undefined && (productAvailableQuantity.AvailableQuantity > 0),\n InventLocationId: productWarehouseInventoryAvailability.InventLocationId\n };\n }\n\n return null;\n}\n\nexport function displayLabelEnabled(ctx: IActionContext, inventoryCode?: string): boolean {\n if (!inventoryCode) {\n return false;\n }\n\n switch (ctx.requestContext.app.config.inventoryRanges) {\n case 'lowAndOutofStock':\n if (inventoryCode !== 'AVAIL') {\n return true;\n }\n break;\n case 'outOfStock':\n if (inventoryCode == 'OOS') {\n return true;\n }\n break;\n case 'all':\n return true;\n }\n return false;\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ChannelDeliveryOption, FeatureState, OrgUnitAvailability, OrgUnitLocation, SearchArea, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { getChannelDeliveryOptionsAsync, getOrgUnitLocationsByAreaAsync, getStoreHoursAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\n\nimport { FeatureStateInput, getFeatureStateAction } from './get-feature-state';\nimport { IFullOrgUnitAvailability } from './utilities/full-org-unit-availability';\n\n/**\n * Get selected variant action input class.\n */\nexport class GetOrgUnitLocationsByAreaInput implements IActionInput {\n public Latitude?: number;\n\n public Longitude?: number;\n\n public Radius?: number;\n\n public DistanceUnitValue?: number;\n\n public IgnoreLocation?: boolean;\n\n constructor(_Latitude?: number, _Longitude?: number, _Radius?: number, _DistanceUnitValue?: number, _IgnoreLocation?: boolean) {\n this.Latitude = _Latitude;\n this.Longitude = _Longitude;\n this.Radius = _Radius;\n this.DistanceUnitValue = _DistanceUnitValue;\n this.IgnoreLocation = _IgnoreLocation;\n }\n\n public getCacheKey = () => 'GetOrgUnitLocationsByAreaInput';\n\n public getCacheObjectType = () => 'GetOrgUnitLocationsByAreaInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the getSelectedVariant data action.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetOrgUnitLocationsByAreaInput = (inputData: ICreateActionContext>): GetOrgUnitLocationsByAreaInput => {\n return new GetOrgUnitLocationsByAreaInput();\n};\n\n/**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n * @param context\n */\nexport async function getFeatureState(context: IActionContext): Promise {\n return getFeatureStateAction(new FeatureStateInput(), context);\n}\n\n/**\n * Action method for the getSelectedVariant data action.\n * @param input The action input class.\n * @param ctx The action context.\n */\nexport async function getOrgUnitLocationsByArea(\n input: GetOrgUnitLocationsByAreaInput,\n ctx: IActionContext\n): Promise {\n\n if ((input.Radius === undefined || !input.Latitude || !input.Longitude) && !input.IgnoreLocation) {\n // No valid location we want to return empty array so module can show no locations message\n return [];\n }\n\n const searchArea: SearchArea = {\n Latitude: input.Latitude,\n Longitude: input.Longitude,\n Radius: input.Radius,\n DistanceUnitValue: input.DistanceUnitValue || 0 // 0 is miles\n };\n\n const featureState = await getFeatureState(ctx);\n const retailMulitplePickupMFeatureState = featureState?.find(item => item.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature')?.IsEnabled;\n\n return getOrgUnitLocationsByAreaAsync({ callerContext: ctx }, searchArea)\n .then(async (stores: OrgUnitLocation[]) => {\n let locationDeliveryOptions: ChannelDeliveryOption[] | undefined = [];\n\n // If mulitple pickup mode is enable then call getchanneldeliveryoption\n if (retailMulitplePickupMFeatureState) {\n const orgUnitChannel = stores.map(store => store.ChannelId);\n locationDeliveryOptions = await _getLocationPickUpDeliveryModes(orgUnitChannel, ctx);\n }\n const locationPromiseList = stores.map(store => {\n const locationDeliveryOption = locationDeliveryOptions?.find(_channeldeliveryoption => _channeldeliveryoption.ChannelId === store.ChannelId);\n return _getLocationWithHours(store, locationDeliveryOption, ctx);\n });\n return Promise.all(locationPromiseList);\n })\n .catch((error: Error) => {\n ctx.trace('[GetOrgUnitLocationsByArea] error getting Locations');\n ctx.trace(error.message);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug('[GetOrgUnitLocationsByArea] error getting Locations');\n return [];\n });\n}\n\n/**\n * Action method that obtains the store information.\n * @param orgUnitLocation The org unit location.\n * @param storeMap A map that contains store information group by the inventory location id.\n * @param channelDeleiveryOptions\n * @param ctx The action context.\n */\nasync function _getLocationWithHours(\n orgUnitLocation: OrgUnitLocation, channelDeleiveryOptions: ChannelDeliveryOption | undefined,\n ctx: IActionContext): Promise {\n if (!orgUnitLocation || !orgUnitLocation.OrgUnitNumber) {\n return { OrgUnitAvailability: undefined };\n }\n\n return getStoreHoursAsync({ callerContext: ctx }, orgUnitLocation.OrgUnitNumber)\n .then((hours: StoreHours) => {\n\n const availability: OrgUnitAvailability = {\n OrgUnitLocation: orgUnitLocation\n };\n\n if (hours && !(hours instanceof Error)) {\n return { OrgUnitAvailability: availability, StoreHours: hours, OrgUnitPickUpDeliveryModes: channelDeleiveryOptions };\n }\n\n return { OrgUnitAvailability: availability, OrgUnitPickUpDeliveryModes: channelDeleiveryOptions };\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby] error getting availability with hours');\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[GetFullAvailableInventoryNearby] error getting availability with hours');\n return { OrgUnitAvailability: {} };\n });\n}\n\n/**\n * Action method that obtains the store information.\n * @param channelCollection The org unit channel Id list.\n * @param ctx The action context.\n */\nasync function _getLocationPickUpDeliveryModes(\n channelCollection: (number| undefined)[],\n ctx: IActionContext): Promise {\n if (channelCollection?.length === 0 || channelCollection === undefined) {\n return undefined;\n }\n\n const channelIdList: number[] = [];\n channelCollection?.map(id => {\n if (id !== undefined) {\n return channelIdList.push(id);\n }\n });\n\n // To get all channel pickup delivery mode filterOption should be 4\n return getChannelDeliveryOptionsAsync({ callerContext: ctx }, channelIdList, 4)\n .then((channelDeliveryOptions: ChannelDeliveryOption[]) => {\n\n if (channelDeliveryOptions && !(channelDeliveryOptions instanceof Error)) {\n return channelDeliveryOptions;\n }\n\n return undefined;\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby][getChannelDeliveryOptionsAsync] error getting availability with channel delivery options');\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[GetFullAvailableInventoryNearby] [getChannelDeliveryOptionsAsync] error getting availability with channel delivery options');\n return [];\n });\n}\n\n/**\n * The complete getOrgUnitLocationsByArea data action.\n */\nexport const getOrgUnitLocationsByAreaDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-store-location-information',\n action: >getOrgUnitLocationsByArea,\n input: createGetOrgUnitLocationsByAreaInput\n});\n\nexport default getOrgUnitLocationsByAreaDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProjectionDomain } from '@msdyn365-commerce/retail-proxy';\nimport { getActivePricesAsync, getProductRatingsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport * as semver from 'semver';\n\nimport getSimpleProducts, { ProductInput } from './get-simple-products';\nimport { buildCacheKey, generateKey, getProductDetailsCriteriaFromActionInput } from './utilities/utils';\n\n/**\n * Full Product Input.\n */\nexport class FullProductInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public ProductDetailsCriteria: ProductDetailsCriteria;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(productId: number | string, apiSettings: ICommerceApiSettings, criteria: ProductDetailsCriteria) {\n this.productId = typeof productId === 'string' ? Number.parseInt(productId, 10) : productId;\n this.ProductDetailsCriteria = criteria;\n this.apiSettings = apiSettings;\n this.channelId = apiSettings.channelId;\n }\n\n public getCacheKey = () => {\n const { getPrice, getRating } = this.ProductDetailsCriteria;\n return buildCacheKey(generateKey([this.productId, getPrice, getRating]), this.apiSettings);\n };\n\n public getCacheObjectType = () => 'FullProduct';\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Class to define criteria to get full product like price, ratings etc.\n */\nexport class ProductDetailsCriteria {\n public getPrice: boolean;\n\n public getRating: boolean;\n\n constructor(getPrice?: boolean, getRating?: boolean) {\n this.getPrice = getPrice || false;\n this.getRating = getRating || false;\n }\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nexport const createInput = (inputData: ICreateActionContext>): IActionInput[] => {\n let productIds = inputData.config && inputData.config.productIds;\n const productDetailsCriteria = getProductDetailsCriteriaFromActionInput(inputData);\n if (typeof productIds === 'string') {\n productIds = productIds.split(',');\n }\n if (Array.isArray(productIds) && productIds.length > 0) {\n return productIds.map((productId: string) => {\n return new FullProductInput(+productId, inputData.requestContext.apiSettings, productDetailsCriteria);\n });\n }\n return [];\n};\n\n/**\n * Calls the Retail API and returns the product based on the passed ProductInput.\n * @param inputs\n * @param ctx\n */\nexport async function getFullProductsAction(inputs: FullProductInput[], ctx: IActionContext): Promise {\n if (!Array.isArray(inputs) || inputs.length === 0) {\n ctx.trace('[getFullProductsAction] Invalid or empty inputs passed.');\n return {};\n }\n\n const { apiSettings } = ctx.requestContext;\n const productInputs = inputs.map(\n (input: FullProductInput): ProductInput => {\n return new ProductInput(input.productId, apiSettings);\n }\n );\n\n return getSimpleProducts(productInputs, ctx)\n .then(result => {\n return result.map(product => {\n return { ProductDetails: product };\n });\n })\n .then((productCollection: FullProduct[]) => {\n const validProductIds = new Set(productCollection.map(input => input.ProductDetails && input.ProductDetails.RecordId));\n\n const ratingsAndPricePromises = [\n _getActivePrices(inputs, validProductIds, productCollection, ctx),\n _getProductRatings(inputs, validProductIds, productCollection, ctx)\n ];\n return Promise.all(ratingsAndPricePromises).then(() => {\n return productCollection;\n });\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('Unable to get Simple products');\n return [];\n });\n}\n\nasync function _getActivePrices(\n inputs: FullProductInput[],\n validProductIds: Set,\n productCollection: FullProduct[],\n ctx: IActionContext\n): Promise {\n const projectDomain: ProjectionDomain = { ChannelId: +ctx.requestContext.apiSettings.channelId, CatalogId: 0 };\n const validInputs = inputs\n .map(input => {\n if (input.ProductDetailsCriteria.getPrice && validProductIds.has(input.productId)) {\n return input.productId;\n }\n })\n .filter(Boolean);\n\n return getActivePricesAsync(\n { callerContext: ctx, queryResultSettings: {} },\n projectDomain,\n validInputs,\n new Date(),\n null,\n [],\n true\n ).then(result => {\n result.forEach(productPrice => {\n const fullProduct: FullProduct | undefined = productCollection.find(x => {\n return x.ProductDetails && x.ProductDetails.RecordId === productPrice.ProductId;\n });\n if (fullProduct) {\n // If RS Verison < 9.16.0 (aka 10.0.6), customer contextual price won't be\n // included so instead just use AdjustedPrice\n if (semver.lt(ctx.requestContext.apiSettings.retailServerProxyVersion, '9.16.0')) {\n productPrice.CustomerContextualPrice = productPrice.AdjustedPrice;\n }\n fullProduct.ProductPrice = productPrice;\n }\n });\n })\n .catch((error: Error) => {\n const telemetry = ctx.telemetry;\n telemetry.debug('[getActivePricesAsync] Unable to get active price.');\n telemetry.exception(error);\n });\n}\n\nasync function _getProductRatings(\n inputs: FullProductInput[],\n validProductIds: Set,\n productCollection: FullProduct[],\n ctx: IActionContext\n): Promise {\n const validInputs = inputs\n .map(input => {\n if (input.ProductDetailsCriteria.getRating && validProductIds.has(input.productId)) {\n return input.productId;\n }\n })\n .filter(Boolean);\n\n return getProductRatingsAsync({ callerContext: ctx, queryResultSettings: {} }, validInputs)\n .then(result => {\n result.forEach(productRating => {\n const fullProduct: FullProduct | undefined = productCollection.find(x => {\n return x.ProductDetails && x.ProductDetails.RecordId === productRating.ProductId;\n });\n if (fullProduct) {\n fullProduct.ProductRating = productRating;\n }\n });\n })\n .catch(error => {\n const telemetry = ctx.telemetry;\n telemetry.debug('[getProductRatingsAsync] Unable to get product ratings.');\n telemetry.exception(error);\n });\n}\n\nexport const getFullProductsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-full-products',\n action: >getFullProductsAction,\n input: createInput,\n isBatched: true\n});\n\nexport default getFullProductsActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport * from './base-promise-queue';\nexport * from './finite-promise-queue';\nexport * from './promise-queue';\n","module.exports = React;","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n CacheType,\n createObservableDataAction,\n getFriendlyName,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { buildCacheKeyWithUrlTokens, CurrentCategoryInput, getCategoryUrl, getCurrentCategory } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IDefaultPageSummaryConfig } from '../default-page-summary/default-page-summary.props.autogenerated';\nimport { IPageSummaryData } from '../IPageSummaryData';\n\n/** Category Page Summary Input */\nexport class CategoryPageSummaryInput implements IActionInput {\n public requestContext: IRequestContext;\n\n public config: IDefaultPageSummaryConfig;\n\n constructor(config: IDefaultPageSummaryConfig, requestContext: IRequestContext) {\n this.config = config || {};\n this.requestContext = requestContext;\n }\n\n public getCacheObjectType = (): string => 'CategoryPageSummary';\n\n public getCacheKey = (): string => buildCacheKeyWithUrlTokens('CategoryPageSummary', this.requestContext);\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst createGetCurrentCategoryInput = (inputData: IActionContext): CurrentCategoryInput => {\n if (inputData && inputData.requestContext) {\n return new CurrentCategoryInput(inputData.requestContext);\n }\n\n throw new Error('Please specify categoryId query string in request.');\n};\n\nconst action = async (input: CategoryPageSummaryInput, context: IActionContext): Promise => {\n const { config } = input;\n let currentCategory;\n try {\n currentCategory = await getCurrentCategory(createGetCurrentCategoryInput(context), context);\n } catch {\n // Do nothing, if the action fails fallback to values defined in data\n }\n if (currentCategory) {\n let categoryUrl: string | undefined;\n try {\n // Reset category's name neutralizedName\n const localName = getFriendlyName(context.requestContext.locale, currentCategory.NameTranslations);\n const neutralizedName = currentCategory.NeutralizedName || currentCategory.Name;\n currentCategory.Name = localName;\n currentCategory.NeutralizedName = neutralizedName;\n categoryUrl = getCategoryUrl(currentCategory);\n\n const canonicalDomain = context.requestContext.canonicalDomain;\n if (categoryUrl && canonicalDomain) {\n categoryUrl = `https://${canonicalDomain}${categoryUrl}`;\n } else {\n categoryUrl = undefined;\n }\n } catch {\n categoryUrl = undefined;\n }\n return {\n title: currentCategory.Name,\n sharingImageUrl: currentCategory.OfflineImage,\n canonicalUrl: categoryUrl,\n faviconUrl: config && config.faviconUrl\n };\n\n // If the action fails fallback to values defined from data\n } else if (config) {\n return {\n title: config.title,\n sharingImageUrl: config.sharingImage && config.sharingImage.src,\n faviconUrl: config && config.faviconUrl\n };\n }\n return {};\n\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/page-summary/category-page-summary',\n action: >action,\n input: (args: ICreateActionContext) => {\n return new CategoryPageSummaryInput(args.config, args.requestContext);\n }\n});\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { getCurrentAsync, getUsersAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\n\n/**\n * Input class for get customer data action.\n */\nexport class OrganizationUsersCountInput implements IActionInput {\n public getCacheKey = () => 'OrganizationUsersCount';\n\n public getCacheObjectType = () => 'BusinessPartner';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const createGetOrganizationUsersCountInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new OrganizationUsersCountInput();\n};\n\nexport async function getOrganizationUsersCount(input: OrganizationUsersCountInput, ctx: IActionContext): Promise {\n return getCurrentAsync({ callerContext: ctx })\n .then(businessPartner => {\n if (!businessPartner) {\n return 0;\n }\n\n return getUsersAsync({ callerContext: ctx }, businessPartner.BusinessPartnerId)\n .then((users) => {\n return users.length;\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.trace('[get-organization-users-count] Unable to load users');\n throw new Error('[get-organization-users-count] Unable to load users');\n });\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[get-organization-users-count] Unable to get BusinessPartner');\n throw new Error('[get-organization-users-count] Unable to get BusinessPartner');\n });\n}\nexport default createObservableDataAction({\n id: 'get-organization-users-count',\n action: >getOrganizationUsersCount,\n input: createGetOrganizationUsersCountInput\n});\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { convertToString, IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { getProductListLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\n\nimport { FullProductInput, getFullProducts, getProductDetailsCriteriaFromActionInput, QueryResultSettingsProxy } from '..';\nimport { IOrderTemplateLinesState, OrderTemplateLine } from '../utilities/order-templates';\n\n/**\n * Input class for the GetOrderTemplates data action.\n */\nexport class GetPaginatedOrderTemplateLinesInput implements IActionInput {\n public orderTemplateId: string;\n\n public queryResultSettings: IQueryResultSettings;\n\n public searchText: string;\n\n constructor(orderTemplateId: string, queryResultSettings: IQueryResultSettings, searchText?: string) {\n this.orderTemplateId = orderTemplateId;\n this.queryResultSettings = queryResultSettings;\n this.searchText = searchText || '';\n }\n\n public getCacheKey = () => `GetPaginatedOrderTemplateLines|${this.orderTemplateId}|${convertToString(this.queryResultSettings)}|${this.searchText}`;\n\n public getCacheObjectType = () => 'GetPaginatedOrderTemplateLines';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the GetOrderTemplate method.\n * @param inputData The input data passed to the createInput method.\n * @param orderTemplateId\n * @param searchText\n */\nexport const createGetPaginatedOrderTemplateLinesInput = (\n inputData: ICreateActionContext, orderTemplateId: string, searchText?: string): GetPaginatedOrderTemplateLinesInput => {\n\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n queryResultSettings.count = true;\n return new GetPaginatedOrderTemplateLinesInput(orderTemplateId, queryResultSettings, searchText);\n};\n\n/**\n * The action method for the GetPaginatedOrderTemplateLines data action.\n * @param input The action input.\n * @param context The action context.\n */\nexport async function getPaginatedOrderTemplateLinesAction(input: GetPaginatedOrderTemplateLinesInput, context: IActionContext): Promise {\n if (!context.requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order templates. User is not authenticated.');\n }\n\n const orderTemplateLinesState: IOrderTemplateLinesState = {\n lines: [],\n totalCount: 0\n };\n const promise = getProductListLinesAsync({\n callerContext: context, queryResultSettings: input.queryResultSettings\n }, input.orderTemplateId, input.searchText); const productListLines = await promise;\n const productInputs: FullProductInput[] = [];\n if (productListLines && productListLines.length > 0) {\n orderTemplateLinesState.totalCount = promise.metadata.count || orderTemplateLinesState.lines.length;\n productListLines.forEach((listLine) => {\n if (listLine.ProductId) {\n orderTemplateLinesState.lines.push(new OrderTemplateLine(listLine));\n productInputs.push(new FullProductInput(listLine.ProductId, context.requestContext.apiSettings, getProductDetailsCriteriaFromActionInput(context)));\n }\n });\n if (productInputs.length > 0) {\n const fullProductsInfo = await getFullProducts(productInputs, context)\n .then((products: FullProduct[]) => {\n if (products) {\n return products;\n }\n return [];\n\n })\n .catch(error => {\n context.trace(error);\n context.telemetry.error(error.message);\n context.telemetry.error('[getPaginatedOrderTemplateLinesAction] Unable to retrieve product info.');\n });\n if (fullProductsInfo) {\n orderTemplateLinesState.lines.forEach(line => {\n const fullProduct = fullProductsInfo.find(product => product.ProductDetails.RecordId === line.productListLine.ProductId);\n if (!fullProduct) {\n context.telemetry.error('[getPaginatedOrderTemplateLinesAction] Unable to find product info for an order template line.');\n return;\n }\n line.fullProduct = fullProduct;\n });\n }\n return orderTemplateLinesState;\n }\n context.trace(orderTemplateLinesState.lines.length.toString());\n return orderTemplateLinesState;\n }\n return orderTemplateLinesState;\n}\n\n/**\n * The GetPaginatedOrderTemplateLines Data Action\n * Returns order templates.\n */\nexport const getPaginatedOrderTemplateLinesActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-paginated-order-template-lines',\n action: >getPaginatedOrderTemplateLinesAction,\n input: createGetPaginatedOrderTemplateLinesInput\n});\n\nexport default getPaginatedOrderTemplateLinesActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, IActionContext, IActionInput } from '@msdyn365-commerce/core';\n\n/**\n * Generic input type for use with generic data actions.\n */\nexport class GenericInput implements IActionInput {\n public result: T;\n\n public cacheKey: string;\n\n public cacheObjectType: string;\n\n constructor(cacheKey: string, result: T, cacheObjectType: string) {\n this.cacheKey = cacheKey;\n this.cacheObjectType = cacheObjectType;\n this.result = result;\n }\n\n public getCacheKey = () => `Generic-${this.cacheKey}`;\n\n public getCacheObjectType = () => `${this.cacheObjectType}`;\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Generic data action that is just used for passing data around the app.\n *\n * Note that this doesn't actually expose a data action, its just a base action\n * that others can use to create a data action with their own input.\n * @param input\n * @param ctx\n */\nexport async function getGenericAction(input: GenericInput, ctx: IActionContext): Promise {\n return input.result;\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { InvoiceDetailsSearchCriteria, SalesInvoice, SalesOrdersDataActions } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Input class for get invoice details data action.\n */\nexport class GetInvoiceDetailsInput implements IActionInput {\n public invoiceId: string;\n\n constructor(invoiceId: string) {\n this.invoiceId = invoiceId;\n }\n\n public getCacheKey = () => `GetInvoiceDetails|${this.invoiceId}`;\n\n public getCacheObjectType = () => 'SalesInvoice';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nexport const CreateGetInvoiceDetailsInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to get invoice details as User is not logged in.');\n }\n if (!inputData?.requestContext?.query?.invoiceId) {\n throw new Error('Unable to get invoice details as no valid invoice id found.');\n }\n\n return new GetInvoiceDetailsInput(inputData.requestContext.query.invoiceId);\n};\n\nexport async function getInvoiceDetails(input: GetInvoiceDetailsInput, context: IActionContext): Promise {\n if (!context?.requestContext?.user?.isAuthenticated) {\n throw new Error('Unable to get details for the invoice. User is not authenticated.');\n }\n\n if (!input.invoiceId) {\n throw new Error('Unable to get invoice details as no valid invoice id found.');\n }\n\n const invoiceId = input.invoiceId;\n\n const searchCriteria: InvoiceDetailsSearchCriteria = {\n InvoiceId: invoiceId\n };\n\n return SalesOrdersDataActions.getInvoiceDetailsAsync({ callerContext: context }, searchCriteria);\n}\n\nexport const getInvoiceDetailsDataAction = createObservableDataAction({\n id: 'get-invoice-details',\n action: >getInvoiceDetails,\n input: CreateGetInvoiceDetailsInput\n});\n\nexport default getInvoiceDetailsDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { InvoicePaidStatus, InvoiceSearchCriteria, InvoiceType, OrderInvoice, SalesOrdersDataActions } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Input class for get invoice data action.\n */\nexport class GetInvoiceInput implements IActionInput {\n public invoiceId: string;\n\n constructor(invoiceId: string) {\n this.invoiceId = invoiceId;\n }\n\n public getCacheKey = () => `GetInvoice|${this.invoiceId}`;\n\n public getCacheObjectType = () => 'OrderInvoice';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nexport const CreateGetInvoiceInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to get invoice as User is not logged in.');\n }\n if (!inputData?.requestContext?.query?.invoiceId) {\n throw new Error('Unable to get invoice as no valid invoice id found.');\n }\n\n return new GetInvoiceInput(inputData.requestContext.query.invoiceId);\n};\n\nexport async function getInvoice(input: GetInvoiceInput, context: IActionContext): Promise {\n if (!context?.requestContext?.user?.isAuthenticated) {\n throw new Error('Unable to get invoice. User is not authenticated.');\n }\n\n if (!input.invoiceId) {\n throw new Error('Unable to get invoice as no valid invoice id found.');\n }\n\n const invoiceId = input.invoiceId;\n\n const searchCriteria: InvoiceSearchCriteria = {\n InvoiceIds: [invoiceId],\n InvoiceTypeValues: [InvoiceType.SalesOrderInvoice],\n InvoicePaidStatusValues: [InvoicePaidStatus.None]\n };\n\n const invoices = await SalesOrdersDataActions.getInvoicesAsync({ callerContext: context }, searchCriteria);\n if (!invoices || invoices.length !== 1) {\n throw new Error('Unable to get invoice from the server.');\n }\n\n return invoices[0];\n}\n\nexport default createObservableDataAction({\n id: 'get-invoice',\n action: >getInvoice,\n input: CreateGetInvoiceInput\n});\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { LoyaltyCard, retailAction } from '@msdyn365-commerce/retail-proxy';\nimport { createGetCustomerLoyaltyCardsInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nconst createCustomerLoyaltyCardsInput = (inputData: ICreateActionContext>): IActionInput => {\n if (\n inputData.requestContext &&\n inputData.requestContext.user &&\n inputData.requestContext.user.isAuthenticated\n ) {\n return createGetCustomerLoyaltyCardsInput({}, null);\n }\n\n throw new Error('Unable to create order history input. User is not authenticated.');\n};\n\nexport const retailActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-customer-loyalty-cards',\n action: >retailAction,\n input: createCustomerLoyaltyCardsInput\n});\n\nexport default retailActionDataAction;\n","module.exports = ReactDOM;","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { QueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { searchAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { ProductList, ProductListSearchCriteria } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for the GetOrderTemplates data action.\n */\nexport class GetOrderTemplatesInput implements IActionInput {\n public readonly productListId: string;\n\n public readonly queryResultSettings?: QueryResultSettings;\n\n constructor(productListId?: string, queryResultSettings?: QueryResultSettings) {\n this.productListId = productListId || '';\n this.queryResultSettings = queryResultSettings;\n }\n\n public getCacheKey = (): string => `${this.productListId}|${this.queryResultSettings?.Paging?.Top}|${this.queryResultSettings?.Paging?.Skip}`;\n\n public getCacheObjectType = () => 'ProductList';\n\n public dataCacheType = (): CacheType => 'instance';\n\n public shouldCacheOutput = () => false;\n}\n\n/**\n * CreateInput method for the GetOrderTemplate method.\n * @param inputData The input data passed to the createInput method.\n * @param productListId? The product list identifier.\n * @param queryResultSettings? The query result setting required for pagination/ordering.\n * @param productListId\n * @param queryResultSettings\n */\nexport const createGetOrderTemplatesInput = (inputData: ICreateActionContext, productListId?: string, queryResultSettings?: QueryResultSettings): GetOrderTemplatesInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create get order template. User is not authenticated.');\n }\n\n return new GetOrderTemplatesInput(productListId || '', queryResultSettings);\n};\n\n/**\n * The action method for the GetOrderTemplates data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function getOrderTemplatesAction(input: GetOrderTemplatesInput, ctx: IActionContext): Promise {\n try {\n\n const productListSearchCriteria: ProductListSearchCriteria = {\n ProductListId: input.productListId,\n CustomerId: ctx.requestContext.user.customerAccountNumber\n };\n return await searchAsync(\n {\n callerContext: ctx,\n queryResultSettings: input.queryResultSettings\n },\n productListSearchCriteria\n );\n } catch (error) {\n ctx.telemetry.error('Not able to get order template(s)', error);\n throw error;\n }\n}\n\n/**\n * The GetOrderTemplates Data Action\n * Returns order templates.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-order-templates',\n action: >getOrderTemplatesAction,\n input: createGetOrderTemplatesInput\n});\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { LoyaltyCard } from '@msdyn365-commerce/retail-proxy';\nimport { getCustomerLoyaltyCardsAsync, getLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\nimport { buildCacheKey } from '.';\n\n/**\n * Input class for the getLoyaltyCard data action.\n */\nexport class GetLoyaltyCardInput implements IActionInput {\n public userAccountNumber?: string;\n\n public apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n\n }\n\n public getCacheKey = () => buildCacheKey(`GetLoyaltyCard-${this.userAccountNumber}`, this.apiSettings);\n\n public getCacheObjectType = () => 'GetLoyaltyCard';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CreateInput method for the getLoyaltyCard method.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetLoyaltyCardInput = (inputData: ICreateActionContext): GetLoyaltyCardInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create get loyalty card input. User is not authenticated.');\n }\n\n return new GetLoyaltyCardInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * The action method for the getLoyaltyCard data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function getLoyaltyAction(input: GetLoyaltyCardInput, ctx: IActionContext): Promise {\n return getCustomerLoyaltyCardsAsync({ callerContext: ctx, queryResultSettings: {} }, input.userAccountNumber || null)\n .then(cards => {\n if (!cards || cards.length === 0) {\n return {};\n }\n\n const firstCard = cards[0];\n\n return getLoyaltyCardAsync({ callerContext: ctx }, firstCard.CardNumber!)\n .then(card => {\n card.LoyaltyEnrollmentDate = firstCard.LoyaltyEnrollmentDate;\n card.LoyaltyEnrollmentDateLocal = firstCard.LoyaltyEnrollmentDateLocal;\n return card;\n })\n\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('Unable to get loyalty card');\n throw new Error('Unable to get loyalty card');\n });\n })\n .catch(error => {\n ctx.telemetry.exception(error.message);\n ctx.telemetry.debug('Unable to get customers loyalty card');\n throw new Error('Unable to get customers loyalty card');\n });\n}\n\n/**\n * The getLoyaltyCard data action\n * Returns the loyalty card belonging to the customer.\n */\nexport const getLoyaltyActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-loyalty-card',\n action: >getLoyaltyAction,\n input: <(args: ICreateActionContext) => IActionInput>createGetLoyaltyCardInput\n});\n\nexport default getLoyaltyActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { searchAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport { Cart, OrgUnit, SearchStoreCriteria, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { createGetFeatureStateInput, getCustomer, GetCustomerInput, getFeatureState, getSimpleProducts, ProductInput } from '.';\n\n/**\n * Input class for activeCartWithProducts data action.\n */\nexport class ActiveCartProductsInput implements IActionInput {\n public getCacheKey = () => 'ActiveCartProducts';\n\n public getCacheObjectType = () => 'ActiveCartProducts';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new ActiveCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a cart object based on the passed GetCartInput.\n * @param input\n * @param ctx\n */\nexport async function getActiveCartProductsAction(input: ActiveCartProductsInput, ctx: IActionContext): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n if (!input) {\n throw new Error('[getActiveCartWithProducts]No valid Input was provided, failing');\n }\n\n const cartState = await getCartState(ctx);\n const cart = cartState.cart;\n\n const isQuantityLimitsFeatureIsOn: boolean = await isOrderQuantityLimitsFeatureEnabled(ctx);\n\n if (isQuantityLimitsFeatureIsOn) {\n return getActiveCartProductsActionWhenQuantityLimitsFeatureIsOn(cart, ctx);\n }\n\n // If there are cart lines, make call to get products\n if (!cartState.hasInvoiceLine && cart && cart.CartLines && cart.CartLines.length > 0) {\n ctx.trace('Getting cart product information...');\n return getSimpleProducts(\n cart.CartLines.map(cartLine => {\n if (cartLine.ProductId) {\n return new ProductInput(cartLine.ProductId, ctx.requestContext.apiSettings);\n }\n return undefined;\n }).filter(Boolean),\n ctx\n )\n .then((products: SimpleProduct[]) => {\n if (products) {\n return products;\n }\n return [];\n\n })\n .catch((error: Error) => {\n ctx.trace(error.toString());\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug('[getActiveCartWithProducts]Unable to hydrate cart with product information');\n throw new Error('[getActiveCartWithProducts]Unable to hydrate cart with product information');\n });\n }\n\n ctx.trace('[getActiveCartWithProducts]No Products Found in cart');\n return [];\n}\n\nexport const getActiveCartProductsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-products-in-active-cart',\n action: >getActiveCartProductsAction,\n input: createInput\n});\n\nexport default getActiveCartProductsActionDataAction;\nasync function getActiveCartProductsActionWhenQuantityLimitsFeatureIsOn(cart: Cart, ctx: IActionContext): Promise {\n const productIdsByFulfillmentStoreId: Map = new Map();\n let resultProducts: SimpleProduct[] = [];\n cart.CartLines?.forEach(cartLine => (productIdsByFulfillmentStoreId.has(cartLine.FulfillmentStoreId!) ? productIdsByFulfillmentStoreId.get(cartLine.FulfillmentStoreId!)?.push(cartLine.ProductId!) : productIdsByFulfillmentStoreId.set(cartLine.FulfillmentStoreId!, [cartLine.ProductId!]))\n );\n\n return Promise.all([...productIdsByFulfillmentStoreId].map(([entryFulfillmentStoreId, entryProductIds]) => {\n if (entryFulfillmentStoreId === '') {\n return getSimpleProducts(\n entryProductIds.map(productId => {\n if (productId) {\n return new ProductInput(productId, ctx.requestContext.apiSettings);\n }\n return undefined;\n }).filter(Boolean),\n ctx\n )\n .then((products: SimpleProduct[]) => {\n if (products) {\n resultProducts = products.reduce((accum, product) => {\n if (product) {\n accum.push(product);\n }\n return accum;\n }, resultProducts);\n }\n });\n }\n\n const searchStoreCriteria: SearchStoreCriteria = { StoreNumber: entryFulfillmentStoreId };\n\n return searchAsync({ callerContext: ctx }, searchStoreCriteria)\n .then((orgUnits: OrgUnit[]) => getSimpleProducts(\n entryProductIds.map(productId => {\n if (orgUnits && orgUnits.length > 0) {\n return new ProductInput(productId, ctx.requestContext.apiSettings, orgUnits[0].RecordId);\n }\n return undefined;\n }).filter(Boolean),\n ctx\n ))\n .then((products: SimpleProduct[]) => {\n if (products) {\n resultProducts = products.reduce((accum, product) => {\n if (product) {\n accum.push(product);\n }\n return accum;\n }, resultProducts);\n }\n });\n\n })).then(() => resultProducts);\n}\n\nasync function isOrderQuantityLimitsFeatureEnabled(ctx: IActionContext): Promise {\n const defaultOrderQuantityLimitsFeatureConfig = ctx.requestContext.app?.platform?.enableDefaultOrderQuantityLimits;\n if (defaultOrderQuantityLimitsFeatureConfig === 'none') {\n return Promise.resolve(false);\n }\n\n const featureStates = await getFeatureState(createGetFeatureStateInput(ctx), ctx);\n const isQuantityLimitsFeatureEnabledInHq = featureStates\n .find(featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature')?.IsEnabled || false;\n\n if (!isQuantityLimitsFeatureEnabledInHq) {\n return false;\n }\n\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\n return Promise.resolve(true);\n }\n\n return getCustomer(new GetCustomerInput(ctx.requestContext.apiSettings), ctx)\n .then(customerInfo => {\n return !!customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b));\n }).catch((error: Error) => {\n ctx.telemetry.warning(error.message);\n ctx.telemetry.debug('Unable to get customer info');\n return false;\n });\n}\n","/**\n* Copyright (c) 2018 Microsoft Corporation\n* Modules Registration\n* THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n*/\nconst { log, error } = console;\nconst detailedWebpackError = (msg, errorObject) => { error(msg); error(errorObject); process.env.NODE_ENV !== 'development' && error('Run in dev mode to see full list of errors'); process.exit(50); }\nconst handleError = (modPath, errObject) => {\n detailedWebpackError('Error with path: ' + modPath, errObject);\n}\n\nconst handleMissingImplementationDetails = (functionName, connectorName, connectorType) => {\n error('----ERROR: CONNECTOR MISSING IMPLEMENTATION DETAILS-----');\n error('Missing function ' + functionName + ' from ' + connectorType + ' implementation for experimentation connector ' + connectorName);\n throw new Error('Connector missing implementation details');\n}\n\nconst isServer = ()=>{\n return ! (typeof window != 'undefined' && window.document);\n}\n\nconst verifyGeoLookupRegistration = (connectorName) => {\n const geoLookupProvider = connectorDictionary[connectorName].provider;\n try {\n if (!geoLookupProvider.__proto__.initialize) {\n handleMissingImplementationDetails('initialize', connectorName, 'provider');\n }\n if (!geoLookupProvider.__proto__.getGeoInformation) {\n handleMissingImplementationDetails('getGeoInformation', connectorName, 'provider');\n }\n } catch (e) {\n // Connector has not implemented all the required methods, setting registration as undefined\n connectorDictionary[connectorName] = undefined;\n throw e;\n }\n}\n\nconst verifyExperimentationReigstration = (connectorName) => {\n const connectorImpl = connectorDictionary[connectorName].provider;\n const connectorListenerImpl = connectorDictionary[connectorName].listener;\n try {\n if (!connectorImpl.__proto__.initialize) {\n handleMissingImplementationDetails('initialize', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.getConfigForClientSideInit) {\n handleMissingImplementationDetails('getConfigForClientSideInit', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.initializeClientSide) {\n handleMissingImplementationDetails('initializeClientSide', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.getExperiments) {\n handleMissingImplementationDetails('getExperiments', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.getVariantsForUser) {\n handleMissingImplementationDetails('getVariantsForUser', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.activateExperiment) {\n handleMissingImplementationDetails('activateExperiment', connectorName, 'provider');\n }\n if (!connectorListenerImpl.__proto__.initializeClientSide) {\n handleMissingImplementationDetails('initializeClientSide', connectorName, 'listener');\n }\n if (!connectorListenerImpl.__proto__.logEvent) {\n handleMissingImplementationDetails('logEvent', connectorName, 'listener');\n }\n } catch (e) {\n // Connector has not implemented all the required methods, setting registration as undefined\n connectorDictionary[connectorName] = undefined;\n throw e;\n }\n}\n\nexport const connectorDictionary = {};\n\n\n {\n const connectorName = 'msdyn365-exp-test';\n \n let connectorProviderImpl = require('@msdyn365-commerce-modules/msdyn365-exp-test-connector/dist/lib/connectors/msdyn365-exp-test/msdyn365-exp-test.provider');\n let connectorListenerImpl = require('@msdyn365-commerce-modules/msdyn365-exp-test-connector/dist/lib/connectors/msdyn365-exp-test/msdyn365-exp-test.listener');\n if (!connectorProviderImpl.default) {\n throw new Error('Exp Connector provider msdyn365-exp-test does not have a default export. Check the provider file of the connector for a default export.');\n }\n if (!connectorListenerImpl.default) {\n throw new Error('Exp Connector listener msdyn365-exp-test does not have a default export. Check the listener file of the connector for a default export.');\n }\n connectorDictionary[connectorName] = {provider: connectorProviderImpl.default, listener: connectorListenerImpl.default};\n }\n\nexport const validateConnectorRegistration = () => {\n \n verifyExperimentationReigstration('msdyn365-exp-test');\n};","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { getRelatedProductsAsync, getRelationTypesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductRelationType, ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport getFullProducts, { FullProductInput, ProductDetailsCriteria } from './get-full-products';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { getProductDetailsCriteriaFromActionInput } from './utilities/utils';\n\n/**\n * GetRelatedProducts Input Action.\n */\nexport class GetRelatedProductsInput implements IActionInput {\n public readonly productId: number;\n\n public readonly catalogId: number;\n\n public readonly relationType: string;\n\n public ProductDetailsCriteria: ProductDetailsCriteria;\n\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n constructor(\n productId: number,\n catalogId: number,\n relationType: string,\n queryResultSettingsProxy: QueryResultSettingsProxy,\n criteria: ProductDetailsCriteria\n ) {\n this.productId = productId;\n this.catalogId = catalogId;\n this.relationType = relationType;\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.ProductDetailsCriteria = criteria;\n }\n\n public getCacheKey = () => `${this.productId}|${this.catalogId}|${this.relationType.toLowerCase()}|${this.queryResultSettingsProxy.cacheKeyHint}|${\n this.ProductDetailsCriteria.getPrice\n }`;\n\n public getCacheObjectType = () => 'GetRelatedProducts';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates the input required to make GetRelatedProducts retail api call.\n * @param inputData\n */\nexport const createGetRelatedProductsInput = (inputData: ICreateActionContext>): IActionInput => {\n if (inputData && inputData.requestContext && inputData.config) {\n const catalogId = inputData.requestContext.apiSettings.catalogId;\n const relationType = inputData.config.relationType;\n\n let productId = inputData.requestContext.urlTokens ? Number(inputData.requestContext.urlTokens.recordId) : 0;\n const productDetailsCriteria = getProductDetailsCriteriaFromActionInput(inputData);\n if (!relationType) {\n throw new Error('Input relation type is invalid.');\n }\n\n // Query string may override the product id from url\n if (inputData.requestContext.query && inputData.requestContext.query.productId) {\n productId = Number(inputData.requestContext.query.productId);\n }\n\n if (Number.isNaN(productId) || productId <= 0) {\n throw new Error('No valid product id available in url or query string.');\n }\n\n if (Number.isNaN(catalogId)) {\n throw new Error('Failed to cast catalog id into a number.');\n }\n\n const queryResultSettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n return new GetRelatedProductsInput(productId, catalogId, relationType, queryResultSettingsProxy, productDetailsCriteria);\n }\n\n throw new Error('Invalid input data or request context');\n};\n\nexport function searchProductRelationType(productRelationTypes: ProductRelationType[], _productRelationType: string): number | undefined {\n let foundProductRelationTypeId;\n _productRelationType = _productRelationType.toLowerCase();\n productRelationTypes.forEach((productRelationType: ProductRelationType) => {\n if (productRelationType.Name && productRelationType.Name.toLowerCase() === _productRelationType) {\n return (foundProductRelationTypeId = productRelationType.RecordId);\n }\n });\n\n return foundProductRelationTypeId;\n}\n\nasync function getRelatedProductsAction(input: GetRelatedProductsInput, ctx: IActionContext): Promise {\n const apiSettings = ctx.requestContext.apiSettings;\n const querySettings = input.queryResultSettingsProxy.QueryResultSettings;\n\n const productRelationTypes = await getRelationTypesAsync(\n { callerContext: ctx, queryResultSettings: querySettings },\n input.productId,\n +apiSettings.channelId,\n input.catalogId\n );\n if (!productRelationTypes) {\n ctx.trace(`[getProductRelationType] Unable to get product relation types for product ${input.productId}`);\n return [];\n }\n const productRelationTypeId = searchProductRelationType(productRelationTypes, input.relationType);\n if (!productRelationTypeId) {\n ctx.trace(`[getRelatedProducts] Unable to find relation type ${input.relationType} for product ${input.productId}`);\n return [];\n }\n\n const productInputs = await getRelatedProductsAsync(\n { callerContext: ctx, queryResultSettings: querySettings },\n input.productId,\n +apiSettings.channelId,\n input.catalogId,\n productRelationTypeId\n )\n .then(response => {\n if (response && response.length > 0) {\n return response.map(\n (product: ProductSearchResult): FullProductInput => {\n return new FullProductInput(product.RecordId, apiSettings, input.ProductDetailsCriteria);\n }\n );\n }\n\n ctx.trace('[getRelatedProductsAction] Invalid response from server');\n return [];\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.trace(error.stack || '');\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getRelatedProductsAction] Unable to Fetch Products.');\n ctx.trace('[getRelatedProductsAction] Unable to Fetch Products.');\n return [];\n });\n\n if (productInputs.length > 0) {\n return getFullProducts(productInputs, ctx);\n }\n return [];\n\n}\n\n/**\n * The getRelatedProducts data action\n * Uses a productId URL Token and finds the relation types for said product\n * using the getRelationTypes RetailServer API, and then finds and retusn all products that\n * share that relation type via the getRelatedProducts RetailServer API.\n */\nexport const getRelatedProductsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-related-products',\n action: >getRelatedProductsAction,\n input: createGetRelatedProductsInput\n});\n\nexport default getRelatedProductsActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { BusinessPartner, BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { createBusinessPartnerUserAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnerUsersDataActions.g';\n\n/**\n * Input class for addOrganizationUser data action.\n */\nexport class AddOrganizationUserInput implements IActionInput {\n public user: BusinessPartnerUser;\n\n constructor(newUser: BusinessPartnerUser) {\n this.user = newUser;\n }\n\n public getCacheKey = () => 'AddOrganizationUser';\n\n public getCacheObjectType = () => 'AddOrganizationUser';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Input class for addOrganizationUser data action.\n * @param inputData\n * @param newUser\n */\nexport const createAddOrganizationUserInput = (inputData: ICreateActionContext>, newUser: BusinessPartnerUser): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new AddOrganizationUserInput(newUser);\n};\n\n/**\n * The addOrganizationUser data action\n * Calls getCurrent() to get a businessPartnerId from the user requesting the action.\n * It then maps the newUsers' businessPartnerId to the same as the above user.\n * Calls the createBusinessPartner to then create a new entitiy in the database with the\n * information passed into through newUser.\n * @param input\n * @param ctx\n */\nexport async function addOrganizationUser(input: AddOrganizationUserInput, ctx: IActionContext): Promise {\n const { user } = input;\n\n return getCurrentAsync({ callerContext: ctx })\n .then((businessPartner: BusinessPartner) => {\n // Set the new accounts businessPartnerId from the admin account\n user.BusinessPartnerId = businessPartner.BusinessPartnerId;\n\n return createBusinessPartnerUserAsync({ callerContext: ctx }, user)\n .then(newUser => {\n return newUser;\n })\n .catch(() => {\n ctx.telemetry.debug('[add-organization-user] Unable to create BusinessPartnerUser account');\n throw new Error('[add-organization-user] Unable to create BusinessPartnerUser account');\n });\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[add-organization-user] Unable to get BusinessPartner Admin account');\n throw new Error('[add-organization-user] Unable to get BusinessPartner Admin account');\n });\n}\n\n/**\n * The addOrganizationUser data action\n * Calls the read RetailServer API to get the BusinessPartnerId from the admin\n * account and adds that businessPartner to the recieved input (new User)/\n * We then send this new User through the RetailServer API so that the database\n * is updated.\n */\nexport const addOrganizationUserDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/add-organization-user',\n action: >addOrganizationUser,\n input: <(args: ICreateActionContext) => IActionInput>(createAddOrganizationUserInput)\n});\n\nexport default addOrganizationUserDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\n\nimport getCategoriesHierarchy, { CategoriesInput } from './get-categories-hierarchy';\n\n/**\n * Action Input Class for get-current-category-hierarchy.\n */\nexport class CurrentCategoryHierarchyInput extends CategoriesInput {\n public activeCategoryId: number;\n\n constructor(context: IRequestContext, mappedToHierarchy: boolean, maxItems?: number, activeCategoryId?: number) {\n super(context, mappedToHierarchy, maxItems);\n this.activeCategoryId = activeCategoryId || 0;\n }\n\n // @ts-expect-error: Overriding cache object type\n public getCacheObjectType = () => 'CurrentCategoryHierarchy';\n\n public getCacheKey = () => `${this.activeCategoryId}-${this.channelId}`;\n}\n\n/**\n * Creates the input required for the data action.\n * @param inputData\n */\nexport const createCategoriesHierarchyInput = (inputData: ICreateActionContext>): IActionInput => {\n const topItems = inputData.config && inputData.config.topCategories && Number.parseInt(inputData.config.topCategories, 10);\n const activeCategoryId =\n (inputData.requestContext.urlTokens && inputData.requestContext.urlTokens.pageType === 'Category' && inputData.requestContext.urlTokens.itemId) ||\n (inputData.requestContext.query && inputData.requestContext.query.categoryId) ||\n 0;\n\n return new CurrentCategoryHierarchyInput(inputData.requestContext, true, topItems, +activeCategoryId);\n};\n\n/**\n * Get the hierarchy of categories that are currently active as a parent -> child array.\n * Return will be as follows: [ParentCategory, Child, SubChild, SubSubChild].\n * @param input\n * @param ctx\n */\nexport async function getCurrentCategoryHierarchyAction(input: CurrentCategoryHierarchyInput, ctx: IActionContext): Promise {\n\n const fullCategoryHierarchy = await getCategoriesHierarchy(\n new CategoriesInput(\n ctx.requestContext,\n true,\n input.maxItems),\n ctx);\n const categoryArray: CategoryHierarchy[] = [];\n\n const findCategory = (category: CategoryHierarchy) => {\n if (category.RecordId === input.activeCategoryId) {\n categoryArray.push(category);\n return true;\n } else if (category.Children && category.Children.length > 0) {\n category.Children.forEach((childCategory) => {\n if (findCategory(childCategory)) {\n categoryArray.push(category);\n }\n });\n } else {\n return false;\n }\n };\n\n fullCategoryHierarchy.forEach((categoryHierarchy: CategoryHierarchy) => {\n findCategory(categoryHierarchy);\n });\n\n return categoryArray.reverse();\n}\n\nexport const getCurrentCategoryHierarchyActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-current-category-hierarchy',\n action: >getCurrentCategoryHierarchyAction,\n input: createCategoriesHierarchyInput\n});\n\nexport default getCurrentCategoryHierarchyActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, createObservableDataAction, getParameterizeFeatureFlags, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric, IParameterizeFeatureFlags, IRequestContext } from '@msdyn365-commerce/core';\n\nimport { buildCacheKey } from '.';\nimport getCategoryHierarchy, { CategoriesInput } from './get-categories-hierarchy';\nimport { parameterize } from './utilities/Url-builder';\n\n/**\n * Input class for GetCurrentCategory data action.\n */\nexport class CurrentCategoryInput implements IActionInput {\n public categoryId?: number;\n\n public categorySlug?: string;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(context: IRequestContext) {\n let categoryId;\n let categorySlug;\n if (context.query && context.query.categoryId) {\n categoryId = Number(context.query.categoryId);\n\n if (Number.isNaN(categoryId)) {\n throw new Error('Failed to cast category id into a number.');\n }\n } else if (context.urlTokens && context.urlTokens.recordId) {\n categoryId = Number(context.urlTokens.recordId);\n if (Number.isNaN(categoryId)) {\n throw new Error('Failed to cast category id into a number.');\n }\n } else if (context.urlTokens && context.urlTokens.categories && context.urlTokens.categories.length > 0) {\n const categories: string[] = (context.urlTokens.categories);\n\n if (categories.length === 0) {\n throw new Error('Failed to get category name from urlTokens');\n }\n\n // TODO: fix getParameterizeFeatureFlags to take requestContext as input.\n const tempActionContext = {\n requestContext: context\n };\n categorySlug = `/${categories\n .map(category => {\n // @ts-expect-error TODO: fix getParameterizeFeatureFlags to take requestContext as an input\n const parameterizeFeatureFlags: IParameterizeFeatureFlags = getParameterizeFeatureFlags(tempActionContext);\n return parameterize(category, undefined, parameterizeFeatureFlags);\n })\n .join('/')}`;\n }\n this.categoryId = categoryId;\n this.categorySlug = categorySlug;\n this.apiSettings = context.apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`${this.categoryId || this.categorySlug}`, this.apiSettings);\n\n public getCacheObjectType = () => 'Current-Category';\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates a current category input from an ICreateActionContext.\n * @param inputData\n */\nexport const createGetCurrentCategoryInput = (inputData: ICreateActionContext>): IActionInput => {\n if (inputData && inputData.requestContext) {\n return new CurrentCategoryInput(inputData.requestContext);\n }\n\n throw new Error('Please specify categoryId query string in request.');\n};\n\n/**\n * Rescrusive Search Method to find a given category amongts a complete CategoryHierarcy.\n * @param categories The current Category Hierarchy.\n * @param categorySlug The category slug being searched for.\n * @param categoryId The category Id being search for.\n */\nexport function searchCategory(categories: CategoryHierarchy[], categorySlug?: string, categoryId?: number): CategoryHierarchy | undefined {\n let foundCategory;\n categories.forEach((cat: CategoryHierarchy) => {\n if ((categoryId && cat.RecordId === categoryId) || (categorySlug && cat.Slug === categorySlug)) {\n return (foundCategory = cat);\n } else if (cat.Children && cat.Children.length > 0) {\n const matchingChild = searchCategory(cat.Children, categorySlug, categoryId);\n if (matchingChild) {\n foundCategory = matchingChild;\n }\n }\n });\n return foundCategory;\n}\n\n/**\n * Action method for the getCurrentCategory Data Action.\n * @param input The action input class.\n * @param ctx The action context.\n */\nexport async function getCurrentCategoryAction(input: CurrentCategoryInput, ctx: IActionContext): Promise {\n if (input.categorySlug || input.categoryId) {\n const categoryInput = new CategoriesInput(ctx.requestContext, true);\n const categories = await getCategoryHierarchy(categoryInput, ctx);\n if (!categories) {\n ctx.trace('[getCurrentCategory] Unable to get categories from server');\n return;\n }\n\n const category = searchCategory(categories, input.categorySlug, input.categoryId);\n if (!category) {\n ctx.trace('[getCurrentCategory] Unable to find category');\n return;\n }\n return category;\n }\n}\n\n/**\n * The getCurrentCategory data action\n * First makes a call to the getCategories RetailServer API\n * to get a list of every available category, then returns a CategoryHierarchy\n * based on the categoryId query param set in the URL of the request.\n */\nexport const getCurrentCategoryActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-current-category',\n action: >getCurrentCategoryAction,\n input: createGetCurrentCategoryInput\n});\n\nexport default getCurrentCategoryActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { getMediaLocationsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { MediaLocation } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { buildCacheKey, generateImageUrl } from './utilities/utils';\n\n/**\n * Product Input.\n */\nexport class MediaLocationsByIdInput implements IActionInput {\n public productId?: number;\n\n public channelId: number;\n\n public catalogId: number;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, productId?: number, catalogId?: number) {\n this.productId = productId;\n this.channelId = +apiSettings.channelId;\n this.catalogId = catalogId || 0;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`MediaLocationID-${this.productId && this.productId.toString()}`, this.apiSettings);\n\n public getCacheObjectType = () => 'MediaLocations';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nexport const createMediaLocationsByIdInput = (inputData: ICreateActionContext>): MediaLocationsByIdInput => {\n const productId = inputData.config && +inputData.config.productId || undefined;\n return new MediaLocationsByIdInput(inputData.requestContext.apiSettings, productId, undefined);\n};\n\n/**\n * Calls the Retail API and returns the product based on the passed MediaLocationsByIdInput.\n * @param input\n * @param ctx\n */\nexport async function getMediaLocationsByIdAction(input: MediaLocationsByIdInput, ctx: IActionContext): Promise {\n if (input.productId) {\n return getMediaLocationsAsync({ callerContext: ctx, queryResultSettings: {} }, input.productId, input.channelId, input.catalogId).then(response => {\n return response.map(\n (mediaLocation: MediaLocation): MediaLocation => {\n mediaLocation.Uri = generateImageUrl(mediaLocation.Uri, ctx.requestContext.apiSettings);\n mediaLocation.AltText = mediaLocation.AltText ? mediaLocation.AltText : '';\n return mediaLocation;\n }\n );\n });\n }\n return [];\n}\n\nexport const getMediaLocationsByIdActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-media-locations-by-id',\n action: >getMediaLocationsByIdAction,\n input: createMediaLocationsByIdInput\n});\n\nexport default getMediaLocationsByIdActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, getCategoriesUrlSync, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\nimport { ICategoryPath, ICategoryUrl } from '@msdyn365-commerce/core-internal/dist/types/interfaces/ICategoryPathInterfaces';\nimport { getCategoryPathsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { CategoryPathLookup } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { buildCacheKey, getSelectedProductIdFromActionInput } from './utilities/utils';\n\n/**\n * Category path input.\n */\nexport class GetCategoryPathsInput implements IActionInput {\n public readonly ChannelId: number;\n\n public readonly CatalogId: number;\n\n public readonly categoryPathLooksups: CategoryPathLookup[];\n\n public readonly apiSettings: ICommerceApiSettings;\n\n private constructedCacheKey: string;\n\n constructor(context: IRequestContext, categoryPathLooksups: CategoryPathLookup[]) {\n this.ChannelId = context.apiSettings.channelId;\n this.CatalogId = context.apiSettings.catalogId || 0;\n this.categoryPathLooksups = categoryPathLooksups;\n this.apiSettings = context.apiSettings;\n this.constructedCacheKey = '';\n categoryPathLooksups.forEach(categoryPath => {\n this.constructedCacheKey += `${categoryPath.ProductId && categoryPath.ProductId.toString()}|`;\n });\n this.constructedCacheKey += `${this.ChannelId.toString()}|`;\n this.constructedCacheKey += `${this.CatalogId.toString()}|`;\n }\n\n public getCacheKey = () => buildCacheKey(this.constructedCacheKey, this.apiSettings);\n\n public getCacheObjectType = () => 'CategoryPath';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the getCategoryPath retail api call.\n * @param inputData\n */\nexport const createGetCategoryPathsInput = (inputData: ICreateActionContext>): IActionInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n if (productId) {\n return new GetCategoryPathsInput(inputData.requestContext, [{ ProductId: +productId }]);\n }\n throw new Error('Unable to create SelectedVariantInput, no productId found on module config or query');\n\n};\n\n/**\n * Calls the Retail API and returns the category path for a product.\n * @param input\n * @param ctx\n */\nexport async function getCategoryPathsAction(input: GetCategoryPathsInput, ctx: IActionContext): Promise {\n const categoryPathResults = await getCategoryPathsAsync({ callerContext: ctx }, input.ChannelId, input.CatalogId, input.categoryPathLooksups);\n const categoryPath = categoryPathResults[0].CategoryPath && categoryPathResults[0].CategoryPath[0];\n const categoryUrl = getCategoriesUrlSync(categoryPath, ctx);\n if (categoryUrl) {\n /* Do not return the root category of the product*/\n /* eslint-disable-next-line @typescript-eslint/no-magic-numbers -- We do not need the root ctegory path. */\n return categoryUrl.slice(1);\n }\n return [];\n}\n\nexport const getCategoryPathsActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-category-paths',\n action: >getCategoryPathsAction,\n input: createGetCategoryPathsInput\n});\n\nexport default getCategoryPathsActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductRefiner } from '@msdyn365-commerce/retail-proxy';\nimport { getRefinersByTextAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport { parseSearchData } from './utilities/input-data-parser';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Action Input class for the getRefinersByText data action.\n */\nexport class RefinersByTextInput implements IActionInput {\n public readonly catalogId: number;\n\n public readonly searchText: string;\n\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(\n searchText: string,\n catalogId: number,\n queryResultSettingsProxy: QueryResultSettingsProxy,\n apiSettings: ICommerceApiSettings) {\n this.catalogId = catalogId;\n this.searchText = searchText;\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`${this.searchText}|${this.catalogId}|${this.queryResultSettingsProxy.cacheKeyHint}`, this.apiSettings);\n\n public getCacheObjectType = () => 'ProductRefiner';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nexport const createRefinersByTextInput = (inputData: ICreateActionContext>): IActionInput => {\n const searchInputData = parseSearchData(inputData);\n const catalogId = inputData.config ? Number(inputData.config.catalogId) : 0;\n\n return new RefinersByTextInput(\n searchInputData.q,\n Number.isNaN(catalogId) ? 0 : catalogId,\n QueryResultSettingsProxy.fromInputData(inputData),\n inputData.requestContext.apiSettings\n );\n};\n\n/**\n * Calls the Retail API and returns all refiners by text.\n * @param input\n * @param ctx\n */\nexport async function getRefinersByTextAction(input: RefinersByTextInput, ctx: IActionContext): Promise {\n return getRefinersByTextAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n input.catalogId,\n input.searchText);\n}\n\nexport const getRefinersByTextActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-refiners-by-text',\n action: >getRefinersByTextAction,\n input: createRefinersByTextInput\n});\n\nexport default getRefinersByTextActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { ProductList, ProductListLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * OrderTemplateLine state information.\n */\nexport class OrderTemplateLine {\n public productListLine: ProductListLine;\n\n public fullProduct?: FullProduct;\n\n constructor(productListLine: ProductListLine, fullProduct?: FullProduct) {\n this.productListLine = productListLine;\n this.fullProduct = fullProduct;\n }\n}\n\nexport interface IOrderTemplateLinesState {\n lines: OrderTemplateLine[];\n totalCount: number;\n}\n\n/**\n * Order template class.\n */\nexport class OrderTemplate {\n public productList: ProductList;\n\n public orderTemplateLines: OrderTemplateLine[];\n\n public totalLines: number;\n\n constructor(productList: ProductList, orderTemplateLines: OrderTemplateLine[], totalLines: number) {\n this.productList = productList;\n this.orderTemplateLines = orderTemplateLines;\n this.totalLines = totalLines;\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync, getUsersAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\n\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get customer data action.\n */\nexport class OrganizationUsersInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('OrganizationUsers', this.apiSettings);\n\n public getCacheObjectType = () => 'BusinessPartner';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nexport const createGetOrganizationUsersInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new OrganizationUsersInput(requestContext.apiSettings);\n};\n\nexport async function getOrganizationUsers(input: OrganizationUsersInput, ctx: IActionContext): Promise {\n return getCurrentAsync({ callerContext: ctx })\n .then(businessPartner => {\n return getUsersAsync({ callerContext: ctx }, businessPartner.BusinessPartnerId)\n .then((users) => {\n return users;\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.trace('[get-organization-users] Unable to load users');\n throw new Error('[get-organization-users] Unable to load users');\n });\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[get-organization-users] Unable to get BusinessPartner');\n throw new Error('[get-organization-users] Unable to get BusinessPartner');\n });\n}\nexport const getOrganizationUsersDataAction = createObservableDataAction({\n id: 'get-organization-users',\n action: >getOrganizationUsers,\n input: createGetOrganizationUsersInput\n});\n\nexport default getOrganizationUsersDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { CartPromotionLine } from '@msdyn365-commerce/retail-proxy';\nimport { getAvailablePromotionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\n\nimport { ActiveCartProductsInput, buildCacheKey, getActiveCartProductsAction } from '.';\n\n/**\n * Input class for promotion options for items in cart.\n */\nexport class PromotionOptionsForCartLineItems implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('ActiveCartLineItemsPromotionOptions', this.apiSettings);\n\n public getCacheObjectType = () => 'ActiveCartLineItemsPromotionOptions';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext>) => {\n return new PromotionOptionsForCartLineItems(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail API to get the promotion options for items in the cart.\n * @param input\n * @param ctx\n */\nexport async function getPromotionOptionsForCartLineItems(input: PromotionOptionsForCartLineItems, ctx: IActionContext): Promise {\n // If no input is provided fail out\n if (!input) {\n throw new Error('[getPromotionOptionsForCartLineItems]No valid Input was provided, failing');\n }\n const cartState = await getCartState(ctx);\n if (cartState.hasInvoiceLine) {\n ctx.trace('[getPromotionOptionsForCartLineItems] cart has invoice line');\n return [];\n }\n const cart = cartState.cart;\n const products = await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx);\n\n if (!cart || !cart.CartLines || !products || products.length === 0) {\n ctx.trace('[getPromotionOptionsForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\n return [];\n }\n\n const cartLineIds = cart.CartLines.map(c => c.LineId || '');\n\n return getAvailablePromotionsAsync({ callerContext: ctx, queryResultSettings: {}, bypassCache: 'get' }, cart.Id, cartLineIds || null)\n .then(result => {\n return result;\n }).catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getPromotionOptionsForCartLineItems]Error executing action');\n throw new Error('[getPromotionOptionsForCartLineItems]Error executing action');\n });\n}\n\nexport const getPromotionOptionsForCartLineItemsDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-promotion-options-for-cartlines',\n action: >getPromotionOptionsForCartLineItems,\n input: createInput\n});\n\nexport default getPromotionOptionsForCartLineItemsDataAction;\n","/**\n* Copyright (c) 2018 Microsoft Corporation\n* Modules Registration\n* THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n*/\n\nconst universal = require('react-universal-component').default;\n\nexport const viewDictionary = {};\n\nviewDictionary['@msdyn365-commerce-modules|accordion|modules|accordion-item|accordion-item'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion-item/accordion-item.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-accordion-dist-lib-modules-accordion-item-accordion-item.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|accordion|modules|accordion|accordion'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion/accordion.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-accordion-dist-lib-modules-accordion-accordion.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|aad-generic|aad-generic'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/aad-generic/aad-generic.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-aad-generic-aad-generic.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-address-tile|account-address-tile'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-address-tile/account-address-tile.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-address-tile-account-address-tile.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-customer-balance-tile|account-customer-balance-tile'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance-tile/account-customer-balance-tile.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-customer-balance-tile-account-customer-balance-tile.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-customer-balance|account-customer-balance'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance/account-customer-balance.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-customer-balance-account-customer-balance.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-generic-tile|account-generic-tile'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-generic-tile/account-generic-tile.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-generic-tile-account-generic-tile.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-invoice-tile|account-invoice-tile'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-invoice-tile/account-invoice-tile.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-invoice-tile-account-invoice-tile.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-loyalty-tile|account-loyalty-tile'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty-tile/account-loyalty-tile.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-loyalty-tile-account-loyalty-tile.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-loyalty|account-loyalty'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty/account-loyalty.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-loyalty-account-loyalty.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-order-templates-tile|account-order-templates-tile'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-order-templates-tile/account-order-templates-tile.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-order-templates-tile-account-order-templates-tile.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-profile-edit|account-profile-edit'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile-edit/account-profile-edit.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-profile-edit-account-profile-edit.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-profile|account-profile'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile/account-profile.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-profile-account-profile.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-welcome-tile|account-welcome-tile'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-welcome-tile/account-welcome-tile.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-welcome-tile-account-welcome-tile.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-wishlist-tile|account-wishlist-tile'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-wishlist-tile/account-wishlist-tile.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-account-wishlist-tile-account-wishlist-tile.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|b2b-requests-status|b2b-requests-status'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/b2b-requests-status/b2b-requests-status.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-b2b-requests-status-b2b-requests-status.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|b2b-requests-tile|b2b-requests-tile'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/b2b-requests-tile/b2b-requests-tile.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-b2b-requests-tile-b2b-requests-tile.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|loyalty-sign-up|loyalty-sign-up'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-sign-up/loyalty-sign-up.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-loyalty-sign-up-loyalty-sign-up.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|loyalty-terms|loyalty-terms'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-terms/loyalty-terms.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-loyalty-terms-loyalty-terms.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|organization-users-tile|organization-users-tile'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/organization-users-tile/organization-users-tile.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-organization-users-tile-organization-users-tile.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|password-reset-verification|password-reset-verification'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset-verification/password-reset-verification.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-password-reset-verification-password-reset-verification.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|password-reset|password-reset'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset/password-reset.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-password-reset-password-reset.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|sign-in|sign-in'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-in/sign-in.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-sign-in-sign-in.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|sign-up|sign-up'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-up/sign-up.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-account-management-dist-lib-modules-sign-up-sign-up.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|address|modules|account-management-address|account-management-address'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/address/dist/lib/modules/account-management-address/account-management-address.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-address-dist-lib-modules-account-management-address-account-management-address.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|address|modules|business-account-address|business-account-address'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/address/dist/lib/modules/business-account-address/business-account-address.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-address-dist-lib-modules-business-account-address-business-account-address.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|address|modules|checkout-billing-address|checkout-billing-address'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/address/dist/lib/modules/checkout-billing-address/checkout-billing-address.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-address-dist-lib-modules-checkout-billing-address-checkout-billing-address.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|address|modules|checkout-shipping-address|checkout-shipping-address'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/address/dist/lib/modules/checkout-shipping-address/checkout-shipping-address.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-address-dist-lib-modules-checkout-shipping-address-checkout-shipping-address.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|breadcrumb|modules|breadcrumb|breadcrumb'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/breadcrumb/dist/lib/modules/breadcrumb/breadcrumb.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-breadcrumb-dist-lib-modules-breadcrumb-breadcrumb.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|business-account-management|modules|business-sign-up|business-sign-up'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/business-account-management/dist/lib/modules/business-sign-up/business-sign-up.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-business-account-management-dist-lib-modules-business-sign-up-business-sign-up.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|business-organization-list|modules|business-organization-list|business-organization-list'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/business-organization-list/dist/lib/modules/business-organization-list/business-organization-list.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-business-organization-list-dist-lib-modules-business-organization-list-business-organization-list.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|buybox|modules|buybox|buybox'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/buybox/dist/lib/modules/buybox/buybox.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-buybox-dist-lib-modules-buybox-buybox.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|buybox|modules|quickview|quickview'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/buybox/dist/lib/modules/quickview/quickview.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-buybox-dist-lib-modules-quickview-quickview.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|carousel|modules|carousel|carousel'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/carousel/dist/lib/modules/carousel/carousel.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-carousel-dist-lib-modules-carousel-carousel.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|cart|modules|cart-icon|cart-icon'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon/cart-icon.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-cart-dist-lib-modules-cart-icon-cart-icon.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|cart|modules|cart|cart'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/cart/dist/lib/modules/cart/cart.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-cart-dist-lib-modules-cart-cart.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-customer-account-payment|checkout-customer-account-payment'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-customer-account-payment/checkout-customer-account-payment.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-customer-account-payment-checkout-customer-account-payment.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-delivery-options|checkout-delivery-options'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-delivery-options/checkout-delivery-options.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-delivery-options-checkout-delivery-options.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-gift-card|checkout-gift-card'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-gift-card/checkout-gift-card.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-gift-card-checkout-gift-card.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-guest-profile|checkout-guest-profile'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-guest-profile/checkout-guest-profile.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-guest-profile-checkout-guest-profile.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-loyalty|checkout-loyalty'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-loyalty/checkout-loyalty.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-loyalty-checkout-loyalty.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-payment-instrument|checkout-payment-instrument'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/checkout-payment-instrument.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-payment-instrument-checkout-payment-instrument.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-pickup|checkout-pickup'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-pickup/checkout-pickup.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-pickup-checkout-pickup.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-section-container|checkout-section-container'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-section-container/checkout-section-container.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-section-container-checkout-section-container.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-terms-and-conditions|checkout-terms-and-conditions'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-terms-and-conditions-checkout-terms-and-conditions.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout|checkout'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/checkout.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-checkout-checkout.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|gift-card-balance-check|gift-card-balance-check'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/gift-card-balance-check/gift-card-balance-check.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-checkout-dist-lib-modules-gift-card-balance-check-gift-card-balance-check.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|content-block|modules|content-block|content-block'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/content-block/dist/lib/modules/content-block/content-block.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-content-block-dist-lib-modules-content-block-content-block.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|cookie-compliance|modules|cookie-compliance|cookie-compliance'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/cookie-compliance/dist/lib/modules/cookie-compliance/cookie-compliance.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-cookie-compliance-dist-lib-modules-cookie-compliance-cookie-compliance.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|buybox'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/buybox.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-fabrikam-design-kit-dist-lib-modules-fabrikam-views-buybox.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|cart'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/cart.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-fabrikam-design-kit-dist-lib-modules-fabrikam-views-cart.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|header'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/header.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-fabrikam-design-kit-dist-lib-modules-fabrikam-views-header.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|navigation-menu'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/navigation-menu.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-fabrikam-design-kit-dist-lib-modules-fabrikam-views-navigation-menu.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|order-details'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/order-details.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-fabrikam-design-kit-dist-lib-modules-fabrikam-views-order-details.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|order-history'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/order-history.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-fabrikam-design-kit-dist-lib-modules-fabrikam-views-order-history.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|ratings-histogram'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/ratings-histogram.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-fabrikam-design-kit-dist-lib-modules-fabrikam-views-ratings-histogram.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|reviews-list'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/reviews-list.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-fabrikam-design-kit-dist-lib-modules-fabrikam-views-reviews-list.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|search-result-container'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/search-result-container.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-fabrikam-design-kit-dist-lib-modules-fabrikam-views-search-result-container.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|footer|modules|footer-category|footer-category'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/footer-category/footer-category.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-footer-dist-lib-modules-footer-category-footer-category.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|footer|modules|footer-item|footer-item'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/footer-item/footer-item.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-footer-dist-lib-modules-footer-item-footer-item.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|header|modules|header|header'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/header/dist/lib/modules/header/header.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-header-dist-lib-modules-header-header.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|iframe|modules|iframe|iframe'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/iframe/dist/lib/modules/iframe/iframe.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-iframe-dist-lib-modules-iframe-iframe.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|invoice-details|modules|invoice-details|invoice-details'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/invoice-details/dist/lib/modules/invoice-details/invoice-details.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-invoice-details-dist-lib-modules-invoice-details-invoice-details.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|invoice|modules|invoices-list|invoices-list'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/invoice/dist/lib/modules/invoices-list/invoices-list.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-invoice-dist-lib-modules-invoices-list-invoices-list.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|map|modules|map|map'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/map/dist/lib/modules/map/map.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-map-dist-lib-modules-map-map.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|media-gallery|modules|media-gallery|media-gallery'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/media-gallery/dist/lib/modules/media-gallery/media-gallery.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-media-gallery-dist-lib-modules-media-gallery-media-gallery.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|navigation-menu|modules|navigation-menu|navigation-menu'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/navigation-menu/dist/lib/modules/navigation-menu/navigation-menu.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-navigation-menu-dist-lib-modules-navigation-menu-navigation-menu.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|notifications-lists|modules|notifications-list|notifications-list'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/notifications-lists/dist/lib/modules/notifications-list/notifications-list.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-notifications-lists-dist-lib-modules-notifications-list-notifications-list.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|order-management|modules|checkout-order-confirmation|checkout-order-confirmation'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/checkout-order-confirmation/checkout-order-confirmation.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-order-management-dist-lib-modules-checkout-order-confirmation-checkout-order-confirmation.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|order-management|modules|order-confirmation|order-confirmation'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-confirmation/order-confirmation.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-order-management-dist-lib-modules-order-confirmation-order-confirmation.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|order-management|modules|order-details|order-details'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-details/order-details.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-order-management-dist-lib-modules-order-details-order-details.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|order-management|modules|order-history|order-history'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-history/order-history.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-order-management-dist-lib-modules-order-history-order-history.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|order-template|modules|order-template-list|order-template-list'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template-list/order-template-list.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-order-template-dist-lib-modules-order-template-list-order-template-list.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|order-template|modules|order-template|order-template'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/order-template.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-order-template-dist-lib-modules-order-template-order-template.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|product-collection|modules|product-collection|product-collection'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/product-collection/dist/lib/modules/product-collection/product-collection.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-product-collection-dist-lib-modules-product-collection-product-collection.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|product-specification|modules|product-specification|product-specification'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/product-specification/dist/lib/modules/product-specification/product-specification.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-product-specification-dist-lib-modules-product-specification-product-specification.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|promo-banner|modules|promo-banner|promo-banner'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner/promo-banner.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-promo-banner-dist-lib-modules-promo-banner-promo-banner.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|quick-order|modules|quick-order|quick-order'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/quick-order/dist/lib/modules/quick-order/quick-order.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-quick-order-dist-lib-modules-quick-order-quick-order.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|ratings-reviews|modules|ratings-histogram|ratings-histogram'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/ratings-histogram/ratings-histogram.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-ratings-reviews-dist-lib-modules-ratings-histogram-ratings-histogram.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|ratings-reviews|modules|reviews-list|reviews-list'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/reviews-list/reviews-list.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-ratings-reviews-dist-lib-modules-reviews-list-reviews-list.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|ratings-reviews|modules|write-review|write-review'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/write-review/write-review.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-ratings-reviews-dist-lib-modules-write-review-write-review.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|search-result-container|modules|search-result-container|search-result-container'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/search-result-container.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-search-result-container-dist-lib-modules-search-result-container-search-result-container.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|search|modules|search|search'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/search/dist/lib/modules/search/search.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-search-dist-lib-modules-search-search.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|site-picker|modules|site-picker|site-picker'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/site-picker/dist/lib/modules/site-picker/site-picker.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-site-picker-dist-lib-modules-site-picker-site-picker.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|social-share|modules|social-share-item|social-share-item'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share-item/social-share-item.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-social-share-dist-lib-modules-social-share-item-social-share-item.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|social-share|modules|social-share|social-share'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share/social-share.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-social-share-dist-lib-modules-social-share-social-share.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|spacer|modules|spacer|spacer'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/spacer/dist/lib/modules/spacer/spacer.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-spacer-dist-lib-modules-spacer-spacer.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|store-selector|modules|store-selector|store-selector'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector/store-selector.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-store-selector-dist-lib-modules-store-selector-store-selector.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|tab|modules|tab-item|tab-item'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/tab/dist/lib/modules/tab-item/tab-item.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-tab-dist-lib-modules-tab-item-tab-item.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|tab|modules|tab|tab'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/tab/dist/lib/modules/tab/tab.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-tab-dist-lib-modules-tab-tab.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|text-block|modules|text-block|text-block'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/text-block/dist/lib/modules/text-block/text-block.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-text-block-dist-lib-modules-text-block-text-block.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|video-player|modules|video-player|video-player'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/video-player/dist/lib/modules/video-player/video-player.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-video-player-dist-lib-modules-video-player-video-player.view.js',\n ignoreBabelRename: true\n }\n )};\nviewDictionary['@msdyn365-commerce-modules|wishlist|modules|wishlist-items|wishlist-items'] = {\ncomponent: universal(\n () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n '@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/wishlist-items.view.js'),\n {\n chunkName: () => '@msdyn365-commerce-modules-wishlist-dist-lib-modules-wishlist-items-wishlist-items.view.js',\n ignoreBabelRename: true\n }\n )};","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\nimport { LoyaltyCard } from '@msdyn365-commerce/retail-proxy';\nimport { issueLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\nimport { buildCacheKey } from '.';\nimport { getLoyaltyAction, GetLoyaltyCardInput } from './get-loyalty-card';\n\n/**\n * Input class for the issueLoyalty data action.\n */\nexport class IssueLoyaltyInput implements IActionInput {\n public userAccountNumber?: string;\n\n public apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`IssueLoyalty-${this.userAccountNumber}`, this.apiSettings);\n\n public getCacheObjectType = () => 'GetIssueLoyalty';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CreateInput method for the issueLoyalty method.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createIssueLoyaltyInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create issue loyalty input. User is not authenticated.');\n }\n\n return new IssueLoyaltyInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * The action method for the issueLoyalty data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function issueLoyaltyAction(input: IssueLoyaltyInput, ctx: IActionContext): Promise {\n const promises: [Promise, Promise] = [getCartState(ctx), _getLoyalty(input, ctx)];\n return Promise.all(promises)\n .then((result) => {\n const cartState = result[0];\n const card = result[1];\n if (card && card.CardNumber) {\n updateCart(cartState, card);\n return card;\n }\n\n // @ts-expect-error\n // TO-DO: Remove after SDK bug fix https://msdyneng.visualstudio.com/FinOps/_workitems/edit/473891\n return issueLoyaltyCardAsync({ callerContext: ctx }, { CustomerAccount: input.userAccountNumber || null })\n .then((issuedCard: LoyaltyCard) => {\n updateCart(cartState, issuedCard);\n return issuedCard;\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('Issuing loyalty card failed');\n throw new Error('Issuing loyalty card failed');\n });\n })\n .catch((error: Error) => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('Unable to issue loyalty card');\n throw new Error('Unable to issue loyalty card');\n });\n}\n\nasync function _getLoyalty(input: IssueLoyaltyInput, ctx: IActionContext): Promise {\n const loyaltyCardInput = new GetLoyaltyCardInput(input.apiSettings);\n return getLoyaltyAction(loyaltyCardInput, ctx);\n}\n\nfunction updateCart(cartState: ICartState, card: LoyaltyCard): void {\n cartState.updateLoyaltyCardId({ loyaltyCardNumber: card.CardNumber });\n}\n\n/**\n * The getLoyaltyCard data action\n * Returns the loyalty card belonging to the customer.\n */\nexport const issueLoyaltyActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/issue-loyalty',\n action: >issueLoyaltyAction,\n input: <(args: ICreateActionContext) => IActionInput>createIssueLoyaltyInput\n});\n\nexport default issueLoyaltyActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput,\n ICommerceApiSettings, ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport {\n getCustomerBalanceAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\nimport { buildCacheKey } from '.';\nimport getCustomer, { GetCustomerInput } from './get-customer';\n\n/**\n * Input class for the GetCustomerBalance data action.\n */\nexport class GetCustomerBalanceInput implements IActionInput {\n public customerAccountNumber?: string;\n\n public apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, customerAccountNumber?: string) {\n this.customerAccountNumber = customerAccountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`CustomerBalance-${this.customerAccountNumber}`, this.apiSettings);\n\n public getCacheObjectType = () => 'GetCustomerBalance';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CreateInput method for the GetCustomerBalance method.\n * @param inputData The input data passed to the createInput method.\n */\n\nexport const createGetCustomerBalanceInput = (inputData: ICreateActionContext): GetCustomerBalanceInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create get customer balance input. User is not authenticated.');\n }\n\n return new GetCustomerBalanceInput(requestContext.apiSettings);\n};\n\n/**\n * The action method for the GetCustomerBalance data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function getCustomerBalanceAction(input: GetCustomerBalanceInput, ctx: IActionContext): Promise {\n const customerInput = new GetCustomerInput(input.apiSettings, input.customerAccountNumber);\n const customer = await getCustomer(customerInput, ctx);\n\n if (!customer) {\n ctx.telemetry.error('Not able to get customer', new Error('Not able to get customer'));\n }\n\n return getCustomerBalanceAsync(\n {\n callerContext: ctx,\n queryResultSettings: {}\n },\n customer.AccountNumber,\n customer.InvoiceAccount!\n );\n}\n\n/**\n * The GetCustomerBalance data action\n * Returns the customer's balance.\n */\nexport const getCustomerBalanceActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-customer-balance',\n action: >getCustomerBalanceAction,\n input: <(args: ICreateActionContext) => IActionInput>createGetCustomerBalanceInput\n});\n\nexport default getCustomerBalanceActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { CartLine, ChannelDeliveryOptionConfiguration, FeatureState, ProductWarehouse } from '@msdyn365-commerce/retail-proxy';\nimport { getOrgUnitConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport {\n getEstimatedAvailabilityAsync,\n getEstimatedProductWarehouseAvailabilityAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { getChannelDeliveryOptionConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\nimport {\n ActiveCartProductsInput,\n ArrayExtensions,\n buildCacheKey,\n getActiveCartProductsAction,\n IProductInventoryInformation,\n mapProductInventoryInformation\n} from '.';\nimport { FeatureStateInput, getFeatureStateAction } from './get-feature-state';\n\n/**\n * Input class for availabilities for items in cart.\n */\nexport class ProductAvailabilitiesForCartLineItems implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('ActiveCartLineItemsAvailability', this.apiSettings);\n\n public getCacheObjectType = () => 'ActiveCartLineItemsAvailability';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext>) => {\n return new ProductAvailabilitiesForCartLineItems(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n * @param cartLine\n * @param featureSate\n * @param channelDeliveryOptionConfig\n * @param pickupDeliveryMode\n */\nconst getDeliveryMode = (cartLine: CartLine, featureSate: boolean = false, channelDeliveryOptionConfig: ChannelDeliveryOptionConfiguration, pickupDeliveryMode?: string) => {\n if (!featureSate) {\n return cartLine.DeliveryMode === pickupDeliveryMode;\n }\n return cartLine.DeliveryMode === channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === cartLine.DeliveryMode);\n\n};\n\n/**\n * Calls the Retail API to get the product availabilities for items in the cart.\n * @param input\n * @param ctx\n */\nexport async function getAvailabilitiesForCartLineItems(\n input: ProductAvailabilitiesForCartLineItems,\n ctx: IActionContext\n): Promise {\n // If no input is provided fail out\n if (!input) {\n throw new Error('[getAvailabilitiesForCartLineItems]No valid Input was provided, failing');\n }\n\n const shippingItems: CartLine[] = [];\n const bopisItems = [];\n let productAvailabilities: IProductInventoryInformation[] = [];\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n let channelDeliveryOptionConfig: any;\n\n const cartState = await getCartState(ctx);\n const cart = cartState.cart;\n const channelConfiguration = await getOrgUnitConfigurationAsync({ callerContext: ctx });\n const products = await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx);\n\n /**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n * @param context\n */\n async function getFeatureState(context: IActionContext): Promise {\n return getFeatureStateAction(new FeatureStateInput(), context);\n }\n const featureState = await getFeatureState(ctx);\n const retailMultiplePickUpOptionEnabled = featureState?.find(item => item.Name === multiplePickupStoreSwitchName)?.IsEnabled;\n if (retailMultiplePickUpOptionEnabled) {\n channelDeliveryOptionConfig = await getChannelDeliveryOptionConfigurationAsync({ callerContext: ctx });\n }\n const PickupDeliveryModeCode = channelConfiguration.PickupDeliveryModeCode;\n const EmailDeliveryModeCode = channelConfiguration.EmailDeliveryModeCode;\n\n if (!cart || !channelConfiguration || !products || products.length === 0) {\n ctx.trace('[getAvailabilitiesForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\n return [];\n }\n\n if (cart && cart.Id && cart.CartLines && cart.CartLines.length > 0 && channelConfiguration) {\n for (const cartLine of cart.CartLines) {\n if (cartLine.DeliveryMode && cartLine.DeliveryMode !== '' && getDeliveryMode(cartLine, retailMultiplePickUpOptionEnabled, channelDeliveryOptionConfig, PickupDeliveryModeCode)) {\n bopisItems.push(cartLine);\n } else if (cartLine.DeliveryMode !== EmailDeliveryModeCode) {\n shippingItems.push(cartLine);\n }\n }\n }\n\n if (shippingItems && shippingItems.length > 0) {\n let productIds = shippingItems.map(x => x.ProductId!);\n productIds = ArrayExtensions.unique(productIds);\n\n const shippingProductAvailabilities = await getEstimatedAvailabilityAsync(\n { callerContext: ctx, bypassCache: 'get' },\n { ProductIds: productIds, DefaultWarehouseOnly: true, QuantityUnitTypeValue: 2 } // 2: Sales unit\n );\n\n if (shippingProductAvailabilities &&\n shippingProductAvailabilities.ProductWarehouseInventoryAvailabilities &&\n shippingProductAvailabilities.ProductWarehouseInventoryAvailabilities.length > 0) {\n\n productAvailabilities = mapProductInventoryInformation(\n ctx,\n shippingProductAvailabilities?.ProductWarehouseInventoryAvailabilities\n );\n }\n }\n\n if (bopisItems && bopisItems.length > 0) {\n for (const bopisItem of bopisItems) {\n const productWarehouse: ProductWarehouse = {\n ProductId: bopisItem.ProductId,\n InventLocationId: bopisItem.WarehouseId\n };\n\n if (ctx.requestContext.channel && ctx.requestContext.channel.InventLocationDataAreaId) {\n productWarehouse.DataAreaId = ctx.requestContext.channel.InventLocationDataAreaId;\n }\n const quantityUnitTypeSales: number = 2;\n const getProductWarehouseAvail = await getEstimatedProductWarehouseAvailabilityAsync(\n { callerContext: ctx, bypassCache: 'get', queryResultSettings: {} },\n [productWarehouse],\n quantityUnitTypeSales\n );\n\n if (getProductWarehouseAvail &&\n getProductWarehouseAvail.ProductWarehouseInventoryAvailabilities &&\n getProductWarehouseAvail.ProductWarehouseInventoryAvailabilities.length > 0) {\n const productWarehouseMapping = mapProductInventoryInformation(\n ctx,\n getProductWarehouseAvail?.ProductWarehouseInventoryAvailabilities\n );\n if (productWarehouseMapping && productWarehouseMapping.length > 0) {\n for (const item of productWarehouseMapping) {\n productAvailabilities.push(item);\n }\n }\n }\n }\n }\n\n if (productAvailabilities && productAvailabilities.length > 0) {\n return productAvailabilities;\n }\n\n ctx.trace('[getAvailabilitiesForCartLineItems] unable to get availabilities for product');\n return [];\n}\n\nexport const getAvailabilitiesForCartLineItemsDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-availabilities-cartlines',\n action: >getAvailabilitiesForCartLineItems,\n input: createInput\n});\n\nexport default getAvailabilitiesForCartLineItemsDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nexport * from './event';\nexport * from './event-subscriber';\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { AsyncResult, MediaLocation, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getMediaLocationsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport {\n generateImageUrl,\n getSelectedProductIdFromActionInput,\n getSelectedVariant,\n SelectedVariantInput\n} from '.';\n\n/**\n * The action input class for the getMediaLocationsForSelectedVariant data action.\n */\nexport class MediaLocationsForSelectedVariantInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n public catalogId: number;\n\n public selectedProduct: SimpleProduct | undefined;\n\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, catalogId?: number) {\n this.productId = productId;\n this.channelId = channelId;\n this.catalogId = catalogId || 0;\n this.selectedProduct = selectedProduct;\n }\n\n public getCacheKey = () => 'MediaLocationsForSelectedVariant';\n\n public getCacheObjectType = () => 'MediaLocations';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The createInput method for the getMediaLocationsForSelectedVariant data action.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createMediaLocationsForSelectedVariantInput = (\n inputData: ICreateActionContext>\n): MediaLocationsForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new MediaLocationsForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId);\n }\n throw new Error('Unable to create MediaLocationsForSelectedVariantInput, no productId found on module config or query');\n\n};\n\n/**\n * The action method for the getMediaLocationsForSelectedVariant data action.\n * @param input\n * @param ctx\n */\nexport async function getMediaLocationsForSelectedVariantAction(\n input: MediaLocationsForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n return AsyncResult.resolve()\n .then(() => {\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\n\n if (!activeProduct) {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\n return >getSelectedVariant(selectedVariantInput, ctx);\n }\n\n return activeProduct;\n })\n .then(productResult => {\n const activeProduct: SimpleProduct | undefined = productResult;\n\n if (activeProduct) {\n return getMediaLocationsAsync({ callerContext: ctx, queryResultSettings: {} }, activeProduct.RecordId, input.channelId, input.catalogId).then(response => {\n return response.map(\n (mediaLocation: MediaLocation): MediaLocation => {\n mediaLocation.Uri = generateImageUrl(mediaLocation.Uri, ctx.requestContext.apiSettings);\n mediaLocation.AltText = mediaLocation.AltText ? mediaLocation.AltText : activeProduct.Name;\n return mediaLocation;\n }\n );\n });\n }\n\n return [];\n })\n .catch(error => {\n ctx.trace(error);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug('[getMediaLocationsForSelectedVariantAction]Error executing action');\n throw new Error('[getMediaLocationsForSelectedVariantAction]Error executing action');\n });\n}\n\n/**\n * The getMediaLocationsForSelectedVariant data action\n * Gets the currently selected variant for the page via the getSelectedVariant data action,\n * and then gets the media location information for the variant via the MediaLocations RetailServer API.\n */\nexport const getMediaLocationsForSelectedVariantActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-media-locations-for-selected-variant',\n action: >getMediaLocationsForSelectedVariantAction,\n input: createMediaLocationsForSelectedVariantInput\n});\n\nexport default getMediaLocationsForSelectedVariantActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { Image, ISubList, List } from '@msdyn365-commerce-modules/data-types';\n\nimport GetProducts, { ProductInput } from './get-simple-products';\n\n/**\n * List Input action.\n */\nexport class ListInput implements IActionInput {\n public DocumentId: string;\n\n public Title: string;\n\n public Description: string;\n\n public ShortDescription: string;\n\n public BackgroundColor: string;\n\n public ForegroundColor: string;\n\n public Images: Image[];\n\n public Items: (IProductItem[] | ISubList)[];\n\n public ProductItems: IProductItem[];\n\n public ItemsCount: number;\n\n public ItemsPerPage: number;\n\n public SkipCount: number;\n\n constructor(\n documentId: string,\n title: string,\n description: string,\n shortDescription: string,\n backgroundColor: string,\n foregroundColor: string,\n images: Image[],\n items: (IProductItem[] | ISubList)[],\n productItems: IProductItem[],\n itemsCount: number,\n itemsPerPage: number,\n skipCount: number\n ) {\n this.DocumentId = documentId;\n this.Title = title;\n this.Description = description;\n this.ShortDescription = shortDescription;\n this.BackgroundColor = backgroundColor;\n this.ForegroundColor = foregroundColor;\n this.Images = images;\n this.Items = items;\n this.ProductItems = productItems;\n this.ItemsCount = itemsCount;\n this.ItemsPerPage = itemsPerPage;\n this.SkipCount = skipCount;\n }\n\n public shouldCacheOutput = () => true;\n\n public getCacheObjectType = () => 'LIST';\n\n public getCacheKey = () => `${this.DocumentId}-${this.ItemsCount}-${this.ItemsPerPage}-${this.SkipCount}`;\n}\n\nexport interface IProductItem {\n RecordId: string;\n CatalogId: string;\n}\n\n/**\n * List item type enum.\n */\nconst enum ListItemType {\n list = 'list',\n product = 'product'\n}\n\n/**\n * Calls to getSimpleProducts to get product array by ID's in list.\n * @param input\n * @param ctx\n */\nexport async function getListData(input: ListInput, ctx: IActionContext): Promise {\n ctx.trace(`List Title: ${input.Title}`);\n\n const { apiSettings } = ctx.requestContext;\n\n const sublists: (SimpleProduct | ISubList)[] = [];\n const result: List = {\n Title: input.Title,\n Description: input.Description,\n ShortDescription: input.ShortDescription,\n BackgroundColor: input.BackgroundColor,\n ForegroundColor: input.ForegroundColor,\n Items: sublists,\n ItemsCount: input.ItemsCount\n };\n\n if (input && input.Items && input.Items.length > 0) {\n // Get all products\n let products: SimpleProduct[] = [];\n if (input.ProductItems && input.ProductItems.length > 0) {\n const inputArray = input.ProductItems.map(item => new ProductInput(+item.RecordId, apiSettings));\n products = await GetProducts(inputArray, ctx);\n }\n\n // Build map from recordId to product, which will be used later when build the output.\n const productMap: { [recordId: string]: SimpleProduct } = {};\n products.forEach(item => {\n if (item) {\n productMap[`${item.RecordId}`] = item;\n }\n });\n\n for (const listitem of input.Items) {\n if (isSublist(listitem)) {\n result.Items.push(listitem);\n } else {\n listitem.forEach(item => {\n if (productMap[item.RecordId]) {\n result.Items.push(productMap[item.RecordId]);\n }\n });\n }\n }\n }\n\n return result;\n}\n\n/**\n * Check if an item is sublist.\n * @param listItem\n */\nfunction isSublist(listItem: IProductItem[] | ISubList): listItem is ISubList {\n return (listItem).Images !== undefined;\n}\n\n/**\n * Get images.\n * @param images\n */\nfunction getImages(images: IGeneric[]): Image[] {\n const resultImageList: Image[] = [];\n\n if (!images) {\n return resultImageList;\n }\n\n images.forEach(item => {\n if (item && item.image && item.image.href) {\n // Add image item\n const imageItem: Image = {\n href: item.image.href,\n altText: item.image.altText,\n title: item.image.title,\n width: item.image.width,\n height: item.image.height\n };\n\n resultImageList.push(imageItem);\n }\n });\n\n return resultImageList;\n}\n\n/**\n * Get the url of sub list.\n * @param listName\n * @param sitePath\n */\nfunction getSubListUrl(listName: string, sitePath: string): string {\n if (!listName) {\n return '';\n }\n\n if (!sitePath) {\n return `/${listName}.l`;\n }\n\n // SitePath has a leading '/'\n return `${sitePath}/${listName}.l`;\n}\n\n/**\n * Get input list data.\n * @param inputData\n */\nfunction getInutListData(inputData: ICreateActionContext, IGeneric>): IGeneric {\n let listData =\n !inputData || !inputData.requestContext || !inputData.requestContext.pageData ? null : inputData.requestContext.pageData.list;\n if (\n !inputData ||\n !inputData.requestContext ||\n !inputData.requestContext.pageData ||\n !inputData.requestContext.pageData.list ||\n !inputData.requestContext.pageData.list.content ||\n !inputData.requestContext.pageData.list.content.items ||\n !inputData.requestContext.pageData.list.content.title ||\n !inputData.requestContext.pageData.list._id\n ) {\n if (\n !inputData ||\n !inputData.data ||\n !inputData.data.list ||\n !inputData.data.list.content ||\n !inputData.data.list.content.items ||\n !inputData.data.list.content.title ||\n !inputData.data.list._id\n ) {\n console.error('data is not well defined for list action input');\n throw new Error('data is not well defined for list action input');\n }\n\n listData = inputData.data.list;\n }\n return listData;\n}\n\n/**\n * Get sub list item.\n * @param item\n * @param sitePathOfRequest\n */\nfunction getSubListItem(item: IGeneric, sitePathOfRequest: string): ISubList {\n const imageList: Image[] = getImages(item.fields.content.images);\n\n const sublistHref = getSubListUrl(item.fields._name, sitePathOfRequest);\n return {\n Title: item.fields.content.title,\n Description: item.fields.content.description,\n ShortDescription: item.fields.content.shortDescription,\n BackgroundColor: item.fields.content.backgroundColor,\n ForegroundColor: item.fields.content.foregroundColor,\n Href: sublistHref,\n Images: imageList\n };\n}\n\n/**\n * Get site path.\n * @param inputData\n */\nfunction getSitePath(inputData: ICreateActionContext, IGeneric>): string {\n return inputData && inputData.requestContext && inputData.requestContext.sitePath ? inputData.requestContext.sitePath : '';\n}\n\n/**\n * Get items per page.\n * @param inputData\n */\nfunction getItemsPerPage(inputData: ICreateActionContext, IGeneric>): number {\n if (!inputData || !inputData.config || !inputData.config.itemsPerPage) {\n return 50;\n }\n\n const result = Number(inputData.config.itemsPerPage);\n if (isNaN(result)) {\n return 50;\n }\n\n return result;\n}\n\n/**\n * Get skip count.\n * @param inputData\n */\nfunction getSkipCount(inputData: ICreateActionContext, IGeneric>): number {\n return inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.skipCount ? Number(inputData.requestContext.query.skipCount) : 0;\n}\n\n/**\n * Creates the input required to make the list call to get products.\n * @param inputData\n */\nconst createListInput = (inputData: ICreateActionContext, IGeneric>): IActionInput => {\n const listData: IGeneric = getInutListData(inputData);\n const listItems: (IProductItem[] | ISubList)[] = [];\n let productList: IProductItem[] = [];\n\n const parentImageList: Image[] = getImages(listData.content.images);\n\n const itemsPerPage = getItemsPerPage(inputData);\n const skipCount = getSkipCount(inputData);\n\n // This is the list contains all product and will be used to call getSimpleProducts data action.\n const productItems: IProductItem[] = [];\n const sum = skipCount + itemsPerPage;\n for (let index = skipCount; index < listData.content.items.length && index < sum; index++) {\n const item = listData.content.items[index];\n if (item.type === ListItemType.list) {\n if (!item.fields || !item.fields.content || !item.fields.content.title) {\n console.error(`sublist item fields, content or title missing in list ${listData._id}`);\n continue;\n }\n\n // If any elements in product list, then copy it and add to list items\n if (productList.length > 0) {\n const clonedList = [...productList];\n listItems.push(clonedList);\n productList = [];\n }\n\n // Build and add sublist item\n listItems.push(getSubListItem(item, getSitePath(inputData)));\n }\n\n if (item.type === ListItemType.product) {\n if (!item.fields || !item.fields.recordId) {\n console.error(`product item missing recordId in list ${listData._id}`);\n continue;\n }\n\n // Add product item\n const productItem: IProductItem = {\n RecordId: item.fields.recordId,\n CatalogId: item.fields.catalogId || '0'\n };\n\n productList.push(productItem);\n productItems.push(productItem);\n }\n }\n\n // Save the last portion of product items.\n if (productList.length > 0) {\n listItems.push(productList);\n }\n\n return new ListInput(\n listData._id,\n listData.content.title,\n listData.content.description,\n listData.content.shortDescription,\n listData.content.backgroundColor,\n listData.content.foregroundColor,\n parentImageList,\n listItems,\n productItems,\n listData.content.items.length,\n itemsPerPage,\n skipCount\n );\n};\n\nexport const getListDataDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-list',\n action: >getListData,\n input: createListInput\n});\n\nexport default getListDataDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductWarehouseInventoryAvailability } from '@msdyn365-commerce/retail-proxy';\nimport { getEstimatedAvailabilityAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductAvailableQuantity, ProductType, ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { getSelectedProductIdFromActionInput, getSelectedVariant, IProductInventoryInformation, SelectedVariantInput } from '.';\nimport { mapProductInventoryInformation } from './utilities/product-inventory-utils';\n\n/**\n * Input class for the getProductAvailabilitiesForSelectedVariant Data Action.\n */\nexport class ProductAvailabilitiesForSelectedVariantInput implements IActionInput {\n public productId: number;\n\n public channelId: number;\n\n constructor(productId: number | string, channelId: number) {\n this.productId = typeof productId === 'string' ? +productId : productId;\n this.channelId = channelId;\n }\n\n public getCacheKey = () => 'ProductAvailabilitiesForSelectedVariant';\n\n public getCacheObjectType = () => 'ProductAvailabilities';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the getProductAvailabilitiesForSelectedVariant data action.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createProductAvailabilitiesForSelectedVariantInput = (\n inputData: ICreateActionContext>\n): ProductAvailabilitiesForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new ProductAvailabilitiesForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId);\n }\n throw new Error('Unable to create ProductAvailabilitiesForSelectedVariantInput, no productId found on module config or query');\n\n};\n\n/**\n * The action method for the getProductAvailabilitiesForSelectedVariant data action.\n * @param input\n * @param ctx\n */\nexport async function getProductAvailabilitiesForSelectedVariantAction(\n input: ProductAvailabilitiesForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\n\n const PRODUCTASSERVICE = 2 as ReleasedProductType.Service;\n return getSelectedVariant(selectedVariantInput, ctx)\n .then(productResult => {\n // Don't get availability if it is service item\n if (productResult && productResult.ItemTypeValue !== PRODUCTASSERVICE && productResult.ProductTypeValue !== ProductType.Master) {\n return getEstimatedAvailabilityAsync(\n { callerContext: ctx },\n { ProductIds: [productResult.RecordId], DefaultWarehouseOnly: true, QuantityUnitTypeValue: 2 } // 2: Sales unit\n ).then(response => {\n if (response && response.ProductWarehouseInventoryAvailabilities && response.ProductWarehouseInventoryAvailabilities.length > 0) {\n return mapProductInventoryInformation(ctx, response.ProductWarehouseInventoryAvailabilities);\n }\n return undefined;\n });\n }\n\n return undefined;\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[getPriceForSelectedVariantAction]Error executing action');\n throw new Error('[getPriceForSelectedVariantAction]Error executing action');\n });\n}\n\n/**\n * The function that maps a ProductWareHouse object into a ProductAvailabilityQuantity.\n * @param productsWarehouseInventory\n */\nexport function mergeProductWarehouseToProductAvailabities(productsWarehouseInventory: ProductWarehouseInventoryAvailability[]): ProductAvailableQuantity[] {\n const productAvailable: ProductAvailableQuantity[] = [];\n if (productsWarehouseInventory && productsWarehouseInventory.length > 0) {\n for (const product of productsWarehouseInventory) {\n if (product.TotalAvailable !== undefined && product.ProductId !== undefined) {\n productAvailable.push({ ProductId: product.ProductId, AvailableQuantity: product.TotalAvailable });\n }\n }\n }\n return productAvailable;\n}\n\n/**\n * The complete getProductAvailabilitiesForSelectedVariant data action\n * Get the currently selected variant via the getSelectedVariant data action, and\n * then gets the availabilities for the variant via the getProductAvailabilities RetailServer API.\n */\nexport const getProductAvailabilitiesForSelectedVariantActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-product-availabilities-for-selected-variant',\n action: >getProductAvailabilitiesForSelectedVariantAction,\n input: createProductAvailabilitiesForSelectedVariantInput\n});\n\nexport default getProductAvailabilitiesForSelectedVariantActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { convertToString, IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync, getOrderHistoryAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { OrderShipments } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Input class for the GetOrganizationWideOrderHistory data action.\n */\nexport class GetOrganizationWideOrderHistoryInput implements IActionInput {\n public queryResultSettings: IQueryResultSettings;\n\n constructor(queryResultSettings: IQueryResultSettings) {\n this.queryResultSettings = queryResultSettings;\n }\n\n public getCacheKey = () => `GetOrganizationWideOrderHistoryInput|${convertToString(this.queryResultSettings)}`;\n\n public getCacheObjectType = () => 'GetOrganizationWideOrderHistoryInput';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CreateInput method for the GetOrganizationWideOrderHistory method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n */\nexport const getOrganizationWideOrderHistoryInput = (\n inputData: ICreateActionContext): GetOrganizationWideOrderHistoryInput => {\n\n if (!inputData?.requestContext?.user?.isAuthenticated) {\n throw new Error('Unable to get order history. User is not authenticated.');\n }\n\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n return new GetOrganizationWideOrderHistoryInput(queryResultSettings);\n};\n\n/**\n * The action method for the GetOrganizationWideOrderHistory data action.\n * @param {GetOrganizationWideOrderHistory} input The action input.\n * @param {IActionContext} ctx The action context.\n * @param context\n */\nexport async function getOrganizationWideOrderHistory(input: GetOrganizationWideOrderHistoryInput, context: IActionContext): Promise {\n if (!context?.requestContext?.user?.isAuthenticated) {\n throw new Error('Unable to get order history. User is not authenticated.');\n }\n\n const businessPartner = await getCurrentAsync({ callerContext: context });\n if (!businessPartner) {\n throw new Error('Unable to get order history. Failed to retrieve business partner id.');\n }\n\n return getOrderHistoryAsync({ callerContext: context, queryResultSettings: input.queryResultSettings }, businessPartner.BusinessPartnerId);\n}\n\nexport const getOrganizationWideOrderHistoryDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-organization-wide-order-history',\n action: >getOrganizationWideOrderHistory,\n input: getOrganizationWideOrderHistoryInput\n});\n\nexport default getOrganizationWideOrderHistoryDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\nimport { getCategoriesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CategoriesDataActions.g';\n\n/**\n * Input for get-categories data action.\n */\nexport class CategoriesInput implements IActionInput {\n public readonly maxItems: number;\n\n public readonly channelId: number;\n\n private readonly _mappedToHierarchy: boolean;\n\n constructor(context: IRequestContext, mappedToHierarchy: boolean, maxItems?: number) {\n this._mappedToHierarchy = mappedToHierarchy;\n this.maxItems = maxItems || 250;\n this.channelId = context && context.apiSettings && context.apiSettings.channelId ? Number(context.apiSettings.channelId) : 0;\n }\n\n public getCacheKey = () => `${this.channelId}|top-${this.maxItems || 250}`;\n\n public getCacheObjectType = () => (this._mappedToHierarchy ? 'CategoryHierarchy' : 'Category');\n\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nexport const createCategoriesInput = (inputData: ICreateActionContext>): IActionInput => {\n const topItems = inputData.config && inputData.config.topCategories && Number.parseInt(inputData.config.topCategories, 10);\n return new CategoriesInput(inputData.requestContext, false, topItems);\n};\n\n/**\n * Calls the Retail API and returns all the categories as a flat list.\n * @param input\n * @param ctx\n */\nexport async function getCategoryAction(input: CategoriesInput, ctx: IActionContext): Promise {\n return (getCategoriesAsync({ callerContext: ctx }, input.channelId));\n}\n\nexport const getCategoryActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-categories',\n action: >getCategoryAction,\n input: createCategoriesInput\n});\n\nexport default getCategoryActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { buildCacheKeyWithUrlTokens } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IDefaultPageSummaryConfig } from './default-page-summary.props.autogenerated';\n\nexport interface IPageSummaryData {\n title?: string;\n description?: string;\n keywords?: string;\n sharingImageUrl?: string;\n canonicalUrl?: string;\n faviconUrl?: string;\n}\n\n/** Page Summary Input */\nexport class PageSummaryInput implements IActionInput {\n public requestContext: IRequestContext;\n\n public config: IDefaultPageSummaryConfig;\n\n constructor(config: IDefaultPageSummaryConfig, requestContext: IRequestContext) {\n this.config = config || {};\n this.requestContext = requestContext;\n }\n\n public getCacheObjectType = (): string => 'PageSummary';\n\n public getCacheKey = (): string => `${buildCacheKeyWithUrlTokens('PageSummary', this.requestContext)}-${this.config.title}`;\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst action = async (input: PageSummaryInput, context: IActionContext): Promise => {\n const { config } = input;\n return {\n title: config && config.title,\n description: config && config.description,\n keywords: config && config.keywords,\n sharingImageUrl: config && config.sharingImage && config.sharingImage.src,\n canonicalUrl: context.requestContext && context.requestContext.canonicalUrl,\n faviconUrl: config && config.faviconUrl\n };\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/page-summary/default-page-summary',\n action: >action,\n input: (args: ICreateActionContext) => {\n return new PageSummaryInput(args.config, args.requestContext);\n }\n});\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getEstimatedAvailabilityAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions, buildCacheKey, IProductInventoryInformation, mapProductInventoryInformation } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { ActiveWishlistInput, getActiveWishlistItems } from './get-items-in-wishlists';\n\n/**\n * Input class for availabilities for items in wishlist.\n */\nexport class ProductAvailabilitiesForWishlistItems implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('ActiveWishlistItemsAvailability', this.apiSettings);\n\n public getCacheObjectType = () => 'ActiveWishlistItemsAvailability';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst createInput = (inputData: ICreateActionContext>) => {\n return new ProductAvailabilitiesForWishlistItems(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail API to get wishlist which will be cached the then finds the quantities for each item.\n * @param input\n * @param ctx\n */\nexport async function getAvailabilitiesForWishlistItems(\n input: ProductAvailabilitiesForWishlistItems,\n ctx: IActionContext\n): Promise {\n // If no input is provided fail out\n if (!input) {\n throw new Error('[getAvailabilitiesForWishlistItems]No valid Input was provided, failing');\n }\n\n const products = await getActiveWishlistItems(new ActiveWishlistInput(), ctx);\n\n if (!products) {\n ctx.trace('[getAvailabilitiesForWishlistItems] Not able to get products in wishlist');\n return [];\n }\n\n let validProducts: number[] = [];\n\n const PRODUCTASSERVICE = 2 as ReleasedProductType.Service;\n\n for (const product of products) {\n if (product.ProductDetails && product.ProductDetails.RecordId && product.ProductDetails.ItemTypeValue !== PRODUCTASSERVICE) {\n validProducts.push(product.ProductDetails.RecordId);\n }\n }\n\n if (validProducts.length === 0) {\n ctx.trace('[getAvailabilitiesForWishlistItems] No products in wishlist');\n return [];\n }\n\n validProducts = ArrayExtensions.unique(validProducts);\n\n const productAvailabilities = await getEstimatedAvailabilityAsync(\n { callerContext: ctx },\n { ProductIds: validProducts, DefaultWarehouseOnly: true, QuantityUnitTypeValue: 2 } // 2: Sales unit\n );\n\n if (productAvailabilities && productAvailabilities) {\n return mapProductInventoryInformation(ctx, productAvailabilities?.ProductWarehouseInventoryAvailabilities);\n }\n\n ctx.trace('[getAvailabilitiesForWishlistItems] unable to get availabilities for product');\n return [];\n}\n\nexport const getAvailabilitiesForWishlistItemsDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/wishlist/wishlist-items/get-product-availabilities-wishlist-items',\n action: >getAvailabilitiesForWishlistItems,\n input: createInput\n});\n\nexport default getAvailabilitiesForWishlistItemsDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { updateProductListLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { ProductListLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport getPaginatedOrderTemplateLines, { GetPaginatedOrderTemplateLinesInput } from './get-paginated-order-template-lines';\n\n/**\n * Input class for the UpdateOrderTemplate data action.\n */\nexport class UpdateOrderTemplateInput implements IActionInput {\n public readonly orderTemplateId: string;\n\n public readonly productId: number;\n\n public readonly quantity: number;\n\n public readonly unitOfMeasure: string;\n\n constructor(orderTemplateId: string, productId: number, quantity: number, unitOfMeasure: string) {\n this.orderTemplateId = orderTemplateId;\n this.productId = productId;\n this.quantity = quantity;\n this.unitOfMeasure = unitOfMeasure || 'ea';\n }\n\n public getCacheKey = () => 'UpdateOrderTemplateInput';\n\n public getCacheObjectType = () => 'UpdateOrderTemplateInput';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the UpdateOrderTemplate method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {string} orderTemplateId The id of order template to update.\n * @param {number} productId The id of a product to add.\n * @param {number} quantity How many items of this product to add.\n * @param unitOfMeasure\n */\nexport const updateOrderTemplateInput = (\n inputData: ICreateActionContext, orderTemplateId: string, productId: number, quantity: number, unitOfMeasure: string): UpdateOrderTemplateInput => {\n\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create order template. User is not authenticated.');\n }\n return new UpdateOrderTemplateInput(orderTemplateId, productId, quantity, unitOfMeasure);\n};\n\n/**\n * The action method for the UpdateOrderTemplate data action.\n * @param {UpdateOrderTemplateInput} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function updateOrderTemplateAction(input: UpdateOrderTemplateInput, ctx: IActionContext): Promise {\n try {\n if (!ctx.requestContext.user.isAuthenticated) {\n throw new Error('User token was not found when updating the order template');\n }\n const getLinesInput = new GetPaginatedOrderTemplateLinesInput(input.orderTemplateId, {}, input.productId.toString());\n const linesState = await getPaginatedOrderTemplateLines(getLinesInput, ctx);\n if (!linesState) {\n throw new Error('Order template was not found when updating the order template');\n }\n\n const linesToUpdate = linesState.lines.filter(line => line.productListLine.ProductId === input.productId);\n if (linesToUpdate.length !== 1) {\n throw new Error('Unable to find the line to update when updating the order template');\n }\n\n const lineToUpdate = linesToUpdate[0].productListLine;\n\n lineToUpdate.UnitOfMeasure = input.unitOfMeasure;\n lineToUpdate.Quantity = input.quantity;\n\n const updatedLines: ProductListLine[] = await updateProductListLinesAsync({\n callerContext: ctx\n }, input.orderTemplateId, [lineToUpdate]);\n\n if (!updatedLines || updatedLines.length !== 1) {\n throw new Error('Server returned invalid lines when updating order template');\n }\n const updatedLine = updatedLines.filter(line => line.ProductId === input.productId);\n if (updatedLine.length !== 1 || updatedLine[0].Quantity !== input.quantity || updatedLine[0].UnitOfMeasure !== input.unitOfMeasure) {\n throw new Error('Server did not update the line when updating order template');\n }\n return updatedLine[0];\n } catch (error) {\n ctx.telemetry.error('Not able to add an item to order template', error);\n throw error;\n }\n}\n\n/**\n * The UpdateOrderTemplate Data Action.\n * Returns product list line that was added to the order template.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/update-order-template-line',\n action: >updateOrderTemplateAction,\n input: updateOrderTemplateInput\n});\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { Address, Customer } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { createAddressManagementInput, doAddressManagementOperation, IAddressManagementInput } from './add-address';\n\n// TODO: Centralize this logic in a common utility area\nexport function updateAddressHandler(customer: Customer, address: Address): Customer {\n customer.Addresses = customer.Addresses || [];\n if (address.IsPrimary) {\n customer.Addresses.forEach(cur => cur.IsPrimary = false);\n }\n customer.Addresses = [...customer.Addresses.filter(cur => cur.RecordId !== address.RecordId), address];\n return customer;\n}\n\nexport async function updateAddressAction(input: IAddressManagementInput, ctx: IActionContext): Promise {\n return doAddressManagementOperation(input, ctx, updateAddressHandler);\n}\n\n/**\n * The updateAddress data action\n * Calls the read RetailServer API to get information about a customer\n * Merge the passed address information with the address information from\n * the retireved customer, and then updates that customer via the update RetailServer API.\n */\nexport const updateAddressActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/update-address',\n action: >updateAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>(createAddressManagementInput)\n});\n\nexport default updateAddressActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny,\n ICreateActionContext, IGeneric\n} from '@msdyn365-commerce/core';\nimport { Address, Customer } from '@msdyn365-commerce/retail-proxy';\nimport {\n createReadAsync, updateAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\n\nimport getCustomer, { GetCustomerInput } from './get-customer';\n\nexport interface IAddressManagementData {\n address: Address;\n}\nexport interface IAddressManagementInput extends IActionInput {\n address: Address;\n userAccountNumber?: string;\n}\n\n/**\n * The input class for the addAddress data action.\n */\nexport class AddressManagementInput implements IAddressManagementInput {\n public address: Address;\n\n public userAccountNumber?: string;\n\n constructor(address: Address, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.address = address;\n }\n\n public getCacheKey = () => 'AddAddress';\n\n public getCacheObjectType = () => 'AddAddress';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The createInput method for the addAddress data action.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createAddressManagementInput = (\n inputData: ICreateActionContext, IAddressManagementData>\n): IAddressManagementInput => {\n if (inputData.requestContext.user.isAuthenticated) {\n throw new Error('User is not authenticated. Cannot call UpdateAddress API');\n }\n\n const { address } = inputData.data || { address: undefined };\n\n if (!address) {\n throw new Error('address is not provided. Cannot call UpdateAddress API');\n }\n\n return new AddressManagementInput(address);\n};\n\nexport async function doAddressManagementOperation(\n input: IAddressManagementInput,\n ctx: IActionContext,\n operationHandler: (customer: Customer, address: Address) => Customer\n): Promise {\n const { userAccountNumber, address } = input;\n const customerInput = new GetCustomerInput(ctx.requestContext.apiSettings, userAccountNumber);\n const customer = await getCustomer(customerInput, ctx);\n\n if (!customer) {\n throw new Error('Not able to create customer');\n }\n\n const newCustomer = operationHandler({ ...customer }, address);\n const updatedCustomer = await updateAsync({ callerContext: ctx }, newCustomer);\n\n if (!updatedCustomer) {\n throw new Error('Not able to update customer');\n }\n\n ctx.update(createReadAsync(updatedCustomer.AccountNumber), updatedCustomer);\n\n return updatedCustomer.Addresses || [];\n}\n\nexport function addAddressHandler(customer: Customer, address: Address): Customer {\n customer.Addresses = [...(customer.Addresses || [])];\n customer.Addresses.push(address);\n return customer;\n}\n\nexport async function addAddressAction(input: IAddressManagementInput, ctx: IActionContext): Promise {\n return doAddressManagementOperation(input, ctx, addAddressHandler);\n}\n\n/**\n * The addAddress data action\n * Calls the read RetailServer API to get information about a customer\n * Adds the passed address information to the retireved customer, and\n * then updates that customer via the update RetailServer API.\n */\nexport const addAddressActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/add-address',\n action: >addAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>(createAddressManagementInput),\n isBatched: false\n});\n\nexport default addAddressActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\n\nexport const getRnrPartnerId = (args: ICreateActionContext> | IActionContext): string => {\n return args.requestContext.apiSettings.rnr.id || '';\n};\n\nexport const getRnrEndpointId = (args: ICreateActionContext> | IActionContext): string => {\n return args.requestContext.apiSettings.rnr.url || '';\n};\n\nexport const getRnrAuthEndpointId = (args: ICreateActionContext> | IActionContext): string => {\n const endpoint = (args.requestContext.apiSettings.rnr.proxyUrl ? args.requestContext.apiSettings.rnr.proxyUrl : args.requestContext.apiSettings.rnr.url || '');\n if (endpoint.length > 0 && endpoint.endsWith('/')) {\n return endpoint.substring(0, endpoint.length - 1);\n }\n return endpoint;\n};\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { createObservableDataAction, IAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { IDataServiceRequest, retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createSearchByTextInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * CreateInput method for the searchByText data action.\n * @param inputData\n */\nexport function createSearchByTextInputFunc(inputData: ICreateActionContext, IGeneric>): IDataServiceRequest {\n const { requestContext: { query, apiSettings: { channelId } } } = inputData;\n\n const search = query && query.q;\n\n if (!search) {\n throw new Error('Unable to preform search without search text. Query string ?q={searchText} must be present or should be configued in module data.');\n }\n\n const querySettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n return createSearchByTextInput(querySettingsProxy.QueryResultSettings, Number(channelId), 0, search);\n}\n\n/**\n * The searchByText data action\n * Queries RetailServers product searchByText API using a\n * query string parameter and returns a list of ProductSearchResults.\n */\nexport const retailActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/search-by-text',\n action: >retailAction,\n input: createSearchByTextInputFunc\n});\n\nexport default retailActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { SortColumn } from '@msdyn365-commerce/retail-proxy';\nimport { getSearchConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\nimport { buildCacheKey } from '.';\n\n// TODO: import from commerce entities when available\ninterface SearchConfiguration {\n ProductSortColumns?: SortColumn[];\n}\n\n/**\n * Action Input class for the getSearchConfiguration data action.\n */\nexport class SearchConfigurationInput implements IActionInput {\n private readonly apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('SearchConfig', this.apiSettings);\n\n public getCacheObjectType = () => 'SearchConfiguration';\n\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call.\n * @param inputData\n */\nexport const createSearchConfigurationInput = (inputData: ICreateActionContext>): IActionInput => {\n return new SearchConfigurationInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail API.\n * @param input\n * @param ctx\n */\nexport async function getSearchConfigurationAction(input: SearchConfigurationInput, ctx: IActionContext): Promise {\n return getSearchConfigurationAsync({ callerContext: ctx });\n}\n\nexport const getSearchConfigurationActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-search-configurations',\n action: >getSearchConfigurationAction,\n input: createSearchConfigurationInput\n});\n\nexport default getSearchConfigurationActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { createObservableDataAction, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IAccordionExpandedState } from './accordion-state';\n\nexport function createAccordionStateInput(result: IAccordionExpandedState): GenericInput {\n return new GenericInput('accordionExpandedState', result, 'IAccordionExpandedState');\n}\n\nconst createAccordionStateInputInternal = (): IActionInput => {\n return createAccordionStateInput({});\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createAccordionStateInputInternal\n});\n\nexport default getGenericActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { ProductList } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { getOrderTemplates, GetOrderTemplatesInput, getPaginatedOrderTemplateLinesAction, GetPaginatedOrderTemplateLinesInput, QueryResultSettingsProxy } from '..';\nimport { OrderTemplate } from '../utilities/order-templates';\n\n/**\n * Input class for the GetOrderTemplates data action.\n */\nexport class GetFullOrderTemplatesInput implements IActionInput {\n public queryResultSettings: IQueryResultSettings;\n\n constructor(queryResultSettings: IQueryResultSettings) {\n this.queryResultSettings = queryResultSettings;\n }\n\n public getCacheKey = () => 'GetFullOrderTemplates';\n\n public getCacheObjectType = () => 'GetFullOrderTemplates';\n\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the GetOrderTemplate method.\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetFullOrderTemplatesInput = (inputData: ICreateActionContext): GetFullOrderTemplatesInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order templates. User is not authenticated.');\n }\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n queryResultSettings.count = true;\n\n return new GetFullOrderTemplatesInput(queryResultSettings);\n};\n\n/**\n * The action method for the GetFullOrderTemplates data action.\n * @param input The action input.\n * @param ctx The action context.\n */\nexport async function getFullOrderTemplatesAction(input: GetFullOrderTemplatesInput, ctx: IActionContext): Promise {\n if (!ctx.requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order templates. User is not authenticated.');\n }\n\n const orderTemplates: OrderTemplate[] = [];\n\n const inputParams = new GetOrderTemplatesInput();\n const productLists: ProductList[] = await getOrderTemplates(inputParams, ctx);\n\n if (!productLists || productLists.length === 0) {\n return orderTemplates;\n }\n\n for (const list of productLists) {\n const inputLines = new GetPaginatedOrderTemplateLinesInput(list.Id, input.queryResultSettings);\n const linesState = await getPaginatedOrderTemplateLinesAction(inputLines, ctx);\n orderTemplates.push(new OrderTemplate(list, linesState.lines, linesState.totalCount));\n }\n\n ctx.trace(orderTemplates.length.toString());\n return orderTemplates;\n}\n\n/**\n * The GetFullOrderTemplates Data Action\n * Returns order templates.\n */\nexport const getFullOrderTemplatesActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-full-order-templates',\n action: >getFullOrderTemplatesAction,\n input: createGetFullOrderTemplatesInput\n});\n\nexport default getFullOrderTemplatesActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext } from '@msdyn365-commerce/core';\nimport {\n readAsync, updateAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\nimport { Address, Customer } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { createAddressManagementInput, IAddressManagementInput } from './add-address';\nimport { GetCustomerInput } from './get-customer';\n\nexport function updatePrimaryAddressHandler(customer: Customer, address: Address): Customer {\n customer.Addresses = setPrimaryAddress({ ...address }, [...(customer.Addresses || [])]);\n return customer;\n}\n\nexport async function updatePrimaryAddressAction(input: IAddressManagementInput, ctx: IActionContext): Promise {\n const { address } = input;\n\n const customer = await readAsync({ callerContext: ctx, bypassCache: 'get' }, '');\n\n if (!customer) {\n throw new Error('Unable to find customer');\n }\n\n customer.Addresses = setPrimaryAddress({ ...address }, [...(customer.Addresses ?? [])]);\n const updatedCustomer = await updateAsync({ callerContext: ctx }, customer);\n\n if (!updatedCustomer) {\n throw new Error('Unable to update customer');\n }\n\n ctx.update(new GetCustomerInput(ctx.requestContext.apiSettings), updatedCustomer);\n\n return updatedCustomer.Addresses || [];\n}\n\n/**\n * The updatePrimaryAddress data action\n * Calls the read RetailServer API to get information about a customer\n * Merge the passed address information with the address information from\n * the retireved customer, and then updates that customer via the update RetailServer API.\n */\nexport const updatePrimaryAddressActionDataAction = createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/update-primary-address',\n action: >updatePrimaryAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>(createAddressManagementInput),\n isBatched: false\n});\nexport default updatePrimaryAddressActionDataAction;\n\nconst setPrimaryAddress = (primaryAddresses: Address, addresses: Address[]): Address[] => {\n return addresses.map(addr => {\n if (addr.RecordId === primaryAddresses.RecordId) {\n addr.IsPrimary = true;\n } else {\n addr.IsPrimary = false;\n }\n return addr;\n });\n};\n"],"sourceRoot":""}