From 41d5657e91e6ac36be6ec4aae0a60c08da9898e6 Mon Sep 17 00:00:00 2001
From: Maximilian Fickers <m.fickers@basecom.de>
Date: Tue, 19 Apr 2022 18:22:59 +0200
Subject: [PATCH 01/14] Allow empty constructor function blocks when using
 property promotion

---
 Magento2/Sniffs/CodeAnalysis/EmptyBlockSniff.php   | 11 +++++++++++
 Magento2/Tests/CodeAnalysis/EmptyBlockUnitTest.inc | 12 ++++++++++++
 Magento2/Tests/CodeAnalysis/EmptyBlockUnitTest.php |  2 ++
 3 files changed, 25 insertions(+)

diff --git a/Magento2/Sniffs/CodeAnalysis/EmptyBlockSniff.php b/Magento2/Sniffs/CodeAnalysis/EmptyBlockSniff.php
index da089029..87c60a62 100644
--- a/Magento2/Sniffs/CodeAnalysis/EmptyBlockSniff.php
+++ b/Magento2/Sniffs/CodeAnalysis/EmptyBlockSniff.php
@@ -37,6 +37,17 @@ public function process(File $phpcsFile, $stackPtr)
             return;
         }
 
+        // Ignore empty constructor function blocks when using property promotion
+        if ($tokens[$stackPtr]['code'] === T_FUNCTION &&
+            strpos($phpcsFile->getDeclarationName($stackPtr), '__construct') === 0 &&
+            count($phpcsFile->getMethodParameters($stackPtr)) > 0 &&
+            array_reduce($phpcsFile->getMethodParameters($stackPtr), static function ($result, $methodParam) {
+                return $result && isset($methodParam['property_visibility']);
+            }, true)) {
+
+            return;
+        }
+
         parent::process($phpcsFile, $stackPtr);
     }//end process()
 }
diff --git a/Magento2/Tests/CodeAnalysis/EmptyBlockUnitTest.inc b/Magento2/Tests/CodeAnalysis/EmptyBlockUnitTest.inc
index 6fb834d8..55b4ab4c 100644
--- a/Magento2/Tests/CodeAnalysis/EmptyBlockUnitTest.inc
+++ b/Magento2/Tests/CodeAnalysis/EmptyBlockUnitTest.inc
@@ -76,3 +76,15 @@ function emptyFunction () { /*Empty function block*/ }
 function nonEmptyFunction () { return true; }
 
 function aroundEmptyFunction ($foo, $bar) { }
+
+class Foo {
+    public function __construct(private $bar) {}
+}
+
+class Foo2 {
+    public function __construct() {}
+}
+
+class Foo3 {
+    public function __construct(private $bar, $baz) {}
+}
diff --git a/Magento2/Tests/CodeAnalysis/EmptyBlockUnitTest.php b/Magento2/Tests/CodeAnalysis/EmptyBlockUnitTest.php
index 7959eaa0..e655d79e 100644
--- a/Magento2/Tests/CodeAnalysis/EmptyBlockUnitTest.php
+++ b/Magento2/Tests/CodeAnalysis/EmptyBlockUnitTest.php
@@ -29,6 +29,8 @@ public function getErrorList()
             68 => 1,
             72 => 2,
             74 => 1,
+            85 => 1,
+            89 => 1
         ];
     }
 

From 223a265cbdceba04aae60777077ff02832cf4449 Mon Sep 17 00:00:00 2001
From: Sergio Vera <svera@adobe.com>
Date: Mon, 20 Jun 2022 16:33:59 +0200
Subject: [PATCH 02/14] AC-3520: Avoid processing less and CSS pseudo-classes

---
 Magento2/Sniffs/Less/ColonSpacingSniff.php    | 11 +++---
 Magento2/Tests/Less/ColonSpacingUnitTest.less | 34 ++++++++++++++++---
 2 files changed, 36 insertions(+), 9 deletions(-)

diff --git a/Magento2/Sniffs/Less/ColonSpacingSniff.php b/Magento2/Sniffs/Less/ColonSpacingSniff.php
index 505c44fd..73bf661b 100644
--- a/Magento2/Sniffs/Less/ColonSpacingSniff.php
+++ b/Magento2/Sniffs/Less/ColonSpacingSniff.php
@@ -60,12 +60,15 @@ private function needValidateSpaces(File $phpcsFile, $stackPtr, $tokens)
             return false;
         }
 
-        $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($stackPtr - 1), null, true);
-        if ($tokens[$prev]['code'] !== T_STYLE) {
-            // The colon is not part of a style definition.
-            return false;
+        // Avoid false positives when parsing pseudo-classes
+        if ($tokens[$stackPtr]['code'] === T_COLON) {
+            $next = $phpcsFile->findNext([T_SEMICOLON, T_OPEN_CURLY_BRACKET], $stackPtr + 1);
+            if ($tokens[$next]['code'] === T_OPEN_CURLY_BRACKET) {
+                return false;
+            }
         }
 
+        $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($stackPtr - 1), null, true);
         if ($tokens[$prev]['content'] === 'progid') {
             // Special case for IE filters.
             return false;
diff --git a/Magento2/Tests/Less/ColonSpacingUnitTest.less b/Magento2/Tests/Less/ColonSpacingUnitTest.less
index 37de49e4..d6b76d84 100644
--- a/Magento2/Tests/Less/ColonSpacingUnitTest.less
+++ b/Magento2/Tests/Less/ColonSpacingUnitTest.less
@@ -5,22 +5,46 @@
 
 
 div#foo {
-  blah:'abc';
+    blah:'abc';
 }
 
 .my #foo .blah {
-  some:  'stuff';
+    some:  'stuff';
 }
 
 .blah {
-  foo :'jkl';
+    foo :'jkl';
 }
 
 .foo {
-  bar:
+    bar:
           'xyz';
 }
 
 .right {
-  way: 'good'
+    way: 'good';
 }
+
+a:active {
+    color: #000;
+}
+
+@abs-action-button-as-link: {
+    &:not(:focus) {
+        box-shadow: none;
+    }
+}
+
+.actions-toolbar {
+    &:not(:first-child) {
+        &:extend(.abs-add-clearfix all);
+            > .secondary {
+                .action {
+                    &.add {
+                        margin-top: @indent__l;
+                    }
+                }
+            float: left;
+        }
+    }
+}
\ No newline at end of file

From 24dc36774e1b00b223ff7a15dae8710cea59e268 Mon Sep 17 00:00:00 2001
From: Sergio Vera <svera@adobe.com>
Date: Mon, 20 Jun 2022 16:35:25 +0200
Subject: [PATCH 03/14] AC-3520: Newline

---
 Magento2/Tests/Less/ColonSpacingUnitTest.less | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Magento2/Tests/Less/ColonSpacingUnitTest.less b/Magento2/Tests/Less/ColonSpacingUnitTest.less
index d6b76d84..cd6a3fd3 100644
--- a/Magento2/Tests/Less/ColonSpacingUnitTest.less
+++ b/Magento2/Tests/Less/ColonSpacingUnitTest.less
@@ -47,4 +47,4 @@ a:active {
             float: left;
         }
     }
-}
\ No newline at end of file
+}

From 31335a0a1fd54cd5b4de926637ce4fb44d6e2168 Mon Sep 17 00:00:00 2001
From: Sergio Vera <svera@adobe.com>
Date: Mon, 20 Jun 2022 16:45:25 +0200
Subject: [PATCH 04/14] AC-3520: Removed unneeded if

---
 Magento2/Sniffs/Less/ColonSpacingSniff.php | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/Magento2/Sniffs/Less/ColonSpacingSniff.php b/Magento2/Sniffs/Less/ColonSpacingSniff.php
index 73bf661b..6b68ea65 100644
--- a/Magento2/Sniffs/Less/ColonSpacingSniff.php
+++ b/Magento2/Sniffs/Less/ColonSpacingSniff.php
@@ -61,11 +61,9 @@ private function needValidateSpaces(File $phpcsFile, $stackPtr, $tokens)
         }
 
         // Avoid false positives when parsing pseudo-classes
-        if ($tokens[$stackPtr]['code'] === T_COLON) {
-            $next = $phpcsFile->findNext([T_SEMICOLON, T_OPEN_CURLY_BRACKET], $stackPtr + 1);
-            if ($tokens[$next]['code'] === T_OPEN_CURLY_BRACKET) {
-                return false;
-            }
+        $next = $phpcsFile->findNext([T_SEMICOLON, T_OPEN_CURLY_BRACKET], $stackPtr + 1);
+        if ($tokens[$next]['code'] === T_OPEN_CURLY_BRACKET) {
+            return false;
         }
 
         $prev = $phpcsFile->findPrevious(Tokens::$emptyTokens, ($stackPtr - 1), null, true);

From e1495a5c6662004ef3cf57ca3b1d667750bdba84 Mon Sep 17 00:00:00 2001
From: Sergio Vera <svera@adobe.com>
Date: Tue, 21 Jun 2022 12:19:52 +0200
Subject: [PATCH 05/14] Bump to version 25

---
 composer.json | 2 +-
 composer.lock | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/composer.json b/composer.json
index 87ce22fe..69f6abaf 100644
--- a/composer.json
+++ b/composer.json
@@ -6,7 +6,7 @@
         "AFL-3.0"
     ],
     "type": "phpcodesniffer-standard",
