EmicoEcommerce/Magento2Tweakwise

View on GitHub
etc/di.xml

Summary

Maintainability
Test Coverage
<?xml version="1.0"?>
<!--
/**
 * Tweakwise (https://www.tweakwise.com/) - All Rights Reserved
 *
 * @copyright Copyright (c) 2017-2022 Tweakwise.com B.V. (https://www.tweakwise.com)
 * @license   http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 */
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">

    <preference for="Tweakwise\Magento2Tweakwise\Api\AttributeSlugRepositoryInterface" type="Tweakwise\Magento2Tweakwise\Model\AttributeSlugRepository"/>
    <preference for="Tweakwise\Magento2Tweakwise\Api\Data\AttributeSlugSearchResultsInterface" type="Magento\Framework\Api\SearchResults"/>
    <preference for="Tweakwise\Magento2Tweakwise\Api\Data\AttributeSlugInterface" type="Tweakwise\Magento2Tweakwise\Model\AttributeSlug"/>

    <preference for="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\Url\UrlInterface" type="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\Url\Strategy\QueryParameterStrategy" />
    <preference for="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\Url\FilterApplierInterface" type="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\Url\Strategy\QueryParameterStrategy" />
    <preference for="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\Url\RouteMatchingInterface" type="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\Url\Strategy\NullStrategy" />
    <preference for="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\Url\CategoryUrlInterface" type="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\Url\Strategy\QueryParameterStrategy" />

    <preference for="Magento\LayeredNavigation\Block\Navigation\State" type="Tweakwise\Magento2Tweakwise\Block\LayeredNavigation\Navigation\State" />
    <preference for="Tweakwise\Magento2Tweakwise\Model\FilterFormInputProvider\FilterFormInputProviderInterface" type="Tweakwise\Magento2Tweakwise\Model\FilterFormInputProvider\EmptyInputProvider" />

    <!-- Frontend plugins -->
    <type name="Magento\Catalog\Model\Layer\FilterList">
        <plugin name="tweakwise-magento2tweakwise" type="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\FilterList\Plugin" />
    </type>
    <type name="Magento\Checkout\Block\Cart\Crosssell">
        <plugin name="tweakwise-magento2tweakwise" type="Tweakwise\Magento2Tweakwise\Block\Cart\Crosssell\Plugin" />
    </type>
    <type name="Magento\Catalog\Block\Product\ProductList\Related">
        <plugin name="tweakwise-magento2tweakwise" type="Tweakwise\Magento2Tweakwise\Block\Catalog\Product\ProductList\Related\Plugin" sortOrder="0" />
    </type>
    <type name="Magento\Catalog\Block\Product\ProductList\Upsell">
        <plugin name="tweakwise-magento2tweakwise" type="Tweakwise\Magento2Tweakwise\Block\Catalog\Product\ProductList\Upsell\Plugin" sortOrder="0" />
    </type>
    <type name="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\FilterList\Plugin">
        <arguments>
            <argument name="tweakwiseFilterList" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\FilterList\Tweakwise\Proxy</argument>
        </arguments>
    </type>

    <type name="Magento\Catalog\Block\Product\ListProduct">
        <plugin name="tweakwise-magento2tweakwise" type="Tweakwise\Magento2Tweakwise\Block\Catalog\Product\ProductList\Plugin" sortOrder="0" />
    </type>
    <type name="Magento\Catalog\Block\Product\ProductList\Toolbar">
        <plugin name="tweakwise-magento2tweakwise" type="Tweakwise\Magento2Tweakwise\Block\Catalog\Product\ProductList\Toolbar\Plugin" sortOrder="-10" />
    </type>
    <type name="Magento\Theme\Block\Html\Pager">
        <plugin name="tweakwise-magento2tweakwise" type="Tweakwise\Magento2Tweakwise\Block\Theme\Html\Pager\Plugin" sortOrder="0" />
    </type>
    <type name="Magento\LayeredNavigation\Block\Navigation\FilterRenderer">
        <plugin name="tweakwise-magento2tweakwise" type="Tweakwise\Magento2Tweakwise\Block\Navigation\FilterRenderer\Plugin" sortOrder="0" />
    </type>
    <type name="Magento\Swatches\Block\LayeredNavigation\RenderLayered">
        <plugin name="tweakwise-magento2tweakwise" type="Tweakwise\Magento2Tweakwise\Block\LayeredNavigation\RenderLayered\Plugin" sortOrder="0" />
    </type>
    <!-- Commerce only -->
    <type name="Magento\TargetRule\Block\Catalog\Product\ProductList\Upsell">
        <plugin name="tweakwise-magento2tweakwise" type="Tweakwise\Magento2Tweakwise\Block\TargetRule\Catalog\Product\ProductList\UpsellPlugin" sortOrder="0" />
    </type>
    <type name="Magento\TargetRule\Block\Catalog\Product\ProductList\Related">
        <plugin name="tweakwise-magento2tweakwise" type="Tweakwise\Magento2Tweakwise\Block\TargetRule\Catalog\Product\ProductList\RelatedPlugin" sortOrder="0" />
    </type>
    <type name="Magento\TargetRule\Block\Checkout\Cart\Crosssell">
        <plugin name="tweakwise-magento2tweakwise" type="Tweakwise\Magento2Tweakwise\Block\Checkout\Cart\Crosssell\Plugin" sortOrder="0" />
    </type>
    <!-- End of Commerce only-->
    <type name="Magento\Swatches\Helper\Data">
        <plugin name="tweakwise-magento2tweakwise" type="Tweakwise\Magento2Tweakwise\Model\Swatches\Plugin" sortOrder="0" />
    </type>
    <type name="Magento\CatalogSearch\Controller\Result\Index">
        <plugin name="tweakwise-magento2tweakwise" type="Tweakwise\Magento2Tweakwise\Model\CatalogSearch\Controller\Result\Index\Plugin" sortOrder="0" />
    </type>
    <type name="Magento\Framework\View\Page\Config">
        <plugin name="tweakwise-magento2tweakwise" type="Tweakwise\Magento2Tweakwise\Model\Seo\Robots\Plugin" />
    </type>
    <!-- Add meta of custom fields to data provider -->
    <type name="Magento\Catalog\Model\Category\DataProvider">
        <plugin name="tweakwise-magento2tweakwise" type="Tweakwise\Magento2Tweakwise\Model\Category\DataProvider\Plugin" />
    </type>

    <!-- If you need other layouts or possible even layer objects register them here -->
    <type name="Tweakwise\Magento2Tweakwise\Controller\Ajax\Navigation">
        <arguments>
            <argument name="initializerMap" xsi:type="array">
                <item name="category" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\AjaxResultInitializer\CategoryInitializer</item>
                <item name="search" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\AjaxResultInitializer\SearchInitializer</item>
            </argument>
        </arguments>
    </type>

    <type name="Magento\Search\Model\Autocomplete">
        <arguments>
            <argument name="dataProviders" xsi:type="array">
                <item name="10" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Autocomplete\DataProvider</item>
            </argument>
        </arguments>
    </type>

    <type name="Tweakwise\Magento2Tweakwise\Model\Autocomplete\DataProvider">
        <arguments>
            <argument name="dataProviders" xsi:type="array">
                <item name="autocomplete" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Autocomplete\DataProvider\AutocompleteDataProvider</item>
                <item name="suggestion" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Autocomplete\DataProvider\SuggestionDataProvider</item>
            </argument>
        </arguments>
    </type>

    <type name="Tweakwise\Magento2Tweakwise\Model\Autocomplete\DataProvider\AutocompleteDataProvider">
        <arguments>
            <argument name="autocompleteRequestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\AutocompleteRequest</argument>
        </arguments>
    </type>
    <type name="Tweakwise\Magento2Tweakwise\Model\Autocomplete\DataProvider\SuggestionDataProvider">
        <arguments>
            <argument name="productSuggestionRequestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Suggestions\ProductSuggestionsRequest</argument>
            <argument name="suggestionRequestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Suggestions\SuggestionsRequest</argument>
        </arguments>
    </type>

    <type name="Tweakwise\Magento2Tweakwise\Model\Autocomplete\DataProvider\ProductItem">
        <arguments>
            <argument name="imageFactory" xsi:type="object">Magento\Catalog\Block\Product\ImageFactory\Proxy</argument>
            <argument name="imageBuilder" xsi:type="object">Magento\Catalog\Block\Product\ImageBuilder\Proxy</argument>
        </arguments>
    </type>

    <type name="Tweakwise\Magento2Tweakwise\Model\Observer\CatalogSearchRedirect">
        <arguments>
            <argument name="context" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\NavigationContext\Search</argument>
        </arguments>
    </type>

    <type name="Tweakwise\Magento2Tweakwise\Model\Observer\CatalogSearchLastPageRedirect">
        <arguments>
            <argument name="context" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\NavigationContext\Search</argument>
        </arguments>
    </type>

    <type name="Tweakwise\Magento2Tweakwise\Model\Observer\CatalogNavigationLastPageRedirect">
        <arguments>
            <argument name="context" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\NavigationContext\Category</argument>
        </arguments>
    </type>

    <type name="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\Url\UrlModel">
        <arguments>
            <!-- The tweakwiseSystemParams will be ignored while building filter urls -->
            <argument name="tweakwiseSystemParams" xsi:type="array">
                <item name="object_id" xsi:type="string">__tw_object_id</item>
                <item name="original_url" xsi:type="string">__tw_original_url</item>
                <item name="ajax_type" xsi:type="string">__tw_ajax_type</item>
                <item name="ajax_cache" xsi:type="string">_</item>
                <item name="hash" xsi:type="string">__tw_hash</item>
            </argument>
        </arguments>
    </type>

    <type name="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\Url\Strategy\PathSlugStrategy">
        <arguments>
            <argument name="rewriteEntities" xsi:type="array">
                <item name="category" xsi:type="string">category</item>
            </argument>
            <argument name="skipMatchExtensions" xsi:type="array">
                <item name="jpg" xsi:type="string">.jpg</item>
                <item name="jpeg" xsi:type="string">.jpeg</item>
                <item name="png" xsi:type="string">.png</item>
                <item name="webp" xsi:type="string">.webp</item>
                <item name="gif" xsi:type="string">.gif</item>
            </argument>
        </arguments>
    </type>

    <type name="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\Url\Strategy\PathSlugStrategy">
        <arguments>
            <argument name="rewriteResolvers" xsi:type="array">
                <item name="category" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\Url\RewriteResolver\CategoryResolver</item>
            </argument>
        </arguments>
    </type>

    <!-- TW models -->
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\NavigationContext\Category" type="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\NavigationContext">
        <arguments>
            <argument name="requestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\ProductNavigationRequest</argument>
            <argument name="filterableAttributes" xsi:type="object">Magento\Catalog\Model\Layer\Category\FilterableAttributeList</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\NavigationContext\Search" type="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\NavigationContext">
        <arguments>
            <argument name="requestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\ProductSearchRequest</argument>
            <argument name="filterableAttributes" xsi:type="object">Magento\Catalog\Model\Layer\Search\FilterableAttributeList</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Catalog\Product\Recommendation\Context\Product\Upsell" type="Tweakwise\Magento2Tweakwise\Model\Catalog\Product\Recommendation\Context">
        <arguments>
            <argument name="requestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Recommendations\ProductRequest</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Catalog\Product\Recommendation\Context\Product\Related" type="Tweakwise\Magento2Tweakwise\Model\Catalog\Product\Recommendation\Context">
        <arguments>
            <argument name="requestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Recommendations\ProductRequest</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Catalog\Product\Recommendation\Context\Featured" shared="false" type="Tweakwise\Magento2Tweakwise\Model\Catalog\Product\Recommendation\Context">
        <arguments>
            <argument name="requestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Recommendations\FeaturedRequest</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\NavigationConfig\Category" type="Tweakwise\Magento2Tweakwise\Model\NavigationConfig">
        <arguments>
            <argument name="filterFormInputProvider" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\FilterFormInputProvider\CategoryInputProvider</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\NavigationConfig\Search" type="Tweakwise\Magento2Tweakwise\Model\NavigationConfig">
        <arguments>
            <argument name="filterFormInputProvider" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\FilterFormInputProvider\SearchInputProvider</argument>
        </arguments>
    </virtualType>

    <type name="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\Url">
        <arguments>
            <argument name="request" xsi:type="object">Magento\Framework\App\Request\Http</argument>
        </arguments>
    </type>
    <type name="Tweakwise\Magento2Tweakwise\Controller\Ajax\Facets">
        <arguments>
            <argument name="requestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\FacetRequest</argument>
        </arguments>
    </type>
    <type name="Tweakwise\Magento2Tweakwise\Controller\Ajax\FacetAttributes">
        <arguments>
            <argument name="requestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\FacetAttributeRequest</argument>
        </arguments>
    </type>

    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Config\Source\FacetTemplate" type="Tweakwise\Magento2Tweakwise\Model\Config\Source\Facet">
        <arguments>
            <argument name="requestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\FacetRequest</argument>
        </arguments>
    </virtualType>

    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Config\Source\FacetAttributeTemplate" type="Tweakwise\Magento2Tweakwise\Model\Config\Source\FacetAttribute">
        <arguments>
            <argument name="requestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\FacetAttributeRequest</argument>
        </arguments>
    </virtualType>

    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Config\Source\FilterTemplate" type="Tweakwise\Magento2Tweakwise\Model\Config\Source\Template">
        <arguments>
            <argument name="requestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Catalog\TemplateRequest</argument>
        </arguments>
    </virtualType>

    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Config\Source\SortTemplate" type="Tweakwise\Magento2Tweakwise\Model\Config\Source\Template">
        <arguments>
            <argument name="requestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Catalog\SortTemplateRequest</argument>
        </arguments>
    </virtualType>

    <type name="Tweakwise\Magento2Tweakwise\Model\Config\Source\Language">
        <arguments>
            <argument name="requestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Catalog\LanguageRequest</argument>
        </arguments>
    </type>

    <!-- TW blocks -->
    <type name="Tweakwise\Magento2Tweakwise\Block\TargetRule\Catalog\Product\ProductList\UpsellPlugin">
        <arguments>
            <argument name="context" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Catalog\Product\Recommendation\Context\Product\Upsell</argument>
        </arguments>
    </type>
    <type name="Tweakwise\Magento2Tweakwise\Block\TargetRule\Catalog\Product\ProductList\RelatedPlugin">
        <arguments>
            <argument name="context" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Catalog\Product\Recommendation\Context\Product\Related</argument>
        </arguments>
    </type>

    <type name="Tweakwise\Magento2Tweakwise\Block\Catalog\Product\ProductList\Featured">
        <arguments>
            <argument name="recommendationsContext" xsi:type="object" shared="false">Tweakwise\Magento2Tweakwise\Model\Catalog\Product\Recommendation\Context\Featured</argument>
        </arguments>
    </type>
    <type name="Tweakwise\Magento2Tweakwise\Block\Catalog\Product\ProductList\Upsell\Plugin">
        <arguments>
            <argument name="context" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Catalog\Product\Recommendation\Context\Product\Upsell</argument>
        </arguments>
    </type>
    <type name="Tweakwise\Magento2Tweakwise\Block\Catalog\Product\ProductList\Related\Plugin">
        <arguments>
            <argument name="context" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Catalog\Product\Recommendation\Context\Product\Related</argument>
        </arguments>
    </type>

    <!-- Tweakwise virtual collection provider types used in overrides of magento collection providers -->
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\ItemCollectionProvider\Category" type="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\ItemCollectionProvider">
        <arguments>
            <argument name="originalProvider" xsi:type="object">elasticsearchLayerCategoryItemCollectionProvider</argument>
            <argument name="navigationContext" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\NavigationContext\Category</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\ItemCollectionProvider\Search" type="Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\ItemCollectionProvider">
        <arguments>
            <argument name="originalProvider" xsi:type="object">elasticsearchLayerSearchItemCollectionProvider</argument>
            <argument name="navigationContext" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\NavigationContext\Search</argument>
        </arguments>
    </virtualType>

    <!-- Override virtual types of magento to inject our product collection -->
    <virtualType name="Magento\Elasticsearch\Model\Layer\Search\Context">
        <arguments>
            <argument name="collectionProvider" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\ItemCollectionProvider\Search</argument>
        </arguments>
    </virtualType>
    <virtualType name="Magento\Elasticsearch\Model\Layer\Category\Context">
        <arguments>
            <argument name="collectionProvider" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Catalog\Layer\ItemCollectionProvider\Category</argument>
        </arguments>
    </virtualType>

    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Config\Source\RecommendationOption\Product" type="Tweakwise\Magento2Tweakwise\Model\Config\Source\RecommendationOption">
        <arguments>
            <argument name="requestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Catalog\Recommendation\ProductRequest</argument>
            <argument name="addCodeOption" xsi:type="boolean">true</argument>
            <argument name="addEmpty" xsi:type="boolean">true</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Config\Source\RecommendationOption\Product\System" type="Tweakwise\Magento2Tweakwise\Model\Config\Source\RecommendationOption">
        <arguments>
            <argument name="requestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Catalog\Recommendation\ProductRequest</argument>
            <argument name="addCodeOption" xsi:type="boolean">true</argument>
            <argument name="addEmpty" xsi:type="boolean">true</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Config\Source\RecommendationOption\Featured" type="Tweakwise\Magento2Tweakwise\Model\Config\Source\RecommendationOption">
        <arguments>
            <argument name="requestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Catalog\Recommendation\FeaturedRequest</argument>
        </arguments>
    </virtualType>
    <!-- Same as above but with an empty option so it can fallback to the default option defined in Stores > Configuration > Catalog > Tweakwise > Featured template -->
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Config\Source\Category\RecommendationOption\Featured" type="Tweakwise\Magento2Tweakwise\Model\Config\Source\RecommendationOption">
        <arguments>
            <argument name="requestFactory" xsi:type="object">Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Catalog\Recommendation\FeaturedRequest</argument>
            <argument name="addEmpty" xsi:type="boolean">true</argument>
        </arguments>
    </virtualType>

    <!-- Tweakwise virtual request factory types -->
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\ProductNavigationRequest" type="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory">
        <arguments>
            <argument name="type" xsi:type="string">Tweakwise\Magento2Tweakwise\Model\Client\Request\ProductNavigationRequest</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\ProductSearchRequest" type="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory">
        <arguments>
            <argument name="type" xsi:type="string">Tweakwise\Magento2Tweakwise\Model\Client\Request\ProductSearchRequest</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\AutocompleteRequest" type="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory">
        <arguments>
            <argument name="type" xsi:type="string">Tweakwise\Magento2Tweakwise\Model\Client\Request\AutocompleteRequest</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Suggestions\ProductSuggestionsRequest" type="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory">
        <arguments>
            <argument name="type" xsi:type="string">Tweakwise\Magento2Tweakwise\Model\Client\Request\Suggestions\ProductSuggestionsRequest</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Suggestions\SuggestionsRequest" type="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory">
        <arguments>
            <argument name="type" xsi:type="string">Tweakwise\Magento2Tweakwise\Model\Client\Request\Suggestions\SuggestionsRequest</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Catalog\TemplateRequest" type="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory">
        <arguments>
            <argument name="type" xsi:type="string">Tweakwise\Magento2Tweakwise\Model\Client\Request\Catalog\TemplateRequest</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\FacetRequest" type="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory">
        <arguments>
            <argument name="type" xsi:type="string">Tweakwise\Magento2Tweakwise\Model\Client\Request\FacetRequest</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\FacetAttributeRequest" type="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory">
        <arguments>
            <argument name="type" xsi:type="string">Tweakwise\Magento2Tweakwise\Model\Client\Request\FacetAttributeRequest</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Catalog\SortTemplateRequest" type="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory">
        <arguments>
            <argument name="type" xsi:type="string">Tweakwise\Magento2Tweakwise\Model\Client\Request\Catalog\SortTemplateRequest</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Catalog\LanguageRequest" type="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory">
        <arguments>
            <argument name="type" xsi:type="string">Tweakwise\Magento2Tweakwise\Model\Client\Request\Catalog\LanguageRequest</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Catalog\Recommendation\ProductRequest" type="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory">
        <arguments>
            <argument name="type" xsi:type="string">Tweakwise\Magento2Tweakwise\Model\Client\Request\Catalog\Recommendation\ProductRequest</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Catalog\Recommendation\FeaturedRequest" type="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory">
        <arguments>
            <argument name="type" xsi:type="string">Tweakwise\Magento2Tweakwise\Model\Client\Request\Catalog\Recommendation\FeaturedRequest</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Recommendations\ProductRequest" type="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory">
        <arguments>
            <argument name="type" xsi:type="string">Tweakwise\Magento2Tweakwise\Model\Client\Request\Recommendations\ProductRequest</argument>
        </arguments>
    </virtualType>
    <virtualType name="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory\Recommendations\FeaturedRequest" type="Tweakwise\Magento2Tweakwise\Model\Client\RequestFactory">
        <arguments>
            <argument name="type" xsi:type="string">Tweakwise\Magento2Tweakwise\Model\Client\Request\Recommendations\FeaturedRequest</argument>
        </arguments>
    </virtualType>

</config>