VYPR
Moderate severityNVD Advisory· Published Jul 29, 2020· Updated Aug 4, 2024

CVE-2020-9690

CVE-2020-9690

Description

Magento versions 2.3.5-p1 and earlier, and 2.3.5-p1 and earlier have an observable timing discrepancy vulnerability. Successful exploitation could lead to signature verification bypass.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
magento/community-editionPackagist
< 2.3.5-p22.3.5-p2

Affected products

1

Patches

1
9436781734e4

MC-35770: Magento 2.3.5-p2 Publication

https://github.com/magento/magento2mage2-teamJul 28, 2020via ghsa
300 files changed · +2584 1558
  • app/code/Magento/AdminAnalytics/composer.json+13 12 modified
    @@ -6,23 +6,24 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-config": "*",
    -        "magento/module-ui": "*",
    -        "magento/module-release-notification": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-ui": "101.1.*",
    +        "magento/module-release-notification": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
             "OSL-3.0",
             "AFL-3.0"
         ],
         "autoload": {
    -          "files": [
    -              "registration.php"
    -          ],
    -          "psr-4": {
    -              "Magento\\AdminAnalytics\\": ""
    -          }
    -    }
    +        "files": [
    +            "registration.php"
    +        ],
    +        "psr-4": {
    +            "Magento\\AdminAnalytics\\": ""
    +        }
    +    },
    +    "version": "100.3.2"
     }
    
  • app/code/Magento/AdminNotification/composer.json+8 7 modified
    @@ -7,12 +7,12 @@
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
             "lib-libxml": "*",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-media-storage": "*",
    -        "magento/module-store": "*",
    -        "magento/module-ui": "*",
    -        "magento/module-config": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-media-storage": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-ui": "101.1.*",
    +        "magento/module-config": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -26,5 +26,6 @@
             "psr-4": {
                 "Magento\\AdminNotification\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/AdvancedPricingImportExport/composer.json+10 9 modified
    @@ -6,14 +6,14 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-import-export": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-import-export": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-import-export": "101.0.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-import-export": "100.3.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -27,5 +27,6 @@
             "psr-4": {
                 "Magento\\AdvancedPricingImportExport\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/AdvancedSearch/composer.json+10 9 modified
    @@ -5,14 +5,14 @@
             "sort-packages": true
         },
         "require": {
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-search": "*",
    -        "magento/module-config": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-search": "*",
    -        "magento/module-store": "*",
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-search": "101.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-search": "101.0.*",
    +        "magento/module-store": "101.0.*",
             "php": "~7.1.3||~7.2.0||~7.3.0"
         },
         "type": "magento2-module",
    @@ -27,5 +27,6 @@
             "psr-4": {
                 "Magento\\AdvancedSearch\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Amqp/composer.json+5 4 modified
    @@ -5,9 +5,9 @@
             "sort-packages": true
         },
         "require": {
    -        "magento/framework": "*",
    -        "magento/framework-amqp": "*",
    -        "magento/framework-message-queue": "*",
    +        "magento/framework": "102.0.*",
    +        "magento/framework-amqp": "100.3.*",
    +        "magento/framework-message-queue": "100.3.*",
             "php": "~7.1.3||~7.2.0||~7.3.0"
         },
         "type": "magento2-module",
    @@ -22,5 +22,6 @@
             "psr-4": {
                 "Magento\\Amqp\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/AmqpStore/composer.json+7 6 modified
    @@ -5,14 +5,14 @@
             "sort-packages": true
         },
         "require": {
    -        "magento/framework": "*",
    -        "magento/framework-amqp": "*",
    -        "magento/module-store": "*",
    +        "magento/framework": "102.0.*",
    +        "magento/framework-amqp": "100.3.*",
    +        "magento/module-store": "101.0.*",
             "php": "~7.1.3||~7.2.0||~7.3.0"
         },
         "suggest": {
    -        "magento/module-asynchronous-operations": "*",
    -        "magento/framework-message-queue": "*"
    +        "magento/module-asynchronous-operations": "100.3.*",
    +        "magento/framework-message-queue": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -26,5 +26,6 @@
             "psr-4": {
                 "Magento\\AmqpStore\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.1"
     }
    
  • app/code/Magento/Analytics/composer.json+7 6 modified
    @@ -3,11 +3,11 @@
         "description": "N/A",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/module-backend": "*",
    -        "magento/module-config": "*",
    -        "magento/module-integration": "*",
    -        "magento/module-store": "*",
    -        "magento/framework": "*"
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-integration": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/framework": "102.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -21,5 +21,6 @@
             "psr-4": {
                 "Magento\\Analytics\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/AsynchronousOperations/composer.json+9 8 modified
    @@ -5,16 +5,16 @@
             "sort-packages": true
         },
         "require": {
    -        "magento/framework": "*",
    -        "magento/framework-bulk": "*",
    -        "magento/module-authorization": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-ui": "*",
    +        "magento/framework": "102.0.*",
    +        "magento/framework-bulk": "100.3.*",
    +        "magento/module-authorization": "100.3.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-ui": "101.1.*",
             "php": "~7.1.3||~7.2.0||~7.3.0"
         },
         "suggest": {
    -        "magento/module-admin-notification": "*",
    -        "magento/module-logging": "*"
    +        "magento/module-admin-notification": "100.3.*",
    +        "magento/module-logging": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -28,5 +28,6 @@
             "psr-4": {
                 "Magento\\AsynchronousOperations\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Authorization/composer.json+4 3 modified
    @@ -6,8 +6,8 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -21,5 +21,6 @@
             "psr-4": {
                 "Magento\\Authorization\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/AuthorizenetAcceptjs/composer.json+10 9 modified
    @@ -6,14 +6,14 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-payment": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-config": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-store": "*",
    -        "magento/module-quote": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-payment": "100.3.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-quote": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -27,5 +27,6 @@
             "psr-4": {
                 "Magento\\AuthorizenetAcceptjs\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/AuthorizenetCardinal/composer.json+10 9 modified
    @@ -6,14 +6,14 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/module-authorizenet-acceptjs": "*",
    -        "magento/framework": "*",
    -        "magento/module-cardinal-commerce": "*",
    -        "magento/module-payment": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-store": "*"
    +        "magento/module-authorizenet-acceptjs": "100.3.*",
    +        "magento/framework": "102.0.*",
    +        "magento/module-cardinal-commerce": "100.3.*",
    +        "magento/module-payment": "100.3.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -27,5 +27,6 @@
             "psr-4": {
                 "Magento\\AuthorizenetCardinal\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.1"
     }
    
  • app/code/Magento/Authorizenet/composer.json+11 10 modified
    @@ -6,17 +6,17 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-payment": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-payment": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-store": "101.0.*"
         },
         "suggest": {
    -        "magento/module-config": "*"
    +        "magento/module-config": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -30,5 +30,6 @@
             "psr-4": {
                 "Magento\\Authorizenet\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/AuthorizenetGraphQl/composer.json+5 4 modified
    @@ -4,11 +4,11 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-quote-graph-ql": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-quote-graph-ql": "100.3.*"
         },
         "suggest": {
    -        "magento/module-graph-ql": "*"
    +        "magento/module-graph-ql": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -21,5 +21,6 @@
             "psr-4": {
                 "Magento\\AuthorizenetGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.2"
     }
    
  • app/code/Magento/Backend/App/AbstractAction.php+22 6 modified
    @@ -5,9 +5,12 @@
      */
     namespace Magento\Backend\App;
     
    +use Magento\Framework\Encryption\Helper\Security;
    +
     /**
      * Generic backend controller
      *
    + * phpcs:disable Magento2.Classes.AbstractApi
      * @api
      * @SuppressWarnings(PHPMD.NumberOfChildren)
      * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
    @@ -101,6 +104,8 @@ public function __construct(Action\Context $context)
         }
     
         /**
    +     * Checking if the user has access to requested component.
    +     *
          * @return bool
          */
         protected function _isAllowed()
    @@ -119,6 +124,8 @@ protected function _getSession()
         }
     
         /**
    +     * Get message manager.
    +     *
          * @return \Magento\Framework\Message\ManagerInterface
          */
         protected function getMessageManager()
    @@ -146,6 +153,8 @@ protected function _setActiveMenu($itemId)
         }
     
         /**
    +     * Prepare breadcrumbs.
    +     *
          * @param string $label
          * @param string $title
          * @param string|null $link
    @@ -158,6 +167,8 @@ protected function _addBreadcrumb($label, $title, $link = null)
         }
     
         /**
    +     * Add content to specified block.
    +     *
          * @param \Magento\Framework\View\Element\AbstractBlock $block
          * @return $this
          */
    @@ -167,6 +178,8 @@ protected function _addContent(\Magento\Framework\View\Element\AbstractBlock $bl
         }
     
         /**
    +     * Move block to left container.
    +     *
          * @param \Magento\Framework\View\Element\AbstractBlock $block
          * @return $this
          */
    @@ -176,6 +189,8 @@ protected function _addLeft(\Magento\Framework\View\Element\AbstractBlock $block
         }
     
         /**
    +     * Add js to specified block.
    +     *
          * @param \Magento\Framework\View\Element\AbstractBlock $block
          * @return $this
          */
    @@ -200,6 +215,8 @@ private function _moveBlockToContainer(\Magento\Framework\View\Element\AbstractB
         }
     
         /**
    +     * Dispatch request.
    +     *
          * @param \Magento\Framework\App\RequestInterface $request
          * @return \Magento\Framework\App\ResponseInterface
          */
    @@ -286,8 +303,7 @@ public function _processUrlKeys()
         }
     
         /**
    -     * Set session locale,
    -     * process force locale set through url params
    +     * Set session locale, process force locale set through url params.
          *
          * @return $this
          */
    @@ -309,8 +325,8 @@ protected function _processLocaleSettings()
          * Set redirect into response
          *
          * @TODO MAGETWO-28356: Refactor controller actions to new ResultInterface
    -     * @param   string $path
    -     * @param   array $arguments
    +     * @param string $path
    +     * @param array $arguments
          * @return \Magento\Framework\App\ResponseInterface
          */
         protected function _redirect($path, $arguments = [])
    @@ -333,7 +349,7 @@ protected function _redirect($path, $arguments = [])
         protected function _forward($action, $controller = null, $module = null, array $params = null)
         {
             $this->_getSession()->setIsUrlNotice($this->_actionFlag->get('', self::FLAG_IS_URLS_CHECKED));
    -        return parent::_forward($action, $controller, $module, $params);
    +        parent::_forward($action, $controller, $module, $params);
         }
     
         /**
    @@ -360,7 +376,7 @@ protected function _validateSecretKey()
             }
     
             $secretKey = $this->getRequest()->getParam(\Magento\Backend\Model\UrlInterface::SECRET_KEY_PARAM_NAME, null);
    -        if (!$secretKey || $secretKey != $this->_backendUrl->getSecretKey()) {
    +        if (!$secretKey || !Security::compareStrings($secretKey, $this->_backendUrl->getSecretKey())) {
                 return false;
             }
             return true;
    
  • app/code/Magento/Backend/Block/Widget.php+1 1 modified
    @@ -91,7 +91,7 @@ public function getButtonHtml($label, $onclick, $class = '', $buttonId = null, $
                 \Magento\Backend\Block\Widget\Button::class
             )->setData(
                 [
    -                'label' => $this->escapeHtml($label),
    +                'label' => $label,
                     'onclick' => $onclick,
                     'class' => $class,
                     'type' => 'button',
    
  • app/code/Magento/Backend/composer.json+21 20 modified
    @@ -5,27 +5,27 @@
             "sort-packages": true
         },
         "require": {
    -      "php": "~7.1.3||~7.2.0||~7.3.0",
    -      "magento/framework": "*",
    -      "magento/module-backup": "*",
    -      "magento/module-catalog": "*",
    -      "magento/module-config": "*",
    -      "magento/module-customer": "*",
    -      "magento/module-developer": "*",
    -      "magento/module-directory": "*",
    -      "magento/module-eav": "*",
    -      "magento/module-quote": "*",
    -      "magento/module-reports": "*",
    -      "magento/module-require-js": "*",
    -      "magento/module-sales": "*",
    -      "magento/module-security": "*",
    -      "magento/module-store": "*",
    -      "magento/module-translation": "*",
    -      "magento/module-ui": "*",
    -      "magento/module-user": "*"
    +        "php": "~7.1.3||~7.2.0||~7.3.0",
    +        "magento/framework": "102.0.*",
    +        "magento/module-backup": "100.3.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-developer": "100.3.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-reports": "100.3.*",
    +        "magento/module-require-js": "100.3.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-security": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-translation": "100.3.*",
    +        "magento/module-ui": "101.1.*",
    +        "magento/module-user": "101.1.*"
         },
         "suggest": {
    -        "magento/module-theme": "*"
    +        "magento/module-theme": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -39,5 +39,6 @@
             "psr-4": {
                 "Magento\\Backend\\": ""
             }
    -    }
    +    },
    +    "version": "101.0.5-p2"
     }
    
  • app/code/Magento/Backend/Test/Mftf/ActionGroup/CliCacheCleanActionGroup.xml+21 0 added
    @@ -0,0 +1,21 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<!--
    + /**
    +  * Copyright © Magento, Inc. All rights reserved.
    +  * See COPYING.txt for license details.
    +  */
    +-->
    +
    +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +              xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
    +    <actionGroup name="CliCacheCleanActionGroup">
    +        <annotations>
    +            <description>Run cache:clean by CLI with specified cache tags (space separated).</description>
    +        </annotations>
    +        <arguments>
    +            <argument name="tags" type="string"/>
    +        </arguments>
    +
    +        <magentoCLI command="cache:clean" arguments="{{tags}}" stepKey="cleanSpecifiedCache"/>
    +    </actionGroup>
    +</actionGroups>
    
  • app/code/Magento/Backend/Test/Mftf/ActionGroup/CliCacheFlushActionGroup.xml+21 0 added
    @@ -0,0 +1,21 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<!--
    + /**
    +  * Copyright © Magento, Inc. All rights reserved.
    +  * See COPYING.txt for license details.
    +  */
    +-->
    +
    +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +              xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
    +    <actionGroup name="CliCacheFlushActionGroup">
    +        <annotations>
    +            <description>Run cache:flush by CLI with specified cache tags (space separated).</description>
    +        </annotations>
    +        <arguments>
    +            <argument name="tags" type="string"/>
    +        </arguments>
    +
    +        <magentoCLI command="cache:flush" arguments="{{tags}}" stepKey="flushSpecifiedCache"/>
    +    </actionGroup>
    +</actionGroups>
    
  • app/code/Magento/Backup/composer.json+6 5 modified
    @@ -6,10 +6,10 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-cron": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-cron": "100.3.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -23,5 +23,6 @@
             "psr-4": {
                 "Magento\\Backup\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Braintree/composer.json+19 18 modified
    @@ -7,26 +7,26 @@
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
             "braintree/braintree_php": "3.35.0",
    -        "magento/framework": "*",
    +        "magento/framework": "102.0.*",
             "magento/magento-composer-installer": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-config": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-instant-purchase": "*",
    -        "magento/module-payment": "*",
    -        "magento/module-paypal": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-ui": "*",
    -        "magento/module-vault": "*",
    -        "magento/module-multishipping": "*",
    -        "magento/module-theme": "*"
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-instant-purchase": "100.3.*",
    +        "magento/module-payment": "100.3.*",
    +        "magento/module-paypal": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-ui": "101.1.*",
    +        "magento/module-vault": "101.1.*",
    +        "magento/module-multishipping": "100.3.*",
    +        "magento/module-theme": "101.0.*"
         },
         "suggest": {
    -        "magento/module-checkout-agreements": "*"
    +        "magento/module-checkout-agreements": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -40,5 +40,6 @@
             "psr-4": {
                 "Magento\\Braintree\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/BraintreeGraphQl/composer.json+8 7 modified
    @@ -4,14 +4,14 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-braintree": "*",
    -        "magento/module-store": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-quote-graph-ql": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-braintree": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-quote-graph-ql": "100.3.*"
         },
         "suggest": {
    -        "magento/module-graph-ql": "*"
    +        "magento/module-graph-ql": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -24,5 +24,6 @@
             "psr-4": {
                 "Magento\\BraintreeGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.2"
     }
    
  • app/code/Magento/Bundle/composer.json+21 20 modified
    @@ -6,27 +6,27 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/module-catalog-rule": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-config": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-gift-message": "*",
    -        "magento/module-media-storage": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-store": "*",
    -        "magento/module-tax": "*",
    -        "magento/module-ui": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/module-catalog-rule": "101.1.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-gift-message": "100.3.*",
    +        "magento/module-media-storage": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-tax": "100.3.*",
    +        "magento/module-ui": "101.1.*"
         },
         "suggest": {
    -        "magento/module-webapi": "*",
    -        "magento/module-bundle-sample-data": "*",
    -        "magento/module-sales-rule": "*"
    +        "magento/module-webapi": "100.3.*",
    +        "magento/module-bundle-sample-data": "Sample Data version: 100.3.*",
    +        "magento/module-sales-rule": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -40,5 +40,6 @@
             "psr-4": {
                 "Magento\\Bundle\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5-p2"
     }
    
  • app/code/Magento/BundleGraphQl/composer.json+9 8 modified
    @@ -4,13 +4,13 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/module-catalog": "*",
    -        "magento/module-bundle": "*",
    -        "magento/module-catalog-graph-ql": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-quote-graph-ql": "*",
    -        "magento/module-store": "*",
    -        "magento/framework": "*"
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-bundle": "100.3.*",
    +        "magento/module-catalog-graph-ql": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-quote-graph-ql": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/framework": "102.0.*"
         },
         "license": [
             "OSL-3.0",
    @@ -23,5 +23,6 @@
             "psr-4": {
                 "Magento\\BundleGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/BundleImportExport/composer.json+9 8 modified
    @@ -6,13 +6,13 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-bundle": "*",
    -        "magento/module-store": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-import-export": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-import-export": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-bundle": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-import-export": "101.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-import-export": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -26,5 +26,6 @@
             "psr-4": {
                 "Magento\\BundleImportExport\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Bundle/Test/Mftf/Test/AdminAddDefaultVideoBundleProductTest.xml+3 0 modified
    @@ -17,6 +17,9 @@
                 <severity value="MAJOR"/>
                 <testCaseId value="MC-110"/>
                 <group value="Bundle"/>
    +            <skip>
    +                <issueId value="MC-34256"/>
    +            </skip>
             </annotations>
             <before>
                 <createData entity="SimpleProduct2" stepKey="simpleProduct1"/>
    
  • app/code/Magento/Bundle/Test/Mftf/Test/AdminRemoveDefaultVideoBundleProductTest.xml+3 0 modified
    @@ -17,6 +17,9 @@
                 <severity value="MAJOR"/>
                 <testCaseId value="MC-205"/>
                 <group value="Bundle"/>
    +            <skip>
    +                <issueId value="MC-34256"/>
    +            </skip>
             </annotations>
             <before>
                 <createData entity="SimpleProduct2" stepKey="simpleProduct1"/>
    
  • app/code/Magento/Bundle/Test/Mftf/Test/AdminShouldBeAbleToMassUpdateAttributesForBundleProductsTest.xml+5 3 modified
    @@ -55,9 +55,11 @@
             <actionGroup ref="AdminUpdateProductNameAndDescriptionAttributes" stepKey="updateProductAttribute">
                 <argument name="product" value="UpdateAttributeNameAndDescription"/>
             </actionGroup>
    -        <!--Run cron twice-->
    -        <magentoCLI command="cron:run" stepKey="cronRun"/>
    -        <magentoCLI command="cron:run" stepKey="cronRunTwice"/>
    +        <comment userInput="Apply changes" stepKey="cronRun"/>
    +        <actionGroup ref="CliConsumerStartActionGroup" stepKey="cronRunTwice">
    +            <argument name="consumerName" value="{{AdminProductAttributeUpdateMessageConsumerData.consumerName}}"/>
    +            <argument name="maxMessages" value="{{AdminProductAttributeUpdateMessageConsumerData.messageLimit}}"/>
    +        </actionGroup>
             <!-- Search for a product with a new name and Open Product -->
             <actionGroup ref="filterProductGridByName" stepKey="searchWithNewProductName">
                 <argument name="product" value="UpdateAttributeNameAndDescription"/>
    
  • app/code/Magento/CacheInvalidate/composer.json+4 3 modified
    @@ -6,8 +6,8 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-page-cache": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-page-cache": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -21,5 +21,6 @@
             "psr-4": {
                 "Magento\\CacheInvalidate\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Captcha/composer.json+7 6 modified
    @@ -6,11 +6,11 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-store": "*",
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-store": "101.0.*",
             "laminas/laminas-captcha": "^2.7.1",
             "laminas/laminas-db": "^2.8.2",
             "laminas/laminas-session": "^2.7.3"
    @@ -27,5 +27,6 @@
             "psr-4": {
                 "Magento\\Captcha\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/CardinalCommerce/composer.json+6 5 modified
    @@ -6,10 +6,10 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-payment": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-payment": "100.3.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -23,5 +23,6 @@
             "psr-4": {
                 "Magento\\CardinalCommerce\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.2"
     }
    
  • app/code/Magento/CatalogAnalytics/composer.json+5 4 modified
    @@ -3,9 +3,9 @@
         "description": "N/A",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-analytics": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-analytics": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -19,5 +19,6 @@
             "psr-4": {
                 "Magento\\CatalogAnalytics\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Catalog/Api/SpecialPriceInterface.php+1 0 modified
    @@ -32,6 +32,7 @@ interface SpecialPriceInterface
          * @since 101.1.0
          * @since 102.0.0
          * @since 102.0.0
    +     * @since 102.0.0
          */
         public function get(array $skus);
     
    
  • app/code/Magento/CatalogCmsGraphQl/composer.json+8 7 modified
    @@ -4,14 +4,14 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-cms-graph-ql": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-cms-graph-ql": "100.3.*"
         },
         "suggest": {
    -        "magento/module-graph-ql": "*",
    -        "magento/module-cms": "*",
    -        "magento/module-catalog-graph-ql": "*"
    +        "magento/module-graph-ql": "100.3.*",
    +        "magento/module-cms": "103.0.*",
    +        "magento/module-catalog-graph-ql": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -24,5 +24,6 @@
             "psr-4": {
                 "Magento\\CatalogCmsGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.0"
     }
    
  • app/code/Magento/Catalog/composer.json+31 30 modified
    @@ -6,37 +6,37 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-authorization": "*",
    -        "magento/module-asynchronous-operations": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/module-catalog-rule": "*",
    -        "magento/module-catalog-url-rewrite": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-cms": "*",
    -        "magento/module-config": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-indexer": "*",
    -        "magento/module-media-storage": "*",
    -        "magento/module-msrp": "*",
    -        "magento/module-page-cache": "*",
    -        "magento/module-product-alert": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-store": "*",
    -        "magento/module-tax": "*",
    -        "magento/module-theme": "*",
    -        "magento/module-ui": "*",
    -        "magento/module-url-rewrite": "*",
    -        "magento/module-widget": "*",
    -        "magento/module-wishlist": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-authorization": "100.3.*",
    +        "magento/module-asynchronous-operations": "100.3.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/module-catalog-rule": "101.1.*",
    +        "magento/module-catalog-url-rewrite": "100.3.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-cms": "103.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-indexer": "100.3.*",
    +        "magento/module-media-storage": "100.3.*",
    +        "magento/module-msrp": "100.3.*",
    +        "magento/module-page-cache": "100.3.*",
    +        "magento/module-product-alert": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-tax": "100.3.*",
    +        "magento/module-theme": "101.0.*",
    +        "magento/module-ui": "101.1.*",
    +        "magento/module-url-rewrite": "101.1.*",
    +        "magento/module-widget": "101.1.*",
    +        "magento/module-wishlist": "101.1.*"
         },
         "suggest": {
    -        "magento/module-cookie": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-catalog-sample-data": "*"
    +        "magento/module-cookie": "100.3.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-catalog-sample-data": "Sample Data version: 100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -50,5 +50,6 @@
             "psr-4": {
                 "Magento\\Catalog\\": ""
             }
    -    }
    +    },
    +    "version": "103.0.5-p2"
     }
    
  • app/code/Magento/CatalogCustomerGraphQl/composer.json+7 6 modified
    @@ -4,11 +4,11 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-catalog-graph-ql": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-catalog-graph-ql": "100.3.*",
    +        "magento/module-store": "101.0.*"
         },
         "license": [
             "OSL-3.0",
    @@ -21,5 +21,6 @@
             "psr-4": {
                 "Magento\\CatalogCustomerGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.0"
     }
    
  • app/code/Magento/CatalogGraphQl/composer.json+13 12 modified
    @@ -4,19 +4,19 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/module-eav": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/module-search": "*",
    -        "magento/module-store": "*",
    -        "magento/module-eav-graph-ql": "*",
    -        "magento/module-catalog-search": "*",
    -        "magento/framework": "*"
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/module-search": "101.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-eav-graph-ql": "100.3.*",
    +        "magento/module-catalog-search": "101.0.*",
    +        "magento/framework": "102.0.*"
         },
         "suggest": {
    -        "magento/module-graph-ql": "*",
    -        "magento/module-graph-ql-cache": "*",
    -        "magento/module-store-graph-ql": "*"
    +        "magento/module-graph-ql": "100.3.*",
    +        "magento/module-graph-ql-cache": "100.3.*",
    +        "magento/module-store-graph-ql": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -29,5 +29,6 @@
             "psr-4": {
                 "Magento\\CatalogGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/CatalogImportExport/composer.json+13 12 modified
    @@ -7,17 +7,17 @@
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
             "ext-ctype": "*",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/module-catalog-url-rewrite": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-import-export": "*",
    -        "magento/module-media-storage": "*",
    -        "magento/module-store": "*",
    -        "magento/module-tax": "*",
    -        "magento/module-authorization": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/module-catalog-url-rewrite": "100.3.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-import-export": "100.3.*",
    +        "magento/module-media-storage": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-tax": "100.3.*",
    +        "magento/module-authorization": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -31,5 +31,6 @@
             "psr-4": {
                 "Magento\\CatalogImportExport\\": ""
             }
    -    }
    +    },
    +    "version": "101.0.5-p2"
     }
    
  • app/code/Magento/CatalogImportExport/Test/Mftf/Test/AdminExportBundleProductTest.xml+13 6 modified
    @@ -80,9 +80,13 @@
                     <requiredEntity createDataKey="secondSimpleProductForFixedWithAttribute"/>
                 </createData>
     
    -            <!-- Run cron twice -->
    -            <magentoCLI command="cron:run" stepKey="runCron1"/>
    -            <magentoCLI command="cron:run" stepKey="runCron2"/>
    +            <!-- Run cron twice (To reduce the load and with introducing BIC cron runs have been removed) -->
    +            <actionGroup ref="CliIndexerReindexActionGroup" stepKey="runCron1">
    +                <argument name="indices" value="catalog_category_product catalogrule_product catalog_product_price catalogsearch_fulltext "/>
    +            </actionGroup>
    +            <actionGroup ref="CliCacheCleanActionGroup" stepKey="runCron2">
    +                <argument name="tags" value="full_page"/>
    +            </actionGroup>
     
                 <!-- Login as admin -->
                 <actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
    @@ -118,9 +122,12 @@
             <!-- Export created below products -->
             <actionGroup ref="exportAllProducts" stepKey="exportCreatedProducts"/>
     
    -        <!-- Run cron -->
    -        <magentoCLI command="cron:run" stepKey="runCron3"/>
    -        <magentoCLI command="cron:run" stepKey="runCron4"/>
    +        <!-- Run cron (To reduce the load and with introducing BIC cron runs have been removed) -->
    +        <magentoCLI command="help" stepKey="runCron3"/>
    +        <actionGroup ref="CliConsumerStartActionGroup" stepKey="runCron4">
    +            <argument name="consumerName" value="exportProcessor"/>
    +            <argument name="maxMessages" value="10"/>
    +        </actionGroup>
     
             <!-- Download product -->
             <actionGroup ref="downloadFileByRowIndex" stepKey="downloadCreatedProducts">
    
  • app/code/Magento/CatalogImportExport/Test/Mftf/Test/AdminExportGroupedProductWithSpecialPriceTest.xml+7 6 modified
    @@ -48,9 +48,8 @@
                     <requiredEntity createDataKey="createSecondSimpleProduct"/>
                 </updateData>
     
    -            <!-- Run cron twice -->
    -            <magentoCLI command="cron:run" stepKey="runCron1"/>
    -            <magentoCLI command="cron:run" stepKey="runCron2"/>
    +            <comment userInput="Reindex invalidated indices" stepKey="runCron1"/>
    +            <actionGroup ref="CliRunReindexUsingCronJobsActionGroup" stepKey="runCron2"/>
     
                 <!-- Login as admin -->
                 <actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
    @@ -80,9 +79,11 @@
             <!-- Export created below products -->
             <actionGroup ref="exportAllProducts" stepKey="exportCreatedProducts"/>
     
    -        <!-- Run cron -->
    -        <magentoCLI command="cron:run" stepKey="runCron3"/>
    -        <magentoCLI command="cron:run" stepKey="runCron4"/>
    +        <comment userInput="Start message queue for export consumer" stepKey="runCron3"/>
    +        <actionGroup ref="CliConsumerStartActionGroup" stepKey="runCron4">
    +            <argument name="consumerName" value="{{AdminExportMessageConsumerData.consumerName}}"/>
    +            <argument name="maxMessages" value="{{AdminExportMessageConsumerData.messageLimit}}"/>
    +        </actionGroup>
     
             <!-- Download product -->
             <actionGroup ref="downloadFileByRowIndex" stepKey="downloadCreatedProducts">
    
  • app/code/Magento/CatalogImportExport/Test/Mftf/Test/AdminExportImportConfigurableProductWithImagesTest.xml+6 3 modified
    @@ -167,9 +167,12 @@
                 <argument name="attributeData" value="$$createExportImportConfigurableProduct.sku$$"/>
             </actionGroup>
     
    -        <!-- Run cron twice -->
    -        <magentoCLI command="cron:run" stepKey="runCronFirstTime"/>
    -        <magentoCLI command="cron:run" stepKey="runCronSecondTime"/>
    +        <!-- Run cron twice (To reduce the load and with introducing BIC cron runs have been removed) -->
    +        <magentoCLI command="help" stepKey="runCronFirstTime"/>
    +        <actionGroup ref="CliConsumerStartActionGroup" stepKey="runCronSecondTime">
    +            <argument name="consumerName" value="exportProcessor"/>
    +            <argument name="maxMessages" value="10"/>
    +        </actionGroup>
     
             <!-- Save exported file: file successfully downloaded -->
             <actionGroup ref="downloadFileByRowIndex" stepKey="downloadCreatedProducts">
    
  • app/code/Magento/CatalogImportExport/Test/Mftf/Test/AdminExportSimpleAndConfigurableProductsWithCustomOptionsTest.xml+7 6 modified
    @@ -73,9 +73,8 @@
                     <requiredEntity createDataKey="createConfigSecondChildProduct"/>
                 </createData>
     
    -            <!-- Run cron twice -->
    -            <magentoCLI command="cron:run" stepKey="runCron1"/>
    -            <magentoCLI command="cron:run" stepKey="runCron2"/>
    +            <comment userInput="Reindex invalidated indices after product attribute has been created/deleted" stepKey="runCron1"/>
    +            <actionGroup ref="CliRunReindexUsingCronJobsActionGroup" stepKey="runCron2"/>
     
                 <!-- Login as admin -->
                 <actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
    @@ -110,9 +109,11 @@
                 <argument name="attributeData" value="$$createConfigProduct.sku$$"/>
             </actionGroup>
     
    -        <!-- Run cron -->
    -        <magentoCLI command="cron:run" stepKey="runCron3"/>
    -        <magentoCLI command="cron:run" stepKey="runCron4"/>
    +        <comment userInput="Start message queue for export consumer" stepKey="runCron3"/>
    +        <actionGroup ref="CliConsumerStartActionGroup" stepKey="runCron4">
    +            <argument name="consumerName" value="{{AdminExportMessageConsumerData.consumerName}}"/>
    +            <argument name="maxMessages" value="{{AdminExportMessageConsumerData.messageLimit}}"/>
    +        </actionGroup>
     
             <!-- Download product -->
             <actionGroup ref="downloadFileByRowIndex" stepKey="downloadCreatedProducts">
    
  • app/code/Magento/CatalogImportExport/Test/Mftf/Test/AdminExportSimpleProductAndConfigurableProductsWithAssignedImagesTest.xml+7 6 modified
    @@ -89,9 +89,8 @@
                     <requiredEntity createDataKey="createConfigProduct"/>
                 </createData>
     
    -            <!-- Run cron twice -->
    -            <magentoCLI command="cron:run" stepKey="runCron1"/>
    -            <magentoCLI command="cron:run" stepKey="runCron2"/>
    +            <comment userInput="Reindex invalidated indices after product attribute has been created/deleted" stepKey="runCron1"/>
    +            <actionGroup ref="CliRunReindexUsingCronJobsActionGroup" stepKey="runCron2"/>
     
                 <!-- Login as admin -->
                 <actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
    @@ -125,9 +124,11 @@
                 <argument name="attributeData" value="$$createConfigProduct.sku$$"/>
             </actionGroup>
     
    -        <!-- Run cron -->
    -        <magentoCLI command="cron:run" stepKey="runCron3"/>
    -        <magentoCLI command="cron:run" stepKey="runCron4"/>
    +        <comment userInput="Start message queue for export consumer" stepKey="runCron3"/>
    +        <actionGroup ref="CliConsumerStartActionGroup" stepKey="runCron4">
    +            <argument name="consumerName" value="{{AdminExportMessageConsumerData.consumerName}}"/>
    +            <argument name="maxMessages" value="{{AdminExportMessageConsumerData.messageLimit}}"/>
    +        </actionGroup>
     
             <!-- Download product -->
             <actionGroup ref="downloadFileByRowIndex" stepKey="downloadCreatedProducts">
    
  • app/code/Magento/CatalogImportExport/Test/Mftf/Test/AdminExportSimpleProductAssignedToMainWebsiteAndConfigurableProductAssignedToCustomWebsiteTest.xml+7 6 modified
    @@ -71,9 +71,8 @@
                     <requiredEntity createDataKey="createConfigSecondChildProduct"/>
                 </createData>
     
    -            <!-- Run cron twice -->
    -            <magentoCLI command="cron:run" stepKey="runCron1"/>
    -            <magentoCLI command="cron:run" stepKey="runCron2"/>
    +            <comment userInput="Reindex invalidated indices after product attribute has been created/deleted" stepKey="runCron1"/>
    +            <actionGroup ref="CliRunReindexUsingCronJobsActionGroup" stepKey="runCron2"/>
     
                 <!-- Login as admin -->
                 <actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
    @@ -108,9 +107,11 @@
             <!-- Export created below products -->
             <actionGroup ref="exportAllProducts" stepKey="exportCreatedProducts"/>
     
    -        <!-- Run cron -->
    -        <magentoCLI command="cron:run" stepKey="runCron3"/>
    -        <magentoCLI command="cron:run" stepKey="runCron4"/>
    +        <comment userInput="Start message queue for export consumer" stepKey="runCron3"/>
    +        <actionGroup ref="CliConsumerStartActionGroup" stepKey="runCron4">
    +            <argument name="consumerName" value="{{AdminExportMessageConsumerData.consumerName}}"/>
    +            <argument name="maxMessages" value="{{AdminExportMessageConsumerData.messageLimit}}"/>
    +        </actionGroup>
     
             <!-- Download product -->
             <actionGroup ref="downloadFileByRowIndex" stepKey="downloadCreatedProducts">
    
  • app/code/Magento/CatalogImportExport/Test/Mftf/Test/AdminExportSimpleProductWithCustomAttributeTest.xml+10 6 modified
    @@ -28,9 +28,8 @@
                     <requiredEntity createDataKey="createAttributeSet"/>
                 </createData>
     
    -            <!-- Run cron twice -->
    -            <magentoCLI command="cron:run" stepKey="runCron1"/>
    -            <magentoCLI command="cron:run" stepKey="runCron2"/>
    +            <comment userInput="Reindex invalidated indices after product attribute has been created/deleted" stepKey="runCron1"/>
    +            <actionGroup ref="CliRunReindexUsingCronJobsActionGroup" stepKey="runCron2"/>
     
                 <!-- Login as admin -->
                 <actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>
    @@ -48,6 +47,9 @@
                 </actionGroup>
                 <!-- Log out -->
                 <actionGroup ref="logout" stepKey="logout"/>
    +
    +            <!-- Reindex invalidated indices after product attribute has been created/deleted -->
    +            <actionGroup ref="CliRunReindexUsingCronJobsActionGroup" stepKey="reindexInvalidatedIndices"/>
             </after>
     
             <!-- Go to export page -->
    @@ -57,9 +59,11 @@
             <!-- Export created below products -->
             <actionGroup ref="exportAllProducts" stepKey="exportCreatedProducts"/>
     
    -        <!-- Run cron -->
    -        <magentoCLI command="cron:run" stepKey="runCron3"/>
    -        <magentoCLI command="cron:run" stepKey="runCron4"/>
    +        <comment userInput="Start message queue for export consumer" stepKey="runCron3"/>
    +        <actionGroup ref="CliConsumerStartActionGroup" stepKey="runCron4">
    +            <argument name="consumerName" value="{{AdminExportMessageConsumerData.consumerName}}"/>
    +            <argument name="maxMessages" value="{{AdminExportMessageConsumerData.messageLimit}}"/>
    +        </actionGroup>
     
             <!-- Download product -->
             <actionGroup ref="downloadFileByRowIndex" stepKey="downloadCreatedProducts">
    
  • app/code/Magento/CatalogInventory/composer.json+10 9 modified
    @@ -6,14 +6,14 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-config": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-store": "*",
    -        "magento/module-ui": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-ui": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -28,5 +28,6 @@
                 "Magento\\CatalogInventory\\": ""
             }
         },
    -    "abandoned": "magento/inventory-composer-metapackage"
    +    "abandoned": "magento/inventory-composer-metapackage",
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/CatalogInventoryGraphQl/composer.json+6 5 modified
    @@ -4,10 +4,10 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-store": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-inventory": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-inventory": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -20,5 +20,6 @@
             "psr-4": {
                 "Magento\\CatalogInventoryGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Catalog/Model/Template/Filter.php+2 2 modified
    @@ -28,7 +28,7 @@ class Filter extends \Magento\Framework\Filter\Template
          * Whether to allow SID in store directive: NO
          *
          * @var bool
    -     * @deprecated SID query parameter is not used in URLs anymore.
    +     * @deprecated 103.0.5 SID query parameter is not used in URLs anymore.
          */
         protected $_useSessionInUrl = false;
     
    @@ -81,7 +81,7 @@ public function setUseAbsoluteLinks($flag)
          * @param bool $flag
          * @return $this
          * @SuppressWarnings(PHPMD.UnusedFormalParameter)
    -     * @deprecated SID query parameter is not used in URLs anymore.
    +     * @deprecated 103.0.5 SID query parameter is not used in URLs anymore.
          */
         public function setUseSessionInUrl($flag)
         {
    
  • app/code/Magento/CatalogRule/composer.json+12 11 modified
    @@ -6,18 +6,18 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-rule": "*",
    -        "magento/module-store": "*",
    -        "magento/module-ui": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-rule": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-ui": "101.1.*"
         },
         "suggest": {
    -        "magento/module-import-export": "*",
    -        "magento/module-catalog-rule-sample-data": "*"
    +        "magento/module-import-export": "100.3.*",
    +        "magento/module-catalog-rule-sample-data": "Sample Data version: 100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -31,5 +31,6 @@
             "psr-4": {
                 "Magento\\CatalogRule\\": ""
             }
    -    }
    +    },
    +    "version": "101.1.5"
     }
    
  • app/code/Magento/CatalogRuleConfigurable/composer.json+7 6 modified
    @@ -6,14 +6,14 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    +        "magento/framework": "102.0.*",
             "magento/magento-composer-installer": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-rule": "*",
    -        "magento/module-configurable-product": "*"
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-rule": "101.1.*",
    +        "magento/module-configurable-product": "100.3.*"
         },
         "suggest": {
    -        "magento/module-catalog-rule": "*"
    +        "magento/module-catalog-rule": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -27,5 +27,6 @@
             "psr-4": {
                 "Magento\\CatalogRuleConfigurable\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/CatalogRule/Model/Indexer/IndexBuilder.php+1 1 modified
    @@ -446,7 +446,7 @@ private function assignProductToRule(Rule $rule, int $productEntityId, array $we
          * @param Product $product
          * @return $this
          * @throws \Exception
    -     * @deprecated
    +     * @deprecated 101.1.5
          * @see ReindexRuleProduct::execute
          * @SuppressWarnings(PHPMD.NPathComplexity)
          */
    
  • app/code/Magento/CatalogSearch/composer.json+15 14 modified
    @@ -6,21 +6,21 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-indexer": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-search": "*",
    -        "magento/module-store": "*",
    -        "magento/module-theme": "*",
    -        "magento/module-ui": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-indexer": "100.3.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-search": "101.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-theme": "101.0.*",
    +        "magento/module-ui": "101.1.*"
         },
         "suggest": {
    -        "magento/module-config": "*"
    +        "magento/module-config": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -34,5 +34,6 @@
             "psr-4": {
                 "Magento\\CatalogSearch\\": ""
             }
    -    }
    +    },
    +    "version": "101.0.5"
     }
    
  • app/code/Magento/Catalog/Test/Mftf/Data/QueueConsumerData.xml+19 0 added
    @@ -0,0 +1,19 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<!--
    + /**
    +  * Copyright © Magento, Inc. All rights reserved.
    +  * See COPYING.txt for license details.
    +  */
    +-->
    +
    +<entities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +          xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataProfileSchema.xsd">
    +    <entity name="AdminProductAttributeUpdateConsumerData">
    +        <data key="consumerName">product_action_attribute.update</data>
    +        <data key="messageLimit">100</data>
    +    </entity>
    +    <entity name="AdminProductAttributeWebsiteUpdateConsumerData">
    +        <data key="consumerName">product_action_attribute.website.update</data>
    +        <data key="messageLimit">100</data>
    +    </entity>
    +</entities>
    
  • app/code/Magento/Catalog/Test/Mftf/Test/AdminAddDefaultVideoSimpleProductTest.xml+3 0 modified
    @@ -17,6 +17,9 @@
                 <severity value="MAJOR"/>
                 <testCaseId value="MC-111"/>
                 <group value="Catalog"/>
    +            <skip>
    +                <issueId value="MC-34256"/>
    +            </skip>
             </annotations>
             <before>
                 <actionGroup ref="EnableAdminAccountSharingActionGroup" stepKey="enableAdminAccountSharing"/>
    
  • app/code/Magento/Catalog/Test/Mftf/Test/AdminAddDefaultVideoVirtualProductTest.xml+3 0 modified
    @@ -17,6 +17,9 @@
                 <severity value="MAJOR"/>
                 <testCaseId value="MC-109"/>
                 <group value="Catalog"/>
    +            <skip>
    +                <issueId value="MC-34256"/>
    +            </skip>
             </annotations>
     
             <!-- Replacing steps in base AdminAddDefaultVideoSimpleProductTest -->
    
  • app/code/Magento/Catalog/Test/Mftf/Test/AdminMassProductPriceUpdateTest.xml+7 3 modified
    @@ -56,9 +56,13 @@
             <waitForPageLoad stepKey="waitForUpdatedProductToSave" />
             <see selector="{{AdminProductMessagesSection.successMessage}}" userInput="Message is added to queue" stepKey="seeAttributeUpateSuccessMsg"/>
     
    -        <!-- Run cron twice -->
    -        <magentoCLI command="cron:run" stepKey="runCron1"/>
    -        <magentoCLI command="cron:run" stepKey="runCron2"/>
    +        <!-- Start message queue -->
    +        <actionGroup ref="CliConsumerStartActionGroup" stepKey="runCron1">
    +            <argument name="consumerName" value="{{AdminProductAttributeUpdateConsumerData.consumerName}}"/>
    +            <argument name="maxMessages" value="{{AdminProductAttributeUpdateConsumerData.messageLimit}}"/>
    +        </actionGroup>
    +        <!-- Run cron -->
    +        <magentoCLI command="cron:run --group=index" stepKey="runCron2"/>
             <reloadPage stepKey="refreshPage"/>
             <waitForPageLoad stepKey="waitFormToReload1"/>
     
    
  • app/code/Magento/Catalog/Test/Mftf/Test/AdminMassUpdateProductAttributesGlobalScopeTest.xml+13 8 modified
    @@ -59,22 +59,27 @@
             <actionGroup ref="AdminSwitchStoreViewActionGroup" stepKey="AdminSwitchStoreViewActionGroup"/>
             <!-- Update attribute -->
             <checkOption selector="{{AdminEditProductAttributesSection.ChangeAttributePriceToggle}}" stepKey="toggleToChangePrice"/>
    -        <fillField selector="{{AdminEditProductAttributesSection.AttributePrice}}" userInput="$$createProductOne.price$$0" stepKey="fillAttributeNameField"/>
    +        <fillField selector="{{AdminEditProductAttributesSection.AttributePrice}}" userInput="$createProductOne.price$0" stepKey="fillAttributeNameField"/>
             <click selector="{{AdminEditProductAttributesSection.Save}}" stepKey="save"/>
             <waitForElementVisible selector="{{AdminMessagesSection.success}}" time="60" stepKey="waitForSuccessMessage"/>
             <see selector="{{AdminMessagesSection.success}}" userInput="Message is added to queue" stepKey="seeAttributeUpdateSuccessMsg"/>
     
    -        <!-- Run cron twice -->
    -        <magentoCLI command="cron:run" arguments="--group=consumers" stepKey="runCron1"/>
    -        <magentoCLI command="cron:run" arguments="--group=consumers" stepKey="runCron2"/>
    -        <magentoCLI command="indexer:reindex" stepKey="reindex"/>
    +        <!-- Start message queue for product attribute consumer -->
    +        <actionGroup ref="CliConsumerStartActionGroup" stepKey="runCron1">
    +            <argument name="consumerName" value="{{AdminProductAttributeUpdateMessageConsumerData.consumerName}}"/>
    +            <argument name="maxMessages" value="{{AdminProductAttributeUpdateMessageConsumerData.messageLimit}}"/>
    +        </actionGroup>
    +        <magentoCLI command="cron:run --group=index" stepKey="runCron2"/>
    +        <actionGroup ref="CliIndexerReindexActionGroup" stepKey="reindex">
    +            <argument name="indices" value=""/>
    +        </actionGroup>
     
             <!-- Assert on storefront default view -->
             <actionGroup ref="GoToStoreViewAdvancedCatalogSearchActionGroup" stepKey="GoToStoreViewAdvancedCatalogSearchActionGroupDefault"/>
             <actionGroup ref="StorefrontAdvancedCatalogSearchByProductNameAndPriceActionGroup" stepKey="searchByNameDefault">
    -            <argument name="name" value="&quot;$$createProductOne.name$$&quot;"/>
    -            <argument name="priceFrom" value="$$createProductOne.price$$0"/>
    -            <argument name="priceTo" value="$$createProductOne.price$$0"/>
    +            <argument name="name" value="&quot;$createProductOne.name$&quot;"/>
    +            <argument name="priceFrom" value="$createProductOne.price$0"/>
    +            <argument name="priceTo" value="$createProductOne.price$0"/>
             </actionGroup>
             <actionGroup ref="StorefrontCheckAdvancedSearchResultActionGroup" stepKey="StorefrontCheckAdvancedSearchResultDefault"/>
             <waitForElementVisible selector="{{StorefrontCatalogSearchAdvancedResultMainSection.itemFound}}" stepKey="waitForSearchResultInDefaultView"/>
    
  • app/code/Magento/Catalog/Test/Mftf/Test/AdminMassUpdateProductAttributesStoreViewScopeTest.xml+5 3 modified
    @@ -133,9 +133,11 @@
             <click selector="{{AdminEditProductAttributesSection.Save}}" stepKey="save"/>
             <see selector="{{AdminProductMessagesSection.successMessage}}" userInput="Message is added to queue" stepKey="seeAttributeUpateSuccessMsg"/>
     
    -        <!-- Run cron twice -->
    -        <magentoCLI command="cron:run" stepKey="runCron1"/>
    -        <magentoCLI command="cron:run" stepKey="runCron2"/>
    +        <comment userInput="Apply changes" stepKey="runCron1"/>
    +        <actionGroup ref="CliConsumerStartActionGroup" stepKey="runCron2">
    +            <argument name="consumerName" value="{{AdminProductAttributeUpdateMessageConsumerData.consumerName}}"/>
    +            <argument name="maxMessages" value="{{AdminProductAttributeUpdateMessageConsumerData.messageLimit}}"/>
    +        </actionGroup>
             <reloadPage stepKey="refreshPage"/>
             <waitForPageLoad stepKey="waitFormToReload1"/>
     
    
  • app/code/Magento/Catalog/Test/Mftf/Test/AdminRemoveDefaultVideoSimpleProductTest.xml+3 0 modified
    @@ -17,6 +17,9 @@
                 <severity value="MAJOR"/>
                 <testCaseId value="MC-206"/>
                 <group value="Catalog"/>
    +            <skip>
    +                <issueId value="MC-34256"/>
    +            </skip>
             </annotations>
             <before>
                 <actionGroup ref="EnableAdminAccountSharingActionGroup" stepKey="enableAdminAccountSharing"/>
    
  • app/code/Magento/Catalog/Test/Mftf/Test/AdminRemoveDefaultVideoVirtualProductTest.xml+3 0 modified
    @@ -17,6 +17,9 @@
                 <severity value="MAJOR"/>
                 <testCaseId value="MC-204"/>
                 <group value="Catalog"/>
    +            <skip>
    +                <issueId value="MC-34256"/>
    +            </skip>
             </annotations>
     
             <!-- Replacing steps in base AdminRemoveDefaultVideoSimpleProductTest -->
    
  • app/code/Magento/Catalog/Test/Mftf/Test/StoreFrontRecentlyViewedAtStoreViewLevelTest.xml+1 1 modified
    @@ -12,7 +12,7 @@
                 <stories value="Recently Viewed Product"/>
                 <title value="Recently Viewed Product at store view level"/>
                 <description value="Recently Viewed Product should not be displayed on second store view, if configured as, Per Store View "/>
    -            <testCaseId value="MC-31877"/>
    +            <testCaseId value="MC-31876"/>
                 <severity value="CRITICAL"/>
                 <group value="catalog"/>
                 <group value="WYSIWYGDisabled"/>
    
  • app/code/Magento/CatalogUrlRewrite/composer.json+12 11 modified
    @@ -6,18 +6,18 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-import-export": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-import-export": "*",
    -        "magento/module-store": "*",
    -        "magento/module-ui": "*",
    -        "magento/module-url-rewrite": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-import-export": "101.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-import-export": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-ui": "101.1.*",
    +        "magento/module-url-rewrite": "101.1.*"
         },
         "suggest": {
    -        "magento/module-webapi": "*"
    +        "magento/module-webapi": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -31,5 +31,6 @@
             "psr-4": {
                 "Magento\\CatalogUrlRewrite\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/CatalogUrlRewriteGraphQl/composer.json+8 7 modified
    @@ -4,14 +4,14 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/module-store": "*",
    -        "magento/module-catalog": "*",
    -        "magento/framework": "*"
    +        "magento/module-store": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/framework": "102.0.*"
         },
         "suggest": {
    -        "magento/module-catalog-url-rewrite": "*",
    -        "magento/module-catalog-graph-ql": "*",
    -        "magento/module-url-rewrite-graph-ql": "*"
    +        "magento/module-catalog-url-rewrite": "100.3.*",
    +        "magento/module-catalog-graph-ql": "100.3.*",
    +        "magento/module-url-rewrite-graph-ql": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -24,5 +24,6 @@
             "psr-4": {
                 "Magento\\CatalogUrlRewriteGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Catalog/ViewModel/Product/Breadcrumbs.php+1 1 modified
    @@ -117,7 +117,7 @@ public function getJsonConfigurationHtmlEscaped() : string
          * Returns breadcrumb json.
          *
          * @return string
    -     * @deprecated 103.0.0 in favor of new method with name {suffix}Html{postfix}()
    +     * @deprecated 102.0.11 in favor of new method with name {suffix}Html{postfix}()
          */
         public function getJsonConfiguration()
         {
    
  • app/code/Magento/CatalogWidget/composer.json+12 11 modified
    @@ -6,16 +6,16 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-rule": "*",
    -        "magento/module-store": "*",
    -        "magento/module-widget": "*",
    -        "magento/module-wishlist": "*",
    -        "magento/module-theme": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-rule": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-widget": "101.1.*",
    +        "magento/module-wishlist": "101.1.*",
    +        "magento/module-theme": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -29,5 +29,6 @@
             "psr-4": {
                 "Magento\\CatalogWidget\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/CheckoutAgreements/composer.json+7 6 modified
    @@ -6,11 +6,11 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -24,5 +24,6 @@
             "psr-4": {
                 "Magento\\CheckoutAgreements\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/CheckoutAgreementsGraphQl/composer.json+6 5 modified
    @@ -4,12 +4,12 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-store": "*",
    -        "magento/module-checkout-agreements": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-checkout-agreements": "100.3.*"
         },
         "suggest": {
    -        "magento/module-graph-ql": "*"
    +        "magento/module-graph-ql": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -22,5 +22,6 @@
             "psr-4": {
                 "Magento\\CheckoutAgreementsGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.1"
     }
    
  • app/code/Magento/Checkout/composer.json+22 21 modified
    @@ -6,28 +6,28 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/module-config": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-msrp": "*",
    -        "magento/module-page-cache": "*",
    -        "magento/module-payment": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-sales-rule": "*",
    -        "magento/module-shipping": "*",
    -        "magento/module-store": "*",
    -        "magento/module-tax": "*",
    -        "magento/module-theme": "*",
    -        "magento/module-ui": "*",
    -        "magento/module-captcha": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-msrp": "100.3.*",
    +        "magento/module-page-cache": "100.3.*",
    +        "magento/module-payment": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-sales-rule": "101.1.*",
    +        "magento/module-shipping": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-tax": "100.3.*",
    +        "magento/module-theme": "101.0.*",
    +        "magento/module-ui": "101.1.*",
    +        "magento/module-captcha": "100.3.*"
         },
         "suggest": {
    -        "magento/module-cookie": "*"
    +        "magento/module-cookie": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -41,5 +41,6 @@
             "psr-4": {
                 "Magento\\Checkout\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5-p2"
     }
    
  • app/code/Magento/Checkout/Test/Mftf/Page/CheckoutPage.xml+1 0 modified
    @@ -9,6 +9,7 @@
     <pages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/PageObject.xsd">
         <page name="CheckoutPage" url="/checkout" area="storefront" module="Magento_Checkout">
    +        <section name="StorefrontCheckoutPageMessagesSection"/>
             <section name="CheckoutShippingSection"/>
             <section name="CheckoutShippingMethodsSection"/>
             <section name="CheckoutOrderSummarySection"/>
    
  • app/code/Magento/Checkout/Test/Mftf/Section/StorefrontCheckoutPageMessagesSection.xml+14 0 added
    @@ -0,0 +1,14 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<!--
    + /**
    +  * Copyright © Magento, Inc. All rights reserved.
    +  * See COPYING.txt for license details.
    +  */
    +-->
    +
    +<sections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +        xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd">
    +    <section name="StorefrontCheckoutPageMessagesSection">
    +        <element name="successMessage" type="text" selector="//div[@id='checkout']//div[@data-role='checkout-messages']//div[contains(@class,'message-success')]//div[contains(.,'{{message}}')]" parameterized="true"/>
    +    </section>
    +</sections>
    
  • app/code/Magento/Checkout/view/frontend/web/template/summary/item/details.html+7 3 modified
    @@ -12,7 +12,7 @@
     
         <div class="product-item-inner">
             <div class="product-item-name-block">
    -            <strong class="product-item-name" data-bind="html: $parent.name"></strong>
    +            <strong class="product-item-name" data-bind="text: $parent.name"></strong>
                 <div class="details-qty">
                     <span class="label"><!-- ko i18n: 'Qty' --><!-- /ko --></span>
                     <span class="value" data-bind="text: $parent.qty"></span>
    @@ -32,10 +32,14 @@
                     <!--ko foreach: JSON.parse($parent.options)-->
                     <dt class="label" data-bind="text: label"></dt>
                         <!-- ko if: ($data.full_view)-->
    -                    <dd class="values" data-bind="html: full_view"></dd>
    +                    <!-- ko with: {full_viewUnsanitizedHtml: $data.full_view}-->
    +                    <dd class="values" data-bind="html: full_viewUnsanitizedHtml"></dd>
    +                    <!-- /ko -->
                         <!-- /ko -->
                         <!-- ko ifnot: ($data.full_view)-->
    -                    <dd class="values" data-bind="html: value"></dd>
    +                    <!-- ko with: {valueUnsanitizedHtml: $data.value}-->
    +                    <dd class="values" data-bind="html: valueUnsanitizedHtml"></dd>
    +                    <!-- /ko -->
                         <!-- /ko -->
                     <!-- /ko -->
                 </dl>
    
  • app/code/Magento/Cms/composer.json+13 12 modified
    @@ -6,19 +6,19 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-email": "*",
    -        "magento/module-media-storage": "*",
    -        "magento/module-store": "*",
    -        "magento/module-theme": "*",
    -        "magento/module-ui": "*",
    -        "magento/module-variable": "*",
    -        "magento/module-widget": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-email": "101.0.*",
    +        "magento/module-media-storage": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-theme": "101.0.*",
    +        "magento/module-ui": "101.1.*",
    +        "magento/module-variable": "100.3.*",
    +        "magento/module-widget": "101.1.*"
         },
         "suggest": {
    -        "magento/module-cms-sample-data": "*"
    +        "magento/module-cms-sample-data": "Sample Data version: 100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -32,5 +32,6 @@
             "psr-4": {
                 "Magento\\Cms\\": ""
             }
    -    }
    +    },
    +    "version": "103.0.5-p2"
     }
    
  • app/code/Magento/Cms/Controller/Adminhtml/Wysiwyg/Images/DeleteFolder.php+29 26 modified
    @@ -4,73 +4,76 @@
      * Copyright © Magento, Inc. All rights reserved.
      * See COPYING.txt for license details.
      */
    +
    +declare(strict_types=1);
    +
     namespace Magento\Cms\Controller\Adminhtml\Wysiwyg\Images;
     
    +use Magento\Backend\App\Action\Context;
    +use Magento\Cms\Controller\Adminhtml\Wysiwyg\Images;
     use Magento\Framework\App\Action\HttpPostActionInterface;
    -use Magento\Framework\App\Filesystem\DirectoryList;
    +use Magento\Framework\App\Filesystem\DirectoryResolver;
    +use Magento\Framework\Controller\Result\Json;
    +use Magento\Framework\Controller\Result\JsonFactory;
    +use Magento\Framework\Controller\Result\RawFactory;
    +use Magento\Framework\Controller\ResultInterface;
    +use Magento\Framework\Registry;
     
     /**
      * Delete image folder.
      */
    -class DeleteFolder extends \Magento\Cms\Controller\Adminhtml\Wysiwyg\Images implements HttpPostActionInterface
    +class DeleteFolder extends Images implements HttpPostActionInterface
     {
         /**
    -     * @var \Magento\Framework\Controller\Result\JsonFactory
    +     * @var JsonFactory
          */
         protected $resultJsonFactory;
     
         /**
    -     * @var \Magento\Framework\Controller\Result\RawFactory
    +     * @var RawFactory
          */
         protected $resultRawFactory;
     
         /**
    -     * @var \Magento\Framework\App\Filesystem\DirectoryResolver
    +     * @var DirectoryResolver
          */
         private $directoryResolver;
     
         /**
    -     * @param \Magento\Backend\App\Action\Context $context
    -     * @param \Magento\Framework\Registry $coreRegistry
    -     * @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
    -     * @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
    -     * @param \Magento\Framework\App\Filesystem\DirectoryResolver|null $directoryResolver
    +     * @param Context $context
    +     * @param Registry $coreRegistry
    +     * @param JsonFactory $resultJsonFactory
    +     * @param RawFactory $resultRawFactory
    +     * @param DirectoryResolver|null $directoryResolver
          */
         public function __construct(
    -        \Magento\Backend\App\Action\Context $context,
    -        \Magento\Framework\Registry $coreRegistry,
    -        \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory,
    -        \Magento\Framework\Controller\Result\RawFactory $resultRawFactory,
    -        \Magento\Framework\App\Filesystem\DirectoryResolver $directoryResolver = null
    +        Context $context,
    +        Registry $coreRegistry,
    +        JsonFactory $resultJsonFactory,
    +        RawFactory $resultRawFactory,
    +        DirectoryResolver $directoryResolver = null
         ) {
             parent::__construct($context, $coreRegistry);
             $this->resultRawFactory = $resultRawFactory;
             $this->resultJsonFactory = $resultJsonFactory;
    -        $this->directoryResolver = $directoryResolver
    -            ?: $this->_objectManager->get(\Magento\Framework\App\Filesystem\DirectoryResolver::class);
    +        $this->directoryResolver = $directoryResolver ?? $this->_objectManager->get(DirectoryResolver::class);
         }
     
         /**
          * Delete folder action.
          *
    -     * @return \Magento\Framework\Controller\ResultInterface
    -     * @throws \Magento\Framework\Exception\LocalizedException
    +     * @return ResultInterface
          */
         public function execute()
         {
             try {
                 $path = $this->getStorage()->getCmsWysiwygImages()->getCurrentPath();
    -            if (!$this->directoryResolver->validatePath($path, DirectoryList::MEDIA)) {
    -                throw new \Magento\Framework\Exception\LocalizedException(
    -                    __('Directory %1 is not under storage root path.', $path)
    -                );
    -            }
                 $this->getStorage()->deleteDirectory($path);
    -            
    +
                 return $this->resultRawFactory->create();
             } catch (\Exception $e) {
                 $result = ['error' => true, 'message' => $e->getMessage()];
    -            /** @var \Magento\Framework\Controller\Result\Json $resultJson */
    +            /** @var Json $resultJson */
                 $resultJson = $this->resultJsonFactory->create();
     
                 return $resultJson->setData($result);
    
  • app/code/Magento/CmsGraphQl/composer.json+8 7 modified
    @@ -4,14 +4,14 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-cms": "*",
    -        "magento/module-widget": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-cms": "103.0.*",
    +        "magento/module-widget": "101.1.*"
         },
         "suggest": {
    -        "magento/module-graph-ql": "*",
    -        "magento/module-graph-ql-cache": "*",
    -        "magento/module-store-graph-ql": "*"
    +        "magento/module-graph-ql": "100.3.*",
    +        "magento/module-graph-ql-cache": "100.3.*",
    +        "magento/module-store-graph-ql": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -24,5 +24,6 @@
             "psr-4": {
                 "Magento\\CmsGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Cms/Model/Wysiwyg/Images/Storage.php+36 5 modified
    @@ -225,6 +225,8 @@ public function __construct(
          *
          * @param string $path
          * @return void
    +     * @throws \Magento\Framework\Exception\FileSystemException
    +     * @throws \Magento\Framework\Exception\ValidatorException
          */
         protected function createSubDirectories($path)
         {
    @@ -295,6 +297,7 @@ protected function removeItemFromCollection($collection, $conditions)
          *
          * @param string $path Parent directory path
          * @return \Magento\Framework\Data\Collection\Filesystem
    +     * @throws \Exception
          */
         public function getDirsCollection($path)
         {
    @@ -393,6 +396,7 @@ public function getFilesCollection($path, $type = null)
          *
          * @param string $path Path to the directory
          * @return \Magento\Cms\Model\Wysiwyg\Images\Storage\Collection
    +     * @throws \Exception
          */
         public function getCollection($path = null)
         {
    @@ -485,6 +489,9 @@ public function deleteDirectory($path)
          *
          * @param string $path
          * @return void
    +     * @throws \Magento\Framework\Exception\FileSystemException
    +     * @throws \Magento\Framework\Exception\LocalizedException
    +     * @throws \Magento\Framework\Exception\ValidatorException
          */
         protected function _deleteByPath($path)
         {
    @@ -500,6 +507,8 @@ protected function _deleteByPath($path)
          *
          * @param string $target File path to be deleted
          * @return $this
    +     * @throws \Magento\Framework\Exception\FileSystemException
    +     * @throws \Magento\Framework\Exception\ValidatorException
          */
         public function deleteFile($target)
         {
    @@ -561,9 +570,11 @@ public function uploadFile($targetPath, $type = null)
         /**
          * Thumbnail path getter
          *
    -     * @param  string $filePath original file path
    -     * @param  bool $checkFile OPTIONAL is it necessary to check file availability
    +     * @param string $filePath original file path
    +     * @param bool $checkFile OPTIONAL is it necessary to check file availability
          * @return string|false
    +     * @throws \Magento\Framework\Exception\FileSystemException
    +     * @throws \Magento\Framework\Exception\ValidatorException
          */
         public function getThumbnailPath($filePath, $checkFile = false)
         {
    @@ -587,9 +598,11 @@ public function getThumbnailPath($filePath, $checkFile = false)
         /**
          * Thumbnail URL getter
          *
    -     * @param  string $filePath original file path
    -     * @param  bool $checkFile OPTIONAL is it necessary to check file availability
    +     * @param string $filePath original file path
    +     * @param bool $checkFile OPTIONAL is it necessary to check file availability
          * @return string|false
    +     * @throws \Magento\Framework\Exception\FileSystemException
    +     * @throws \Magento\Framework\Exception\ValidatorException
          */
         public function getThumbnailUrl($filePath, $checkFile = false)
         {
    @@ -610,6 +623,8 @@ public function getThumbnailUrl($filePath, $checkFile = false)
          * @param string $source Image path to be resized
          * @param bool $keepRatio Keep aspect ratio or not
          * @return bool|string Resized filepath or false if errors were occurred
    +     * @throws \Magento\Framework\Exception\FileSystemException
    +     * @throws \Magento\Framework\Exception\ValidatorException
          */
         public function resizeFile($source, $keepRatio = true)
         {
    @@ -643,6 +658,9 @@ public function resizeFile($source, $keepRatio = true)
          *
          * @param string $filename File basename
          * @return bool|string Thumbnail path or false for errors
    +     * @throws \Magento\Framework\Exception\FileSystemException
    +     * @throws \Magento\Framework\Exception\LocalizedException
    +     * @throws \Magento\Framework\Exception\ValidatorException
          */
         public function resizeOnTheFly($filename)
         {
    @@ -658,6 +676,8 @@ public function resizeOnTheFly($filename)
          *
          * @param bool|string $filePath Path to the file
          * @return string
    +     * @throws \Magento\Framework\Exception\FileSystemException
    +     * @throws \Magento\Framework\Exception\ValidatorException
          */
         public function getThumbsPath($filePath = false)
         {
    @@ -782,17 +802,28 @@ protected function _validatePath($path)
          *
          * @param string $path
          * @return string
    +     * @throws \Magento\Framework\Exception\ValidatorException
          */
         protected function _sanitizePath($path)
         {
    -        return rtrim(preg_replace('~[/\\\]+~', '/', $this->_directory->getDriver()->getRealPathSafety($path)), '/');
    +        return rtrim(
    +            preg_replace(
    +                '~[/\\\]+~',
    +                '/',
    +                $this->_directory->getDriver()->getRealPathSafety(
    +                    $this->_directory->getAbsolutePath($path)
    +                )
    +            ),
    +            '/'
    +        );
         }
     
         /**
          * Get path in root storage dir
          *
          * @param string $path
          * @return string|bool
    +     * @throws \Magento\Framework\Exception\ValidatorException
          */
         protected function _getRelativePathToRoot($path)
         {
    
  • app/code/Magento/Cms/Test/Mftf/ActionGroup/AdminDisableWYSIWYGActionGroup.xml+18 0 added
    @@ -0,0 +1,18 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<!--
    + /**
    +  * Copyright © Magento, Inc. All rights reserved.
    +  * See COPYING.txt for license details.
    +  */
    +-->
    +
    +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +              xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
    +    <actionGroup name="AdminDisableWYSIWYGActionGroup">
    +        <annotations>
    +            <description>Runs bin/magento command to disable WYSIWYG</description>
    +        </annotations>
    +
    +        <magentoCLI stepKey="disableWYSIWYG" command="config:set cms/wysiwyg/enabled disabled"/>
    +    </actionGroup>
    +</actionGroups>
    
  • app/code/Magento/Cms/Test/Mftf/ActionGroup/AdminEnableWYSIWYGActionGroup.xml+18 0 added
    @@ -0,0 +1,18 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<!--
    + /**
    +  * Copyright © Magento, Inc. All rights reserved.
    +  * See COPYING.txt for license details.
    +  */
    +-->
    +
    +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +              xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
    +    <actionGroup name="AdminEnableWYSIWYGActionGroup">
    +        <annotations>
    +            <description>Runs bin/magento command to enable WYSIWYG</description>
    +        </annotations>
    +
    +        <magentoCLI stepKey="enableWYSIWYG" command="config:set cms/wysiwyg/enabled enabled"/>
    +    </actionGroup>
    +</actionGroups>
    
  • app/code/Magento/Cms/Test/Mftf/Suite/WYSIWYGDisabledSuite.xml+4 4 renamed
    @@ -5,10 +5,10 @@
       * See COPYING.txt for license details.
       */
     -->
    -<suites xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../vendor/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework/Suite/etc/suiteSchema.xsd">
    +<suites xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:mftf:Suite/etc/suiteSchema.xsd">
         <suite name="WYSIWYGDisabledSuite">
             <before>
    -            <magentoCLI stepKey="disableWYSYWYG" command="config:set cms/wysiwyg/enabled disabled" />
    +            <actionGroup ref="AdminDisableWYSIWYGActionGroup" stepKey="disableWYSYWYG" />
             </before>
             <include>
                 <group name="WYSIWYGDisabled"/>
    @@ -17,7 +17,7 @@
                 <group name="skip"/>
             </exclude>
             <after>
    -            <magentoCLI stepKey="disableWYSYWYG" command="config:set cms/wysiwyg/enabled enabled" />
    +            <actionGroup ref="AdminEnableWYSIWYGActionGroup" stepKey="disableWYSYWYG" />
             </after>
         </suite>
    -</suites>
    \ No newline at end of file
    +</suites>
    
  • app/code/Magento/Cms/Test/Unit/Model/Wysiwyg/Images/StorageTest.php+3 1 modified
    @@ -138,7 +138,7 @@ protected function setUp()
     
             $this->directoryMock = $this->createPartialMock(
                 \Magento\Framework\Filesystem\Directory\Write::class,
    -            ['delete', 'getDriver', 'create', 'getRelativePath', 'isExist', 'isFile']
    +            ['delete', 'getDriver', 'create', 'getRelativePath', 'getAbsolutePath', 'isExist', 'isFile']
             );
             $this->directoryMock->expects(
                 $this->any()
    @@ -282,6 +282,7 @@ public function testGetResizeHeight()
         public function testDeleteDirectoryOverRoot()
         {
             $this->driverMock->expects($this->atLeastOnce())->method('getRealPathSafety')->will($this->returnArgument(0));
    +        $this->directoryMock->expects($this->atLeastOnce())->method('getAbsolutePath')->will($this->returnArgument(0));
             $this->imagesStorage->deleteDirectory(self::INVALID_DIRECTORY_OVER_ROOT);
         }
     
    @@ -293,6 +294,7 @@ public function testDeleteDirectoryOverRoot()
         public function testDeleteRootDirectory()
         {
             $this->driverMock->expects($this->atLeastOnce())->method('getRealPathSafety')->will($this->returnArgument(0));
    +        $this->directoryMock->expects($this->atLeastOnce())->method('getAbsolutePath')->will($this->returnArgument(0));
             $this->imagesStorage->deleteDirectory(self::STORAGE_ROOT_DIR);
         }
     
    
  • app/code/Magento/CmsUrlRewrite/composer.json+6 5 modified
    @@ -6,10 +6,10 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-cms": "*",
    -        "magento/module-store": "*",
    -        "magento/module-url-rewrite": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-cms": "103.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-url-rewrite": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -23,5 +23,6 @@
             "psr-4": {
                 "Magento\\CmsUrlRewrite\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/CmsUrlRewriteGraphQl/composer.json+8 7 modified
    @@ -4,14 +4,14 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-cms": "*",
    -        "magento/module-store": "*",
    -        "magento/module-url-rewrite-graph-ql": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-cms": "103.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-url-rewrite-graph-ql": "100.3.*"
         },
         "suggest": {
    -        "magento/module-cms-url-rewrite": "*",
    -        "magento/module-catalog-graph-ql": "*"
    +        "magento/module-cms-url-rewrite": "100.3.*",
    +        "magento/module-catalog-graph-ql": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -24,5 +24,6 @@
             "psr-4": {
                 "Magento\\CmsUrlRewriteGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Config/composer.json+10 9 modified
    @@ -6,14 +6,14 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-cron": "*",
    -        "magento/module-deploy": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-email": "*",
    -        "magento/module-media-storage": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-cron": "100.3.*",
    +        "magento/module-deploy": "100.3.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-email": "101.0.*",
    +        "magento/module-media-storage": "100.3.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -27,5 +27,6 @@
             "psr-4": {
                 "Magento\\Config\\": ""
             }
    -    }
    +    },
    +    "version": "101.1.5"
     }
    
  • app/code/Magento/ConfigurableImportExport/composer.json+9 8 modified
    @@ -6,13 +6,13 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-import-export": "*",
    -        "magento/module-configurable-product": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-import-export": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-import-export": "101.0.*",
    +        "magento/module-configurable-product": "100.3.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-import-export": "100.3.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -26,5 +26,6 @@
             "psr-4": {
                 "Magento\\ConfigurableImportExport\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/ConfigurableProduct/composer.json+21 20 modified
    @@ -6,27 +6,27 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-media-storage": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-store": "*",
    -        "magento/module-ui": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-media-storage": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-ui": "101.1.*"
         },
         "suggest": {
    -        "magento/module-msrp": "*",
    -        "magento/module-webapi": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-sales-rule": "*",
    -        "magento/module-product-video": "*",
    -        "magento/module-configurable-sample-data": "*",
    -        "magento/module-product-links-sample-data": "*",
    -        "magento/module-tax": "*"
    +        "magento/module-msrp": "100.3.*",
    +        "magento/module-webapi": "100.3.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-sales-rule": "101.1.*",
    +        "magento/module-product-video": "100.3.*",
    +        "magento/module-configurable-sample-data": "Sample Data version: 100.3.*",
    +        "magento/module-product-links-sample-data": "Sample Data version: 100.3.*",
    +        "magento/module-tax": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -40,5 +40,6 @@
             "psr-4": {
                 "Magento\\ConfigurableProduct\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5-p2"
     }
    
  • app/code/Magento/ConfigurableProductGraphQl/composer.json+8 7 modified
    @@ -4,12 +4,12 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/module-catalog": "*",
    -        "magento/module-configurable-product": "*",
    -        "magento/module-catalog-graph-ql": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-quote-graph-ql": "*",
    -        "magento/framework": "*"
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-configurable-product": "100.3.*",
    +        "magento/module-catalog-graph-ql": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-quote-graph-ql": "100.3.*",
    +        "magento/framework": "102.0.*"
         },
         "license": [
             "OSL-3.0",
    @@ -22,5 +22,6 @@
             "psr-4": {
                 "Magento\\ConfigurableProductGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/ConfigurableProductSales/composer.json+7 6 modified
    @@ -6,13 +6,13 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-store": "101.0.*"
         },
         "suggest": {
    -        "magento/module-configurable-product": "*"
    +        "magento/module-configurable-product": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -26,5 +26,6 @@
             "psr-4": {
                 "Magento\\ConfigurableProductSales\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/ConfigurableProduct/Test/Mftf/Test/AdminConfigurableProductUpdateTest.xml+6 4 modified
    @@ -66,10 +66,12 @@
             <waitForElementVisible selector="{{AdminProductMessagesSection.successMessage}}" time="60" stepKey="waitForSuccessMessage"/>
             <see selector="{{AdminProductMessagesSection.successMessage}}" userInput="Message is added to queue" stepKey="seeAttributeUpdateSuccessMsg"/>
     
    -        <!-- Run cron twice -->
    -        <magentoCLI command="cron:run" arguments="--group=consumers" stepKey="runCron1"/>
    -        <magentoCLI command="cron:run" arguments="--group=consumers" stepKey="runCron2"/>
    -        <magentoCLI command="indexer:reindex" stepKey="reindex"/>
    +        <comment userInput="Apply changes" stepKey="runCron1"/>
    +        <comment userInput="Run consumer to apply changes" stepKey="runCron2"/>
    +       	 <actionGroup ref="CliConsumerStartActionGroup" stepKey="reindex">
    +        	     <argument name="consumerName" value="{{AdminProductAttributeUpdateMessageConsumerData.consumerName}}"/>
    +        	    <argument name="maxMessages" value="{{AdminProductAttributeUpdateMessageConsumerData.messageLimit}}"/>
    +        </actionGroup>
     
             <!-- Check storefront for description -->
             <amOnPage url="{{StorefrontProductPage.url($$createProduct1.custom_attributes[url_key]$$)}}" stepKey="goToFirstProductPageOnStorefront"/>
    
  • app/code/Magento/Contact/composer.json+7 6 modified
    @@ -6,11 +6,11 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-cms": "*",
    -        "magento/module-config": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-cms": "103.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -24,5 +24,6 @@
             "psr-4": {
                 "Magento\\Contact\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Cookie/composer.json+5 4 modified
    @@ -6,11 +6,11 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-store": "101.0.*"
         },
         "suggest": {
    -        "magento/module-backend": "*"
    +        "magento/module-backend": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -24,5 +24,6 @@
             "psr-4": {
                 "Magento\\Cookie\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Cron/composer.json+5 4 modified
    @@ -6,11 +6,11 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-store": "101.0.*"
         },
         "suggest": {
    -        "magento/module-config": "*"
    +        "magento/module-config": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -24,5 +24,6 @@
             "psr-4": {
                 "Magento\\Cron\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Csp/composer.json+4 3 modified
    @@ -6,8 +6,8 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -21,5 +21,6 @@
             "psr-4": {
                 "Magento\\Csp\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.0"
     }
    
  • app/code/Magento/CurrencySymbol/composer.json+8 7 modified
    @@ -6,12 +6,12 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-config": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-page-cache": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-page-cache": "100.3.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -25,5 +25,6 @@
             "psr-4": {
                 "Magento\\CurrencySymbol\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/CustomerAnalytics/composer.json+5 4 modified
    @@ -3,9 +3,9 @@
         "description": "N/A",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-analytics": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-analytics": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -19,5 +19,6 @@
             "psr-4": {
                 "Magento\\CustomerAnalytics\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Customer/composer.json+24 23 modified
    @@ -6,30 +6,30 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-authorization": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-config": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-integration": "*",
    -        "magento/module-media-storage": "*",
    -        "magento/module-newsletter": "*",
    -        "magento/module-page-cache": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-review": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-store": "*",
    -        "magento/module-tax": "*",
    -        "magento/module-theme": "*",
    -        "magento/module-ui": "*",
    -        "magento/module-wishlist": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-authorization": "100.3.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-integration": "100.3.*",
    +        "magento/module-media-storage": "100.3.*",
    +        "magento/module-newsletter": "100.3.*",
    +        "magento/module-page-cache": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-review": "100.3.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-tax": "100.3.*",
    +        "magento/module-theme": "101.0.*",
    +        "magento/module-ui": "101.1.*",
    +        "magento/module-wishlist": "101.1.*"
         },
         "suggest": {
    -        "magento/module-cookie": "*",
    -        "magento/module-customer-sample-data": "*"
    +        "magento/module-cookie": "100.3.*",
    +        "magento/module-customer-sample-data": "Sample Data version: 100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -43,5 +43,6 @@
             "psr-4": {
                 "Magento\\Customer\\": ""
             }
    -    }
    +    },
    +    "version": "102.0.5-p2"
     }
    
  • app/code/Magento/CustomerDownloadableGraphQl/composer.json+6 5 modified
    @@ -4,12 +4,12 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/module-downloadable-graph-ql": "*",
    -        "magento/module-graph-ql": "*",
    -        "magento/framework": "*"
    +        "magento/module-downloadable-graph-ql": "100.3.*",
    +        "magento/module-graph-ql": "100.3.*",
    +        "magento/framework": "102.0.*"
         },
         "suggest": {
    -        "magento/module-catalog-graph-ql": "*"
    +        "magento/module-catalog-graph-ql": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -22,5 +22,6 @@
             "psr-4": {
                 "Magento\\CustomerDownloadableGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.0"
     }
    
  • app/code/Magento/CustomerGraphQl/composer.json+27 26 modified
    @@ -1,29 +1,30 @@
     {
    -  "name": "magento/module-customer-graph-ql",
    -  "description": "N/A",
    -  "type": "magento2-module",
    -  "require": {
    -    "php": "~7.1.3||~7.2.0||~7.3.0",
    -    "magento/module-authorization": "*",
    -    "magento/module-customer": "*",
    -    "magento/module-eav": "*",
    -    "magento/module-graph-ql": "*",
    -    "magento/module-newsletter": "*",
    -    "magento/module-integration": "*",
    -    "magento/module-store": "*",
    -    "magento/framework": "*",
    -    "magento/module-directory": "*"
    -  },
    -  "license": [
    -    "OSL-3.0",
    -    "AFL-3.0"
    -  ],
    -  "autoload": {
    -    "files": [
    -      "registration.php"
    +    "name": "magento/module-customer-graph-ql",
    +    "description": "N/A",
    +    "type": "magento2-module",
    +    "require": {
    +        "php": "~7.1.3||~7.2.0||~7.3.0",
    +        "magento/module-authorization": "100.3.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-graph-ql": "100.3.*",
    +        "magento/module-newsletter": "100.3.*",
    +        "magento/module-integration": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/framework": "102.0.*",
    +        "magento/module-directory": "100.3.*"
    +    },
    +    "license": [
    +        "OSL-3.0",
    +        "AFL-3.0"
         ],
    -    "psr-4": {
    -      "Magento\\CustomerGraphQl\\": ""
    -    }
    -  }
    +    "autoload": {
    +        "files": [
    +            "registration.php"
    +        ],
    +        "psr-4": {
    +            "Magento\\CustomerGraphQl\\": ""
    +        }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/CustomerImportExport/composer.json+9 8 modified
    @@ -6,13 +6,13 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-import-export": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-import-export": "100.3.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -26,5 +26,6 @@
             "psr-4": {
                 "Magento\\CustomerImportExport\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Customer/Model/Metadata/Form/Image.php+88 27 modified
    @@ -3,17 +3,33 @@
      * Copyright © Magento, Inc. All rights reserved.
      * See COPYING.txt for license details.
      */
    +
    +declare(strict_types=1);
    +
     namespace Magento\Customer\Model\Metadata\Form;
     
     use Magento\Customer\Api\AddressMetadataInterface;
     use Magento\Customer\Api\CustomerMetadataInterface;
    +use Magento\Customer\Api\Data\AttributeMetadataInterface;
     use Magento\Customer\Model\FileProcessor;
    +use Magento\Customer\Model\FileProcessorFactory;
     use Magento\Framework\Api\ArrayObjectSearch;
     use Magento\Framework\Api\Data\ImageContentInterface;
     use Magento\Framework\Api\Data\ImageContentInterfaceFactory;
     use Magento\Framework\App\ObjectManager;
    +use Magento\Framework\Exception\FileSystemException;
    +use Magento\Framework\Exception\LocalizedException;
     use Magento\Framework\File\UploaderFactory;
     use Magento\Framework\Filesystem;
    +use Magento\Framework\Filesystem\Directory\WriteInterface;
    +use Magento\Framework\Filesystem\Io\File as IoFileSystem;
    +use Magento\Framework\App\Filesystem\DirectoryList;
    +use Magento\Framework\Filesystem\Directory\WriteFactory;
    +use Magento\Framework\Locale\ResolverInterface;
    +use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
    +use Magento\Framework\Url\EncoderInterface;
    +use Magento\MediaStorage\Model\File\Validator\NotProtectedExtension;
    +use Psr\Log\LoggerInterface;
     
     /**
      * Metadata for form image field
    @@ -27,38 +43,55 @@ class Image extends File
          */
         private $imageContentFactory;
     
    +    /**
    +     * @var IoFileSystem
    +     */
    +    private $ioFileSystem;
    +
    +    /**
    +     * @var WriteInterface
    +     */
    +    private $mediaEntityTmpDirectory;
    +
         /**
          * Constructor
          *
    -     * @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate
    -     * @param \Psr\Log\LoggerInterface $logger
    -     * @param \Magento\Customer\Api\Data\AttributeMetadataInterface $attribute
    -     * @param \Magento\Framework\Locale\ResolverInterface $localeResolver
    +     * @param TimezoneInterface $localeDate
    +     * @param LoggerInterface $logger
    +     * @param AttributeMetadataInterface $attribute
    +     * @param ResolverInterface $localeResolver
          * @param null|string $value
          * @param string $entityTypeCode
          * @param bool $isAjax
    -     * @param \Magento\Framework\Url\EncoderInterface $urlEncoder
    -     * @param \Magento\MediaStorage\Model\File\Validator\NotProtectedExtension $fileValidator
    +     * @param EncoderInterface $urlEncoder
    +     * @param NotProtectedExtension $fileValidator
          * @param Filesystem $fileSystem
          * @param UploaderFactory $uploaderFactory
    -     * @param \Magento\Customer\Model\FileProcessorFactory|null $fileProcessorFactory
    -     * @param \Magento\Framework\Api\Data\ImageContentInterfaceFactory|null $imageContentInterfaceFactory
    +     * @param FileProcessorFactory|null $fileProcessorFactory
    +     * @param ImageContentInterfaceFactory|null $imageContentInterfaceFactory
    +     * @param IoFileSystem|null $ioFileSystem
    +     * @param DirectoryList|null $directoryList
    +     * @param WriteFactory|null $writeFactory
          * @SuppressWarnings(PHPMD.ExcessiveParameterList)
    +     * @throws FileSystemException
          */
         public function __construct(
    -        \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
    -        \Psr\Log\LoggerInterface $logger,
    -        \Magento\Customer\Api\Data\AttributeMetadataInterface $attribute,
    -        \Magento\Framework\Locale\ResolverInterface $localeResolver,
    +        TimezoneInterface $localeDate,
    +        LoggerInterface $logger,
    +        AttributeMetadataInterface $attribute,
    +        ResolverInterface $localeResolver,
             $value,
             $entityTypeCode,
             $isAjax,
    -        \Magento\Framework\Url\EncoderInterface $urlEncoder,
    -        \Magento\MediaStorage\Model\File\Validator\NotProtectedExtension $fileValidator,
    +        EncoderInterface $urlEncoder,
    +        NotProtectedExtension $fileValidator,
             Filesystem $fileSystem,
             UploaderFactory $uploaderFactory,
    -        \Magento\Customer\Model\FileProcessorFactory $fileProcessorFactory = null,
    -        \Magento\Framework\Api\Data\ImageContentInterfaceFactory $imageContentInterfaceFactory = null
    +        FileProcessorFactory $fileProcessorFactory = null,
    +        ImageContentInterfaceFactory $imageContentInterfaceFactory = null,
    +        IoFileSystem $ioFileSystem = null,
    +        ?DirectoryList $directoryList = null,
    +        ?WriteFactory $writeFactory = null
         ) {
             parent::__construct(
                 $localeDate,
    @@ -75,7 +108,16 @@ public function __construct(
                 $fileProcessorFactory
             );
             $this->imageContentFactory = $imageContentInterfaceFactory ?: ObjectManager::getInstance()
    -            ->get(\Magento\Framework\Api\Data\ImageContentInterfaceFactory::class);
    +            ->get(ImageContentInterfaceFactory::class);
    +        $this->ioFileSystem = $ioFileSystem ?: ObjectManager::getInstance()
    +            ->get(IoFileSystem::class);
    +        $writeFactory = $writeFactory ?? ObjectManager::getInstance()->get(WriteFactory::class);
    +        $directoryList = $directoryList ?? ObjectManager::getInstance()->get(DirectoryList::class);
    +        $this->mediaEntityTmpDirectory = $writeFactory->create(
    +            $directoryList->getPath($directoryList::MEDIA)
    +            . '/' . $this->_entityTypeCode
    +            . '/' . FileProcessor::TMP_DIR
    +        );
         }
     
         /**
    @@ -85,6 +127,7 @@ public function __construct(
          *
          * @param array $value
          * @return string[]
    +     * @throws LocalizedException
          * @SuppressWarnings(PHPMD.CyclomaticComplexity)
          * @SuppressWarnings(PHPMD.NPathComplexity)
          */
    @@ -93,7 +136,11 @@ protected function _validateByRules($value)
             $label = $value['name'];
             $rules = $this->getAttribute()->getValidationRules();
     
    -        $imageProp = @getimagesize($value['tmp_name']);
    +        try {
    +            $imageProp = getimagesize($value['tmp_name']);
    +        } catch (\Throwable $e) {
    +            $imageProp = false;
    +        }
     
             if (!$this->_isUploadedFile($value['tmp_name']) || !$imageProp) {
                 return [__('"%1" is not a valid file.', $label)];
    @@ -106,9 +153,11 @@ protected function _validateByRules($value)
             }
     
             // modify image name
    -        $extension = pathinfo($value['name'], PATHINFO_EXTENSION);
    +        $extension = $this->ioFileSystem->getPathInfo($value['name'])['extension'];
             if ($extension != $allowImageTypes[$imageProp[2]]) {
    -            $value['name'] = pathinfo($value['name'], PATHINFO_FILENAME) . '.' . $allowImageTypes[$imageProp[2]];
    +            $value['name'] = $this->ioFileSystem->getPathInfo($value['name'])['filename']
    +                . '.'
    +                . $allowImageTypes[$imageProp[2]];
             }
     
             $maxFileSize = ArrayObjectSearch::getArrayElementByName(
    @@ -153,6 +202,7 @@ protected function _validateByRules($value)
          *
          * @param array $value
          * @return bool|int|ImageContentInterface|string
    +     * @throws LocalizedException
          */
         protected function processUiComponentValue(array $value)
         {
    @@ -174,32 +224,43 @@ protected function processUiComponentValue(array $value)
          *
          * @param array $value
          * @return string
    +     * @throws LocalizedException
          */
         protected function processCustomerAddressValue(array $value)
         {
    -        $result = $this->getFileProcessor()->moveTemporaryFile($value['file']);
    -        return $result;
    +        $fileName = $this->mediaEntityTmpDirectory
    +            ->getDriver()
    +            ->getRealPathSafety(
    +                $this->mediaEntityTmpDirectory->getAbsolutePath(
    +                    ltrim(
    +                        $value['file'],
    +                        '/'
    +                    )
    +                )
    +            );
    +        return $this->getFileProcessor()->moveTemporaryFile(
    +            $this->mediaEntityTmpDirectory->getRelativePath($fileName)
    +        );
         }
     
         /**
          * Process file uploader UI component data for customer entity
          *
          * @param array $value
          * @return bool|int|ImageContentInterface|string
    +     * @throws LocalizedException
          */
         protected function processCustomerValue(array $value)
         {
    -        $temporaryFile = FileProcessor::TMP_DIR . '/' . ltrim($value['file'], '/');
    -
    -        if ($this->getFileProcessor()->isExist($temporaryFile)) {
    +        $file = ltrim($value['file'], '/');
    +        if ($this->mediaEntityTmpDirectory->isExist($file)) {
    +            $temporaryFile = FileProcessor::TMP_DIR . '/' . $file;
                 $base64EncodedData = $this->getFileProcessor()->getBase64EncodedData($temporaryFile);
    -
                 /** @var ImageContentInterface $imageContentDataObject */
                 $imageContentDataObject = $this->imageContentFactory->create()
                     ->setName($value['name'])
                     ->setBase64EncodedData($base64EncodedData)
                     ->setType($value['type']);
    -
                 // Remove temporary file
                 $this->getFileProcessor()->removeUploadedFile($temporaryFile);
     
    
  • app/code/Magento/Customer/Test/Unit/Model/Metadata/Form/ImageTest.php+146 26 modified
    @@ -3,101 +3,173 @@
      * Copyright © Magento, Inc. All rights reserved.
      * See COPYING.txt for license details.
      */
    +
    +declare(strict_types=1);
    +
     namespace Magento\Customer\Test\Unit\Model\Metadata\Form;
     
     use Magento\Customer\Api\AddressMetadataInterface;
     use Magento\Customer\Api\CustomerMetadataInterface;
     use Magento\Customer\Model\FileProcessor;
    -use Magento\MediaStorage\Model\File\Validator\NotProtectedExtension;
    +use Magento\Customer\Model\FileProcessorFactory;
    +use Magento\Customer\Model\Metadata\Form\Image;
     use Magento\Framework\Api\Data\ImageContentInterfaceFactory;
    +use Magento\Framework\App\Filesystem\DirectoryList;
    +use Magento\Framework\App\Request\Http;
    +use Magento\Framework\Exception\FileSystemException;
    +use Magento\Framework\Exception\LocalizedException;
    +use Magento\Framework\File\UploaderFactory;
    +use Magento\Framework\Filesystem;
    +use Magento\Framework\Filesystem\Directory\WriteFactory;
    +use Magento\Framework\Filesystem\Directory\Write;
    +use Magento\Framework\Filesystem\Driver\File as Driver;
    +use Magento\Framework\Filesystem\Io\File;
    +use Magento\Framework\Url\EncoderInterface;
    +use Magento\MediaStorage\Model\File\Validator\NotProtectedExtension;
    +use PHPUnit_Framework_MockObject_MockObject;
     
     /**
    + * Tests Metadata/Form/Image class
    + *
      * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
      */
     class ImageTest extends AbstractFormTestCase
     {
         /**
    -     * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\Url\EncoderInterface
    +     * @var PHPUnit_Framework_MockObject_MockObject|EncoderInterface
          */
         private $urlEncode;
     
         /**
    -     * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\MediaStorage\Model\File\Validator\NotProtectedExtension
    +     * @var PHPUnit_Framework_MockObject_MockObject|NotProtectedExtension
          */
         private $fileValidatorMock;
     
         /**
    -     * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\Filesystem
    +     * @var PHPUnit_Framework_MockObject_MockObject|Filesystem
          */
         private $fileSystemMock;
     
         /**
    -     * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\App\Request\Http
    +     * @var PHPUnit_Framework_MockObject_MockObject|Http
          */
         private $requestMock;
     
         /**
    -     * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\File\UploaderFactory
    +     * @var PHPUnit_Framework_MockObject_MockObject|UploaderFactory
          */
         private $uploaderFactoryMock;
     
         /**
    -     * @var FileProcessor|\PHPUnit_Framework_MockObject_MockObject
    +     * @var FileProcessor|PHPUnit_Framework_MockObject_MockObject
          */
         private $fileProcessorMock;
     
         /**
    -     * @var \Magento\Framework\Api\Data\ImageContentInterfaceFactory|\PHPUnit_Framework_MockObject_MockObject
    +     * @var ImageContentInterfaceFactory|PHPUnit_Framework_MockObject_MockObject
          */
         private $imageContentFactory;
     
         /**
    -     * @var \Magento\Customer\Model\FileProcessorFactory|\PHPUnit_Framework_MockObject_MockObject
    +     * @var FileProcessorFactory|PHPUnit_Framework_MockObject_MockObject
          */
         private $fileProcessorFactoryMock;
     
    +    /**
    +     * @var File|PHPUnit_Framework_MockObject_MockObject
    +     */
    +    private $ioFileSystemMock;
    +
    +    /**
    +     * @var DirectoryList|PHPUnit_Framework_MockObject_MockObject
    +     */
    +    private $directoryListMock;
    +
    +    /**
    +     * @var WriteFactory|PHPUnit_Framework_MockObject_MockObject
    +     */
    +    private $writeFactoryMock;
    +
    +    /**
    +     * @var Write|PHPUnit_Framework_MockObject_MockObject
    +     */
    +    private $mediaEntityTmpDirectoryMock;
    +
    +    /**
    +     * @var Driver|PHPUnit_Framework_MockObject_MockObject
    +     */
    +    private $driverMock;
    +
    +    /**
    +     * @inheritdoc
    +     */
         protected function setUp()
         {
             parent::setUp();
     
    -        $this->urlEncode = $this->getMockBuilder(\Magento\Framework\Url\EncoderInterface::class)
    +        $this->urlEncode = $this->getMockBuilder(EncoderInterface::class)
                 ->disableOriginalConstructor()
                 ->getMock();
             $this->fileValidatorMock = $this->getMockBuilder(NotProtectedExtension::class)
                 ->disableOriginalConstructor()
                 ->getMock();
    -        $this->fileSystemMock = $this->getMockBuilder(\Magento\Framework\Filesystem::class)
    +        $this->fileSystemMock = $this->getMockBuilder(Filesystem::class)
                 ->disableOriginalConstructor()
                 ->getMock();
    -        $this->requestMock = $this->getMockBuilder(\Magento\Framework\App\Request\Http::class)
    +        $this->requestMock = $this->getMockBuilder(Http::class)
                 ->disableOriginalConstructor()
                 ->getMock();
    -        $this->uploaderFactoryMock = $this->getMockBuilder(\Magento\Framework\File\UploaderFactory::class)
    +        $this->uploaderFactoryMock = $this->getMockBuilder(UploaderFactory::class)
                 ->disableOriginalConstructor()
                 ->getMock();
    -        $this->fileProcessorMock = $this->getMockBuilder(\Magento\Customer\Model\FileProcessor::class)
    +        $this->fileProcessorMock = $this->getMockBuilder(FileProcessor::class)
                 ->disableOriginalConstructor()
                 ->getMock();
             $this->imageContentFactory = $this->getMockBuilder(ImageContentInterfaceFactory::class)
                 ->disableOriginalConstructor()
                 ->setMethods(['create'])
                 ->getMock();
    -        $this->fileProcessorFactoryMock = $this->getMockBuilder(\Magento\Customer\Model\FileProcessorFactory::class)
    +        $this->fileProcessorFactoryMock = $this->getMockBuilder(FileProcessorFactory::class)
                 ->setMethods(['create'])
                 ->disableOriginalConstructor()
                 ->getMock();
             $this->fileProcessorFactoryMock->expects($this->any())
                 ->method('create')
                 ->willReturn($this->fileProcessorMock);
    +        $this->ioFileSystemMock = $this->getMockBuilder(File::class)
    +            ->disableOriginalConstructor()
    +            ->getMock();
    +        $this->directoryListMock = $this->getMockBuilder(DirectoryList::class)
    +            ->disableOriginalConstructor()
    +            ->getMock();
    +        $this->writeFactoryMock = $this->getMockBuilder(WriteFactory::class)
    +            ->setMethods(['create'])
    +            ->disableOriginalConstructor()
    +            ->getMock();
    +        $this->mediaEntityTmpDirectoryMock = $this->getMockBuilder(Write::class)
    +            ->disableOriginalConstructor()
    +            ->getMock();
    +        $this->driverMock = $this->getMockBuilder(Driver::class)
    +            ->disableOriginalConstructor()
    +            ->getMock();
    +        $this->writeFactoryMock->expects($this->any())
    +            ->method('create')
    +            ->willReturn($this->mediaEntityTmpDirectoryMock);
    +        $this->mediaEntityTmpDirectoryMock->expects($this->any())
    +            ->method('getDriver')
    +            ->willReturn($this->driverMock);
         }
     
         /**
    +     * Initializes an image instance
    +     *
          * @param array $data
    -     * @return \Magento\Customer\Model\Metadata\Form\File
    +     * @return Image
    +     * @throws FileSystemException
          */
    -    private function initialize(array $data)
    +    private function initialize(array $data): Image
         {
    -        return new \Magento\Customer\Model\Metadata\Form\Image(
    +        return new Image(
                 $this->localeMock,
                 $this->loggerMock,
                 $this->attributeMetadataMock,
    @@ -110,10 +182,17 @@ private function initialize(array $data)
                 $this->fileSystemMock,
                 $this->uploaderFactoryMock,
                 $this->fileProcessorFactoryMock,
    -            $this->imageContentFactory
    +            $this->imageContentFactory,
    +            $this->ioFileSystemMock,
    +            $this->directoryListMock,
    +            $this->writeFactoryMock
             );
         }
     
    +    /**
    +     * Test for validateValue method for not valid file
    +     * @throws LocalizedException
    +     */
         public function testValidateIsNotValidFile()
         {
             $value = [
    @@ -139,6 +218,10 @@ public function testValidateIsNotValidFile()
             $this->assertEquals(['"realFileName" is not a valid file.'], $model->validateValue($value));
         }
     
    +    /**
    +     * Test for validateValue method
    +     * @throws LocalizedException
    +     */
         public function testValidate()
         {
             $value = [
    @@ -164,6 +247,10 @@ public function testValidate()
             $this->assertTrue($model->validateValue($value));
         }
     
    +    /**
    +     * Test for validateValue method for max file size
    +     * @throws LocalizedException
    +     */
         public function testValidateMaxFileSize()
         {
             $value = [
    @@ -205,6 +292,10 @@ public function testValidateMaxFileSize()
             $this->assertEquals(['"logo.gif" exceeds the allowed file size.'], $model->validateValue($value));
         }
     
    +    /**
    +     * Test for validateValue method for max image width
    +     * @throws LocalizedException
    +     */
         public function testValidateMaxImageWidth()
         {
             $value = [
    @@ -245,6 +336,10 @@ public function testValidateMaxImageWidth()
             $this->assertEquals(['"logo.gif" width exceeds allowed value of 1 px.'], $model->validateValue($value));
         }
     
    +    /**
    +     * Test for validateValue method for max image height
    +     * @throws LocalizedException
    +     */
         public function testValidateMaxImageHeight()
         {
             $value = [
    @@ -285,6 +380,10 @@ public function testValidateMaxImageHeight()
             $this->assertEquals(['"logo.gif" height exceeds allowed value of 1 px.'], $model->validateValue($value));
         }
     
    +    /**
    +     * Test for compactValue method
    +     * @throws LocalizedException
    +     */
         public function testCompactValueNoChanges()
         {
             $originValue = 'filename.ext1';
    @@ -302,6 +401,10 @@ public function testCompactValueNoChanges()
             $this->assertEquals($originValue, $model->compactValue($value));
         }
     
    +    /**
    +     * Test for compactValue method for address image
    +     * @throws LocalizedException
    +     */
         public function testCompactValueUiComponentAddress()
         {
             $originValue = 'filename.ext1';
    @@ -310,20 +413,33 @@ public function testCompactValueUiComponentAddress()
                 'file' => 'filename.ext2',
             ];
     
    +        $this->driverMock->expects($this->once())
    +            ->method('getRealPathSafety')
    +            ->with($value['file'])
    +            ->willReturn($value['file']);
    +        $this->mediaEntityTmpDirectoryMock->expects($this->once())
    +            ->method('getAbsolutePath')
    +            ->willReturn($value['file']);
    +        $this->mediaEntityTmpDirectoryMock->expects($this->once())
    +            ->method('getRelativePath')
    +            ->willReturn($value['file']);
             $this->fileProcessorMock->expects($this->once())
                 ->method('moveTemporaryFile')
                 ->with($value['file'])
    -            ->willReturn(true);
    -
    +            ->willReturn($value['file']);
             $model = $this->initialize([
                 'value' => $originValue,
                 'isAjax' => false,
                 'entityTypeCode' => AddressMetadataInterface::ENTITY_TYPE_ADDRESS,
             ]);
     
    -        $this->assertTrue($model->compactValue($value));
    +        $this->assertEquals($value['file'], $model->compactValue($value));
         }
     
    +    /**
    +     * Test for compactValue method for image
    +     * @throws LocalizedException
    +     */
         public function testCompactValueUiComponentCustomer()
         {
             $originValue = 'filename.ext1';
    @@ -336,9 +452,9 @@ public function testCompactValueUiComponentCustomer()
     
             $base64EncodedData = 'encoded_data';
     
    -        $this->fileProcessorMock->expects($this->once())
    +        $this->mediaEntityTmpDirectoryMock->expects($this->once())
                 ->method('isExist')
    -            ->with(FileProcessor::TMP_DIR . '/' . $value['file'])
    +            ->with($value['file'])
                 ->willReturn(true);
             $this->fileProcessorMock->expects($this->once())
                 ->method('getBase64EncodedData')
    @@ -378,6 +494,10 @@ public function testCompactValueUiComponentCustomer()
             $this->assertEquals($imageContentMock, $model->compactValue($value));
         }
     
    +    /**
    +     * Test for compactValue method for non-existing customer
    +     * @throws LocalizedException
    +     */
         public function testCompactValueUiComponentCustomerNotExists()
         {
             $originValue = 'filename.ext1';
    @@ -388,9 +508,9 @@ public function testCompactValueUiComponentCustomerNotExists()
                 'type' => 'image',
             ];
     
    -        $this->fileProcessorMock->expects($this->once())
    +        $this->mediaEntityTmpDirectoryMock->expects($this->once())
                 ->method('isExist')
    -            ->with(FileProcessor::TMP_DIR . '/' . $value['file'])
    +            ->with($value['file'])
                 ->willReturn(false);
     
             $model = $this->initialize([
    
  • app/code/Magento/Deploy/composer.json+7 6 modified
    @@ -6,11 +6,11 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-config": "*",
    -        "magento/module-require-js": "*",
    -        "magento/module-store": "*",
    -        "magento/module-user": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-require-js": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-user": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -25,5 +25,6 @@
             "psr-4": {
                 "Magento\\Deploy\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Developer/composer.json+5 4 modified
    @@ -6,9 +6,9 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-config": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -22,5 +22,6 @@
             "psr-4": {
                 "Magento\\Developer\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Dhl/composer.json+13 12 modified
    @@ -7,19 +7,19 @@
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
             "lib-libxml": "*",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/module-config": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-shipping": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-shipping": "100.3.*",
    +        "magento/module-store": "101.0.*"
         },
         "suggest": {
    -        "magento/module-checkout": "*"
    +        "magento/module-checkout": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -33,5 +33,6 @@
             "psr-4": {
                 "Magento\\Dhl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Directory/composer.json+6 5 modified
    @@ -7,10 +7,10 @@
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
             "lib-libxml": "*",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-config": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -24,5 +24,6 @@
             "psr-4": {
                 "Magento\\Directory\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/DirectoryGraphQl/composer.json+22 21 modified
    @@ -1,24 +1,25 @@
     {
    -  "name": "magento/module-directory-graph-ql",
    -  "description": "N/A",
    -  "type": "magento2-module",
    -  "require": {
    -    "php": "~7.1.3||~7.2.0||~7.3.0",
    -    "magento/module-directory": "*",
    -    "magento/module-store": "*",
    -    "magento/module-graph-ql": "*",
    -    "magento/framework": "*"
    -  },
    -  "license": [
    -    "OSL-3.0",
    -    "AFL-3.0"
    -  ],
    -  "autoload": {
    -    "files": [
    -      "registration.php"
    +    "name": "magento/module-directory-graph-ql",
    +    "description": "N/A",
    +    "type": "magento2-module",
    +    "require": {
    +        "php": "~7.1.3||~7.2.0||~7.3.0",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-graph-ql": "100.3.*",
    +        "magento/framework": "102.0.*"
    +    },
    +    "license": [
    +        "OSL-3.0",
    +        "AFL-3.0"
         ],
    -    "psr-4": {
    -      "Magento\\DirectoryGraphQl\\": ""
    -    }
    -  }
    +    "autoload": {
    +        "files": [
    +            "registration.php"
    +        ],
    +        "psr-4": {
    +            "Magento\\DirectoryGraphQl\\": ""
    +        }
    +    },
    +    "version": "100.3.3"
     }
    
  • app/code/Magento/Downloadable/composer.json+20 19 modified
    @@ -6,26 +6,26 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-config": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-gift-message": "*",
    -        "magento/module-media-storage": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-store": "*",
    -        "magento/module-tax": "*",
    -        "magento/module-theme": "*",
    -        "magento/module-ui": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-gift-message": "100.3.*",
    +        "magento/module-media-storage": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-tax": "100.3.*",
    +        "magento/module-theme": "101.0.*",
    +        "magento/module-ui": "101.1.*"
         },
         "suggest": {
    -        "magento/module-downloadable-sample-data": "*"
    +        "magento/module-downloadable-sample-data": "Sample Data version: 100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -39,5 +39,6 @@
             "psr-4": {
                 "Magento\\Downloadable\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5-p2"
     }
    
  • app/code/Magento/DownloadableGraphQl/composer.json+8 7 modified
    @@ -4,14 +4,14 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/module-catalog": "*",
    -        "magento/module-downloadable": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-quote-graph-ql": "*",
    -        "magento/framework": "*"
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-downloadable": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-quote-graph-ql": "100.3.*",
    +        "magento/framework": "102.0.*"
         },
         "suggest": {
    -        "magento/module-catalog-graph-ql": "*"
    +        "magento/module-catalog-graph-ql": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -24,5 +24,6 @@
             "psr-4": {
                 "Magento\\DownloadableGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/DownloadableImportExport/composer.json+9 8 modified
    @@ -6,13 +6,13 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-import-export": "*",
    -        "magento/module-downloadable": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-import-export": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-import-export": "101.0.*",
    +        "magento/module-downloadable": "100.3.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-import-export": "100.3.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -26,5 +26,6 @@
             "psr-4": {
                 "Magento\\DownloadableImportExport\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Downloadable/Test/Mftf/Test/AdminAddDefaultVideoDownloadableProductTest.xml+3 0 modified
    @@ -17,6 +17,9 @@
                 <severity value="MAJOR"/>
                 <testCaseId value="MC-114"/>
                 <group value="Downloadable"/>
    +            <skip>
    +                <issueId value="MC-34256"/>
    +            </skip>
             </annotations>
             <before>
                 <magentoCLI stepKey="addDownloadableDomain" command="downloadable:domains:add static.magento.com" before="enableAdminAccountSharing"/>
    
  • app/code/Magento/Downloadable/Test/Mftf/Test/AdminRemoveDefaultVideoDownloadableProductTest.xml+3 0 modified
    @@ -17,6 +17,9 @@
                 <severity value="MAJOR"/>
                 <testCaseId value="MC-207"/>
                 <group value="Downloadable"/>
    +            <skip>
    +                <issueId value="MC-34256"/>
    +            </skip>
             </annotations>
             <before>
                 <magentoCLI stepKey="addDownloadableDomain" command="downloadable:domains:add static.magento.com" before="enableAdminAccountSharing"/>
    
  • app/code/Magento/Eav/composer.json+8 7 modified
    @@ -6,12 +6,12 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-config": "*",
    -        "magento/module-media-storage": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-media-storage": "100.3.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -25,5 +25,6 @@
             "psr-4": {
                 "Magento\\Eav\\": ""
             }
    -    }
    +    },
    +    "version": "102.0.5-p2"
     }
    
  • app/code/Magento/EavGraphQl/composer.json+5 4 modified
    @@ -4,11 +4,11 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-eav": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-eav": "102.0.*"
         },
         "suggest": {
    -        "magento/module-graph-ql": "*"
    +        "magento/module-graph-ql": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -21,5 +21,6 @@
             "psr-4": {
                 "Magento\\EavGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Eav/Model/Attribute/Data/File.php+22 7 modified
    @@ -6,13 +6,16 @@
     namespace Magento\Eav\Model\Attribute\Data;
     
     use Magento\Framework\App\Filesystem\DirectoryList;
    +use Magento\Framework\App\ObjectManager;
     use Magento\Framework\App\RequestInterface;
    +use Magento\Framework\Filesystem\Io\File as FileIo;
     
     /**
      * EAV Entity Attribute File Data Model
      *
      * @api
      * @since 100.0.2
    + * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
      */
     class File extends \Magento\Eav\Model\Attribute\Data\AbstractData
     {
    @@ -38,13 +41,19 @@ class File extends \Magento\Eav\Model\Attribute\Data\AbstractData
          */
         protected $_directory;
     
    +    /**
    +     * @var FileIo
    +     */
    +    private $fileIo;
    +
         /**
          * @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate
          * @param \Psr\Log\LoggerInterface $logger
          * @param \Magento\Framework\Locale\ResolverInterface $localeResolver
          * @param \Magento\Framework\Url\EncoderInterface $urlEncoder
          * @param \Magento\MediaStorage\Model\File\Validator\NotProtectedExtension $fileValidator
          * @param \Magento\Framework\Filesystem $filesystem
    +     * @param FileIo|null $fileIo
          * @codeCoverageIgnore
          */
         public function __construct(
    @@ -53,12 +62,14 @@ public function __construct(
             \Magento\Framework\Locale\ResolverInterface $localeResolver,
             \Magento\Framework\Url\EncoderInterface $urlEncoder,
             \Magento\MediaStorage\Model\File\Validator\NotProtectedExtension $fileValidator,
    -        \Magento\Framework\Filesystem $filesystem
    +        \Magento\Framework\Filesystem $filesystem,
    +        FileIo $fileIo = null
         ) {
             parent::__construct($localeDate, $logger, $localeResolver);
             $this->urlEncoder = $urlEncoder;
             $this->_fileValidator = $fileValidator;
             $this->_directory = $filesystem->getDirectoryWrite(DirectoryList::MEDIA);
    +        $this->fileIo = $fileIo ?? ObjectManager::getInstance()->get(FileIo::class);
         }
     
         /**
    @@ -86,7 +97,7 @@ public function extractValue(RequestInterface $request)
                     $mainScope = $this->_requestScope;
                     $scopes = [];
                 }
    -
    +            // phpcs:disable Magento2.Security.Superglobal
                 if (!empty($_FILES[$mainScope])) {
                     foreach ($_FILES[$mainScope] as $fileKey => $scopeData) {
                         foreach ($scopes as $scopeName) {
    @@ -104,12 +115,15 @@ public function extractValue(RequestInterface $request)
                 } else {
                     $value = [];
                 }
    +            // phpcs:enable Magento2.Security.Superglobal
             } else {
    +            // phpcs:disable Magento2.Security.Superglobal
                 if (isset($_FILES[$attrCode])) {
                     $value = $_FILES[$attrCode];
                 } else {
                     $value = [];
                 }
    +            // phpcs:enable Magento2.Security.Superglobal
             }
     
             if (!empty($extend['delete'])) {
    @@ -129,7 +143,7 @@ protected function _validateByRules($value)
         {
             $label = $this->getAttribute()->getStoreLabel();
             $rules = $this->getAttribute()->getValidateRules();
    -        $extension = pathinfo($value['name'], PATHINFO_EXTENSION);
    +        $extension = $this->fileIo->getPathInfo($value['name'])['extension'];
     
             if (!empty($rules['file_extensions'])) {
                 $extensions = explode(',', $rules['file_extensions']);
    @@ -146,7 +160,9 @@ protected function _validateByRules($value)
                 return $this->_fileValidator->getMessages();
             }
     
    -        if (!empty($value['tmp_name']) && !file_exists($value['tmp_name'])) {
    +        if (!empty($value['tmp_name'])
    +            && !$this->_directory->getDriver()->isExists($value['tmp_name'])
    +        ) {
                 return [__('"%1" is not a valid file.', $label)];
             }
     
    @@ -177,8 +193,9 @@ public function validateValue($value)
     
             if (is_string($value) && !empty($value)) {
                 $dir = $this->_directory->getAbsolutePath($this->getAttribute()->getEntityType()->getEntityTypeCode());
    +            $stat = $this->_directory->getDriver()->stat($dir . $value);
                 $fileData = [
    -                'size' => filesize($dir . $value),
    +                'size' => $stat['size'],
                     'name' => $value,
                     'tmp_name' => $dir . $value
                 ];
    @@ -209,8 +226,6 @@ public function validateValue($value)
     
             if (count($errors) == 0) {
                 return true;
    -        } elseif (is_string($value) && !empty($value)) {
    -            $this->_directory->delete($dir . $value);
             }
     
             return $errors;
    
  • app/code/Magento/Eav/Test/Unit/Model/Attribute/Data/FileTest.php+36 17 modified
    @@ -6,15 +6,32 @@
     
     namespace Magento\Eav\Test\Unit\Model\Attribute\Data;
     
    +use Magento\Eav\Model\Attribute;
    +use Magento\Eav\Model\Attribute\Data\File;
    +use Magento\Eav\Model\AttributeDataFactory;
    +use Magento\Framework\Filesystem;
    +use Magento\Framework\Filesystem\Io\File as FileIo;
    +use Magento\Framework\Locale\ResolverInterface;
    +use Magento\Framework\Model\AbstractModel;
    +use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
    +use Magento\Framework\Url\EncoderInterface;
    +use Magento\MediaStorage\Model\File\Validator\NotProtectedExtension;
    +use Psr\Log\LoggerInterface;
    +
    +/**
    + * Test for Magento\Eav\Model\Attribute\Data\File class.
    + *
    + * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
    + */
     class FileTest extends \PHPUnit\Framework\TestCase
     {
         /**
    -     * @var \Magento\Eav\Model\Attribute\Data\File
    +     * @var File
          */
         protected $model;
     
         /**
    -     * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\Url\EncoderInterface
    +     * @var \PHPUnit_Framework_MockObject_MockObject|EncoderInterface
          */
         protected $urlEncoder;
     
    @@ -25,23 +42,25 @@ class FileTest extends \PHPUnit\Framework\TestCase
     
         protected function setUp()
         {
    -        $timezoneMock = $this->createMock(\Magento\Framework\Stdlib\DateTime\TimezoneInterface::class);
    -        $loggerMock = $this->createMock(\Psr\Log\LoggerInterface::class);
    -        $localeResolverMock = $this->createMock(\Magento\Framework\Locale\ResolverInterface::class);
    -        $this->urlEncoder = $this->createMock(\Magento\Framework\Url\EncoderInterface::class);
    +        $timezoneMock = $this->createMock(TimezoneInterface::class);
    +        $loggerMock = $this->createMock(LoggerInterface::class);
    +        $localeResolverMock = $this->createMock(ResolverInterface::class);
    +        $this->urlEncoder = $this->createMock(EncoderInterface::class);
             $this->fileValidatorMock = $this->createPartialMock(
    -            \Magento\MediaStorage\Model\File\Validator\NotProtectedExtension::class,
    +            NotProtectedExtension::class,
                 ['isValid', 'getMessages']
             );
    -        $filesystemMock = $this->createMock(\Magento\Framework\Filesystem::class);
    +        $filesystemMock = $this->createMock(Filesystem::class);
    +        $fileIo = $this->createMock(FileIo::class);
     
    -        $this->model = new \Magento\Eav\Model\Attribute\Data\File(
    +        $this->model = new File(
                 $timezoneMock,
                 $loggerMock,
                 $localeResolverMock,
                 $this->urlEncoder,
                 $this->fileValidatorMock,
    -            $filesystemMock
    +            $filesystemMock,
    +            $fileIo
             );
         }
     
    @@ -56,10 +75,10 @@ protected function setUp()
          */
         public function testOutputValue($format, $value, $callTimes, $expectedResult)
         {
    -        $entityMock = $this->createMock(\Magento\Framework\Model\AbstractModel::class);
    +        $entityMock = $this->createMock(AbstractModel::class);
             $entityMock->expects($this->once())->method('getData')->will($this->returnValue($value));
     
    -        $attributeMock = $this->createMock(\Magento\Eav\Model\Attribute::class);
    +        $attributeMock = $this->createMock(Attribute::class);
             $this->urlEncoder->expects($this->exactly($callTimes))
                 ->method('encode')
                 ->will($this->returnValue('url_key'));
    @@ -76,19 +95,19 @@ public function outputValueDataProvider()
         {
             return [
                 [
    -                'format' => \Magento\Eav\Model\AttributeDataFactory::OUTPUT_FORMAT_JSON,
    +                'format' => AttributeDataFactory::OUTPUT_FORMAT_JSON,
                     'value' => 'value',
                     'callTimes' => 1,
                     'expectedResult' => ['value' => 'value', 'url_key' => 'url_key'],
                 ],
                 [
    -                'format' => \Magento\Eav\Model\AttributeDataFactory::OUTPUT_FORMAT_TEXT,
    +                'format' => AttributeDataFactory::OUTPUT_FORMAT_TEXT,
                     'value' => 'value',
                     'callTimes' => 0,
                     'expectedResult' => ''
                 ],
                 [
    -                'format' => \Magento\Eav\Model\AttributeDataFactory::OUTPUT_FORMAT_TEXT,
    +                'format' => AttributeDataFactory::OUTPUT_FORMAT_TEXT,
                     'value' => false,
                     'callTimes' => 0,
                     'expectedResult' => ''
    @@ -119,10 +138,10 @@ public function testValidateValue(
             $expectedResult
         ) {
             $this->markTestSkipped('MAGETWO-34751: Test fails after being moved.  Might have hidden dependency.');
    -        $entityMock = $this->createMock(\Magento\Framework\Model\AbstractModel::class);
    +        $entityMock = $this->createMock(AbstractModel::class);
             $entityMock->expects($this->any())->method('getData')->will($this->returnValue($originalValue));
     
    -        $attributeMock = $this->createMock(\Magento\Eav\Model\Attribute::class);
    +        $attributeMock = $this->createMock(Attribute::class);
             $attributeMock->expects($this->any())->method('getStoreLabel')->will($this->returnValue('Label'));
             $attributeMock->expects($this->any())->method('getIsRequired')->will($this->returnValue($isRequired));
             $attributeMock->expects($this->any())->method('getIsAjaxRequest')->will($this->returnValue($isAjaxRequest));
    
  • app/code/Magento/Elasticsearch6/composer.json+8 7 modified
    @@ -3,15 +3,15 @@
         "description": "N/A",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-advanced-search": "*",
    -        "magento/module-catalog-search": "*",
    -        "magento/module-search": "*",
    -        "magento/module-elasticsearch": "*",
    +        "magento/framework": "102.0.*",
    +        "magento/module-advanced-search": "100.3.*",
    +        "magento/module-catalog-search": "101.0.*",
    +        "magento/module-search": "101.0.*",
    +        "magento/module-elasticsearch": "100.3.*",
             "elasticsearch/elasticsearch": "~2.0||~5.1||~6.1||~7.6"
         },
         "suggest": {
    -        "magento/module-config": "*"
    +        "magento/module-config": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -25,5 +25,6 @@
             "psr-4": {
                 "Magento\\Elasticsearch6\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Elasticsearch7/composer.json+8 7 modified
    @@ -3,15 +3,15 @@
         "description": "N/A",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-advanced-search": "*",
    -        "magento/module-catalog-search": "*",
    -        "magento/module-search": "*",
    -        "magento/module-elasticsearch": "*",
    +        "magento/framework": "102.0.*",
    +        "magento/module-advanced-search": "100.3.*",
    +        "magento/module-catalog-search": "101.0.*",
    +        "magento/module-search": "101.0.*",
    +        "magento/module-elasticsearch": "100.3.*",
             "elasticsearch/elasticsearch": "~2.0||~5.1||~6.1||~7.6 "
         },
         "suggest": {
    -        "magento/module-config": "*"
    +        "magento/module-config": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -25,5 +25,6 @@
             "psr-4": {
                 "Magento\\Elasticsearch7\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.0"
     }
    
  • app/code/Magento/Elasticsearch/Block/Adminhtml/System/Config/Elasticsearch5/TestConnection.php+1 1 modified
    @@ -8,7 +8,7 @@
     /**
      * Elasticsearch 5x test connection block
      * @codeCoverageIgnore
    - * @deprecated because of EOL for Elasticsearch5
    + * @deprecated 100.3.5 because of EOL for Elasticsearch5
      */
     class TestConnection extends \Magento\AdvancedSearch\Block\Adminhtml\System\Config\TestConnection
     {
    
  • app/code/Magento/Elasticsearch/Block/Adminhtml/System/Config/TestConnection.php+1 1 modified
    @@ -8,7 +8,7 @@
     /**
      * Elasticsearch test connection block
      * @codeCoverageIgnore
    - * @deprecated because of EOL for Elasticsearch2
    + * @deprecated 100.3.5 because of EOL for Elasticsearch2
      */
     class TestConnection extends \Magento\AdvancedSearch\Block\Adminhtml\System\Config\TestConnection
     {
    
  • app/code/Magento/Elasticsearch/composer.json+12 11 modified
    @@ -3,19 +3,19 @@
         "description": "N/A",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/module-advanced-search": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-search": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-search": "*",
    -        "magento/module-store": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/framework": "*",
    +        "magento/module-advanced-search": "100.3.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-search": "101.0.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-search": "101.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/framework": "102.0.*",
             "elasticsearch/elasticsearch": "~2.0||~5.1||~6.1||~7.6"
         },
         "suggest": {
    -        "magento/module-config": "*"
    +        "magento/module-config": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -29,5 +29,6 @@
             "psr-4": {
                 "Magento\\Elasticsearch\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Elasticsearch/Elasticsearch5/Model/Client/Elasticsearch.php+1 1 modified
    @@ -11,7 +11,7 @@
     /**
      * Elasticsearch client
      *
    - * @deprecated the Elasticsearch 5 doesn't supported due to EOL
    + * @deprecated 100.3.5 the Elasticsearch 5 doesn't supported due to EOL
      */
     class Elasticsearch implements ClientInterface
     {
    
  • app/code/Magento/Elasticsearch/Model/Adapter/BatchDataMapper/CategoryFieldsProvider.php+1 1 modified
    @@ -15,7 +15,7 @@
     /**
      * Provide data mapping for categories fields
      *
    - * @deprecated because of EOL for Elasticsearch2
    + * @deprecated 100.3.5 because of EOL for Elasticsearch2
      */
     class CategoryFieldsProvider implements AdditionalFieldsProviderInterface
     {
    
  • app/code/Magento/Elasticsearch/Model/Adapter/BatchDataMapper/DataMapperFactory.php+1 1 modified
    @@ -13,7 +13,7 @@
     /**
      * Data mapper factory uses to create appropriate mapper class
      *
    - * @deprecated because of EOL for Elasticsearch2
    + * @deprecated 100.3.5 because of EOL for Elasticsearch2
      */
     class DataMapperFactory
     {
    
  • app/code/Magento/Elasticsearch/Model/Adapter/BatchDataMapper/DataMapperResolver.php+1 1 modified
    @@ -13,7 +13,7 @@
     /**
      * Map index data to search engine metadata
      *
    - * @deprecated because of EOL for Elasticsearch2
    + * @deprecated 100.3.5 because of EOL for Elasticsearch2
      */
     class DataMapperResolver implements BatchDataMapperInterface
     {
    
  • app/code/Magento/Elasticsearch/Model/DataProvider/Suggestions.php+1 1 modified
    @@ -18,7 +18,7 @@
     /**
      * The implementation to provide suggestions mechanism for Elasticsearch2
      *
    - * @deprecated because of EOL for Elasticsearch2
    + * @deprecated 100.3.5 because of EOL for Elasticsearch2
      * @see \Magento\Elasticsearch\Model\DataProvider\Base\Suggestions
      */
     class Suggestions implements SuggestedQueriesInterface
    
  • app/code/Magento/Elasticsearch/SearchAdapter/Mapper.php+1 1 modified
    @@ -17,7 +17,7 @@
      *
      * @api
      * @since 100.1.0
    - * @deprecated because of EOL for Elasticsearch2
    + * @deprecated 100.3.5 because of EOL for Elasticsearch2
      */
     class Mapper extends Elasticsearch5Mapper
     {
    
  • app/code/Magento/Email/composer.json+12 11 modified
    @@ -6,18 +6,18 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-cms": "*",
    -        "magento/module-config": "*",
    -        "magento/module-store": "*",
    -        "magento/module-theme": "*",
    -        "magento/module-require-js": "*",
    -        "magento/module-media-storage": "*",
    -        "magento/module-variable": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-cms": "103.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-theme": "101.0.*",
    +        "magento/module-require-js": "100.3.*",
    +        "magento/module-media-storage": "100.3.*",
    +        "magento/module-variable": "100.3.*"
         },
         "suggest": {
    -        "magento/module-theme": "*"
    +        "magento/module-theme": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -31,5 +31,6 @@
             "psr-4": {
                 "Magento\\Email\\": ""
             }
    -    }
    +    },
    +    "version": "101.0.5"
     }
    
  • app/code/Magento/Email/Model/Template/Filter.php+2 2 modified
    @@ -45,7 +45,7 @@ class Filter extends \Magento\Framework\Filter\Template
          * Whether to allow SID in store directive: NO
          *
          * @var bool
    -     * @deprecated SID is not being used as query parameter anymore.
    +     * @deprecated 101.0.5 SID is not being used as query parameter anymore.
          */
         protected $_useSessionInUrl = false;
     
    @@ -266,7 +266,7 @@ public function setUseAbsoluteLinks($flag)
          * @param bool $flag
          * @return $this
          * @SuppressWarnings(PHPMD.UnusedFormalParameter)
    -     * @deprecated SID query parameter is not used in URLs anymore.
    +     * @deprecated 101.0.5 SID query parameter is not used in URLs anymore.
          */
         public function setUseSessionInUrl($flag)
         {
    
  • app/code/Magento/EncryptionKey/composer.json+5 4 modified
    @@ -6,9 +6,9 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-config": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-config": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -22,5 +22,6 @@
             "psr-4": {
                 "Magento\\EncryptionKey\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Fedex/composer.json+11 10 modified
    @@ -7,15 +7,15 @@
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
             "lib-libxml": "*",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/module-config": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-shipping": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-shipping": "100.3.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -29,5 +29,6 @@
             "psr-4": {
                 "Magento\\Fedex\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/GiftMessage/composer.json+13 12 modified
    @@ -6,19 +6,19 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-store": "*",
    -        "magento/module-ui": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-ui": "101.1.*"
         },
         "suggest": {
    -        "magento/module-eav": "*",
    -        "magento/module-multishipping": "*"
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-multishipping": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -32,5 +32,6 @@
             "psr-4": {
                 "Magento\\GiftMessage\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/GoogleAdwords/composer.json+5 4 modified
    @@ -6,9 +6,9 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -22,5 +22,6 @@
             "psr-4": {
                 "Magento\\GoogleAdwords\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/GoogleAnalytics/composer.json+7 6 modified
    @@ -6,13 +6,13 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-cookie": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-cookie": "100.3.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-store": "101.0.*"
         },
         "suggest": {
    -        "magento/module-config": "*"
    +        "magento/module-config": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -26,5 +26,6 @@
             "psr-4": {
                 "Magento\\GoogleAnalytics\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/GoogleOptimizer/composer.json+9 8 modified
    @@ -6,13 +6,13 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-cms": "*",
    -        "magento/module-google-analytics": "*",
    -        "magento/module-store": "*",
    -        "magento/module-ui": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-cms": "103.0.*",
    +        "magento/module-google-analytics": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-ui": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -26,5 +26,6 @@
             "psr-4": {
                 "Magento\\GoogleOptimizer\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/GraphQlCache/composer.json+5 4 modified
    @@ -4,9 +4,9 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-page-cache": "*",
    -        "magento/module-graph-ql": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-page-cache": "100.3.*",
    +        "magento/module-graph-ql": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -19,5 +19,6 @@
             "psr-4": {
                 "Magento\\GraphQlCache\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.2"
     }
    
  • app/code/Magento/GraphQl/composer.json+6 5 modified
    @@ -4,12 +4,12 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/module-eav": "*",
    -        "magento/framework": "*"
    +        "magento/module-eav": "102.0.*",
    +        "magento/framework": "102.0.*"
         },
         "suggest": {
    -        "magento/module-webapi": "*",
    -        "magento/module-graph-ql-cache": "*"
    +        "magento/module-webapi": "100.3.*",
    +        "magento/module-graph-ql-cache": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -22,5 +22,6 @@
             "psr-4": {
                 "Magento\\GraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/GroupedCatalogInventory/composer.json+6 5 modified
    @@ -6,10 +6,10 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/module-grouped-product": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/module-grouped-product": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -23,5 +23,6 @@
             "psr-4": {
                 "Magento\\GroupedCatalogInventory\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.3"
     }
    
  • app/code/Magento/GroupedImportExport/composer.json+8 7 modified
    @@ -6,12 +6,12 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-import-export": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-grouped-product": "*",
    -        "magento/module-import-export": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-import-export": "101.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-grouped-product": "100.3.*",
    +        "magento/module-import-export": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -25,5 +25,6 @@
             "psr-4": {
                 "Magento\\GroupedImportExport\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/GroupedProduct/composer.json+16 15 modified
    @@ -6,22 +6,22 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-media-storage": "*",
    -        "magento/module-msrp": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-store": "*",
    -        "magento/module-ui": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-media-storage": "100.3.*",
    +        "magento/module-msrp": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-ui": "101.1.*"
         },
         "suggest": {
    -        "magento/module-grouped-product-sample-data": "*"
    +        "magento/module-grouped-product-sample-data": "Sample Data version: 100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -35,5 +35,6 @@
             "psr-4": {
                 "Magento\\GroupedProduct\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5-p2"
     }
    
  • app/code/Magento/GroupedProductGraphQl/composer.json+6 5 modified
    @@ -4,10 +4,10 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/module-grouped-product": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-graph-ql": "*",
    -        "magento/framework": "*"
    +        "magento/module-grouped-product": "100.3.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-graph-ql": "100.3.*",
    +        "magento/framework": "102.0.*"
         },
         "license": [
             "OSL-3.0",
    @@ -20,5 +20,6 @@
             "psr-4": {
                 "Magento\\GroupedProductGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/GroupedProduct/Test/Mftf/Test/AdminAddDefaultVideoGroupedProductTest.xml+3 0 modified
    @@ -17,6 +17,9 @@
                 <severity value="MAJOR"/>
                 <testCaseId value="MC-108"/>
                 <group value="GroupedProduct"/>
    +            <skip>
    +                <issueId value="MC-34256"/>
    +            </skip>
             </annotations>
             <before>
                 <createData entity="SimpleProduct2" stepKey="simpleProduct1"/>
    
  • app/code/Magento/GroupedProduct/Test/Mftf/Test/AdminRemoveDefaultVideoGroupedProductTest.xml+3 0 modified
    @@ -17,6 +17,9 @@
                 <severity value="MAJOR"/>
                 <testCaseId value="MC-203"/>
                 <group value="GroupedProduct"/>
    +            <skip>
    +                <issueId value="MC-34256"/>
    +            </skip>
             </annotations>
             <before>
                 <createData entity="SimpleProduct2" stepKey="simpleProduct1"/>
    
  • app/code/Magento/ImportExport/Block/Adminhtml/Grid/Column/Renderer/Download.php+2 2 modified
    @@ -20,9 +20,9 @@ class Download extends \Magento\Backend\Block\Widget\Grid\Column\Renderer\Text
          */
         public function _getValue(\Magento\Framework\DataObject $row)
         {
    -        return '<p> ' . $row->getData('imported_file') .  '</p><a href="'
    +        return '<p> ' . $this->escapeHtml($row->getData('imported_file')) .  '</p><a href="'
             . $this->getUrl('*/*/download', ['filename' => $row->getData('imported_file')]) . '">'
    -        . __('Download')
    +        . $this->escapeHtml(__('Download'))
             . '</a>';
         }
     }
    
  • app/code/Magento/ImportExport/Block/Adminhtml/Grid/Column/Renderer/Error.php+2 2 modified
    @@ -22,9 +22,9 @@ public function _getValue(\Magento\Framework\DataObject $row)
         {
             $result = '';
             if ($row->getData('error_file') != '') {
    -            $result = '<p> ' . $row->getData('error_file') .  '</p><a href="'
    +            $result = '<p> ' . $this->escapeHtml($row->getData('error_file')) .  '</p><a href="'
                     . $this->getUrl('*/*/download', ['filename' => $row->getData('error_file')]) . '">'
    -                . __('Download')
    +                . $this->escapeHtml(__('Download'))
                     . '</a>';
             }
             return $result;
    
  • app/code/Magento/ImportExport/composer.json+9 8 modified
    @@ -7,13 +7,13 @@
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
             "ext-ctype": "*",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-media-storage": "*",
    -        "magento/module-store": "*",
    -        "magento/module-ui": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-media-storage": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-ui": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -27,5 +27,6 @@
             "psr-4": {
                 "Magento\\ImportExport\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5-p2"
     }
    
  • app/code/Magento/ImportExport/Controller/Adminhtml/Export/File/Delete.php+27 9 modified
    @@ -13,9 +13,15 @@
     use Magento\Framework\Exception\FileSystemException;
     use Magento\Framework\Exception\LocalizedException;
     use Magento\Framework\App\Filesystem\DirectoryList;
    +use Magento\Framework\Exception\ValidatorException;
     use Magento\ImportExport\Controller\Adminhtml\Export as ExportController;
     use Magento\Framework\Filesystem;
     use Magento\Framework\Filesystem\DriverInterface;
    +use Magento\Framework\App\ResponseInterface;
    +use Magento\Framework\Controller\ResultInterface;
    +use Magento\Framework\Filesystem\Directory\WriteFactory;
    +use Magento\Backend\Model\View\Result\Redirect;
    +use \Magento\Framework\Filesystem\Directory\WriteInterface;
     
     /**
      * Controller that delete file by name.
    @@ -34,29 +40,40 @@ class Delete extends ExportController implements HttpPostActionInterface
     
         /**
          * @var DriverInterface
    +     * @deprecated 100.3.5 Is not used anymore.
    +     * @see WriteInterface
          */
         private $file;
     
    +    /**
    +     * @var WriteFactory
    +     */
    +    private $writeFactory;
    +
         /**
          * Delete constructor.
    +     *
          * @param Action\Context $context
          * @param Filesystem $filesystem
          * @param DriverInterface $file
    +     * @param WriteFactory $writeFactory
          */
         public function __construct(
             Action\Context $context,
             Filesystem $filesystem,
    -        DriverInterface $file
    +        DriverInterface $file,
    +        WriteFactory $writeFactory
         ) {
             $this->filesystem = $filesystem;
             $this->file = $file;
    +        $this->writeFactory = $writeFactory;
             parent::__construct($context);
         }
     
         /**
          * Controller basic method implementation.
          *
    -     * @return \Magento\Framework\App\ResponseInterface|\Magento\Framework\Controller\ResultInterface
    +     * @return ResponseInterface|ResultInterface
          * @throws LocalizedException
          */
         public function execute()
    @@ -65,17 +82,18 @@ public function execute()
                 if (empty($fileName = $this->getRequest()->getParam('filename'))) {
                     throw new LocalizedException(__('Please provide export file name'));
                 }
    -            $directory = $this->filesystem->getDirectoryRead(DirectoryList::VAR_DIR);
    -            $path = $directory->getAbsolutePath() . 'export/' . $fileName;
    -
    -            if (!$directory->isFile($path)) {
    +            $directoryWrite = $this->filesystem->getDirectoryWrite(DirectoryList::VAR_EXPORT);
    +            try {
    +                $directoryWrite->delete($directoryWrite->getAbsolutePath($fileName));
    +            } catch (ValidatorException $exception) {
    +                throw new LocalizedException(__('Sorry, but the data is invalid or the file is not uploaded.'));
    +            } catch (FileSystemException $exception) {
                     throw new LocalizedException(__('Sorry, but the data is invalid or the file is not uploaded.'));
                 }
    -
    -            $this->file->deleteFile($path);
    -            /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
    +            /** @var Redirect $resultRedirect */
                 $resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
                 $resultRedirect->setPath('adminhtml/export/index');
    +
                 return $resultRedirect;
             } catch (FileSystemException $exception) {
                 throw new LocalizedException(__('There are no export file with such name %1', $fileName));
    
  • app/code/Magento/ImportExport/Model/Export/Adapter/Csv.php+1 0 modified
    @@ -39,6 +39,7 @@ class Csv extends AbstractAdapter
     
         /**
          * Object destructor
    +     * @since 100.3.5
          */
         public function __destruct()
         {
    
  • app/code/Magento/ImportExport/Test/Unit/Block/Adminhtml/Grid/Column/Renderer/DownloadTest.php+29 6 modified
    @@ -5,12 +5,20 @@
      */
     namespace Magento\ImportExport\Test\Unit\Block\Adminhtml\Grid\Column\Renderer;
     
    +use Magento\Backend\Block\Context;
    +use Magento\Backend\Model\Url;
    +use Magento\Framework\DataObject;
    +use Magento\Framework\Escaper;
     use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
    +use Magento\ImportExport\Block\Adminhtml\Grid\Column\Renderer\Download;
     
    +/**
    + * Test for \Magento\ImportExport\Block\Adminhtml\Grid\Column\Renderer\Download class.
    + */
     class DownloadTest extends \PHPUnit\Framework\TestCase
     {
         /**
    -     * @var \Magento\Backend\Block\Context
    +     * @var Context
          */
         protected $context;
     
    @@ -20,24 +28,31 @@ class DownloadTest extends \PHPUnit\Framework\TestCase
         protected $objectManagerHelper;
     
         /**
    -     * @var \Magento\ImportExport\Block\Adminhtml\Grid\Column\Renderer\Download
    +     * @var Download
          */
         protected $download;
     
    +    /**
    +     * @var Escaper|\PHPUnit_Framework_MockObject_MockObjecti
    +     */
    +    private $escaperMock;
    +
         /**
          * Set up
          */
         protected function setUp()
         {
    -        $urlModel = $this->createPartialMock(\Magento\Backend\Model\Url::class, ['getUrl']);
    +        $this->escaperMock = $this->createMock(Escaper::class);
    +        $urlModel = $this->createPartialMock(Url::class, ['getUrl']);
             $urlModel->expects($this->any())->method('getUrl')->willReturn('url');
    -        $this->context = $this->createPartialMock(\Magento\Backend\Block\Context::class, ['getUrlBuilder']);
    +        $this->context = $this->createPartialMock(Context::class, ['getUrlBuilder', 'getEscaper']);
             $this->context->expects($this->any())->method('getUrlBuilder')->willReturn($urlModel);
    +        $this->context->expects($this->any())->method('getEscaper')->willReturn($this->escaperMock);
             $data = [];
     
             $this->objectManagerHelper = new ObjectManagerHelper($this);
             $this->download = $this->objectManagerHelper->getObject(
    -            \Magento\ImportExport\Block\Adminhtml\Grid\Column\Renderer\Download::class,
    +            Download::class,
                 [
                     'context' => $this->context,
                     'data' => $data
    @@ -51,7 +66,15 @@ protected function setUp()
         public function testGetValue()
         {
             $data = ['imported_file' => 'file.csv'];
    -        $row = new \Magento\Framework\DataObject($data);
    +        $row = new DataObject($data);
    +        $this->escaperMock->expects($this->at(0))
    +            ->method('escapeHtml')
    +            ->with('file.csv')
    +            ->willReturn('file.csv');
    +        $this->escaperMock->expects($this->at(1))
    +            ->method('escapeHtml')
    +            ->with('Download')
    +            ->willReturn('Download');
             $this->assertEquals('<p> file.csv</p><a href="url">Download</a>', $this->download->_getValue($row));
         }
     }
    
  • app/code/Magento/Indexer/composer.json+4 3 modified
    @@ -6,8 +6,8 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -21,5 +21,6 @@
             "psr-4": {
                 "Magento\\Indexer\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5-p2"
     }
    
  • app/code/Magento/Indexer/Test/Mftf/ActionGroup/CliIndexerReindexActionGroup.xml+20 0 added
    @@ -0,0 +1,20 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<!--
    + /**
    +  * Copyright © Magento, Inc. All rights reserved.
    +  * See COPYING.txt for license details.
    +  */
    +-->
    +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +              xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
    +    <actionGroup name="CliIndexerReindexActionGroup">
    +        <annotations>
    +            <description>Run reindex by CLI with specified indexers (space separated).</description>
    +        </annotations>
    +        <arguments>
    +            <argument name="indices" type="string"/>
    +        </arguments>
    +
    +        <magentoCLI command="indexer:reindex" arguments="{{indices}}" stepKey="reindexSpecifiedIndexers"/>
    +    </actionGroup>
    +</actionGroups>
    
  • app/code/Magento/InstantPurchase/composer.json+10 9 modified
    @@ -8,14 +8,14 @@
         ],
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/module-store": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-shipping": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-vault": "*",
    -        "magento/framework": "*"
    +        "magento/module-store": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-shipping": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-vault": "101.1.*",
    +        "magento/framework": "102.0.*"
         },
         "autoload": {
             "files": [
    @@ -24,5 +24,6 @@
             "psr-4": {
                 "Magento\\InstantPurchase\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Integration/composer.json+9 8 modified
    @@ -6,13 +6,13 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-authorization": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-security": "*",
    -        "magento/module-store": "*",
    -        "magento/module-user": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-authorization": "100.3.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-security": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-user": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -26,5 +26,6 @@
             "psr-4": {
                 "Magento\\Integration\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/LayeredNavigation/composer.json+5 4 modified
    @@ -6,9 +6,9 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-config": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-config": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -22,5 +22,6 @@
             "psr-4": {
                 "Magento\\LayeredNavigation\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Marketplace/composer.json+4 3 modified
    @@ -6,8 +6,8 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -21,5 +21,6 @@
             "psr-4": {
                 "Magento\\Marketplace\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/MediaGalleryApi/composer.json+3 2 modified
    @@ -3,7 +3,7 @@
         "description": "Magento module responsible for media gallery asset attributes storage and management",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*"
    +        "magento/framework": "102.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -17,5 +17,6 @@
             "psr-4": {
                 "Magento\\MediaGalleryApi\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.0"
     }
    
  • app/code/Magento/MediaGallery/composer.json+6 5 modified
    @@ -3,10 +3,10 @@
         "description": "Magento module responsible for media handling",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-media-gallery-api": "*",
    -        "magento/module-cms": "*",
    -        "magento/module-catalog": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-media-gallery-api": "100.3.*",
    +        "magento/module-cms": "103.0.*",
    +        "magento/module-catalog": "103.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -20,5 +20,6 @@
             "psr-4": {
                 "Magento\\MediaGallery\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.1"
     }
    
  • app/code/Magento/MediaStorage/composer.json+8 7 modified
    @@ -6,12 +6,12 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-config": "*",
    -        "magento/module-store": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-theme": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-theme": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -25,5 +25,6 @@
             "psr-4": {
                 "Magento\\MediaStorage\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/MessageQueue/composer.json+3 2 modified
    @@ -5,7 +5,7 @@
             "sort-packages": true
         },
         "require": {
    -        "magento/framework": "*",
    +        "magento/framework": "102.0.*",
             "magento/magento-composer-installer": "*",
             "php": "~7.1.3||~7.2.0||~7.3.0"
         },
    @@ -21,5 +21,6 @@
             "psr-4": {
                 "Magento\\MessageQueue\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5-p2"
     }
    
  • app/code/Magento/MessageQueue/Test/Mftf/ActionGroup/CliConsumerStartActionGroup.xml+22 0 added
    @@ -0,0 +1,22 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<!--
    + /**
    +  * Copyright © Magento, Inc. All rights reserved.
    +  * See COPYING.txt for license details.
    +  */
    +-->
    +
    +<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +              xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
    +    <actionGroup name="CliConsumerStartActionGroup">
    +        <annotations>
    +            <description>Starts message queue for specific consumer by CLI.</description>
    +        </annotations>
    +        <arguments>
    +            <argument name="consumerName" type="string"/>
    +            <argument name="maxMessages" type="string"/>
    +        </arguments>
    +
    +        <magentoCLI command="queue:consumers:start {{consumerName}} --max-messages={{maxMessages}}" stepKey="startMessageQueue"/>
    +    </actionGroup>
    +</actionGroups>
    
  • app/code/Magento/MessageQueue/Test/Mftf/Data/QueueConsumerData.xml+23 0 added
    @@ -0,0 +1,23 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<!--
    + /**
    +  * Copyright © Magento, Inc. All rights reserved.
    +  * See COPYING.txt for license details.
    +  */
    +-->
    +
    +<entities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    +          xsi:noNamespaceSchemaLocation="urn:magento:mftf:DataGenerator/etc/dataProfileSchema.xsd">
    +    <entity name="AdminExportMessageConsumerData">
    +        <data key="consumerName">exportProcessor</data>
    +        <data key="messageLimit">100</data>
    +    </entity>
    +    <entity name="AdminProductAttributeUpdateMessageConsumerData">
    +        <data key="consumerName">product_action_attribute.update</data>
    +        <data key="messageLimit">100</data>
    +    </entity>
    +    <entity name="AdminCodeGeneratorMessageConsumerData">
    +        <data key="consumerName">codegeneratorProcessor</data>
    +        <data key="messageLimit">100</data>
    +    </entity>
    +</entities>
    
  • app/code/Magento/Msrp/composer.json+10 9 modified
    @@ -6,16 +6,16 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-downloadable": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-store": "*",
    -        "magento/module-tax": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-downloadable": "100.3.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-tax": "100.3.*"
         },
         "suggest": {
    -        "magento/module-bundle": "*",
    -        "magento/module-msrp-sample-data": "*"
    +        "magento/module-bundle": "100.3.*",
    +        "magento/module-msrp-sample-data": "Sample Data version: 100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -29,5 +29,6 @@
             "psr-4": {
                 "Magento\\Msrp\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/MsrpConfigurableProduct/composer.json+6 5 modified
    @@ -6,10 +6,10 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-msrp": "*",
    -        "magento/module-configurable-product": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-msrp": "100.3.*",
    +        "magento/module-configurable-product": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -23,5 +23,6 @@
             "psr-4": {
                 "Magento\\MsrpConfigurableProduct\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.3"
     }
    
  • app/code/Magento/MsrpGroupedProduct/composer.json+6 5 modified
    @@ -6,10 +6,10 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-msrp": "*",
    -        "magento/module-grouped-product": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-msrp": "100.3.*",
    +        "magento/module-grouped-product": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -23,5 +23,6 @@
             "psr-4": {
                 "Magento\\MsrpGroupedProduct\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.3"
     }
    
  • app/code/Magento/Multishipping/composer.json+12 11 modified
    @@ -6,16 +6,16 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-payment": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-store": "*",
    -        "magento/module-tax": "*",
    -        "magento/module-theme": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-payment": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-tax": "100.3.*",
    +        "magento/module-theme": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -29,5 +29,6 @@
             "psr-4": {
                 "Magento\\Multishipping\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/MysqlMq/composer.json+4 3 modified
    @@ -5,9 +5,9 @@
             "sort-packages": true
         },
         "require": {
    -        "magento/framework": "*",
    +        "magento/framework": "102.0.*",
             "magento/magento-composer-installer": "*",
    -        "magento/module-store": "*",
    +        "magento/module-store": "101.0.*",
             "php": "~7.1.3||~7.2.0||~7.3.0"
         },
         "type": "magento2-module",
    @@ -22,5 +22,6 @@
             "psr-4": {
                 "Magento\\MysqlMq\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/NewRelicReporting/composer.json+9 8 modified
    @@ -6,14 +6,14 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    +        "magento/framework": "102.0.*",
             "magento/magento-composer-installer": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-config": "*",
    -        "magento/module-configurable-product": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-store": "*"
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-configurable-product": "100.3.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -27,5 +27,6 @@
             "psr-4": {
                 "Magento\\NewRelicReporting\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Newsletter/composer.json+11 10 modified
    @@ -6,15 +6,15 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-cms": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-email": "*",
    -        "magento/module-require-js": "*",
    -        "magento/module-store": "*",
    -        "magento/module-widget": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-cms": "103.0.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-email": "101.0.*",
    +        "magento/module-require-js": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-widget": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -28,5 +28,6 @@
             "psr-4": {
                 "Magento\\Newsletter\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5-p2"
     }
    
  • app/code/Magento/Newsletter/Controller/Adminhtml/Template/Save.php+4 4 modified
    @@ -1,6 +1,5 @@
     <?php
     /**
    - *
      * Copyright © Magento, Inc. All rights reserved.
      * See COPYING.txt for license details.
      */
    @@ -10,6 +9,9 @@
     use Magento\Framework\App\TemplateTypesInterface;
     use Magento\Framework\Exception\LocalizedException;
     
    +/**
    + * An action that saves a template.
    + */
     class Save extends \Magento\Newsletter\Controller\Adminhtml\Template implements HttpPostActionInterface
     {
         /**
    @@ -32,9 +34,7 @@ public function execute()
             }
     
             try {
    -            $template->addData(
    -                $request->getParams()
    -            )->setTemplateSubject(
    +            $template->setTemplateSubject(
                     $request->getParam('subject')
                 )->setTemplateCode(
                     $request->getParam('code')
    
  • app/code/Magento/OfflinePayments/composer.json+6 5 modified
    @@ -6,12 +6,12 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-payment": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-payment": "100.3.*"
         },
         "suggest": {
    -        "magento/module-config": "*"
    +        "magento/module-config": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -25,5 +25,6 @@
             "psr-4": {
                 "Magento\\OfflinePayments\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/OfflineShipping/composer.json+14 13 modified
    @@ -6,20 +6,20 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-config": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-sales-rule": "*",
    -        "magento/module-shipping": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-sales-rule": "101.1.*",
    +        "magento/module-shipping": "100.3.*",
    +        "magento/module-store": "101.0.*"
         },
         "suggest": {
    -        "magento/module-checkout": "*",
    -        "magento/module-offline-shipping-sample-data": "*"
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-offline-shipping-sample-data": "Sample Data version: 100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -33,5 +33,6 @@
             "psr-4": {
                 "Magento\\OfflineShipping\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/PageCache/composer.json+6 5 modified
    @@ -6,10 +6,10 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-config": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -23,5 +23,6 @@
             "psr-4": {
                 "Magento\\PageCache\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Payment/composer.json+9 8 modified
    @@ -6,13 +6,13 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-config": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -26,5 +26,6 @@
             "psr-4": {
                 "Magento\\Payment\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/PaypalCaptcha/composer.json+7 6 modified
    @@ -6,13 +6,13 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-captcha": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-captcha": "100.3.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-store": "101.0.*"
         },
         "suggest": {
    -        "magento/module-paypal": "*"
    +        "magento/module-paypal": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -26,5 +26,6 @@
             "psr-4": {
                 "Magento\\PaypalCaptcha\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.2"
     }
    
  • app/code/Magento/Paypal/composer.json+20 19 modified
    @@ -7,26 +7,26 @@
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
             "lib-libxml": "*",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-config": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-instant-purchase": "*",
    -        "magento/module-payment": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-store": "*",
    -        "magento/module-tax": "*",
    -        "magento/module-theme": "*",
    -        "magento/module-ui": "*",
    -        "magento/module-vault": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-instant-purchase": "100.3.*",
    +        "magento/module-payment": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-tax": "100.3.*",
    +        "magento/module-theme": "101.0.*",
    +        "magento/module-ui": "101.1.*",
    +        "magento/module-vault": "101.1.*"
         },
         "suggest": {
    -        "magento/module-checkout-agreements": "*"
    +        "magento/module-checkout-agreements": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -40,5 +40,6 @@
             "psr-4": {
                 "Magento\\Paypal\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5-p2"
     }
    
  • app/code/Magento/PaypalGraphQl/composer.json+11 10 modified
    @@ -6,17 +6,17 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-paypal": "*",
    -        "magento/module-quote-graph-ql": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-payment": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-paypal": "100.3.*",
    +        "magento/module-quote-graph-ql": "100.3.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-payment": "100.3.*",
    +        "magento/module-store": "101.0.*"
         },
         "suggest": {
    -        "magento/module-graph-ql": "*"
    +        "magento/module-graph-ql": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -30,5 +30,6 @@
             "psr-4": {
                 "Magento\\PaypalGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.1"
     }
    
  • app/code/Magento/Paypal/Test/Mftf/Test/StorefrontPaypalSmartButtonInCheckoutPageTest.xml+3 0 modified
    @@ -17,6 +17,9 @@
                 <severity value="CRITICAL"/>
                 <testCaseId value="MC-13690"/>
                 <group value="paypal"/>
    +            <skip>
    +                <issueId value="MC-35083"/>
    +            </skip>
             </annotations>
             <before>
     
    
  • app/code/Magento/Persistent/composer.json+9 8 modified
    @@ -6,13 +6,13 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-cron": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-page-cache": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-cron": "100.3.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-page-cache": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -26,5 +26,6 @@
             "psr-4": {
                 "Magento\\Persistent\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/ProductAlert/composer.json+8 7 modified
    @@ -6,14 +6,14 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-store": "101.0.*"
         },
         "suggest": {
    -        "magento/module-config": "*"
    +        "magento/module-config": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -27,5 +27,6 @@
             "psr-4": {
                 "Magento\\ProductAlert\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/ProductVideo/composer.json+10 9 modified
    @@ -6,17 +6,17 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    +        "magento/framework": "102.0.*",
             "magento/magento-composer-installer": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-media-storage": "*",
    -        "magento/module-store": "*"
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-media-storage": "100.3.*",
    +        "magento/module-store": "101.0.*"
         },
         "suggest": {
    -        "magento/module-customer": "*",
    -        "magento/module-config": "*"
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-config": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -30,5 +30,6 @@
             "psr-4": {
                 "Magento\\ProductVideo\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5-p2"
     }
    
  • app/code/Magento/ProductVideo/Test/Mftf/Test/YoutubeVideoWindowOnProductPageTest.xml+3 0 modified
    @@ -17,6 +17,9 @@
                 <description value="Check Youtube video window on the product page"/>
                 <severity value="MAJOR"/>
                 <group value="ProductVideo"/>
    +            <skip>
    +                <issueId value="MC-34256"/>
    +            </skip>
             </annotations>
     
             <before>
    
  • app/code/Magento/QuoteAnalytics/composer.json+5 4 modified
    @@ -3,9 +3,9 @@
         "description": "N/A",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-analytics": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-analytics": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -19,5 +19,6 @@
             "psr-4": {
                 "Magento\\QuoteAnalytics\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Quote/composer.json+18 17 modified
    @@ -6,24 +6,24 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-authorization": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-payment": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-sales-sequence": "*",
    -        "magento/module-shipping": "*",
    -        "magento/module-store": "*",
    -        "magento/module-tax": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-authorization": "100.3.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-payment": "100.3.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-sales-sequence": "100.3.*",
    +        "magento/module-shipping": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-tax": "100.3.*"
         },
         "suggest": {
    -        "magento/module-webapi": "*"
    +        "magento/module-webapi": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -37,5 +37,6 @@
             "psr-4": {
                 "Magento\\Quote\\": ""
             }
    -    }
    +    },
    +    "version": "101.1.5-p2"
     }
    
  • app/code/Magento/QuoteGraphQl/composer.json+13 12 modified
    @@ -4,19 +4,19 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-store": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-customer-graph-ql": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-graph-ql": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-customer-graph-ql": "100.3.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-graph-ql": "100.3.*"
         },
         "suggest": {
    -        "magento/module-graph-ql-cache": "*"
    +        "magento/module-graph-ql-cache": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -29,5 +29,6 @@
             "psr-4": {
                 "Magento\\QuoteGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Quote/Setup/Patch/Data/WishlistDataCleanUp.php+154 0 added
    @@ -0,0 +1,154 @@
    +<?php
    +/**
    + * Copyright © Magento, Inc. All rights reserved.
    + * See COPYING.txt for license details.
    + */
    +declare(strict_types=1);
    +namespace Magento\Quote\Setup\Patch\Data;
    +
    +use Magento\Framework\DB\Query\Generator;
    +use Magento\Framework\Exception\LocalizedException;
    +use Magento\Framework\Serialize\Serializer\Json;
    +use Magento\Framework\Setup\Patch\DataPatchInterface;
    +use Magento\Quote\Setup\QuoteSetupFactory;
    +use Psr\Log\LoggerInterface;
    +
    +/**
    + * Class Clean Up Data Removes unused data
    + */
    +class WishlistDataCleanUp implements DataPatchInterface
    +{
    +    /**
    +     * Batch size for query
    +     */
    +    private const BATCH_SIZE = 1000;
    +
    +    /**
    +     * @var QuoteSetupFactory
    +     */
    +    private $quoteSetupFactory;
    +
    +    /**
    +     * @var Generator
    +     */
    +    private $queryGenerator;
    +
    +    /**
    +     * @var Json
    +     */
    +    private $json;
    +
    +    /**
    +     * @var LoggerInterface
    +     */
    +    private $logger;
    +
    +    /**
    +     * RemoveData constructor.
    +     * @param Json $json
    +     * @param Generator $queryGenerator
    +     * @param QuoteSetupFactory $quoteSetupFactory
    +     * @param LoggerInterface $logger
    +     */
    +    public function __construct(
    +        Json $json,
    +        Generator $queryGenerator,
    +        QuoteSetupFactory $quoteSetupFactory,
    +        LoggerInterface $logger
    +    ) {
    +        $this->json = $json;
    +        $this->queryGenerator = $queryGenerator;
    +        $this->quoteSetupFactory = $quoteSetupFactory;
    +        $this->logger = $logger;
    +    }
    +
    +    /**
    +     * @inheritdoc
    +     */
    +    public function apply()
    +    {
    +        try {
    +            $this->cleanQuoteItemOptionTable();
    +        } catch (\Throwable $e) {
    +            $this->logger->warning(
    +                'Quote module WishlistDataCleanUp patch experienced an error and could not be completed.'
    +                . ' Please submit a support ticket or email us at security@magento.com.'
    +            );
    +
    +            return $this;
    +        }
    +
    +        return $this;
    +    }
    +
    +    /**
    +     * Remove login data from quote_item_option table.
    +     *
    +     * @throws LocalizedException
    +     */
    +    private function cleanQuoteItemOptionTable()
    +    {
    +        $quoteSetup = $this->quoteSetupFactory->create();
    +        $tableName = $quoteSetup->getTable('quote_item_option');
    +        $select = $quoteSetup
    +            ->getConnection()
    +            ->select()
    +            ->from(
    +                $tableName,
    +                ['option_id', 'value']
    +            )
    +            ->where(
    +                'value LIKE ?',
    +                '%login%'
    +            );
    +        $iterator = $this->queryGenerator->generate('option_id', $select, self::BATCH_SIZE);
    +        $rowErrorFlag = false;
    +        foreach ($iterator as $selectByRange) {
    +            $optionRows = $quoteSetup->getConnection()->fetchAll($selectByRange);
    +            foreach ($optionRows as $optionRow) {
    +                try {
    +                    $rowValue = $this->json->unserialize($optionRow['value']);
    +                    if (is_array($rowValue)
    +                        && array_key_exists('login', $rowValue)
    +                    ) {
    +                        unset($rowValue['login']);
    +                    }
    +                    $rowValue = $this->json->serialize($rowValue);
    +                    $quoteSetup->getConnection()->update(
    +                        $tableName,
    +                        ['value' => $rowValue],
    +                        ['option_id = ?' => $optionRow['option_id']]
    +                    );
    +                } catch (\Throwable $e) {
    +                    $rowErrorFlag = true;
    +                    continue;
    +                }
    +            }
    +        }
    +        if ($rowErrorFlag) {
    +            $this->logger->warning(
    +                'Data clean up could not be completed due to unexpected data format in the table "'
    +                . $tableName
    +                . '". Please submit a support ticket or email us at security@magento.com.'
    +            );
    +        }
    +    }
    +
    +    /**
    +     * @inheritdoc
    +     */
    +    public static function getDependencies()
    +    {
    +        return [
    +            ConvertSerializedDataToJson::class
    +        ];
    +    }
    +
    +    /**
    +     * @inheritdoc
    +     */
    +    public function getAliases()
    +    {
    +        return [];
    +    }
    +}
    
  • app/code/Magento/RelatedProductGraphQl/composer.json+6 5 modified
    @@ -4,12 +4,12 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-graph-ql": "*",
    -        "magento/framework": "*"
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-graph-ql": "100.3.*",
    +        "magento/framework": "102.0.*"
         },
         "suggest": {
    -        "magento/module-graph-ql": "*"
    +        "magento/module-graph-ql": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -22,5 +22,6 @@
             "psr-4": {
                 "Magento\\RelatedProductGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.1"
     }
    
  • app/code/Magento/ReleaseNotification/composer.json+7 6 modified
    @@ -3,13 +3,13 @@
         "description": "N/A",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/module-user": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-ui": "*",
    -        "magento/framework": "*"
    +        "magento/module-user": "101.1.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-ui": "101.1.*",
    +        "magento/framework": "102.0.*"
         },
         "suggest": {
    -        "magento/module-config": "*"
    +        "magento/module-config": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -23,5 +23,6 @@
             "psr-4": {
                 "Magento\\ReleaseNotification\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Reports/composer.json+19 18 modified
    @@ -6,23 +6,23 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/module-cms": "*",
    -        "magento/module-config": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-downloadable": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-review": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-sales-rule": "*",
    -        "magento/module-store": "*",
    -        "magento/module-tax": "*",
    -        "magento/module-widget": "*",
    -        "magento/module-wishlist": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/module-cms": "103.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-downloadable": "100.3.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-review": "100.3.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-sales-rule": "101.1.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-tax": "100.3.*",
    +        "magento/module-widget": "101.1.*",
    +        "magento/module-wishlist": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -36,5 +36,6 @@
             "psr-4": {
                 "Magento\\Reports\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Reports/Model/ResourceModel/Review/Product/Collection.php+1 0 modified
    @@ -106,6 +106,7 @@ public function addAttributeToSort($attribute, $dir = self::SORT_ORDER_ASC)
          * @param array|null $condition
          * @param string $joinType
          * @return $this|\Magento\Catalog\Model\ResourceModel\Product\Collection
    +     * @since 100.3.5
          */
         public function addAttributeToFilter($attribute, $condition = null, $joinType = 'inner')
         {
    
  • app/code/Magento/RequireJs/composer.json+3 2 modified
    @@ -6,7 +6,7 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*"
    +        "magento/framework": "102.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -20,5 +20,6 @@
             "psr-4": {
                 "Magento\\RequireJs\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/ReviewAnalytics/composer.json+5 4 modified
    @@ -3,9 +3,9 @@
         "description": "N/A",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-review": "*",
    -        "magento/module-analytics": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-review": "100.3.*",
    +        "magento/module-analytics": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -19,5 +19,6 @@
             "psr-4": {
                 "Magento\\ReviewAnalytics\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Review/composer.json+13 12 modified
    @@ -6,19 +6,19 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-newsletter": "*",
    -        "magento/module-store": "*",
    -        "magento/module-theme": "*",
    -        "magento/module-ui": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-newsletter": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-theme": "101.0.*",
    +        "magento/module-ui": "101.1.*"
         },
         "suggest": {
    -        "magento/module-cookie": "*",
    -        "magento/module-review-sample-data": "*"
    +        "magento/module-cookie": "100.3.*",
    +        "magento/module-review-sample-data": "Sample Data version: 100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -32,5 +32,6 @@
             "psr-4": {
                 "Magento\\Review\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Robots/composer.json+5 4 modified
    @@ -6,11 +6,11 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-store": "101.0.*"
         },
         "suggest": {
    -        "magento/module-theme": "*"
    +        "magento/module-theme": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -24,5 +24,6 @@
             "psr-4": {
                 "Magento\\Robots\\": ""
             }
    -    }
    +    },
    +    "version": "101.0.4"
     }
    
  • app/code/Magento/Rss/composer.json+6 5 modified
    @@ -6,10 +6,10 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -23,5 +23,6 @@
             "psr-4": {
                 "Magento\\Rss\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Rule/composer.json+7 6 modified
    @@ -7,11 +7,11 @@
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
             "lib-libxml": "*",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -25,5 +25,6 @@
             "psr-4": {
                 "Magento\\Rule\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/SalesAnalytics/composer.json+5 4 modified
    @@ -3,9 +3,9 @@
         "description": "N/A",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-analytics": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-analytics": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -19,5 +19,6 @@
             "psr-4": {
                 "Magento\\SalesAnalytics\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Sales/Block/Adminhtml/Order/Create/Items/Grid.php+1 1 modified
    @@ -556,7 +556,7 @@ public function getConfigureButtonHtml($item)
                 $options['onclick'] = sprintf('order.showQuoteItemConfiguration(%s)', $item->getId());
             } else {
                 $options['class'] = ' disabled';
    -            $options['title'] = $this->escapeHtml(__('This product does not have any configurable options'));
    +            $options['title'] = $this->escapeHtmlAttr(__('This product does not have any configurable options'));
             }
     
             return $this->getLayout()->createBlock(
    
  • app/code/Magento/Sales/Block/Order/Creditmemo/Items.php+1 1 modified
    @@ -97,7 +97,7 @@ public function getCommentsHtml($creditmemo)
             $html = '';
             $comments = $this->getChildBlock('creditmemo_comments');
             if ($comments) {
    -            $comments->setEntity($creditmemo)->setTitle($this->escapeHtml(__('About Your Refund')));
    +            $comments->setEntity($creditmemo)->setTitle($this->escapeHtmlAttr(__('About Your Refund')));
                 $html = $comments->toHtml();
             }
             return $html;
    
  • app/code/Magento/Sales/Block/Order/Invoice/Items.php+1 1 modified
    @@ -99,7 +99,7 @@ public function getInvoiceCommentsHtml($invoice)
             $html = '';
             $comments = $this->getChildBlock('invoice_comments');
             if ($comments) {
    -            $comments->setEntity($invoice)->setTitle($this->escapeHtml(__('About Your Invoice')));
    +            $comments->setEntity($invoice)->setTitle($this->escapeHtmlAttr(__('About Your Invoice')));
                 $html = $comments->toHtml();
             }
             return $html;
    
  • app/code/Magento/Sales/composer.json+28 27 modified
    @@ -6,34 +6,34 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-authorization": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-bundle": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-config": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-gift-message": "*",
    -        "magento/module-media-storage": "*",
    -        "magento/module-payment": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-reports": "*",
    -        "magento/module-sales-rule": "*",
    -        "magento/module-sales-sequence": "*",
    -        "magento/module-shipping": "*",
    -        "magento/module-store": "*",
    -        "magento/module-tax": "*",
    -        "magento/module-theme": "*",
    -        "magento/module-ui": "*",
    -        "magento/module-widget": "*",
    -        "magento/module-wishlist": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-authorization": "100.3.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-bundle": "100.3.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-gift-message": "100.3.*",
    +        "magento/module-media-storage": "100.3.*",
    +        "magento/module-payment": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-reports": "100.3.*",
    +        "magento/module-sales-rule": "101.1.*",
    +        "magento/module-sales-sequence": "100.3.*",
    +        "magento/module-shipping": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-tax": "100.3.*",
    +        "magento/module-theme": "101.0.*",
    +        "magento/module-ui": "101.1.*",
    +        "magento/module-widget": "101.1.*",
    +        "magento/module-wishlist": "101.1.*"
         },
         "suggest": {
    -        "magento/module-sales-sample-data": "*"
    +        "magento/module-sales-sample-data": "Sample Data version: 100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -47,5 +47,6 @@
             "psr-4": {
                 "Magento\\Sales\\": ""
             }
    -    }
    +    },
    +    "version": "102.0.5-p2"
     }
    
  • app/code/Magento/SalesGraphQl/composer.json+5 4 modified
    @@ -4,9 +4,9 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-graph-ql": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-graph-ql": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -19,5 +19,6 @@
             "psr-4": {
                 "Magento\\SalesGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.3"
     }
    
  • app/code/Magento/SalesInventory/composer.json+7 6 modified
    @@ -6,11 +6,11 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-store": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -24,5 +24,6 @@
             "psr-4": {
                 "Magento\\SalesInventory\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/SalesRule/composer.json+23 22 modified
    @@ -6,29 +6,29 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-rule": "*",
    -        "magento/module-config": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-payment": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-reports": "*",
    -        "magento/module-rule": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-shipping": "*",
    -        "magento/module-store": "*",
    -        "magento/module-ui": "*",
    -        "magento/module-widget": "*",
    -        "magento/module-captcha": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-authorization": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-rule": "101.1.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-payment": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-reports": "100.3.*",
    +        "magento/module-rule": "100.3.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-shipping": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-ui": "101.1.*",
    +        "magento/module-widget": "101.1.*",
    +        "magento/module-captcha": "100.3.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-authorization": "100.3.*"
         },
         "suggest": {
    -        "magento/module-sales-rule-sample-data": "*"
    +        "magento/module-sales-rule-sample-data": "Sample Data version: 100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -42,5 +42,6 @@
             "psr-4": {
                 "Magento\\SalesRule\\": ""
             }
    -    }
    +    },
    +    "version": "101.1.5-p2"
     }
    
  • app/code/Magento/SalesRule/Test/Mftf/Test/AdminCreateCartPriceRuleForGeneratedCouponTest.xml+5 3 modified
    @@ -55,9 +55,11 @@
             <click selector="{{AdminCartPriceRulesFormSection.generateCouponsButton}}" stepKey="clickGenerate"/>
             <see selector="{{AdminCartPriceRulesFormSection.successMessage}}" userInput="Message is added to queue, wait to get your coupons soon" stepKey="seeGenerationSuccess"/>
     
    -        <!-- Run cron twice -->
    -        <magentoCLI command="cron:run" stepKey="runCron1"/>
    -        <magentoCLI command="cron:run" stepKey="runCron2"/>
    +        <comment userInput="Apply changes" stepKey="runCron1"/>
    +        <actionGroup ref="CliConsumerStartActionGroup" stepKey="runCron2">
    +            <argument name="consumerName" value="{{AdminCodeGeneratorMessageConsumerData.consumerName}}"/>
    +            <argument name="maxMessages" value="{{AdminCodeGeneratorMessageConsumerData.messageLimit}}"/>
    +        </actionGroup>
             <reloadPage stepKey="refreshPage"/>
             <waitForPageLoad stepKey="waitFormToReload1"/>
             <click selector="{{AdminCartPriceRulesFormSection.manageCouponCodesHeader}}" stepKey="expandCouponSection2"/>
    
  • app/code/Magento/SalesRule/Test/Mftf/Test/StorefrontAutoGeneratedCouponCodeTest.xml+5 3 modified
    @@ -59,9 +59,11 @@
             <see selector="{{AdminCartPriceRulesFormSection.successMessage}}" userInput="Message is added to queue, wait to get your coupons soon"
                  stepKey="seeSuccessMessage"/>
     
    -        <!-- Run cron twice -->
    -        <magentoCLI command="cron:run" stepKey="runCron1"/>
    -        <magentoCLI command="cron:run" stepKey="runCron2"/>
    +        <comment userInput="Apply changes" stepKey="runCron1"/>
    +        <actionGroup ref="CliConsumerStartActionGroup" stepKey="runCron2">
    +            <argument name="consumerName" value="{{AdminCodeGeneratorMessageConsumerData.consumerName}}"/>
    +            <argument name="maxMessages" value="{{AdminCodeGeneratorMessageConsumerData.messageLimit}}"/>
    +        </actionGroup>
             <reloadPage stepKey="refreshPage"/>
             <waitForPageLoad stepKey="waitFormToReload1"/>
             <conditionalClick selector="{{AdminCartPriceRulesFormSection.manageCouponCodesHeader}}"
    
  • app/code/Magento/SalesSequence/composer.json+3 2 modified
    @@ -6,7 +6,7 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*"
    +        "magento/framework": "102.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -20,5 +20,6 @@
             "psr-4": {
                 "Magento\\SalesSequence\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Sales/Setup/Patch/Data/WishlistDataCleanUp.php+157 0 added
    @@ -0,0 +1,157 @@
    +<?php
    +/**
    + * Copyright © Magento, Inc. All rights reserved.
    + * See COPYING.txt for license details.
    + */
    +declare(strict_types=1);
    +namespace Magento\Sales\Setup\Patch\Data;
    +
    +use Magento\Framework\DB\Query\Generator;
    +use Magento\Framework\Exception\LocalizedException;
    +use Magento\Framework\Serialize\Serializer\Json;
    +use Magento\Framework\Setup\Patch\DataPatchInterface;
    +use Magento\Sales\Setup\SalesSetupFactory;
    +use Psr\Log\LoggerInterface;
    +
    +/**
    + * Class Clean Up Data Removes unused data
    + */
    +class WishlistDataCleanUp implements DataPatchInterface
    +{
    +    /**
    +     * Batch size for query
    +     */
    +    private const BATCH_SIZE = 1000;
    +
    +    /**
    +     * @var SalesSetupFactory
    +     */
    +    private $salesSetupFactory;
    +
    +    /**
    +     * @var Generator
    +     */
    +    private $queryGenerator;
    +
    +    /**
    +     * @var Json
    +     */
    +    private $json;
    +
    +    /**
    +     * @var LoggerInterface
    +     */
    +    private $logger;
    +
    +    /**
    +     * RemoveData constructor.
    +     * @param Json $json
    +     * @param Generator $queryGenerator
    +     * @param SalesSetupFactory $salesSetupFactory
    +     * @param LoggerInterface $logger
    +     */
    +    public function __construct(
    +        Json $json,
    +        Generator $queryGenerator,
    +        SalesSetupFactory $salesSetupFactory,
    +        LoggerInterface $logger
    +    ) {
    +        $this->json = $json;
    +        $this->queryGenerator = $queryGenerator;
    +        $this->salesSetupFactory = $salesSetupFactory;
    +        $this->logger = $logger;
    +    }
    +
    +    /**
    +     * @inheritdoc
    +     *
    +     * @SuppressWarnings(PHPMD.CyclomaticComplexity)
    +     */
    +    public function apply()
    +    {
    +        try {
    +            $this->cleanSalesOrderItemTable();
    +        } catch (\Throwable $e) {
    +            $this->logger->warning(
    +                'Sales module WishlistDataCleanUp patch experienced an error and could not be completed.'
    +                . ' Please submit a support ticket or email us at security@magento.com.'
    +            );
    +
    +            return $this;
    +        }
    +
    +        return $this;
    +    }
    +
    +    /**
    +     * Remove login data from sales_order_item table.
    +     *
    +     * @throws LocalizedException
    +     */
    +    private function cleanSalesOrderItemTable()
    +    {
    +        $salesSetup = $this->salesSetupFactory->create();
    +        $tableName = $salesSetup->getTable('sales_order_item');
    +        $select = $salesSetup
    +            ->getConnection()
    +            ->select()
    +            ->from(
    +                $tableName,
    +                ['item_id', 'product_options']
    +            )
    +            ->where(
    +                'product_options LIKE ?',
    +                '%login%'
    +            );
    +        $iterator = $this->queryGenerator->generate('item_id', $select, self::BATCH_SIZE);
    +        $rowErrorFlag = false;
    +        foreach ($iterator as $selectByRange) {
    +            $itemRows = $salesSetup->getConnection()->fetchAll($selectByRange);
    +            foreach ($itemRows as $itemRow) {
    +                try {
    +                    $rowValue = $this->json->unserialize($itemRow['product_options']);
    +                    if (is_array($rowValue)
    +                        && array_key_exists('info_buyRequest', $rowValue)
    +                        && array_key_exists('login', $rowValue['info_buyRequest'])
    +                    ) {
    +                        unset($rowValue['info_buyRequest']['login']);
    +                    }
    +                    $rowValue = $this->json->serialize($rowValue);
    +                    $salesSetup->getConnection()->update(
    +                        $tableName,
    +                        ['product_options' => $rowValue],
    +                        ['item_id = ?' => $itemRow['item_id']]
    +                    );
    +                } catch (\Throwable $e) {
    +                    $rowErrorFlag = true;
    +                    continue;
    +                }
    +            }
    +        }
    +        if ($rowErrorFlag) {
    +            $this->logger->warning(
    +                'Data clean up could not be completed due to unexpected data format in the table "'
    +                . $tableName
    +                . '". Please submit a support ticket or email us at security@magento.com.'
    +            );
    +        }
    +    }
    +
    +    /**
    +     * @inheritdoc
    +     */
    +    public static function getDependencies()
    +    {
    +        return [
    +            ConvertSerializedDataToJson::class
    +        ];
    +    }
    +
    +    /**
    +     * @inheritdoc
    +     */
    +    public function getAliases()
    +    {
    +        return [];
    +    }
    +}
    
  • app/code/Magento/Sales/Test/Mftf/Test/AdminUnassignCustomOrderStatusTest.xml+1 0 modified
    @@ -55,6 +55,7 @@
     
             <!--Click unassign and verify AssertOrderStatusSuccessUnassignMessage-->
             <click selector="{{AdminOrderStatusGridSection.unassign}}" stepKey="clickUnassign"/>
    +        <waitForElementVisible selector="{{AdminMessagesSection.success}}" stepKey="waitForSuccessMessageAppeared"/>
             <see selector="{{AdminMessagesSection.success}}" userInput="You have unassigned the order status." stepKey="seeAssertOrderStatusSuccessUnassignMessage"/>
     
             <!--Verify the order status grid page shows the updated order status and verify AssertOrderStatusInGrid-->
    
  • app/code/Magento/SampleData/composer.json+4 3 modified
    @@ -6,10 +6,10 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*"
    +        "magento/framework": "102.0.*"
         },
         "suggest": {
    -        "magento/sample-data-media": "*"
    +        "magento/sample-data-media": "Sample Data version: 100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -24,5 +24,6 @@
             "psr-4": {
                 "Magento\\SampleData\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Search/composer.json+8 7 modified
    @@ -6,12 +6,12 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog-search": "*",
    -        "magento/module-reports": "*",
    -        "magento/module-store": "*",
    -        "magento/module-ui": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog-search": "101.0.*",
    +        "magento/module-reports": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-ui": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -25,5 +25,6 @@
             "psr-4": {
                 "Magento\\Search\\": ""
             }
    -    }
    +    },
    +    "version": "101.0.5"
     }
    
  • app/code/Magento/Security/composer.json+7 6 modified
    @@ -6,13 +6,13 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-store": "*",
    -        "magento/module-user": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-user": "101.1.*"
         },
         "suggest": {
    -        "magento/module-customer": "*"
    +        "magento/module-customer": "102.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -26,5 +26,6 @@
             "psr-4": {
                 "Magento\\Security\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/SendFriend/composer.json+9 8 modified
    @@ -6,13 +6,13 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-store": "*",
    -        "magento/module-captcha": "*",
    -        "magento/module-authorization": "*",
    -        "magento/module-theme": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-captcha": "100.3.*",
    +        "magento/module-authorization": "100.3.*",
    +        "magento/module-theme": "101.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -26,5 +26,6 @@
             "psr-4": {
                 "Magento\\SendFriend\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/SendFriendGraphQl/composer.json+6 5 modified
    @@ -4,10 +4,10 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-send-friend": "*",
    -        "magento/module-graph-ql": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-send-friend": "100.3.*",
    +        "magento/module-graph-ql": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -20,5 +20,6 @@
             "psr-4": {
                 "Magento\\SendFriendGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.3"
     }
    
  • app/code/Magento/Shipping/Block/Items.php+1 1 modified
    @@ -83,7 +83,7 @@ public function getCommentsHtml($shipment)
             $html = '';
             $comments = $this->getChildBlock('shipment_comments');
             if ($comments) {
    -            $comments->setEntity($shipment)->setTitle($this->escapeHtml(__('About Your Shipment')));
    +            $comments->setEntity($shipment)->setTitle($this->escapeHtmlAttr(__('About Your Shipment')));
                 $html = $comments->toHtml();
             }
             return $html;
    
  • app/code/Magento/Shipping/composer.json+19 18 modified
    @@ -7,25 +7,25 @@
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
             "ext-gd": "*",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-inventory": "*",
    -        "magento/module-contact": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-payment": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-store": "*",
    -        "magento/module-tax": "*",
    -        "magento/module-ui": "*",
    -        "magento/module-user": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-inventory": "100.3.*",
    +        "magento/module-contact": "100.3.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-payment": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-tax": "100.3.*",
    +        "magento/module-ui": "101.1.*",
    +        "magento/module-user": "101.1.*"
         },
         "suggest": {
    -        "magento/module-fedex": "*",
    -        "magento/module-ups": "*",
    -        "magento/module-config": "*"
    +        "magento/module-fedex": "100.3.*",
    +        "magento/module-ups": "100.3.*",
    +        "magento/module-config": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -39,5 +39,6 @@
             "psr-4": {
                 "Magento\\Shipping\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5-p2"
     }
    
  • app/code/Magento/Signifyd/Api/CaseCreationServiceInterface.php+1 1 modified
    @@ -13,7 +13,7 @@
      *
      * @api
      * @since 100.2.0
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     interface CaseCreationServiceInterface
    
  • app/code/Magento/Signifyd/Api/CaseManagementInterface.php+1 1 modified
    @@ -11,7 +11,7 @@
      *
      * @api
      * @since 100.2.0
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     interface CaseManagementInterface
    
  • app/code/Magento/Signifyd/Api/CaseRepositoryInterface.php+1 1 modified
    @@ -10,7 +10,7 @@
      *
      * @api
      * @since 100.2.0
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     interface CaseRepositoryInterface
    
  • app/code/Magento/Signifyd/Api/Data/CaseInterface.php+1 1 modified
    @@ -13,7 +13,7 @@
      * @api
      * @see https://www.signifyd.com/docs/api/#/reference/cases/retrieve-a-case/get-a-case
      * @since 100.2.0
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     interface CaseInterface
    
  • app/code/Magento/Signifyd/Api/Data/CaseSearchResultsInterface.php+1 1 modified
    @@ -12,7 +12,7 @@
      *
      * @api
      * @since 100.2.0
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     interface CaseSearchResultsInterface extends SearchResultsInterface
    
  • app/code/Magento/Signifyd/Api/GuaranteeCancelingServiceInterface.php+1 1 modified
    @@ -13,7 +13,7 @@
      *
      * @api
      * @since 100.2.0
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     interface GuaranteeCancelingServiceInterface
    
  • app/code/Magento/Signifyd/Api/GuaranteeCreationServiceInterface.php+1 1 modified
    @@ -13,7 +13,7 @@
      *
      * @api
      * @since 100.2.0
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     interface GuaranteeCreationServiceInterface
    
  • app/code/Magento/Signifyd/Block/Adminhtml/CaseInfo.php+1 1 modified
    @@ -15,7 +15,7 @@
      *
      * @api
      * @since 100.2.0
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class CaseInfo extends Template
    
  • app/code/Magento/Signifyd/Block/Adminhtml/System/Config/Fieldset/Info.php+1 1 modified
    @@ -10,7 +10,7 @@
     /**
      * Fieldset renderer with url attached to comment.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class Info extends Fieldset
    
  • app/code/Magento/Signifyd/Block/Adminhtml/System/Config/Field/WebhookUrl.php+1 1 modified
    @@ -13,7 +13,7 @@
     /**
      * Input field transformed to text node with link to store Signifyd webhooks controller.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class WebhookUrl extends Field
    
  • app/code/Magento/Signifyd/Block/Fingerprint.php+1 1 modified
    @@ -20,7 +20,7 @@
      * @api
      * @see https://www.signifyd.com/docs/api/#/reference/device-fingerprint/create-a-case
      * @since 100.2.0
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class Fingerprint extends Template
    
  • app/code/Magento/Signifyd/composer.json+12 11 modified
    @@ -5,19 +5,19 @@
             "sort-packages": true
         },
         "require": {
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-config": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-payment": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-store": "*",
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-payment": "100.3.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-store": "101.0.*",
             "php": "~7.1.3||~7.2.0||~7.3.0"
         },
         "suggest": {
    -        "magento/module-config": "*"
    +        "magento/module-config": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -31,5 +31,6 @@
             "psr-4": {
                 "Magento\\Signifyd\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Signifyd/Controller/Webhooks/Handler.php+1 1 modified
    @@ -22,7 +22,7 @@
      * Responsible for handling webhook posts from Signifyd service.
      *
      * @see https://www.signifyd.com/docs/api/#/reference/webhooks/
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class Handler extends Action implements \Magento\Framework\App\CsrfAwareActionInterface
    
  • app/code/Magento/Signifyd/Model/CaseEntity.php+1 1 modified
    @@ -16,7 +16,7 @@
     /**
      * Implementation of Signifyd Case interface.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class CaseEntity extends AbstractModel implements CaseInterface
    
  • app/code/Magento/Signifyd/Model/CaseManagement.php+1 1 modified
    @@ -18,7 +18,7 @@
      *
      * Default case management implementation
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class CaseManagement implements CaseManagementInterface
    
  • app/code/Magento/Signifyd/Model/CaseRepository.php+1 1 modified
    @@ -20,7 +20,7 @@
      * Repository for Case interface
      *
      * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class CaseRepository implements CaseRepositoryInterface
    
  • app/code/Magento/Signifyd/Model/CaseSearchResults.php+1 1 modified
    @@ -13,7 +13,7 @@
     /**
      * Service Data Object with Case entities search results.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class CaseSearchResults extends SearchResults implements CaseSearchResultsInterface
    
  • app/code/Magento/Signifyd/Model/CaseServices/CreationService.php+1 1 modified
    @@ -19,7 +19,7 @@
      *
      * Creates new Case entity and register it at Signifyd
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class CreationService implements CaseCreationServiceInterface
    
  • app/code/Magento/Signifyd/Model/CaseServices/StubUpdatingService.php+1 1 modified
    @@ -11,7 +11,7 @@
      * Stub implementation for case updating service interface and might be used
      * for test Signifyd webhooks
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class StubUpdatingService implements UpdatingServiceInterface
    
  • app/code/Magento/Signifyd/Model/CaseServices/UpdatingServiceFactory.php+1 1 modified
    @@ -14,7 +14,7 @@
      * The message generator initialization depends on specified type (like, case creation, re-scoring, review and
      * guarantee completion).
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class UpdatingServiceFactory
    
  • app/code/Magento/Signifyd/Model/CaseServices/UpdatingServiceInterface.php+1 1 modified
    @@ -10,7 +10,7 @@
     /**
      * Common abstraction to perform updating operations with Signifyd case entity.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     interface UpdatingServiceInterface
    
  • app/code/Magento/Signifyd/Model/CaseServices/UpdatingService.php+1 1 modified
    @@ -17,7 +17,7 @@
     /**
      * Performs Signifyd case entity updating operations.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class UpdatingService implements UpdatingServiceInterface
    
  • app/code/Magento/Signifyd/Model/CommentsHistoryUpdater.php+1 1 modified
    @@ -13,7 +13,7 @@
     /**
      * Updates case order comments history.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class CommentsHistoryUpdater
    
  • app/code/Magento/Signifyd/Model/Config.php+1 1 modified
    @@ -13,7 +13,7 @@
      *
      * Class is a proxy service for retrieving configuration settings.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class Config
    
  • app/code/Magento/Signifyd/Model/CustomerOrders.php+1 1 modified
    @@ -18,7 +18,7 @@
      * Provides information about customer orders.
      *
      * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class CustomerOrders
    
  • app/code/Magento/Signifyd/Model/Guarantee/CancelGuaranteeAbility.php+1 1 modified
    @@ -14,7 +14,7 @@
     /**
      * Checks if is possible to cancel Guarantee for order.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class CancelGuaranteeAbility
    
  • app/code/Magento/Signifyd/Model/Guarantee/CancelingService.php+1 1 modified
    @@ -15,7 +15,7 @@
     /**
      * Sends request to Signifyd to cancel guarantee and updates case entity.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class CancelingService implements GuaranteeCancelingServiceInterface
    
  • app/code/Magento/Signifyd/Model/Guarantee/CreateGuaranteeAbility.php+1 1 modified
    @@ -16,7 +16,7 @@
     /**
      * Checks if is possible to create Guarantee for order.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class CreateGuaranteeAbility
    
  • app/code/Magento/Signifyd/Model/Guarantee/CreationService.php+1 1 modified
    @@ -17,7 +17,7 @@
     /**
      * Register guarantee at Signifyd and updates case entity
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class CreationService implements GuaranteeCreationServiceInterface
    
  • app/code/Magento/Signifyd/Model/MessageGenerators/CaseRescore.php+1 1 modified
    @@ -10,7 +10,7 @@
     /**
      * Generates message based on previous and current Case scores.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class CaseRescore implements GeneratorInterface
    
  • app/code/Magento/Signifyd/Model/MessageGenerators/GeneratorException.php+1 1 modified
    @@ -12,7 +12,7 @@
      *
      * @api
      * @since 100.2.0
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class GeneratorException extends LocalizedException
    
  • app/code/Magento/Signifyd/Model/MessageGenerators/GeneratorFactory.php+1 1 modified
    @@ -11,7 +11,7 @@
     /**
      * Creates instance of message generator based on received type of message.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class GeneratorFactory
    
  • app/code/Magento/Signifyd/Model/MessageGenerators/GeneratorInterface.php+1 1 modified
    @@ -9,7 +9,7 @@
      * Represents common abstraction for Signifyd Case/Guarantee messages.
      * Each interface implementation might use Case/Guarantee data to generate specific message.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     interface GeneratorInterface
    
  • app/code/Magento/Signifyd/Model/MessageGenerators/PatternGenerator.php+1 1 modified
    @@ -15,7 +15,7 @@
      * Message is 'Case Update: New score for the order is %1. Previous score was %2.', then the required params order
      * should be ['new_score', 'prev_score'].
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class PatternGenerator implements GeneratorInterface
    
  • app/code/Magento/Signifyd/Model/OrderStateService.php+1 1 modified
    @@ -13,7 +13,7 @@
     /**
      * Updates order state.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class OrderStateService
    
  • app/code/Magento/Signifyd/Model/PaymentMethodMapper/PaymentMethodMapper.php+1 1 modified
    @@ -10,7 +10,7 @@
     /**
      * Load and cache configuration data.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class PaymentMethodMapper
    
  • app/code/Magento/Signifyd/Model/PaymentMethodMapper/XmlToArrayConfigConverter.php+1 1 modified
    @@ -10,7 +10,7 @@
     /**
      * Converts XML config file to payment methods mapping.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class XmlToArrayConfigConverter implements \Magento\Framework\Config\ConverterInterface
    
  • app/code/Magento/Signifyd/Model/PaymentVerificationFactory.php+1 1 modified
    @@ -14,7 +14,7 @@
      * Creates verification service for provided payment method, or PaymentVerificationInterface::class
      * if payment method does not support AVS, CVV verifications.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class PaymentVerificationFactory
    
  • app/code/Magento/Signifyd/Model/PredefinedVerificationCode.php+1 1 modified
    @@ -12,7 +12,7 @@
      * Default implementation of payment verification interface.
      * The default code value can be configured via DI.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class PredefinedVerificationCode implements PaymentVerificationInterface
    
  • app/code/Magento/Signifyd/Model/QuoteSession/Adminhtml/BackendSession.php+1 1 modified
    @@ -11,7 +11,7 @@
     /**
      * Implementation of QuoteSessionInterface for Magento backend checkout.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class BackendSession implements QuoteSessionInterface
    
  • app/code/Magento/Signifyd/Model/QuoteSession/FrontendSession.php+1 1 modified
    @@ -10,7 +10,7 @@
     /**
      * Implementation of QuoteSessionInterface for Magento frontend checkout.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class FrontendSession implements QuoteSessionInterface
    
  • app/code/Magento/Signifyd/Model/QuoteSession/QuoteSessionInterface.php+1 1 modified
    @@ -8,7 +8,7 @@
     /**
      * Interface QuoteSessionInterface
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     interface QuoteSessionInterface
    
  • app/code/Magento/Signifyd/Model/ResourceModel/CaseEntity/Collection.php+1 1 modified
    @@ -12,7 +12,7 @@
     /**
      * Collection of case entities
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class Collection extends AbstractCollection
    
  • app/code/Magento/Signifyd/Model/ResourceModel/CaseEntity.php+1 1 modified
    @@ -10,7 +10,7 @@
     /**
      * Implementation of case resource model
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class CaseEntity extends AbstractDb
    
  • app/code/Magento/Signifyd/Model/SalesOrderGrid/NotSyncedOrderIdListProvider.php+1 1 modified
    @@ -12,7 +12,7 @@
     /**
      * Provides order ids list which Signifyd Case guaranty status were changed
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class NotSyncedOrderIdListProvider implements NotSyncedDataProviderInterface
    
  • app/code/Magento/Signifyd/Model/SalesOrderGrid/OrderGridUpdater.php+1 1 modified
    @@ -13,7 +13,7 @@
      *
      * Serves order grid updates in both synchronous and asynchronous modes.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class OrderGridUpdater
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/ApiCallException.php+1 1 modified
    @@ -8,7 +8,7 @@
     /**
      * Exception of interaction with Signifyd API
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class ApiCallException extends GatewayException
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/ApiClient.php+1 1 modified
    @@ -10,7 +10,7 @@
     /**
      * Encapsulates Signifyd API protocol.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class ApiClient
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Client/HttpClientFactory.php+1 1 modified
    @@ -14,7 +14,7 @@
      * Class HttpClientFactory
      * Creates and configures HTTP client for RequestBuilder
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class HttpClientFactory
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Client/RequestBuilder.php+1 1 modified
    @@ -9,7 +9,7 @@
      * Class RequestBuilder
      * Creates HTTP client, sends request to Signifyd and handles response
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class RequestBuilder
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Client/RequestSender.php+1 1 modified
    @@ -13,7 +13,7 @@
      * Class RequestSender
      * Gets HTTP client end sends request to Signifyd API
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class RequestSender
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Client/ResponseHandler.php+1 1 modified
    @@ -11,7 +11,7 @@
     /**
      * Class ResponseHandler
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class ResponseHandler
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Debugger/BlackHole.php+1 1 modified
    @@ -11,7 +11,7 @@
      * This debugger ignores any information.
      * Optimal production environment.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class BlackHole implements DebuggerInterface
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Debugger/DebuggerFactory.php+1 1 modified
    @@ -15,7 +15,7 @@
      *  - config.xml
      *  - at Admin panel (Stores > Configuration > Sales > Fraud Detection > Signifyd > Debug)
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class DebuggerFactory
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Debugger/DebuggerInterface.php+1 1 modified
    @@ -10,7 +10,7 @@
     /**
      * Interface for debugging interaction with Signifyd API
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     interface DebuggerInterface
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Debugger/Log.php+1 1 modified
    @@ -11,7 +11,7 @@
     /**
      * Debugger writes information about request, response and possible exception to standard system log.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class Log implements DebuggerInterface
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/GatewayException.php+1 1 modified
    @@ -8,7 +8,7 @@
     /**
      * Exception of interaction with Signifyd API
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class GatewayException extends \Exception
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Gateway.php+1 1 modified
    @@ -14,7 +14,7 @@
      *
      * Encapsulates interaction with Signifyd API.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class Gateway
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Request/AddressBuilder.php+1 1 modified
    @@ -10,7 +10,7 @@
     /**
      * Prepare address data
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class AddressBuilder
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Request/CardBuilder.php+1 1 modified
    @@ -10,7 +10,7 @@
     /**
      * Prepare data related to the card that was used for the purchase and its cardholder.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class CardBuilder
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Request/ClientVersionBuilder.php+1 1 modified
    @@ -10,7 +10,7 @@
     /**
      * Provides platform name, edition and version info
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class ClientVersionBuilder
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Request/CreateCaseBuilderInterface.php+1 1 modified
    @@ -10,7 +10,7 @@
      *
      * @see https://www.signifyd.com/docs/api/#/reference/cases/create-a-case
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     interface CreateCaseBuilderInterface
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Request/CreateCaseBuilder.php+1 1 modified
    @@ -12,7 +12,7 @@
      *
      * Handles the conversion from Magento Order to Signifyd Case.
      * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class CreateCaseBuilder implements CreateCaseBuilderInterface
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Request/PurchaseBuilder.php+1 1 modified
    @@ -18,7 +18,7 @@
     /**
      * Prepare data related to purchase event represented in case creation request.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class PurchaseBuilder
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Request/RecipientBuilder.php+1 1 modified
    @@ -10,7 +10,7 @@
     /**
      * Prepare data related to person or organization receiving the items purchased
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class RecipientBuilder
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Request/SellerBuilder.php+1 1 modified
    @@ -19,7 +19,7 @@
      * This information is optional unless you are operating a marketplace,
      * listing goods on behalf of multiple sellers who each hold a seller account registered with your site.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class SellerBuilder
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Request/UserAccountBuilder.php+1 1 modified
    @@ -11,7 +11,7 @@
     /**
      * Prepares details based on registered user account info
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class UserAccountBuilder
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Response/WebhookMessage.php+1 1 modified
    @@ -14,7 +14,7 @@
      *
      * @see https://www.signifyd.com/docs/api/#/reference/webhooks
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class WebhookMessage
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Response/WebhookMessageReader.php+1 1 modified
    @@ -10,7 +10,7 @@
     /**
      * Reads request and produces webhook message data object based on request params.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class WebhookMessageReader
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Response/WebhookRequest.php+1 1 modified
    @@ -10,7 +10,7 @@
     /**
      *  Reads Signifyd webhook request data.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class WebhookRequest
    
  • app/code/Magento/Signifyd/Model/SignifydGateway/Response/WebhookRequestValidator.php+1 1 modified
    @@ -11,7 +11,7 @@
     /**
      * Validates webhook request.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class WebhookRequestValidator
    
  • app/code/Magento/Signifyd/Model/SignifydOrderSessionId.php+1 1 modified
    @@ -10,7 +10,7 @@
     /**
      * Encapsulates generation of uuid by quote id.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class SignifydOrderSessionId
    
  • app/code/Magento/Signifyd/Observer/PlaceOrder.php+1 1 modified
    @@ -19,7 +19,7 @@
      * Observer should be triggered when new order is created and placed.
      * If Signifyd integration enabled in configuration then new case will be created.
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class PlaceOrder implements ObserverInterface
    
  • app/code/Magento/Signifyd/Plugin/OrderPlugin.php+1 1 modified
    @@ -13,7 +13,7 @@
      * Plugin for Magento\Sales\Model\Order.
      *
      * @see Order
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class OrderPlugin
    
  • app/code/Magento/Signifyd/Plugin/PaymentPlugin.php+1 1 modified
    @@ -13,7 +13,7 @@
      * Plugin for Magento\Payment\Model\MethodInterface.
      *
      * @see MethodInterface
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class PaymentPlugin
    
  • app/code/Magento/Signifyd/Ui/Component/Listing/Column/Guarantee/Options.php+1 1 modified
    @@ -12,7 +12,7 @@
     /**
      * Class Options
      *
    - * @deprecated Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
    + * @deprecated 100.3.5 Starting from Magento 2.3.5 Signifyd core integration is deprecated in favor of
      * official Signifyd integration available on the marketplace
      */
     class Options implements OptionSourceInterface
    
  • app/code/Magento/Sitemap/composer.json+13 12 modified
    @@ -6,19 +6,19 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-catalog-url-rewrite": "*",
    -        "magento/module-cms": "*",
    -        "magento/module-config": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-media-storage": "*",
    -        "magento/module-robots": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-catalog-url-rewrite": "100.3.*",
    +        "magento/module-cms": "103.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-media-storage": "100.3.*",
    +        "magento/module-robots": "101.0.*",
    +        "magento/module-store": "101.0.*"
         },
         "suggest": {
    -        "magento/module-config": "*"
    +        "magento/module-config": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -32,5 +32,6 @@
             "psr-4": {
                 "Magento\\Sitemap\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/Store/composer.json+12 11 modified
    @@ -6,18 +6,18 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-config": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-media-storage": "*",
    -        "magento/module-ui": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-authorization": "*",
    -        "magento/module-backend": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-media-storage": "100.3.*",
    +        "magento/module-ui": "101.1.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-authorization": "100.3.*",
    +        "magento/module-backend": "101.0.*"
         },
         "suggest": {
    -        "magento/module-deploy": "*"
    +        "magento/module-deploy": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -31,5 +31,6 @@
             "psr-4": {
                 "Magento\\Store\\": ""
             }
    -    }
    +    },
    +    "version": "101.0.5"
     }
    
  • app/code/Magento/StoreGraphQl/composer.json+5 4 modified
    @@ -4,9 +4,9 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-store": "*",
    -        "magento/module-graph-ql": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-graph-ql": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -19,5 +19,6 @@
             "psr-4": {
                 "Magento\\StoreGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Store/Model/Store.php+1 1 modified
    @@ -278,7 +278,7 @@ class Store extends AbstractExtensibleModel implements
     
         /**
          * @var \Magento\Framework\Session\SidResolverInterface
    -     * @deprecated Not used anymore.
    +     * @deprecated 101.0.5 Not used anymore.
          */
         protected $_sidResolver;
     
    
  • app/code/Magento/Swagger/composer.json+3 2 modified
    @@ -6,7 +6,7 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*"
    +        "magento/framework": "102.0.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -20,5 +20,6 @@
             "psr-4": {
                 "Magento\\Swagger\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/SwaggerWebapiAsync/composer.json+5 4 modified
    @@ -6,11 +6,11 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-swagger": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-swagger": "100.3.*"
         },
         "suggest": {
    -        "magento/module-config": "*"
    +        "magento/module-config": "101.1.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -24,5 +24,6 @@
             "psr-4": {
                 "Magento\\SwaggerWebapiAsync\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/SwaggerWebapi/composer.json+4 3 modified
    @@ -6,8 +6,8 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-swagger": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-swagger": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -21,5 +21,6 @@
             "psr-4": {
                 "Magento\\SwaggerWebapi\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Swatches/composer.json+15 14 modified
    @@ -6,21 +6,21 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-config": "*",
    -        "magento/module-configurable-product": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-page-cache": "*",
    -        "magento/module-media-storage": "*",
    -        "magento/module-store": "*",
    -        "magento/module-theme": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-configurable-product": "100.3.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-page-cache": "100.3.*",
    +        "magento/module-media-storage": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-theme": "101.0.*"
         },
         "suggest": {
    -        "magento/module-layered-navigation": "*",
    -        "magento/module-swatches-sample-data": "*"
    +        "magento/module-layered-navigation": "100.3.*",
    +        "magento/module-swatches-sample-data": "Sample Data version: 100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -34,5 +34,6 @@
             "psr-4": {
                 "Magento\\Swatches\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/SwatchesGraphQl/composer.json+6 5 modified
    @@ -4,12 +4,12 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-swatches": "*",
    -        "magento/module-catalog": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-swatches": "100.3.*",
    +        "magento/module-catalog": "103.0.*"
         },
         "suggest": {
    -        "magento/module-catalog-graph-ql": "*"
    +        "magento/module-catalog-graph-ql": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -22,5 +22,6 @@
             "psr-4": {
                 "Magento\\SwatchesGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/SwatchesLayeredNavigation/composer.json+3 2 modified
    @@ -6,7 +6,7 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    +        "magento/framework": "102.0.*",
             "magento/magento-composer-installer": "*"
         },
         "type": "magento2-module",
    @@ -21,5 +21,6 @@
             "psr-4": {
                 "Magento\\SwatchesLayeredNavigation\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/Tax/composer.json+17 16 modified
    @@ -6,23 +6,23 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-catalog": "*",
    -        "magento/module-checkout": "*",
    -        "magento/module-config": "*",
    -        "magento/module-customer": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-eav": "*",
    -        "magento/module-page-cache": "*",
    -        "magento/module-quote": "*",
    -        "magento/module-reports": "*",
    -        "magento/module-sales": "*",
    -        "magento/module-shipping": "*",
    -        "magento/module-store": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-catalog": "103.0.*",
    +        "magento/module-checkout": "100.3.*",
    +        "magento/module-config": "101.1.*",
    +        "magento/module-customer": "102.0.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-eav": "102.0.*",
    +        "magento/module-page-cache": "100.3.*",
    +        "magento/module-quote": "101.1.*",
    +        "magento/module-reports": "100.3.*",
    +        "magento/module-sales": "102.0.*",
    +        "magento/module-shipping": "100.3.*",
    +        "magento/module-store": "101.0.*"
         },
         "suggest": {
    -        "magento/module-tax-sample-data": "*"
    +        "magento/module-tax-sample-data": "Sample Data version: 100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -36,5 +36,6 @@
             "psr-4": {
                 "Magento\\Tax\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.5"
     }
    
  • app/code/Magento/TaxGraphQl/composer.json+5 4 modified
    @@ -4,11 +4,11 @@
         "type": "magento2-module",
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*"
    +        "magento/framework": "102.0.*"
         },
         "suggest": {
    -        "magento/module-tax": "*",
    -        "magento/module-catalog-graph-ql": "*"
    +        "magento/module-tax": "100.3.*",
    +        "magento/module-catalog-graph-ql": "100.3.*"
         },
         "license": [
             "OSL-3.0",
    @@ -21,5 +21,6 @@
             "psr-4": {
                 "Magento\\TaxGraphQl\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    
  • app/code/Magento/TaxImportExport/composer.json+7 6 modified
    @@ -6,11 +6,11 @@
         },
         "require": {
             "php": "~7.1.3||~7.2.0||~7.3.0",
    -        "magento/framework": "*",
    -        "magento/module-backend": "*",
    -        "magento/module-directory": "*",
    -        "magento/module-store": "*",
    -        "magento/module-tax": "*"
    +        "magento/framework": "102.0.*",
    +        "magento/module-backend": "101.0.*",
    +        "magento/module-directory": "100.3.*",
    +        "magento/module-store": "101.0.*",
    +        "magento/module-tax": "100.3.*"
         },
         "type": "magento2-module",
         "license": [
    @@ -24,5 +24,6 @@
             "psr-4": {
                 "Magento\\TaxImportExport\\": ""
             }
    -    }
    +    },
    +    "version": "100.3.4"
     }
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

4

News mentions

0

No linked articles in our index yet.