-    "version": "24",
+    "version": "25",
     "require": {
         "php": ">=7.3",
         "webonyx/graphql-php": "^14.9",
diff --git a/composer.lock b/composer.lock
index 167507c3..563cd8b9 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "648f4cf3962dc24fb1bdd135071b61bb",
+    "content-hash": "4545f720f14d1d67c1b4684e624da98b",
     "packages": [
         {
             "name": "phpcompatibility/php-compatibility",

From a05e40f92ccba54548a49f1033c3394666bad3e3 Mon Sep 17 00:00:00 2001
From: Rafal Janicki <rjanicki@adobe.com>
Date: Thu, 30 Jun 2022 11:44:41 +0100
Subject: [PATCH 06/14] Fix Rector tests

---
 .../config/configured_rule.php                           | 9 ++++-----
 .../ReplaceMbStrposNullLimit/config/configured_rule.php  | 9 ++++-----
 .../ReplaceNewDateTimeNull/config/configured_rule.php    | 9 ++++-----
 .../ReplacePregSplitNullLimit/config/configured_rule.php | 9 ++++-----
 4 files changed, 16 insertions(+), 20 deletions(-)

diff --git a/Magento2/Rector/Tests/AddArrayAccessInterfaceReturnTypes/config/configured_rule.php b/Magento2/Rector/Tests/AddArrayAccessInterfaceReturnTypes/config/configured_rule.php
index 13e377ff..ab2ece4a 100644
--- a/Magento2/Rector/Tests/AddArrayAccessInterfaceReturnTypes/config/configured_rule.php
+++ b/Magento2/Rector/Tests/AddArrayAccessInterfaceReturnTypes/config/configured_rule.php
@@ -1,14 +1,13 @@
 <?php
 /**
- * Copyright 2021 Adobe
+ * Copyright 2022 Adobe
  * See COPYING.txt for license details.
  */
 declare(strict_types=1);
 
 use Magento2\Rector\Src\AddArrayAccessInterfaceReturnTypes;
-use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
+use Rector\Config\RectorConfig;
 
-return static function (ContainerConfigurator $containerConfigurator): void {
-    $services = $containerConfigurator->services();
-    $services->set(AddArrayAccessInterfaceReturnTypes::class);
+return static function (RectorConfig $rectorConfig): void {
+    $rectorConfig->rule(AddArrayAccessInterfaceReturnTypes::class);
 };
diff --git a/Magento2/Rector/Tests/ReplaceMbStrposNullLimit/config/configured_rule.php b/Magento2/Rector/Tests/ReplaceMbStrposNullLimit/config/configured_rule.php
index a08979ca..2e8bacac 100644
--- a/Magento2/Rector/Tests/ReplaceMbStrposNullLimit/config/configured_rule.php
+++ b/Magento2/Rector/Tests/ReplaceMbStrposNullLimit/config/configured_rule.php
@@ -1,14 +1,13 @@
 <?php
 /**
- * Copyright 2021 Adobe
+ * Copyright 2022 Adobe
  * See COPYING.txt for license details.
  */
 declare(strict_types=1);
 
 use Magento2\Rector\Src\ReplaceMbStrposNullLimit;
-use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
+use Rector\Config\RectorConfig;
 
-return static function (ContainerConfigurator $containerConfigurator): void {
-    $services = $containerConfigurator->services();
-    $services->set(ReplaceMbStrposNullLimit::class);
+return static function (RectorConfig $rectorConfig): void {
+    $rectorConfig->rule(ReplaceMbStrposNullLimit::class);
 };
diff --git a/Magento2/Rector/Tests/ReplaceNewDateTimeNull/config/configured_rule.php b/Magento2/Rector/Tests/ReplaceNewDateTimeNull/config/configured_rule.php
index 83f8e100..5b4f4b1a 100644
--- a/Magento2/Rector/Tests/ReplaceNewDateTimeNull/config/configured_rule.php
+++ b/Magento2/Rector/Tests/ReplaceNewDateTimeNull/config/configured_rule.php
@@ -1,14 +1,13 @@
 <?php
 /**
- * Copyright 2021 Adobe
+ * Copyright 2022 Adobe
  * See COPYING.txt for license details.
  */
 declare(strict_types=1);
 
 use Magento2\Rector\Src\ReplaceNewDateTimeNull;
-use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
+use Rector\Config\RectorConfig;
 
-return static function (ContainerConfigurator $containerConfigurator): void {
-    $services = $containerConfigurator->services();
-    $services->set(ReplaceNewDateTimeNull::class);
+return static function (RectorConfig $rectorConfig): void {
+    $rectorConfig->rule(ReplaceNewDateTimeNull::class);
 };
diff --git a/Magento2/Rector/Tests/ReplacePregSplitNullLimit/config/configured_rule.php b/Magento2/Rector/Tests/ReplacePregSplitNullLimit/config/configured_rule.php
index d6f7f7cd..502704f4 100644
--- a/Magento2/Rector/Tests/ReplacePregSplitNullLimit/config/configured_rule.php
+++ b/Magento2/Rector/Tests/ReplacePregSplitNullLimit/config/configured_rule.php
@@ -1,14 +1,13 @@
 <?php
 /**
- * Copyright 2021 Adobe
+ * Copyright 2022 Adobe
  * See COPYING.txt for license details.
  */
 declare(strict_types=1);
 
 use Magento2\Rector\Src\ReplacePregSplitNullLimit;
-use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
+use Rector\Config\RectorConfig;
 
-return static function (ContainerConfigurator $containerConfigurator): void {
-    $services = $containerConfigurator->services();
-    $services->set(ReplacePregSplitNullLimit::class);
+return static function (RectorConfig $rectorConfig): void {
+    $rectorConfig->rule(ReplacePregSplitNullLimit::class);
 };

From 2cf24b3b14db5d2f45d59c1ab4216313629d5d1d Mon Sep 17 00:00:00 2001
From: Marc Ginesta <mginesta@adobe.com>
Date: Wed, 31 Aug 2022 17:18:14 +0200
Subject: [PATCH 07/14] Implement changes approved to @see tag in Dev guild

---
 .../Commenting/PHPDocFormattingValidator.php  |  7 ++++++-
 .../MethodAnnotationStructureUnitTest.inc     | 20 +++++++++++++++++++
 ...AndInterfacePHPDocFormattingUnitTest.1.inc | 17 ++++++++++++++++
 ...AndInterfacePHPDocFormattingUnitTest.2.inc | 16 +++++++++++++++
 .../ClassPropertyPHPDocFormattingUnitTest.inc |  6 ++++++
 .../ConstantsPHPDocFormattingUnitTest.2.inc   | 10 ++++++++++
 6 files changed, 75 insertions(+), 1 deletion(-)

diff --git a/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php b/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php
index 9fd42e7f..3421b8a1 100644
--- a/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php
+++ b/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php
@@ -13,6 +13,8 @@
  */
 class PHPDocFormattingValidator
 {
+    private const REMOVED_IN_VERSION = 'removed in version';
+
     /**
      * Finds matching PHPDoc for current pointer
      *
@@ -123,7 +125,10 @@ public function hasDeprecatedWellFormatted($commentStartPtr, $tokens)
         }
         $seePtr = $this->getTagPosition('@see', $commentStartPtr, $tokens);
         if ($seePtr === -1) {
-            return false;
+            if (!stripos($tokens[$deprecatedPtr + 2]['content'], self::REMOVED_IN_VERSION, 0)) {
+                return false;
+            }
+            return true;
         }
 
         return $tokens[$seePtr + 2]['code'] === T_DOC_COMMENT_STRING;
diff --git a/Magento2/Tests/Annotation/MethodAnnotationStructureUnitTest.inc b/Magento2/Tests/Annotation/MethodAnnotationStructureUnitTest.inc
index 4d3e0b7b..6b7431c9 100644
--- a/Magento2/Tests/Annotation/MethodAnnotationStructureUnitTest.inc
+++ b/Magento2/Tests/Annotation/MethodAnnotationStructureUnitTest.inc
@@ -369,4 +369,24 @@ class MethodAnnotationFixture
     {
         return true;
     }
+
+    /**
+     * This deprecated function is correct even though it only contains the @deprecated tag.
+     *
+     * @deprecated It will be removed in version 1.0.0
+     */
+    public function correctBecauseOfKeywordPhrase()
+    {
+        return false;
+    }
+
+    /**
+     * This deprecated function is correct even though it only contains the @deprecated tag.
+     *
+     * @deprecated WOW! It will be removed in version 1.0.0
+     */
+    public function alsoCorrectBecauseOfKeywordPhrase()
+    {
+        return false;
+    }
 }
diff --git a/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc b/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc
index e5895e32..c9785e18 100644
--- a/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc
+++ b/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc
@@ -162,3 +162,20 @@ class OldHandler
 {
 
 }
+
+/**
+ * @deprecated It will be removed in version 1.0.0
+ */
+class DeprecatedButHandler
+{
+
+}
+
+/**
+ * @deprecated It's also deprecated, but it will be removed in version 1.0.0
+ */
+class AlsoDeprecatedButHandler
+{
+
+}
+
diff --git a/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.2.inc b/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.2.inc
index 96900de2..62935860 100644
--- a/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.2.inc
+++ b/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.2.inc
@@ -153,3 +153,19 @@ interface DoNotCareHandler
 {
 
 }
+
+/**
+ * @deprecated This interface will be removed in version 1.0.0
+ */
+interface DeprecatedButHandler
+{
+
+}
+
+/**
+ * @deprecated Yeah! This interface will be removed in version 1.0.0
+ */
+interface AlsoDeprecatedButHandler
+{
+
+}
diff --git a/Magento2/Tests/Commenting/ClassPropertyPHPDocFormattingUnitTest.inc b/Magento2/Tests/Commenting/ClassPropertyPHPDocFormattingUnitTest.inc
index 62e9688f..1c85b175 100644
--- a/Magento2/Tests/Commenting/ClassPropertyPHPDocFormattingUnitTest.inc
+++ b/Magento2/Tests/Commenting/ClassPropertyPHPDocFormattingUnitTest.inc
@@ -194,4 +194,10 @@ class correctlyFormattedClassMemberDocBlock
      * @see Message with some reference
      */
     protected string $itIsCorrect;
+
+    /**
+     * @var string
+     * @deprecated This property will be removed in version 1.0.0
+     */
+    protected string $deprecatedWithKeyword;
 }
diff --git a/Magento2/Tests/Commenting/ConstantsPHPDocFormattingUnitTest.2.inc b/Magento2/Tests/Commenting/ConstantsPHPDocFormattingUnitTest.2.inc
index 12b89834..a75730e6 100644
--- a/Magento2/Tests/Commenting/ConstantsPHPDocFormattingUnitTest.2.inc
+++ b/Magento2/Tests/Commenting/ConstantsPHPDocFormattingUnitTest.2.inc
@@ -63,4 +63,14 @@ class Profiler
      * @see
      */
     const d = 100;
+
+    /**
+     * @deprecated This constant will be removed in version 1.0.0
+     */
+    const KEYWORD_PHRASE = false;
+
+    /**
+     * @deprecated It's awesome - This constant will be removed in version 1.0.0
+     */
+    const WITH_KEYWORD_PHRASE = false;
 }

From 922e1080bde3ed1560075fa87fc10720097a3b9a Mon Sep 17 00:00:00 2001
From: Marc Ginesta <mginesta@adobe.com>
Date: Wed, 31 Aug 2022 17:57:49 +0200
Subject: [PATCH 08/14] Add without replacement

---
 Magento2/Helpers/Commenting/PHPDocFormattingValidator.php | 8 +++++---
 .../Annotation/MethodAnnotationStructureUnitTest.inc      | 4 ++--
 .../ClassAndInterfacePHPDocFormattingUnitTest.1.inc       | 4 ++--
 .../ClassAndInterfacePHPDocFormattingUnitTest.2.inc       | 4 ++--
 .../Commenting/ClassPropertyPHPDocFormattingUnitTest.inc  | 2 +-
 .../Commenting/ConstantsPHPDocFormattingUnitTest.2.inc    | 4 ++--
 6 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php b/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php
index 3421b8a1..a5f33d8c 100644
--- a/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php
+++ b/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php
@@ -14,6 +14,7 @@
 class PHPDocFormattingValidator
 {
     private const REMOVED_IN_VERSION = 'removed in version';
+    private const WITHOUT_REPLACEMENT = 'without replacement';
 
     /**
      * Finds matching PHPDoc for current pointer
@@ -125,10 +126,11 @@ public function hasDeprecatedWellFormatted($commentStartPtr, $tokens)
         }
         $seePtr = $this->getTagPosition('@see', $commentStartPtr, $tokens);
         if ($seePtr === -1) {
-            if (!stripos($tokens[$deprecatedPtr + 2]['content'], self::REMOVED_IN_VERSION, 0)) {
-                return false;
+            if (stripos($tokens[$deprecatedPtr + 2]['content'], self::REMOVED_IN_VERSION, 0) &&
+                stripos($tokens[$deprecatedPtr + 2]['content'], self::WITHOUT_REPLACEMENT, 0)) {
+                return true;
             }
-            return true;
+            return false;
         }
 
         return $tokens[$seePtr + 2]['code'] === T_DOC_COMMENT_STRING;
diff --git a/Magento2/Tests/Annotation/MethodAnnotationStructureUnitTest.inc b/Magento2/Tests/Annotation/MethodAnnotationStructureUnitTest.inc
index 6b7431c9..4ee0c4fa 100644
--- a/Magento2/Tests/Annotation/MethodAnnotationStructureUnitTest.inc
+++ b/Magento2/Tests/Annotation/MethodAnnotationStructureUnitTest.inc
@@ -373,7 +373,7 @@ class MethodAnnotationFixture
     /**
      * This deprecated function is correct even though it only contains the @deprecated tag.
      *
-     * @deprecated It will be removed in version 1.0.0
+     * @deprecated It will be removed in version 1.0.0 without replacement
      */
     public function correctBecauseOfKeywordPhrase()
     {
@@ -383,7 +383,7 @@ class MethodAnnotationFixture
     /**
      * This deprecated function is correct even though it only contains the @deprecated tag.
      *
-     * @deprecated WOW! It will be removed in version 1.0.0
+     * @deprecated WOW! It will be removed in version 1.0.0 without replacement
      */
     public function alsoCorrectBecauseOfKeywordPhrase()
     {
diff --git a/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc b/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc
index c9785e18..0dc9728b 100644
--- a/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc
+++ b/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc
@@ -164,7 +164,7 @@ class OldHandler
 }
 
 /**
- * @deprecated It will be removed in version 1.0.0
+ * @deprecated It will be removed in version 1.0.0 without replacement
  */
 class DeprecatedButHandler
 {
@@ -172,7 +172,7 @@ class DeprecatedButHandler
 }
 
 /**
- * @deprecated It's also deprecated, but it will be removed in version 1.0.0
+ * @deprecated It's also deprecated, but it will be removed in version 1.0.0 without replacement
  */
 class AlsoDeprecatedButHandler
 {
diff --git a/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.2.inc b/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.2.inc
index 62935860..c1c456ed 100644
--- a/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.2.inc
+++ b/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.2.inc
@@ -155,7 +155,7 @@ interface DoNotCareHandler
 }
 
 /**
- * @deprecated This interface will be removed in version 1.0.0
+ * @deprecated This interface will be removed in version 1.0.0 without replacement
  */
 interface DeprecatedButHandler
 {
@@ -163,7 +163,7 @@ interface DeprecatedButHandler
 }
 
 /**
- * @deprecated Yeah! This interface will be removed in version 1.0.0
+ * @deprecated Yeah! This interface will be removed in version 1.0.0 without replacement
  */
 interface AlsoDeprecatedButHandler
 {
diff --git a/Magento2/Tests/Commenting/ClassPropertyPHPDocFormattingUnitTest.inc b/Magento2/Tests/Commenting/ClassPropertyPHPDocFormattingUnitTest.inc
index 1c85b175..cde71269 100644
--- a/Magento2/Tests/Commenting/ClassPropertyPHPDocFormattingUnitTest.inc
+++ b/Magento2/Tests/Commenting/ClassPropertyPHPDocFormattingUnitTest.inc
@@ -197,7 +197,7 @@ class correctlyFormattedClassMemberDocBlock
 
     /**
      * @var string
-     * @deprecated This property will be removed in version 1.0.0
+     * @deprecated This property will be removed in version 1.0.0 without replacement
      */
     protected string $deprecatedWithKeyword;
 }
diff --git a/Magento2/Tests/Commenting/ConstantsPHPDocFormattingUnitTest.2.inc b/Magento2/Tests/Commenting/ConstantsPHPDocFormattingUnitTest.2.inc
index a75730e6..a751d8aa 100644
--- a/Magento2/Tests/Commenting/ConstantsPHPDocFormattingUnitTest.2.inc
+++ b/Magento2/Tests/Commenting/ConstantsPHPDocFormattingUnitTest.2.inc
@@ -65,12 +65,12 @@ class Profiler
     const d = 100;
 
     /**
-     * @deprecated This constant will be removed in version 1.0.0
+     * @deprecated This constant will be removed in version 1.0.0 without replacement
      */
     const KEYWORD_PHRASE = false;
 
     /**
-     * @deprecated It's awesome - This constant will be removed in version 1.0.0
+     * @deprecated It's awesome - This constant will be removed in version 1.0.0 without replacement
      */
     const WITH_KEYWORD_PHRASE = false;
 }

From 30bed9501a88b21f57eb80f0cc2b83496ef5eb1b Mon Sep 17 00:00:00 2001
From: Marc Ginesta <mginesta@adobe.com>
Date: Wed, 31 Aug 2022 18:03:37 +0200
Subject: [PATCH 09/14] Update condition for stripos

---
 Magento2/Helpers/Commenting/PHPDocFormattingValidator.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php b/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php
index a5f33d8c..fc9dc419 100644
--- a/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php
+++ b/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php
@@ -126,8 +126,8 @@ public function hasDeprecatedWellFormatted($commentStartPtr, $tokens)
         }
         $seePtr = $this->getTagPosition('@see', $commentStartPtr, $tokens);
         if ($seePtr === -1) {
-            if (stripos($tokens[$deprecatedPtr + 2]['content'], self::REMOVED_IN_VERSION, 0) &&
-                stripos($tokens[$deprecatedPtr + 2]['content'], self::WITHOUT_REPLACEMENT, 0)) {
+            if (stripos($tokens[$deprecatedPtr + 2]['content'], self::REMOVED_IN_VERSION, 0) >= 0 &&
+                stripos($tokens[$deprecatedPtr + 2]['content'], self::WITHOUT_REPLACEMENT, 0) >= 0) {
                 return true;
             }
             return false;

From 180c5105e13e3323a738d1f205edf26652502f4a Mon Sep 17 00:00:00 2001
From: Marc Ginesta <mginesta@adobe.com>
Date: Wed, 31 Aug 2022 18:07:49 +0200
Subject: [PATCH 10/14] Update boolean comparison on condition

---
 Magento2/Helpers/Commenting/PHPDocFormattingValidator.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php b/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php
index fc9dc419..c8761992 100644
--- a/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php
+++ b/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php
@@ -126,8 +126,8 @@ public function hasDeprecatedWellFormatted($commentStartPtr, $tokens)
         }
         $seePtr = $this->getTagPosition('@see', $commentStartPtr, $tokens);
         if ($seePtr === -1) {
-            if (stripos($tokens[$deprecatedPtr + 2]['content'], self::REMOVED_IN_VERSION, 0) >= 0 &&
-                stripos($tokens[$deprecatedPtr + 2]['content'], self::WITHOUT_REPLACEMENT, 0) >= 0) {
+            if (stripos($tokens[$deprecatedPtr + 2]['content'], self::REMOVED_IN_VERSION, 0) !== false &&
+                stripos($tokens[$deprecatedPtr + 2]['content'], self::WITHOUT_REPLACEMENT, 0) !== false) {
                 return true;
             }
             return false;

From 8ba38f702ef5405fe79e48a8ebae4473c3fd9149 Mon Sep 17 00:00:00 2001
From: Karyna Tsymbal <k.tsymbal@atwix.com>
Date: Wed, 31 Aug 2022 18:23:21 +0200
Subject: [PATCH 11/14] Add eliminated classes to Magento coding standards in
 Legacy\RestrictedCodeSniff

---
 .../Legacy/_files/restricted_classes.php      | 244 ++++++++++++++++++
 1 file changed, 244 insertions(+)

diff --git a/Magento2/Sniffs/Legacy/_files/restricted_classes.php b/Magento2/Sniffs/Legacy/_files/restricted_classes.php
index ed6d2540..3dedf871 100644
--- a/Magento2/Sniffs/Legacy/_files/restricted_classes.php
+++ b/Magento2/Sniffs/Legacy/_files/restricted_classes.php
@@ -29,6 +29,250 @@
             'Magento/Framework/DB/Adapter/Pdo/Mysql.php'
         ]
     ],
+    'Zend_Json' => [
+        'warning_code' => 'ZendJsonIsRestricted',
+        'replacement' => 'Magento\Framework\Serialize\Serializer\Json'
+    ],
+    'Zend_Json_Exception' => [
+        'warning_code' => 'ZendJsonIsRestricted',
+        'replacement' => '\InvalidArgumentException'
+    ],
+    'Zend_Acl' => [
+        'warning_code' => 'ZendAclIsRestricted',
+        'replacement' => 'Laminas\Permissions\Acl\Acl'
+    ],
+    'Zend_Acl_Role' => [
+        'warning_code' => 'ZendAclIsRestricted',
+        'replacement' => 'Laminas\Permissions\Acl\Role\GenericRole'
+    ],
+    'Zend_Acl_Resource' => [
+        'warning_code' => 'ZendAclIsRestricted',
+        'replacement' => 'Laminas\Permissions\Acl\Resource\GenericResource'
+    ],
+    'Zend_Acl_Role_Registry' => [
+        'warning_code' => 'ZendAclIsRestricted',
+        'replacement' => 'Laminas\Permissions\Acl\Role\Registry'
+    ],
+    'Zend_Acl_Role_Registry_Exception' => [
+        'warning_code' => 'ZendAclIsRestricted',
+        'replacement' => 'Laminas\Permissions\Acl\Exception\InvalidArgumentException'
+    ],
+    'Zend_Acl_Exception' => [
+        'warning_code' => 'ZendAclIsRestricted',
+        'replacement' => 'Laminas\Permissions\Acl\Exception\InvalidArgumentException'
+    ],
+    'Zend_Acl_Role_Interface' => [
+        'warning_code' => 'ZendAclIsRestricted',
+        'replacement' => 'Laminas\Permissions\Acl\Role\RoleInterface'
+    ],
+    'Zend_Currency' => [
+        'warning_code' => 'ZendAclIsRestricted',
+        'replacement' => 'Magento\Framework\Currency\Data\Currency'
+    ],
+    'Zend_Currency_Exception' => [
+        'warning_code' => 'ZendCurrencyIsRestricted',
+        'replacement' => 'Magento\Framework\Currency\Exception\CurrencyException'
+    ],
+    'Zend_Oauth_Http_Utility' => [
+        'warning_code' => 'ZendOauthIsRestricted',
+        'replacement' => 'Laminas\OAuth\Http\Utility'
+    ],
+    'Zend_Measure_Weight' => [
+        'warning_code' => 'ZendMeasureIsRestricted',
+        'replacement' => 'Magento\Framework\Measure\Weight'
+    ],
+    'Zend_Measure_Length' => [
+        'warning_code' => 'ZendMeasureIsRestricted',
+        'replacement' => 'Magento\Framework\Measure\Length'
+    ],
+    'Zend_Validate' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Magento\Framework\Validator\ValidatorChain'
+    ],
+    'Zend_Validate_Regex' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Laminas\Validator\Regex'
+    ],
+    'Zend_Validate_Interface' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Laminas\Validator\ValidatorInterface'
+    ],
+    'Zend_Validate_EmailAddress' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Magento\Framework\Validator\EmailAddress'
+    ],
+    'Zend_Validate_StringLength' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Magento\Framework\Validator\StringLength'
+    ],
+    'Zend_Validate_Exception' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Magento\Framework\Validator\ValidateException'
+    ],
+    'Zend_Validate_File_ExcludeExtension' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Laminas\Validator\File\ExcludeExtension'
+    ],
+    'Zend_Validate_File_Extension' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Laminas\Validator\File\Extension'
+    ],
+    'Zend_Validate_File_ImageSize' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Laminas\Validator\File\ImageSize'
+    ],
+    'Zend_Validate_File_FilesSize' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Laminas\Validator\File\FilesSize'
+    ],
+    'Zend_Validate_Alnum' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Magento\Framework\Validator\Alnum'
+    ],
+    'Zend_Validate_Hostname' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Magento\Framework\Validator\Hostname'
+    ],
+    'Zend_Validate_Date' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Laminas\Validator\Date'
+    ],
+    'Zend_Validate_Digits' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Laminas\Validator\Digits'
+    ],
+    'Zend_Validate_Alpha' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Laminas\I18n\Validator\Alpha'
+    ],
+    'Zend_Validate_InArray' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Laminas\Validator\InArray'
+    ],
+    'Zend_Validate_Abstract' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Laminas\Validator\AbstractValidator'
+    ],
+    'Zend_Validate_NotEmpty' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Magento\Framework\Validator\NotEmpty'
+    ],
+    'Zend_Validate_Callback' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Laminas\Validator\Callback'
+    ],
+    'Zend_Validate_Ip' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Laminas\Validator\Ip'
+    ],
+    'Zend_Validate_Identical' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Laminas\Validator\Identical'
+    ],
+    'Zend_Validate_File_IsImage' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Laminas\Validator\File\IsImage'
+    ],
+    'Zend_Validate_File_Size' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Laminas\Validator\File\FilesSize'
+    ],
+    'Zend_Validate_Float' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Laminas\I18n\Validator\IsFloat'
+    ],
+    'Zend_Validate_Int' => [
+        'warning_code' => 'ZendValidateIsRestricted',
+        'replacement' => 'Laminas\I18n\Validator\IsInt'
+    ],
+    'Magento\Framework\HTTP\ZendClient' => [
+        'warning_code' => 'HttpZendClientIsRestricted',
+        'replacement' => 'Magento\Framework\HTTP\LaminasClient'
+    ],
+    'Magento\Framework\HTTP\ZendClientFactory' => [
+        'warning_code' => 'HttpZendClientFactoryIsRestricted',
+        'replacement' => 'Magento\Framework\HTTP\LaminasClientFactory'
+    ],
+    'Zend_Http_Client' => [
+        'warning_code' => 'ZendHttpIsRestricted',
+        'replacement' => 'Laminas\Http\Request'
+    ],
+    'Zend_Http_Response' => [
+        'warning_code' => 'ZendHttpIsRestricted',
+        'replacement' => 'Laminas\Http\Response'
+    ],
+    'Zend_Http_Exception' => [
+        'warning_code' => 'ZendHttpIsRestricted',
+        'replacement' => 'Laminas\Http\Exception\RuntimeException'
+    ],
+    'Zend_Http_Client_Exception' => [
+        'warning_code' => 'ZendHttpIsRestricted',
+        'replacement' => 'Laminas\Http\Exception\RuntimeException'
+    ],
+    'Zend_Http_Client_Adapter_Interface' => [
+        'warning_code' => 'ZendHttpIsRestricted',
+        'replacement' => 'Laminas\Http\Client\Adapter\AdapterInterface'
+    ],
+    'Zend_Filter_File_Rename' => [
+        'warning_code' => 'ZendFilterIsRestricted',
+        'replacement' => 'Laminas\Filter\File\Rename'
+    ],
+    'Zend_Filter' => [
+        'warning_code' => 'ZendFilterIsRestricted',
+        'replacement' => 'Magento\Framework\Filter\FilterInput'
+    ],
+    'Zend_Filter_Input' => [
+        'warning_code' => 'ZendFilterIsRestricted',
+        'replacement' => 'Magento\Framework\Filter\FilterInput'
+    ],
+    'Zend_Filter_Interface' => [
+        'warning_code' => 'ZendFilterIsRestricted',
+        'replacement' => 'Laminas\Filter\FilterInterface'
+    ],
+    'Zend_Filter_LocalizedToNormalized' => [
+        'warning_code' => 'ZendFilterIsRestricted',
+        'replacement' => 'Magento\Framework\Filter\LocalizedToNormalized'
+    ],
+    'Zend_Filter_Decrypt' => [
+        'warning_code' => 'ZendFilterIsRestricted',
+        'replacement' => 'Laminas\Filter\Decrypt'
+    ],
+    'Zend_Filter_Encrypt' => [
+        'warning_code' => 'ZendFilterIsRestricted',
+        'replacement' => 'Laminas\Filter\Encrypt'
+    ],
+    'Zend_Filter_Encrypt_Interface' => [
+        'warning_code' => 'ZendFilterIsRestricted',
+        'replacement' => 'Laminas\Filter\Encrypt\EncryptionAlgorithmInterface'
+    ],
+    'Zend_Filter_Alnum' => [
+        'warning_code' => 'ZendFilterIsRestricted',
+        'replacement' => 'Laminas\I18n\Filter\Alnum'
+    ],
+    'Zend_Translate_Adapter' => [
+        'warning_code' => 'ZendTranslateIsRestricted',
+        'replacement' => 'Laminas\I18n\View\Helper\AbstractTranslatorHelper'
+    ],
+    'Zend_File_Transfer_Exception' => [
+        'warning_code' => 'ZendFileIsRestricted',
+        'replacement' => 'Laminas\File\Transfer\Exception\PhpEnvironmentException'
+    ],
+    'Zend_File_Transfer_Adapter_Http' => [
+        'warning_code' => 'ZendFileIsRestricted',
+        'replacement' => 'Magento\Framework\File\Http'
+    ],
+    'Zend_File_Transfer' => [
+        'warning_code' => 'ZendFileIsRestricted',
+        'replacement' => 'Laminas\File\Transfer\Transfer'
+    ],
+    'Zend_Date' => [
+        'warning_code' => 'ZendDateIsRestricted',
+        'replacement' => '\IntlDateFormatter'
+    ],
+    'Zend_Locale_Format' => [
+        'warning_code' => 'ZendLocaleFormatIsRestricted',
+        'replacement' => 'Laminas\I18n\Filter\NumberParse, \NumberFormatter, \IntlDateFormatter'
+    ],
     'Magento\Framework\Serialize\Serializer\Serialize' => [
         'warning_code' => 'SerializerSerializeIsRestricted',
         'replacement' => 'Magento\Framework\Serialize\SerializerInterface',

From 246c67bcf8d75985cad8effce3faa85a5143cae6 Mon Sep 17 00:00:00 2001
From: Marc Ginesta <mginesta@adobe.com>
Date: Thu, 1 Sep 2022 12:25:10 +0200
Subject: [PATCH 12/14] Refactor: Use preg_match

---
 .../Helpers/Commenting/PHPDocFormattingValidator.php     | 9 ++++-----
 .../Annotation/MethodAnnotationStructureUnitTest.inc     | 4 ++--
 .../ClassAndInterfacePHPDocFormattingUnitTest.1.inc      | 4 ++--
 3 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php b/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php
index c8761992..a87312d5 100644
--- a/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php
+++ b/Magento2/Helpers/Commenting/PHPDocFormattingValidator.php
@@ -13,9 +13,6 @@
  */
 class PHPDocFormattingValidator
 {
-    private const REMOVED_IN_VERSION = 'removed in version';
-    private const WITHOUT_REPLACEMENT = 'without replacement';
-
     /**
      * Finds matching PHPDoc for current pointer
      *
@@ -126,8 +123,10 @@ public function hasDeprecatedWellFormatted($commentStartPtr, $tokens)
         }
         $seePtr = $this->getTagPosition('@see', $commentStartPtr, $tokens);
         if ($seePtr === -1) {
-            if (stripos($tokens[$deprecatedPtr + 2]['content'], self::REMOVED_IN_VERSION, 0) !== false &&
-                stripos($tokens[$deprecatedPtr + 2]['content'], self::WITHOUT_REPLACEMENT, 0) !== false) {
+            if (preg_match(
+                "/This [a-zA-Z]* will be removed in version \d.\d.\d without replacement/",
+                $tokens[$deprecatedPtr + 2]['content']
+            )) {
                 return true;
             }
             return false;
diff --git a/Magento2/Tests/Annotation/MethodAnnotationStructureUnitTest.inc b/Magento2/Tests/Annotation/MethodAnnotationStructureUnitTest.inc
index 4ee0c4fa..2e0fdf0e 100644
--- a/Magento2/Tests/Annotation/MethodAnnotationStructureUnitTest.inc
+++ b/Magento2/Tests/Annotation/MethodAnnotationStructureUnitTest.inc
@@ -373,7 +373,7 @@ class MethodAnnotationFixture
     /**
      * This deprecated function is correct even though it only contains the @deprecated tag.
      *
-     * @deprecated It will be removed in version 1.0.0 without replacement
+     * @deprecated This method will be removed in version 1.0.0 without replacement
      */
     public function correctBecauseOfKeywordPhrase()
     {
@@ -383,7 +383,7 @@ class MethodAnnotationFixture
     /**
      * This deprecated function is correct even though it only contains the @deprecated tag.
      *
-     * @deprecated WOW! It will be removed in version 1.0.0 without replacement
+     * @deprecated WOW! This method will be removed in version 1.0.0 without replacement
      */
     public function alsoCorrectBecauseOfKeywordPhrase()
     {
diff --git a/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc b/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc
index 0dc9728b..afd4c934 100644
--- a/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc
+++ b/Magento2/Tests/Commenting/ClassAndInterfacePHPDocFormattingUnitTest.1.inc
@@ -164,7 +164,7 @@ class OldHandler
 }
 
 /**
- * @deprecated It will be removed in version 1.0.0 without replacement
+ * @deprecated This class will be removed in version 1.0.0 without replacement
  */
 class DeprecatedButHandler
 {
@@ -172,7 +172,7 @@ class DeprecatedButHandler
 }
 
 /**
- * @deprecated It's also deprecated, but it will be removed in version 1.0.0 without replacement
+ * @deprecated It's also deprecated - This class will be removed in version 1.0.0 without replacement
  */
 class AlsoDeprecatedButHandler
 {

From 10001607376f34388954e7f99ce4aa4d52c06fd7 Mon Sep 17 00:00:00 2001
From: Maksym Aposov <maposov@adobe.com>
Date: Tue, 13 Sep 2022 10:52:59 -0500
Subject: [PATCH 13/14]  Add eliminated classes to Magento coding standards in
 Legacy\RestrictedCodeSniff

---
 .../Legacy/_files/restricted_classes.php      | 183 ++++++++++++------
 1 file changed, 122 insertions(+), 61 deletions(-)

diff --git a/Magento2/Sniffs/Legacy/_files/restricted_classes.php b/Magento2/Sniffs/Legacy/_files/restricted_classes.php
index 3dedf871..3269caca 100644
--- a/Magento2/Sniffs/Legacy/_files/restricted_classes.php
+++ b/Magento2/Sniffs/Legacy/_files/restricted_classes.php
@@ -31,247 +31,308 @@
     ],
     'Zend_Json' => [
         'warning_code' => 'ZendJsonIsRestricted',
-        'replacement' => 'Magento\Framework\Serialize\Serializer\Json'
+        'replacement' => 'Magento\Framework\Serialize\Serializer\Json',
+        'exclude' => []
     ],
     'Zend_Json_Exception' => [
         'warning_code' => 'ZendJsonIsRestricted',
-        'replacement' => '\InvalidArgumentException'
+        'replacement' => '\InvalidArgumentException',
+        'exclude' => []
     ],
     'Zend_Acl' => [
         'warning_code' => 'ZendAclIsRestricted',
-        'replacement' => 'Laminas\Permissions\Acl\Acl'
+        'replacement' => 'Laminas\Permissions\Acl\Acl',
+        'exclude' => []
     ],
     'Zend_Acl_Role' => [
         'warning_code' => 'ZendAclIsRestricted',
-        'replacement' => 'Laminas\Permissions\Acl\Role\GenericRole'
+        'replacement' => 'Laminas\Permissions\Acl\Role\GenericRole',
+        'exclude' => []
     ],
     'Zend_Acl_Resource' => [
         'warning_code' => 'ZendAclIsRestricted',
-        'replacement' => 'Laminas\Permissions\Acl\Resource\GenericResource'
+        'replacement' => 'Laminas\Permissions\Acl\Resource\GenericResource',
+        'exclude' => []
     ],
     'Zend_Acl_Role_Registry' => [
         'warning_code' => 'ZendAclIsRestricted',
-        'replacement' => 'Laminas\Permissions\Acl\Role\Registry'
+        'replacement' => 'Laminas\Permissions\Acl\Role\Registry',
+        'exclude' => []
     ],
     'Zend_Acl_Role_Registry_Exception' => [
         'warning_code' => 'ZendAclIsRestricted',
-        'replacement' => 'Laminas\Permissions\Acl\Exception\InvalidArgumentException'
+        'replacement' => 'Laminas\Permissions\Acl\Exception\InvalidArgumentException',
+        'exclude' => []
     ],
     'Zend_Acl_Exception' => [
         'warning_code' => 'ZendAclIsRestricted',
-        'replacement' => 'Laminas\Permissions\Acl\Exception\InvalidArgumentException'
+        'replacement' => 'Laminas\Permissions\Acl\Exception\InvalidArgumentException',
+        'exclude' => []
     ],
     'Zend_Acl_Role_Interface' => [
         'warning_code' => 'ZendAclIsRestricted',
-        'replacement' => 'Laminas\Permissions\Acl\Role\RoleInterface'
+        'replacement' => 'Laminas\Permissions\Acl\Role\RoleInterface',
+        'exclude' => []
     ],
     'Zend_Currency' => [
         'warning_code' => 'ZendAclIsRestricted',
-        'replacement' => 'Magento\Framework\Currency\Data\Currency'
+        'replacement' => 'Magento\Framework\Currency\Data\Currency',
+        'exclude' => []
     ],
     'Zend_Currency_Exception' => [
         'warning_code' => 'ZendCurrencyIsRestricted',
-        'replacement' => 'Magento\Framework\Currency\Exception\CurrencyException'
+        'replacement' => 'Magento\Framework\Currency\Exception\CurrencyException',
+        'exclude' => []
     ],
     'Zend_Oauth_Http_Utility' => [
         'warning_code' => 'ZendOauthIsRestricted',
-        'replacement' => 'Laminas\OAuth\Http\Utility'
+        'replacement' => 'Laminas\OAuth\Http\Utility',
+        'exclude' => []
     ],
     'Zend_Measure_Weight' => [
         'warning_code' => 'ZendMeasureIsRestricted',
-        'replacement' => 'Magento\Framework\Measure\Weight'
+        'replacement' => 'Magento\Framework\Measure\Weight',
+        'exclude' => []
     ],
     'Zend_Measure_Length' => [
         'warning_code' => 'ZendMeasureIsRestricted',
-        'replacement' => 'Magento\Framework\Measure\Length'
+        'replacement' => 'Magento\Framework\Measure\Length',
+        'exclude' => []
     ],
     'Zend_Validate' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Magento\Framework\Validator\ValidatorChain'
+        'replacement' => 'Magento\Framework\Validator\ValidatorChain',
+        'exclude' => []
     ],
     'Zend_Validate_Regex' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Laminas\Validator\Regex'
+        'replacement' => 'Laminas\Validator\Regex',
+        'exclude' => []
     ],
     'Zend_Validate_Interface' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Laminas\Validator\ValidatorInterface'
+        'replacement' => 'Laminas\Validator\ValidatorInterface',
+        'exclude' => []
     ],
     'Zend_Validate_EmailAddress' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Magento\Framework\Validator\EmailAddress'
+        'replacement' => 'Magento\Framework\Validator\EmailAddress',
+        'exclude' => []
     ],
     'Zend_Validate_StringLength' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Magento\Framework\Validator\StringLength'
+        'replacement' => 'Magento\Framework\Validator\StringLength',
+        'exclude' => []
     ],
     'Zend_Validate_Exception' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Magento\Framework\Validator\ValidateException'
+        'replacement' => 'Magento\Framework\Validator\ValidateException',
+        'exclude' => []
     ],
     'Zend_Validate_File_ExcludeExtension' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Laminas\Validator\File\ExcludeExtension'
+        'replacement' => 'Laminas\Validator\File\ExcludeExtension',
+        'exclude' => []
     ],
     'Zend_Validate_File_Extension' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Laminas\Validator\File\Extension'
+        'replacement' => 'Laminas\Validator\File\Extension',
+        'exclude' => []
     ],
     'Zend_Validate_File_ImageSize' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Laminas\Validator\File\ImageSize'
+        'replacement' => 'Laminas\Validator\File\ImageSize',
+        'exclude' => []
     ],
     'Zend_Validate_File_FilesSize' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Laminas\Validator\File\FilesSize'
+        'replacement' => 'Laminas\Validator\File\FilesSize',
+        'exclude' => []
     ],
     'Zend_Validate_Alnum' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Magento\Framework\Validator\Alnum'
+        'replacement' => 'Magento\Framework\Validator\Alnum',
+        'exclude' => []
     ],
     'Zend_Validate_Hostname' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Magento\Framework\Validator\Hostname'
+        'replacement' => 'Magento\Framework\Validator\Hostname',
+        'exclude' => []
     ],
     'Zend_Validate_Date' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Laminas\Validator\Date'
+        'replacement' => 'Laminas\Validator\Date',
+        'exclude' => []
     ],
     'Zend_Validate_Digits' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Laminas\Validator\Digits'
+        'replacement' => 'Laminas\Validator\Digits',
+        'exclude' => []
     ],
     'Zend_Validate_Alpha' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Laminas\I18n\Validator\Alpha'
+        'replacement' => 'Laminas\I18n\Validator\Alpha',
+        'exclude' => []
     ],
     'Zend_Validate_InArray' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Laminas\Validator\InArray'
+        'replacement' => 'Laminas\Validator\InArray',
+        'exclude' => []
     ],
     'Zend_Validate_Abstract' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Laminas\Validator\AbstractValidator'
+        'replacement' => 'Laminas\Validator\AbstractValidator',
+        'exclude' => []
     ],
     'Zend_Validate_NotEmpty' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Magento\Framework\Validator\NotEmpty'
+        'replacement' => 'Magento\Framework\Validator\NotEmpty',
+        'exclude' => []
     ],
     'Zend_Validate_Callback' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Laminas\Validator\Callback'
+        'replacement' => 'Laminas\Validator\Callback',
+        'exclude' => []
     ],
     'Zend_Validate_Ip' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Laminas\Validator\Ip'
+        'replacement' => 'Laminas\Validator\Ip',
+        'exclude' => []
     ],
     'Zend_Validate_Identical' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Laminas\Validator\Identical'
+        'replacement' => 'Laminas\Validator\Identical',
+        'exclude' => []
     ],
     'Zend_Validate_File_IsImage' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Laminas\Validator\File\IsImage'
+        'replacement' => 'Laminas\Validator\File\IsImage',
+        'exclude' => []
     ],
     'Zend_Validate_File_Size' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Laminas\Validator\File\FilesSize'
+        'replacement' => 'Laminas\Validator\File\FilesSize',
+        'exclude' => []
     ],
     'Zend_Validate_Float' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Laminas\I18n\Validator\IsFloat'
+        'replacement' => 'Laminas\I18n\Validator\IsFloat',
+        'exclude' => []
     ],
     'Zend_Validate_Int' => [
         'warning_code' => 'ZendValidateIsRestricted',
-        'replacement' => 'Laminas\I18n\Validator\IsInt'
+        'replacement' => 'Laminas\I18n\Validator\IsInt',
+        'exclude' => []
     ],
     'Magento\Framework\HTTP\ZendClient' => [
         'warning_code' => 'HttpZendClientIsRestricted',
-        'replacement' => 'Magento\Framework\HTTP\LaminasClient'
+        'replacement' => 'Magento\Framework\HTTP\LaminasClient',
+        'exclude' => []
     ],
     'Magento\Framework\HTTP\ZendClientFactory' => [
         'warning_code' => 'HttpZendClientFactoryIsRestricted',
-        'replacement' => 'Magento\Framework\HTTP\LaminasClientFactory'
+        'replacement' => 'Magento\Framework\HTTP\LaminasClientFactory',
+        'exclude' => []
     ],
     'Zend_Http_Client' => [
         'warning_code' => 'ZendHttpIsRestricted',
-        'replacement' => 'Laminas\Http\Request'
+        'replacement' => 'Laminas\Http\Request',
+        'exclude' => []
     ],
     'Zend_Http_Response' => [
         'warning_code' => 'ZendHttpIsRestricted',
-        'replacement' => 'Laminas\Http\Response'
+        'replacement' => 'Laminas\Http\Response',
+        'exclude' => []
     ],
     'Zend_Http_Exception' => [
         'warning_code' => 'ZendHttpIsRestricted',
-        'replacement' => 'Laminas\Http\Exception\RuntimeException'
+        'replacement' => 'Laminas\Http\Exception\RuntimeException',
+        'exclude' => []
     ],
     'Zend_Http_Client_Exception' => [
         'warning_code' => 'ZendHttpIsRestricted',
-        'replacement' => 'Laminas\Http\Exception\RuntimeException'
+        'replacement' => 'Laminas\Http\Exception\RuntimeException',
+        'exclude' => []
     ],
     'Zend_Http_Client_Adapter_Interface' => [
         'warning_code' => 'ZendHttpIsRestricted',
-        'replacement' => 'Laminas\Http\Client\Adapter\AdapterInterface'
+        'replacement' => 'Laminas\Http\Client\Adapter\AdapterInterface',
+        'exclude' => []
     ],
     'Zend_Filter_File_Rename' => [
         'warning_code' => 'ZendFilterIsRestricted',
-        'replacement' => 'Laminas\Filter\File\Rename'
+        'replacement' => 'Laminas\Filter\File\Rename',
+        'exclude' => []
     ],
     'Zend_Filter' => [
         'warning_code' => 'ZendFilterIsRestricted',
-        'replacement' => 'Magento\Framework\Filter\FilterInput'
+        'replacement' => 'Magento\Framework\Filter\FilterInput',
+        'exclude' => []
     ],
     'Zend_Filter_Input' => [
         'warning_code' => 'ZendFilterIsRestricted',
-        'replacement' => 'Magento\Framework\Filter\FilterInput'
+        'replacement' => 'Magento\Framework\Filter\FilterInput',
+        'exclude' => []
     ],
     'Zend_Filter_Interface' => [
         'warning_code' => 'ZendFilterIsRestricted',
-        'replacement' => 'Laminas\Filter\FilterInterface'
+        'replacement' => 'Laminas\Filter\FilterInterface',
+        'exclude' => []
     ],
     'Zend_Filter_LocalizedToNormalized' => [
         'warning_code' => 'ZendFilterIsRestricted',
-        'replacement' => 'Magento\Framework\Filter\LocalizedToNormalized'
+        'replacement' => 'Magento\Framework\Filter\LocalizedToNormalized',
+        'exclude' => []
     ],
     'Zend_Filter_Decrypt' => [
         'warning_code' => 'ZendFilterIsRestricted',
-        'replacement' => 'Laminas\Filter\Decrypt'
+        'replacement' => 'Laminas\Filter\Decrypt',
+        'exclude' => []
     ],
     'Zend_Filter_Encrypt' => [
         'warning_code' => 'ZendFilterIsRestricted',
-        'replacement' => 'Laminas\Filter\Encrypt'
+        'replacement' => 'Laminas\Filter\Encrypt',
+        'exclude' => []
     ],
     'Zend_Filter_Encrypt_Interface' => [
         'warning_code' => 'ZendFilterIsRestricted',
-        'replacement' => 'Laminas\Filter\Encrypt\EncryptionAlgorithmInterface'
+        'replacement' => 'Laminas\Filter\Encrypt\EncryptionAlgorithmInterface',
+        'exclude' => []
     ],
     'Zend_Filter_Alnum' => [
         'warning_code' => 'ZendFilterIsRestricted',
-        'replacement' => 'Laminas\I18n\Filter\Alnum'
+        'replacement' => 'Laminas\I18n\Filter\Alnum',
+        'exclude' => []
     ],
     'Zend_Translate_Adapter' => [
         'warning_code' => 'ZendTranslateIsRestricted',
-        'replacement' => 'Laminas\I18n\View\Helper\AbstractTranslatorHelper'
+        'replacement' => 'Laminas\I18n\View\Helper\AbstractTranslatorHelper',
+        'exclude' => []
     ],
     'Zend_File_Transfer_Exception' => [
         'warning_code' => 'ZendFileIsRestricted',
-        'replacement' => 'Laminas\File\Transfer\Exception\PhpEnvironmentException'
+        'replacement' => 'Laminas\File\Transfer\Exception\PhpEnvironmentException',
+        'exclude' => []
     ],
     'Zend_File_Transfer_Adapter_Http' => [
         'warning_code' => 'ZendFileIsRestricted',
-        'replacement' => 'Magento\Framework\File\Http'
+        'replacement' => 'Magento\Framework\File\Http',
+        'exclude' => []
     ],
     'Zend_File_Transfer' => [
         'warning_code' => 'ZendFileIsRestricted',
-        'replacement' => 'Laminas\File\Transfer\Transfer'
+        'replacement' => 'Laminas\File\Transfer\Transfer',
+        'exclude' => []
     ],
     'Zend_Date' => [
         'warning_code' => 'ZendDateIsRestricted',
-        'replacement' => '\IntlDateFormatter'
+        'replacement' => '\IntlDateFormatter',
+        'exclude' => []
     ],
     'Zend_Locale_Format' => [
         'warning_code' => 'ZendLocaleFormatIsRestricted',
-        'replacement' => 'Laminas\I18n\Filter\NumberParse, \NumberFormatter, \IntlDateFormatter'
+        'replacement' => 'Laminas\I18n\Filter\NumberParse, \NumberFormatter, \IntlDateFormatter',
+        'exclude' => []
     ],
     'Magento\Framework\Serialize\Serializer\Serialize' => [
         'warning_code' => 'SerializerSerializeIsRestricted',

From 0397552687706e3fcd66b19caf3aa90389ae9b76 Mon Sep 17 00:00:00 2001
From: Rafal Janicki <rjanicki@adobe.com>
Date: Tue, 4 Oct 2022 11:00:48 +0100
Subject: [PATCH 14/14] Release v26

---
 composer.json |   2 +-
 composer.lock | 436 +++++++++-----------------------------------------
 2 files changed, 76 insertions(+), 362 deletions(-)

diff --git a/composer.json b/composer.json
index 69f6abaf..13e73cce 100644
--- a/composer.json
+++ b/composer.json
@@ -6,7 +6,7 @@
         "AFL-3.0"
     ],
     "type": "phpcodesniffer-standard",
-    "version": "25",
+    "version": "26",
     "require": {
         "php": ">=7.3",
         "webonyx/graphql-php": "^14.9",
diff --git a/composer.lock b/composer.lock
index 563cd8b9..17a2656d 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "4545f720f14d1d67c1b4684e624da98b",
+    "content-hash": "c3fda2a5a3535f9eff0880e5ddc61827",
     "packages": [
         {
             "name": "phpcompatibility/php-compatibility",
@@ -70,16 +70,16 @@
         },
         {
             "name": "phpstan/phpstan",
-            "version": "1.7.13",
+            "version": "1.8.6",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpstan/phpstan.git",
-                "reference": "86ffc063bfd8f264c9eba568e84b0225a6090d09"
+                "reference": "c386ab2741e64cc9e21729f891b28b2b10fe6618"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpstan/phpstan/zipball/86ffc063bfd8f264c9eba568e84b0225a6090d09",
-                "reference": "86ffc063bfd8f264c9eba568e84b0225a6090d09",
+                "url": "https://api.github.com/repos/phpstan/phpstan/zipball/c386ab2741e64cc9e21729f891b28b2b10fe6618",
+                "reference": "c386ab2741e64cc9e21729f891b28b2b10fe6618",
                 "shasum": ""
             },
             "require": {
@@ -103,9 +103,13 @@
                 "MIT"
             ],
             "description": "PHPStan - PHP Static Analysis Tool",
+            "keywords": [
+                "dev",
+                "static analysis"
+            ],
             "support": {
                 "issues": "https://github.com/phpstan/phpstan/issues",
-                "source": "https://github.com/phpstan/phpstan/tree/1.7.13"
+                "source": "https://github.com/phpstan/phpstan/tree/1.8.6"
             },
             "funding": [
                 {
@@ -116,37 +120,33 @@
                     "url": "https://github.com/phpstan",
                     "type": "github"
                 },
-                {
-                    "url": "https://www.patreon.com/phpstan",
-                    "type": "patreon"
-                },
                 {
                     "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-06-13T15:15:39+00:00"
+            "time": "2022-09-23T09:54:39+00:00"
         },
         {
             "name": "rector/rector",
-            "version": "0.13.5",
+            "version": "0.13.10",
             "source": {
                 "type": "git",
                 "url": "https://github.com/rectorphp/rector.git",
-                "reference": "4170aad2943b150149ba9594c34539e06ced6c6b"
+                "reference": "d1e069db8ad3b4aea2b968248370c21415e4c180"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/rectorphp/rector/zipball/4170aad2943b150149ba9594c34539e06ced6c6b",
-                "reference": "4170aad2943b150149ba9594c34539e06ced6c6b",
+                "url": "https://api.github.com/repos/rectorphp/rector/zipball/d1e069db8ad3b4aea2b968248370c21415e4c180",
+                "reference": "d1e069db8ad3b4aea2b968248370c21415e4c180",
                 "shasum": ""
             },
             "require": {
                 "php": "^7.2|^8.0",
-                "phpstan/phpstan": "^1.7.10"
+                "phpstan/phpstan": "^1.8.2"
             },
             "conflict": {
-                "phpstan/phpdoc-parser": "<1.2",
+                "phpstan/phpdoc-parser": "<1.6.2",
                 "rector/rector-cakephp": "*",
                 "rector/rector-doctrine": "*",
                 "rector/rector-laravel": "*",
@@ -177,7 +177,7 @@
             "description": "Instant Upgrade and Automated Refactoring of any PHP code",
             "support": {
                 "issues": "https://github.com/rectorphp/rector/issues",
-                "source": "https://github.com/rectorphp/rector/tree/0.13.5"
+                "source": "https://github.com/rectorphp/rector/tree/0.13.10"
             },
             "funding": [
                 {
@@ -185,20 +185,20 @@
                     "type": "github"
                 }
             ],
-            "time": "2022-06-09T12:54:02+00:00"
+            "time": "2022-08-03T12:48:10+00:00"
         },
         {
             "name": "squizlabs/php_codesniffer",
-            "version": "3.7.0",
+            "version": "3.7.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
-                "reference": "a2cd51b45bcaef9c1f2a4bda48f2dd2fa2b95563"
+                "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/a2cd51b45bcaef9c1f2a4bda48f2dd2fa2b95563",
-                "reference": "a2cd51b45bcaef9c1f2a4bda48f2dd2fa2b95563",
+                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619",
+                "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619",
                 "shasum": ""
             },
             "require": {
@@ -241,20 +241,20 @@
                 "source": "https://github.com/squizlabs/PHP_CodeSniffer",
                 "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
             },
-            "time": "2022-06-13T06:31:38+00:00"
+            "time": "2022-06-18T07:21:10+00:00"
         },
         {
             "name": "webonyx/graphql-php",
-            "version": "v14.11.6",
+            "version": "v14.11.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/webonyx/graphql-php.git",
-                "reference": "6070542725b61fc7d0654a8a9855303e5e157434"
+                "reference": "04a48693acd785330eefd3b0e4fa67df8dfee7c3"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/6070542725b61fc7d0654a8a9855303e5e157434",
-                "reference": "6070542725b61fc7d0654a8a9855303e5e157434",
+                "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/04a48693acd785330eefd3b0e4fa67df8dfee7c3",
+                "reference": "04a48693acd785330eefd3b0e4fa67df8dfee7c3",
                 "shasum": ""
             },
             "require": {
@@ -299,7 +299,7 @@
             ],
             "support": {
                 "issues": "https://github.com/webonyx/graphql-php/issues",
-                "source": "https://github.com/webonyx/graphql-php/tree/v14.11.6"
+                "source": "https://github.com/webonyx/graphql-php/tree/v14.11.8"
             },
             "funding": [
                 {
@@ -307,7 +307,7 @@
                     "type": "open_collective"
                 }
             ],
-            "time": "2022-04-13T16:25:32+00:00"
+            "time": "2022-09-21T15:35:03+00:00"
         }
     ],
     "packages-dev": [
@@ -442,16 +442,16 @@
         },
         {
             "name": "nikic/php-parser",
-            "version": "v4.14.0",
+            "version": "v4.15.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/nikic/PHP-Parser.git",
-                "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1"
+                "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1",
-                "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1",
+                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ef6c55a3f47f89d7a374e6f835197a0b5fcf900",
+                "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900",
                 "shasum": ""
             },
             "require": {
@@ -492,9 +492,9 @@
             ],
             "support": {
                 "issues": "https://github.com/nikic/PHP-Parser/issues",
-                "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0"
+                "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.1"
             },
-            "time": "2022-05-31T20:59:12+00:00"
+            "time": "2022-09-04T07:30:47+00:00"
         },
         {
             "name": "phar-io/manifest",
@@ -607,252 +607,25 @@
             },
             "time": "2022-02-21T01:04:05+00:00"
         },
-        {
-            "name": "phpdocumentor/reflection-common",
-            "version": "2.2.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
-                "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
-                "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.2 || ^8.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-2.x": "2.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "phpDocumentor\\Reflection\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Jaap van Otterdijk",
-                    "email": "opensource@ijaap.nl"
-                }
-            ],
-            "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
-            "homepage": "http://www.phpdoc.org",
-            "keywords": [
-                "FQSEN",
-                "phpDocumentor",
-                "phpdoc",
-                "reflection",
-                "static analysis"
-            ],
-            "support": {
-                "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
-                "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
-            },
-            "time": "2020-06-27T09:03:43+00:00"
-        },
-        {
-            "name": "phpdocumentor/reflection-docblock",
-            "version": "5.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
-                "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
-                "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
-                "shasum": ""
-            },
-            "require": {
-                "ext-filter": "*",
-                "php": "^7.2 || ^8.0",
-                "phpdocumentor/reflection-common": "^2.2",
-                "phpdocumentor/type-resolver": "^1.3",
-                "webmozart/assert": "^1.9.1"
-            },
-            "require-dev": {
-                "mockery/mockery": "~1.3.2",
-                "psalm/phar": "^4.8"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "5.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "phpDocumentor\\Reflection\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Mike van Riel",
-                    "email": "me@mikevanriel.com"
-                },
-                {
-                    "name": "Jaap van Otterdijk",
-                    "email": "account@ijaap.nl"
-                }
-            ],
-            "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
-            "support": {
-                "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
-                "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
-            },
-            "time": "2021-10-19T17:43:47+00:00"
-        },
-        {
-            "name": "phpdocumentor/type-resolver",
-            "version": "1.6.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpDocumentor/TypeResolver.git",
-                "reference": "77a32518733312af16a44300404e945338981de3"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3",
-                "reference": "77a32518733312af16a44300404e945338981de3",
-                "shasum": ""
-            },
-            "require": {
-                "php": "^7.2 || ^8.0",
-                "phpdocumentor/reflection-common": "^2.0"
-            },
-            "require-dev": {
-                "ext-tokenizer": "*",
-                "psalm/phar": "^4.8"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-1.x": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "phpDocumentor\\Reflection\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Mike van Riel",
-                    "email": "me@mikevanriel.com"
-                }
-            ],
-            "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
-            "support": {
-                "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
-                "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1"
-            },
-            "time": "2022-03-15T21:29:03+00:00"
-        },
-        {
-            "name": "phpspec/prophecy",
-            "version": "v1.15.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/phpspec/prophecy.git",
-                "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
-                "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
-                "shasum": ""
-            },
-            "require": {
-                "doctrine/instantiator": "^1.2",
-                "php": "^7.2 || ~8.0, <8.2",
-                "phpdocumentor/reflection-docblock": "^5.2",
-                "sebastian/comparator": "^3.0 || ^4.0",
-                "sebastian/recursion-context": "^3.0 || ^4.0"
-            },
-            "require-dev": {
-                "phpspec/phpspec": "^6.0 || ^7.0",
-                "phpunit/phpunit": "^8.0 || ^9.0"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Prophecy\\": "src/Prophecy"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Konstantin Kudryashov",
-                    "email": "ever.zet@gmail.com",
-                    "homepage": "http://everzet.com"
-                },
-                {
-                    "name": "Marcello Duarte",
-                    "email": "marcello.duarte@gmail.com"
-                }
-            ],
-            "description": "Highly opinionated mocking framework for PHP 5.3+",
-            "homepage": "https://github.com/phpspec/prophecy",
-            "keywords": [
-                "Double",
-                "Dummy",
-                "fake",
-                "mock",
-                "spy",
-                "stub"
-            ],
-            "support": {
-                "issues": "https://github.com/phpspec/prophecy/issues",
-                "source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
-            },
-            "time": "2021-12-08T12:19:24+00:00"
-        },
         {
             "name": "phpunit/php-code-coverage",
-            "version": "9.2.15",
+            "version": "9.2.17",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-                "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f"
+                "reference": "aa94dc41e8661fe90c7316849907cba3007b10d8"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
-                "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/aa94dc41e8661fe90c7316849907cba3007b10d8",
+                "reference": "aa94dc41e8661fe90c7316849907cba3007b10d8",
                 "shasum": ""
             },
             "require": {
                 "ext-dom": "*",
                 "ext-libxml": "*",
                 "ext-xmlwriter": "*",
-                "nikic/php-parser": "^4.13.0",
+                "nikic/php-parser": "^4.14",
                 "php": ">=7.3",
                 "phpunit/php-file-iterator": "^3.0.3",
                 "phpunit/php-text-template": "^2.0.2",
@@ -901,7 +674,7 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
-                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15"
+                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.17"
             },
             "funding": [
                 {
@@ -909,7 +682,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2022-03-07T09:28:20+00:00"
+            "time": "2022-08-30T12:24:04+00:00"
         },
         {
             "name": "phpunit/php-file-iterator",
@@ -1154,16 +927,16 @@
         },
         {
             "name": "phpunit/phpunit",
-            "version": "9.5.20",
+            "version": "9.5.25",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba"
+                "reference": "3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba",
-                "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d",
+                "reference": "3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d",
                 "shasum": ""
             },
             "require": {
@@ -1178,7 +951,6 @@
                 "phar-io/manifest": "^2.0.3",
                 "phar-io/version": "^3.0.2",
                 "php": ">=7.3",
-                "phpspec/prophecy": "^1.12.1",
                 "phpunit/php-code-coverage": "^9.2.13",
                 "phpunit/php-file-iterator": "^3.0.5",
                 "phpunit/php-invoker": "^3.1.1",
@@ -1186,20 +958,16 @@
                 "phpunit/php-timer": "^5.0.2",
                 "sebastian/cli-parser": "^1.0.1",
                 "sebastian/code-unit": "^1.0.6",
-                "sebastian/comparator": "^4.0.5",
+                "sebastian/comparator": "^4.0.8",
                 "sebastian/diff": "^4.0.3",
                 "sebastian/environment": "^5.1.3",
-                "sebastian/exporter": "^4.0.3",
+                "sebastian/exporter": "^4.0.5",
                 "sebastian/global-state": "^5.0.1",
                 "sebastian/object-enumerator": "^4.0.3",
                 "sebastian/resource-operations": "^3.0.3",
-                "sebastian/type": "^3.0",
+                "sebastian/type": "^3.2",
                 "sebastian/version": "^3.0.2"
             },
-            "require-dev": {
-                "ext-pdo": "*",
-                "phpspec/prophecy-phpunit": "^2.0.1"
-            },
             "suggest": {
                 "ext-soap": "*",
                 "ext-xdebug": "*"
@@ -1241,7 +1009,7 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/phpunit/issues",
-                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20"
+                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.25"
             },
             "funding": [
                 {
@@ -1251,9 +1019,13 @@
                 {
                     "url": "https://github.com/sebastianbergmann",
                     "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
+                    "type": "tidelift"
                 }
             ],
-            "time": "2022-04-01T12:37:26+00:00"
+            "time": "2022-09-25T03:44:45+00:00"
         },
         {
             "name": "sebastian/cli-parser",
@@ -1424,16 +1196,16 @@
         },
         {
             "name": "sebastian/comparator",
-            "version": "4.0.6",
+            "version": "4.0.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/comparator.git",
-                "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
+                "reference": "fa0f136dd2334583309d32b62544682ee972b51a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
-                "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a",
+                "reference": "fa0f136dd2334583309d32b62544682ee972b51a",
                 "shasum": ""
             },
             "require": {
@@ -1486,7 +1258,7 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/comparator/issues",
-                "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
+                "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8"
             },
             "funding": [
                 {
@@ -1494,7 +1266,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2020-10-26T15:49:45+00:00"
+            "time": "2022-09-14T12:41:17+00:00"
         },
         {
             "name": "sebastian/complexity",
@@ -1684,16 +1456,16 @@
         },
         {
             "name": "sebastian/exporter",
-            "version": "4.0.4",
+            "version": "4.0.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/exporter.git",
-                "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9"
+                "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9",
-                "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
+                "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
                 "shasum": ""
             },
             "require": {
@@ -1749,7 +1521,7 @@
             ],
             "support": {
                 "issues": "https://github.com/sebastianbergmann/exporter/issues",
-                "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4"
+                "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5"
             },
             "funding": [
                 {
@@ -1757,7 +1529,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2021-11-11T14:18:36+00:00"
+            "time": "2022-09-14T06:03:37+00:00"
         },
         {
             "name": "sebastian/global-state",
@@ -2112,16 +1884,16 @@
         },
         {
             "name": "sebastian/type",
-            "version": "3.0.0",
+            "version": "3.2.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/type.git",
-                "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad"
+                "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
-                "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
+                "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
+                "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e",
                 "shasum": ""
             },
             "require": {
@@ -2133,7 +1905,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "3.0-dev"
+                    "dev-master": "3.2-dev"
                 }
             },
             "autoload": {
@@ -2156,7 +1928,7 @@
             "homepage": "https://github.com/sebastianbergmann/type",
             "support": {
                 "issues": "https://github.com/sebastianbergmann/type/issues",
-                "source": "https://github.com/sebastianbergmann/type/tree/3.0.0"
+                "source": "https://github.com/sebastianbergmann/type/tree/3.2.0"
             },
             "funding": [
                 {
@@ -2164,7 +1936,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2022-03-15T09:54:48+00:00"
+            "time": "2022-09-12T14:47:03+00:00"
         },
         {
             "name": "sebastian/version",
@@ -2268,64 +2040,6 @@
                 }
             ],
             "time": "2021-07-28T10:34:58+00:00"
-        },
-        {
-            "name": "webmozart/assert",
-            "version": "1.11.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/webmozarts/assert.git",
-                "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
-                "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
-                "shasum": ""
-            },
-            "require": {
-                "ext-ctype": "*",
-                "php": "^7.2 || ^8.0"
-            },
-            "conflict": {
-                "phpstan/phpstan": "<0.12.20",
-                "vimeo/psalm": "<4.6.1 || 4.6.2"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^8.5.13"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.10-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Webmozart\\Assert\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Bernhard Schussek",
-                    "email": "bschussek@gmail.com"
-                }
-            ],
-            "description": "Assertions to validate method input/output with nice error messages.",
-            "keywords": [
-                "assert",
-                "check",
-                "validate"
-            ],
-            "support": {
-                "issues": "https://github.com/webmozarts/assert/issues",
-                "source": "https://github.com/webmozarts/assert/tree/1.11.0"
-            },
-            "time": "2022-06-03T18:03:27+00:00"
         }
     ],
     "aliases": [],